andyschwarzl / gpuNUFFT

gpuNUFFT - An Open-Source GPU Library for 3D Gridding with Direct Matlab and Python Interface
http://cai2r.net/resources/software/gpunufft-open-source-gpu-library-3d-gridding-direct-matlab-interface
Other
77 stars 32 forks source link

invalid device symbol for "cudaMemcpyToSymbo" #97

Open bstatton opened 2 years ago

bstatton commented 2 years ago

Hi,

When running the demo script "cgsense_phantom_recon.m" I receive the error:

"invalid device symbol in /home/gpuNUFFT/CUDA/src/gpu/atomic/../std_gpuNUFFT_kernels.cu at line 18"

When I look up this line in that particular file it reads:

" 15 void initConstSymbol(const char symbol, const void src, IndType size) 16 { 17 if (std::string("GI").compare(symbol)==0) 18 HANDLE_ERROR(cudaMemcpyToSymbol(GI, src,size)); 19 20 if (std::string("KERNEL").compare(symbol)==0) 21 HANDLE_ERROR(cudaMemcpyToSymbol(KERNEL, src,size)); 22 }

"

I am running this on Linux CentOs 8 with CUDA 10.1, gcc 7.3 and gxx 7.3.

When I originally ran make to compile the mex files there are some messages regarding cudaMemcpyToArray that I don't understand so am not sure if these are related to the error returned when running the demo matlab script.

(url make.txt )

Any help will be gladly received.

Many thanks

Jan-Sedlacik commented 2 years ago

The "invalid device symbol" seems to be caused by compiling with an incompatible computation capability version which is not supported by our installed GPU model and/or CUDA version. The server we are trying to install the gpuNUFFT method for has K10 Tesla GPUs which seem to have an computation capability of only 3.0. We could resolve this issue by adding SET(FERMI_GPU ON) after line 95 in file gpuNUFFT/CUDA/CMakeLists.txt before running cmake. Kind regards, Jan.