Hello, I’ve been attempting to compile a CUDA project called nHD available here: http://code.google.com/p/astro-attic/wiki/NHDIntroduction
I had trouble getting their makefiles to work, so I created visual studio projects for the source. I’m currently trying to compile the executable gpu_manual.
This project requires the following files:
godunov/gpu_muscl_godunov_solver.h
common/thrust_vector.h
riemann_solver/common.h
riemann_solver/gpu_common.h
riemann_solver/gpu_toro.inl
godunov/gpu_muscl_godunov_solver.cu
math/mersenne.h
math/mersenne.cpp
math/vector.h
riemann_solver/matter.h
riemann_solver/matter.cpp
riemann_solver/solver_toro.h
riemann_solver/solver_toro.cpp
godunov/fluid_solver.h
godunov/fluid_visualizer.h
godunov/fluid_solver.cpp
godunov/fluid_visualizer.cpp
godunov/gpu_manual.cu
riemann_solver/riemann_solver.h
It also uses the following libraries:
googletest http://code.google.com/p/googletest/
thrust http://code.google.com/p/thrust/
I’m getting the following error when compiling gpu_manual.cu
1>gpu_manual : warning PRJ0042 : The 'Outputs' property for the custom build step for file 'thrust_vector.h' is not set. The custom build step will be skipped.
1>Performing Custom Build Step
1>The custom build tool has been skipped.
1>Compiling with CUDA Build Rule...
1>"C:\CUDA\bin\nvcc.exe" -arch sm_12 -ccbin "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin" -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MT " -I""C:\CUDA\include"" -I"./" -I"C:/thrust-v1.1.0/" -I"../../../../All Users/Application Data/NVIDIA Corporation/NVIDIA GPU Computing SDK/C/common/inc" -maxrregcount=32 --compile -o "Release\gpu_manual.cu.obj" "c:\Documents and Settings\Decker\Desktop\nhd-0.1\nhd-0.1\godunov\gpu_manual.cu"
1>gpu_manual.cu
1>tmpxft_0000058c_00000000-3_gpu_manual.cudafe1.gpu
1>c:\documents and settings\decker\desktop\nhd-0.1\nhd-0.1\godunov\../riemann_solver/gpu_common.h(11): error: identifier "_ZN3gpu6kGammaE" is undefined
1>1 error detected in the compilation of "C:\DOCUME~1\Decker\LOCALS~1\Temp/tmpxft_0000058c_00000000-7_gpu_manual.cpp2.i".
1>Build log was saved at "file://c:\Documents and Settings\Decker\Desktop\nhd-0.1\gpu_manual2\Release\BuildLog.htm"
1>gpu_manual - 1 error(s), 1 warning(s)
gpu_manual differs from the default CUDA Build rules by the follow attributes:
Include=“"$(CUDA_INC_PATH)";./;C:/thrust-v1.1.0/;…/…/…/…/All Users/Application Data/NVIDIA Corporation/NVIDIA GPU Computing SDK/C/common/inc”
Arch=“12”
AddedDependencies=“gpu_muscl_godunov_solver.h;…/riemann_solver/gpu_common.h;…/riemann_solver/solver_toro.h;fluid_visualizer.h”
The missing identifier here seems to be ‘kGamma’, which is in the gpu_common.h file:
#pragma once
#include "common.h"
namespace gpu{
const Real kGamma = 1.4;
const Real kTolerance = 1e-6;
__device__ Real soundspeed (Real density, Real pressure) {
return sqrtf(kGamma * pressure / density);
}
} // namespace gpu
The error occurs on the return statement of soundspeed, but kGamma is defined above and this should be valid code. Any ideas what I’m missing?