GPU并行计算问题:出现MSB3721 error exited with code

本文解决在Visual Studio 2017中使用CUDA 9.0进行GPU编程时遇到的编译错误问题,具体表现为nvcc编译器退出代码1。通过调整编译配置,从Debug模式改为Release模式成功解决了问题。
部署运行你感兴趣的模型镜像
Severity Code Description Project File Line Suppression State Error MSB3721 The command 
""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -
gencode=arch=compute_20,code=\"sm_21,compute_20\" --use-local-env --cl-version 2015 -ccbin 
"D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -I"C:\Program 
Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU 
Computing Toolkit\CUDA\v8.0\include" --keep-dir x64\Debug -maxrregcount=0 --machine 64 --
compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 
/nologo /Od /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "D:\c++ 
project\xhfy\xhfy\kernel.cu"" exited with code 1. xhfy C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets 689

我出现了上述类似的问题。查找了错误记录为

 nvcc fatal   : 32 bit compilation is only supported for Microsoft Visual Studio 2013 and earlier

我的系统是win10,vs是2017,cuda9.0.

基本是按照 https://blog.youkuaiyun.com/u013165921/article/details/77891913这篇文章配置的。

这里面出现这个问题。我谷歌了一下。地址:https://stackoverflow.com/questions/42600823/visual-studio-2015-msb3721-error-exited-with-code-1-on-cuda-8-0

I changed my platform toolset to Visual Studio 2013 and it worked perfectly.

也就是说改变平台工作集。还是不行

后来发现将debug改变成release才可行。个人看法:gpu可能不支持debug模式。

 

 

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

退出错误代码 `2`(即 `exited with code 2`)通常表示命令行工具或程序在执行过程中遇到了某种形式的错误,尤其是在命令行参数解析或配置文件加载阶段出现问题时会返回此代码。虽然不同程序对退出代码的定义可能略有差异,但在许多 Unix/Linux 工具和 Windows 命令行程序中,`exit code 2` 通常表示“命令使用错误”或“配置错误”。 ### 常见原因分析 1. **命令行参数错误** 程序在解析命令行参数时发现无效、缺失或冲突的参数。例如,某个必需的参数未提供,或者指定了不支持的选项组合。 2. **配置文件错误** 程序启动时加载的配置文件(如 `.ini`、`.conf` 文件)中存在语法错误、路径错误或不支持的配置项。例如 MySQL 的 `my.cnf` 文件中包含非法指令或指向不存在的目录。 3. **权限问题** 程序试图访问受保护资源(如系统文件、端口、套接字)时因权限不足而失败。例如 MySQL 服务尝试写入其数据目录 `/var/lib/mysql` 但权限不足。 4. **依赖项缺失或路径错误** 程序依赖的库文件、可执行文件或环境变量未正确配置。例如 Windows 上的 `cmd.exe` 执行脚本时找不到某些系统工具或路径设置错误。 5. **脚本或调用逻辑错误** 在构建系统(如 MSBuild)中,脚本调用失败也可能导致 `exit code 2`,尤其是在调用外部工具时传入了错误的参数或路径。 ### 解决方法 1. **检查命令行参数** 确保所有传入的命令行参数正确无误。可以尝试运行程序的帮助命令(如 `program --help`)确认参数格式和使用方式。 2. **查看日志文件** 如果程序有日志输出机制,检查其日志文件以获取更详细的错误信息。例如 MySQL 的错误日志通常位于 `/var/log/mysql/error.log` 或类似路径中 [^2]。 3. **验证配置文件** 检查程序的配置文件是否存在语法错误或路径错误。可以尝试使用 `--configtest` 或类似参数(如果支持)来验证配置文件的有效性。例如 MariaDB 支持通过 `mysqld --configtest` 来检查配置 [^4]。 4. **运行权限检查** 确保程序运行的用户拥有访问所有必要资源的权限。例如,在 Linux 系统中,使用 `ls -l /var/lib/mysql` 检查 MySQL 数据目录的权限是否正确 。 5. **重新配置环境变量或路径** 确保所有必要的环境变量(如 `PATH`、`LD_LIBRARY_PATH`)已正确设置,尤其是在跨平台或自定义安装环境中。 6. **使用调试工具辅助排查** 在开发环境中(如使用 Qt 或 MSBuild),可以尝试启用调试输出或日志记录功能,查看具体是哪一步骤导致了错误。例如在 MSBuild 中,启用详细日志有助于定位 `error MSB6006` 的具体原因 [^3]。 7. **重启相关服务** 如果问题发生在服务启动过程中(如 MySQL 或 MariaDB),尝试注释掉可能引起问题的配置项后重启服务 [^2]。 ### 示例:验证 MySQL 配置文件 ```bash sudo mysqld --configtest ``` 如果输出中提示错误,可以根据提示修改 `my.cnf` 文件中的配置项。 ### 示例:检查目录权限 ```bash ls -l /var/lib/mysql ``` 确保 MySQL 用户(通常是 `mysql:mysql`)拥有该目录的读写权限。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值