美文网首页
VS2017 running a CUDA sample rep

VS2017 running a CUDA sample rep

作者: Wonshington | 来源:发表于2018-12-24 22:30 被阅读208次

    安装VS2017和CUDA9.0时,出现C1189和MSB372的错误。

    使用VS2017 测试CUDA9.0,报错:

    问题1: Error C1189 #error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!

    问题2: Error MSB372 错误 MSB3721 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include"  -G  --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static  -g  -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\cuda_main.cu.obj "E:\PHD_FILE\CUDA\test\cuda_test\cuda_test\cuda_main.cu"”已退出,返回代码为 2。

    问题的形成原因:

    安装的CUDA版本与VS版本不匹配,其中CUDA 9.0.176 仅支持1600<_MSC_VER<1911,而VS2017 C++ (parameter _MSC_VER)参数是1912。(CUDA9.2 最新的更新支持到了VS2017 15.6,而VS2017已经更新到了15.9.4。)

    网上有人建议进行如下更改:

    找到"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\crt\host_config.h"(路径不是绝对的,这是你安装时自己选的路径.忘记了就搜索下),  然后将

    修改前代码:#if _MSC_VER < 1600 || _MSC_VER > 1910

    修改后代码:#if _MSC_VER < 1600 || _MSC_VER > 1911

    本人同样进行测试,结果依然失败。

    网上也有人建议下载最新版本CUDA,本人试着下载CUDA 9.2 版本,但是结果依然失败,其原因还是版本不兼容问题。

    因此,本人选择降低VS的版本以使其兼容CUDA 9.2。具体操作如下:

    首先对VS 2017进行配置,本人使用最新版的vs2017,在cuda的头文件host.config中定义了对于编译器版本的支持范围,cuda9.1默认支持到VC 140,本人尝试了修改头文件以避免版本检查,不过新版的VC仍然无法编译通过,因此只能使用vs installer 安装了vs2015 V140版本的编译器:

    图1 安装vs2015  v140编译器

    然后打开VS工程,在相应的项目上使用VS2015(v140)平台工具集:修改前的平台工具集如图2,修改后的结果如图3(选择该项的前提是正确安装vs2015 V140版本的编译器)。

    图2 配置错误项 图3 更正后的配置项

    最后即可正常编译。对于具体的cuda配置步骤,可参考Win10下搭建Vs2017+CUDA开发环境

    完成上述步骤,一般即可进行相关CUDA编程,但是也可能遇到     错误 MSB4019 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 9.2.targets”。

    关于该问题的解决方案,请查看本人的另一篇博客错误 MSB4019 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 9.2.targets”。


    以上相关内容为本人亲测,如有问题,请留言讨论。

    相关文章

      网友评论

          本文标题:VS2017 running a CUDA sample rep

          本文链接:https://www.haomeiwen.com/subject/ltytlqtx.html