错误 MSB3721 命令 已退出,返回代码为 1 CUDA 11.6.targets ***

2023-12-16 04:20

本文主要是介绍错误 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 ***的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/499086

相关文章

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢