[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