本文主要是介绍错误 MSB3721 命令 已退出,返回代码为 1 CUDA 11.6.targets ***,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
总是遇到”错误 MSB3721 命令 已退出“这个错误,但是每次的原因都不一样,记录一下踩过的坑吧
error1:2023.12.15
错误背景:已经写好的C++工程在其他两台windows服务器上都编译通过了,但是给另外一位同事电脑配置后在visual stdio中生成解决方案一直报这个错,基本是新电脑,配置是:显卡(4090)、CUDA(11.7)。
完整报错:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB3721 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\nvcc.exe"
--use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64"
-x cu -rdc=true
-ID:\include
-ID:\include\Common
-ID:\include\tinyxml2
-I"C:\Program Files\MATLAB\R2022a\extern\include"
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include"
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include" -G
--keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -std=c++17 -arch=native -Xcompiler="/EHsc -Zi -Ob0" -g -D_WINDOWS -D"CMAKE_INTDIR=\"Debug\""
-Dfilter_EXPORTS
-D_WINDLL
-D_MBCS
-DWIN32
-D_WINDOWS
-D"CMAKE_INTDIR=\"Debug\""
-Dfilter_EXPORTS -Xcompiler "/EHsc /W3 /nologo /Od /Fdfilter.dir\Debug\vc142.pdb /FS /Zi /RTC1 /MDd /GR" -o filter.dir\Debug\/src/filter.cu.obj "D:\src\filter.cu"”已退出,返回代码为 1。
filter C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA 11.7.targets 790
这个报错基本看不出什么问题,使用命令行生成解决方案可以得到更细节的报错信息:
make --build .
然后在命令行中上面这个报错的前一行得到新的报错信息:
nvcc fatal : Unsupported gpu architecture 'compute_89'
发现是算力不匹配问题,首先查看当前CUDA版本支持的最高算例,使用命令:
nvcc --list-gpu-arch
E:\***>nvcc --list-gpu-arch
compute_35
compute_37
compute_50
compute_52
compute_53
compute_60
compute_61
compute_62
compute_70
compute_72
compute_75
compute_80
compute_86
compute_87
确实,CUDA11.7不支持compute_89,查看能够支持89的CUDA版本升级安装即可,这里我的4090显卡对应>=CUDA11.8
查询参照网站:进去直接搜索自己的显卡号找快一点
升级CUDA后报错消失。
tip:
Visual Stdio编译错误不清晰时,考虑用命令行编译。
参考文章:
https://zhuanlan.zhihu.com/p/646962555
https://blog.csdn.net/m0_37605642/article/details/99100924
https://blog.csdn.net/Redamancy06/article/details/125809903
重装cuda选择组件时,若已经取消选择visual stdio intergration,但安装时仍然会安装visual stdio intergration edition,并报错安装失败,则在选择安装选项时,同时取消掉Nsight VSE即可。
这篇关于错误 MSB3721 命令 已退出,返回代码为 1 CUDA 11.6.targets ***的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!