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

Incompatibility with CUDA 11 #89

Open samr96 opened 3 years ago

samr96 commented 3 years ago

Hi Andy,

This is not an issue per se, as I managed to make things work with CUDA 10, but I wanted to report some incompatibilities with the latest CUDA 11, to avoid anybody else getting stuck (NVIDIA GeForce GTX 1650 and Win10).

(1) Kepler architectures (sm_30) are dropped from CUDA 11, so line 105 in the top level CMakeLists.txt file throws up an error. This is easily changed, though.

(2) The more severe incompatibility is that CUDA 11 no longer supports integration with Visual Studio 13 (see Table 2 in https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html ).

As mentioned, everything built as expected after downgrading to CUDA 10.

I also attempted a build with Visual Studio 2019 Community and CUDA 11, which was successful in that the build was seamless and error-free, but the demos returned unexpected results (e.g. see attached the figure returned by the cgsense_brain32ch_recon_2D script). I didn't debug this any further and assume this is as expected, which is why you explicitly state that VS 2013 is required, right? It's only that I expected it to fail in another way.

Cheers, Sam

image

andyschwarzl commented 3 years ago

Thanks for the info. I will have a look on it.

emilljungberg commented 3 years ago

Hi,

I just tried to compile the code on Ubuntu 18.04 with CUDA 11.2 and getting some errors in the compilation step. @samr96 what changes did you make to get it to compile?

samr96 commented 3 years ago

Hi Emil @emilljungberg,

I just installed CUDA 10.2 and compiled with that, then everything worked. I think you can have multiple versions of CUDA installed on your machine.

Though there might be a way to make it work with CUDA 11 on Ubuntu, because it was the Win10 Visual Studio 13 dependency that made things go wrong for me. If you really want to use CUDA 11, you could try removing the GPU architectures which have been deprecated in CUDA 11 from the CMakeLists.txt file (so sm_30). Good luck!

RichardUVA commented 3 years ago

Hi @emilljungberg @samr96 Could you provide some details about the package versions in Linux? for example, the GCC version? I tried to modify sm_20 into sm_60 for cuda 10, but it still didn't work. The error massage showed the C++ code error.

Thanks, Junyu

valeryozenne commented 3 years ago

Hi everybody,

I have a similar behavior of the gpuNUFFT toolbox. If someone as a fix , do hesitate to answer to this post. Both cudatoolkit were installed and I modified the bashrc to link to the desired cuda version.


The code was running on Ubuntu 20.04 with gcc (Ubuntu 7.5.0-6ubuntu2) 7.5.0 for the compilation and Matlab R2020b for testing the code

the line to be removed in theCMake for the compilation is below:

-  set(MY_NVCC_FLAGS -arch=sm_30 -gencode arch=compute_30,code=sm_30)

using cuda 10.2 Capture d’écran de 2021-04-12 15-30-15

using cuda 11.2 Capture d’écran de 2021-04-12 15-26-49

Thanks in advance,

Best, Valéry

curtcorum commented 3 years ago

Hello All,

Did not see this post before updating to cuda-toolkit-11.4 I am seeing very much similar behavior to the above....this is just a grid once as a code test... OS = 1.25, KW = 2.5 using same dcf

It seems like rolling back to cuda-10-2 is the current solution. If anybody working on this I can provide more details, or please share any update you may have found!

thanks!

Curt

simulated 3d radial (same) datasets 256x256x256 65536 views preview_cuda-10-2 preview_cuda-11-4 cuda 10.2 .................................................... cuda 11.4

curtcorum commented 3 years ago

obj.switches.atomic = true; %obj.switches.atomic = true; obj.switches.textures = true; %obj.switches.textures = true; obj.switches.balanced = true; %obj.switches.balanced = true; obj.switches.gpu_sw = 8; %sw -- sector width to use

FT_i = gpuNUFFT( kspace_i', dcf_d.^2, OS, KW, gpu_sw, imageDims, [], atomic, textures, balanced);

obj.kspCart(:, :, :, i_dynamic, i_channel) = kR_norm (FT_i' fid_i);

curtcorum commented 3 years ago

And back to cuda-10-2 preview

andyschwarzl commented 2 years ago

Sorry for my late response. As I'm currently not having access to a CUDA 11 capable card it's hard for me to fix it.

I hope someone finds a fix - PR welcome!

Best regards,

Andy

khammernik commented 2 years ago

The issue unfortunately still persists with cuda 11.5 and 11.6. For me, it works until cuda 11.1.