CUDA 9.0与MSVC 15.4(2017)作为主机 - 不兼容问题

时间:2017-11-29 16:15:53

标签: visual-studio cuda visual-studio-2017 nvcc

为什么此命令行适用于VS2015:

"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin/nvcc.exe" -M -D__CUDACC__ D:/gPMCbct/RTK/code/rtkCudaCropImageFilter.cu -o D:/gPMCbct/RTK-build/code/CMakeFiles/cuda_compile_1.dir//cuda_compile_1_generated_rtkCudaCropImageFilter.cu.obj.NVCC-depend -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin" -m64 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -DITK_IO_FACTORY_REGISTER_MANAGER -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/GR\",\"/EHsc\",\"/std:c++14\",\"/arch:AVX2\",\"/favor:INTEL64\",\"/openmp\",\"/bigobj\",\"/MDd\",\"/Zi\",\"/Ob0\",\"/Od\",\"/RTC1\" -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -DNVCC -ID:/gPMCbct/RTK "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/include" -ID:/gPMCbct/ITKv4/Modules/Core/Common/include -ID:/gPMCbct/ITKv4-build/Modules/Core/Common -ID:/gPMCbct/RTK-build

VS2017中基本相同的命令行失败时:

"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin/nvcc.exe" -M -D__CUDACC__ D:/gPMCbct/RTK/code/rtkCudaCropImageFilter.cu -o D:/gPMCbct/RTK-build/code/CMakeFiles/cuda_compile_1.dir//cuda_compile_1_generated_rtkCudaCropImageFilter.cu.obj.NVCC-depend -ccbin "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/bin" -m64 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -DITK_IO_FACTORY_REGISTER_MANAGER -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/GR\",\"/EHsc\",\"/std:c++14\",\"/arch:AVX2\",\"/favor:INTEL64\",\"/openmp\",\"/bigobj\",\"/MDd\",\"/Zi\",\"/Ob0\",\"/Od\",\"/RTC1\" -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -DNVCC -ID:/gPMCbct/RTK "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/include" -ID:/gPMCbct/ITKv4/Modules/Core/Common/include -ID:/gPMCbct/ITKv4-build/Modules/Core/Common -ID:/gPMCbct/RTK-build

唯一的区别是主机编译器的路径,即“-ccbin”参数。

--verbose打印vcvars64.bat和每个环境路径的输出,然后以%error_level% = 1退出。

这两个命令都是用CMake生成的。

除了知道某些内容出错之外,退出代码1对其他任何内容都没有帮助。 如何获得有关命令失败原因的更多信息?

我在线程和邮件列表上发现了类似的问题,但要么,真正的问题没有得到解决,或者解决方案在这里不起作用(一些Windows路径问题,一些包含/链接问题和一些源代码问题)

同样的问题也发生在另一个CMake生成的项目中,源代码完全不同。

1 个答案:

答案 0 :(得分:1)

解决方案似乎就像将VS17的-ccbin路径更改为正确cl.exe文件路径一样简单,在我的示例中,正确的路径是:

C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.11.25503/bin/HostX64/x64/cl.exe

-ccbin参数与CMake中的CUDA_HOST_COMPILER变量相同。