[CMake] CMake CUDA 3.8+/9 support as a first class language with out Visual Studio Support... err what?

Brian J. Davis bitminer at gmail.com
Sat Jul 29 19:41:25 EDT 2017


With simple stand alone cmake 3.9 project using

cmake_minimum_required(VERSION 3.9)
project(cmake_testing CXX CUDA)

I can get a simple app to compile.  It however fails to run with:

GPU Device 0: "GeForce GTX 960M" with compute capability 5.0

Current device is [0]
Current device is [0]
CUDA error at 
C:\projects\cmake\cmaketesting\v3.9\cuda_basic\src\cuda_basic_test.cpp:67 
code=46(cudaErrorDevicesUnavailable) "cudaMalloc((void **)&d_volume, size)"

When trying to call cudaMalloc.  When trying to actually use the device.

     checkCudaErrors(cudaMalloc((void **)&d_volume, size));

So I am right back I started in the new simple project.

I am able to complle and run SDK examples say nbody.

it can only be two things right???  compile args and runtime environment 
(dll paths).  right?  err well or gremlins.

NBody compile important bits:

1>  C:\ProgramData\NVIDIA Corporation\CUDA 
Samples\v8.0\5_Simulations\nbody>"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\bin\nvcc.exe" 
-gencode=arch=compute_20,code=\"sm_20,compute_20\" 
-gencode=arch=compute_30,code=\"sm_30,compute_30\" 
-gencode=arch=compute_35,code=\"sm_35,compute_35\" 
-gencode=arch=compute_37,code=\"sm_37,compute_37\" 
-gencode=arch=compute_50,code=\"sm_50,compute_50\" 
-gencode=arch=compute_52,code=\"sm_52,compute_52\" 
-gencode=arch=compute_60,code=\"sm_60,compute_60\" --use-local-env 
--cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 
12.0\VC\bin\x86_amd64"  -I./ -I../../common/inc -I./ -I"C:\Program 
Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\/include" 
-I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\include"  -G --keep-dir x64\Debug -maxrregcount=0  
--machine 64 --compile -cudart static -Xcompiler "/wd 4819" -g   -DWIN32 
-DWIN32 -D_MBCS -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 
/MTd " -o x64/Debug/bodysystemcuda.cu.obj "C:\ProgramData\NVIDIA 
Corporation\CUDA Samples\v8.0\5_Simulations\nbody\bodysystemcuda.cu"


My simple test app compile bits:

2> C:\projects\cmake\cmaketesting\v3.9\build\cuda_basic\src>"C:\Program 
Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -ccbin 
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"  
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" 
-I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\inc" 
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" 
-I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\inc" 
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" 
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  
-G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile   
-Xcompiler="/EHsc -Zi -Ob0" -g   -D_WINDOWS -D"CMAKE_INTDIR=\"Debug\"" 
-DWIN32 -D_WINDOWS -D"CMAKE_INTDIR=\"Debug\"" -D_MBCS -Xcompiler "/EHsc 
/W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o 
cuda_basic_test.dir\Debug\cuda_basic_test.cu.obj 
"C:\projects\cmake\cmaketesting\v3.9\cuda_basic\src\cuda_basic_test.cu" 
-clean
2>CUDACOMPILE : nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' 
architectures are deprecated, and may be removed in a future release 
(Use -Wno-deprecated-gpu-targets to suppress warning).
2>  cuda_basic_test.cu
2>  Building Custom Rule 
C:/projects/cmake/cmaketesting/v3.9/cuda_basic/src/CMakeLists.txt
2>  CMake does not need to re-run because 
C:/projects/cmake/cmaketesting/v3.9/build/cuda_basic/src/CMakeFiles/generate.stamp 
is up-to-date.
2>  Compiling CUDA source file ..\..\..\cuda_basic\src\cuda_basic_test.cu...
2>
2> C:\projects\cmake\cmaketesting\v3.9\build\cuda_basic\src>"C:\Program 
Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" 
-gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env 
--cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 
12.0\VC\bin\x86_amd64"  -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\include" -I"C:\ProgramData\NVIDIA Corporation\CUDA 
Samples\v8.0\common\inc" -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\include" -I"C:\ProgramData\NVIDIA Corporation\CUDA 
Samples\v8.0\common\inc" -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing 
Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  
--machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g   
-D_WINDOWS -D"CMAKE_INTDIR=\"Debug\"" -DWIN32 -D_WINDOWS 
-D"CMAKE_INTDIR=\"Debug\"" -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS 
/Zi /RTC1 /MDd /GR" -o cuda_basic_test.dir\Debug\cuda_basic_test.cu.obj 
"C:\projects\cmake\cmaketesting\v3.9\cuda_basic\src\cuda_basic_test.cu"










More information about the CMake mailing list