cuda vs 各种问题记录

本文介绍了在编译CUDA项目时遇到的各种问题及其解决方案,包括找不到核心头文件、链接错误、缺少必要的props文件等,并提供了详细的步骤来解决这些问题。

编译cuda 工程

1.无法打开包括文件: “corecrt.h”: No such file or directory

解决方法; 把C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt下的 文件复制到 D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

2.LINK : fatal error LNK1104: 无法打开文件“libucrt.lib”。  出现链接错误,一般是项目的配置错误,选中所有160个项目文件,【配置】,【连接器】,【常规】,【附加库目录】  然后选择文件夹【C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\ucrt\x64】

3,注意只有选中项目文件(一个或多个),再点击配置图标,才能出现配置选项卡,如果选中的是文件夹则不会出现配置选项卡。

编译Matconvnet

4 无法找到cuda 9.1.props  cuda 9.1.   CUDA 9.1.targets   经检查【C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations】确实没有这两个文件,把

【C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations】的文件拷贝到上述文件夹即可。

5 cl.exe   C/C++的编译器。  目录位于2015【D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin】,2017【D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\bin\Hostx64\x64】。将上述两个目录加入环境变量,注意两者的顺序很重要.

6 错误:type_traits(505): error: expression must have a constant value。  一般是cuda  与cudnn的版本对应问题,编译matconvnet 时各种报错,最后版本为cuda8.0, cudnn  v5. 安装目录为【E:\cudnn-8.0-windows7-x64-v5.0-ga\cuda】。注意LIB文件夹下的cudnn.lib 不用解压缩。 最新版本cudnn目录为【C:\Program Files\cudnn】

7找不到 gdipuls 库问题。将【D:\Program Files\MATLAB\R2015b\sys\lcc64\lcc64\lib64】 文件夹下的gdipuls文件  拷贝到【D:\Program Files\MATLAB\R2015b\extern\lib\win64\microsoft】

8 a single input file =问题。 -L参数后面的目录需要双引号,['-L','"' dir '"'].

9 window7  anaconda python3.6 环境下装tensorflow gpu 后导入失败  但是Python 3.5换将则没有问题。最后在3.5下用GPU版本,或者在3.6下用CPU 版本。

03-18
### 如何在 Visual Studio 中配置和使用 CUDA #### 1. 配置 CUDA 工程 为了使 Visual Studio 能够支持 CUDA 编译,需要通过特定的设置来引入 NVIDIA 提供的相关工具链。具体操作如下: - **生成自定义依赖项** 在 Visual Studio 中,可以通过右键单击项目的解决方案资源管理器中的项目名称,选择“生成依赖项”,再选择“生成自定义”。随后,在本地路径 `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\extras\visual_studio_integration\MSBuildExtensions` 下定位到 `.targets` 和 `.props` 文件并加载它们[^1]。 - **添加环境变量** 如果系统环境中尚未包含 CUDA 的相关路径,则需手动将其加入系统的 PATH 环境变量中。这一步骤对于确保编译器能够识别 CUDA SDK 至关重要[^4]。 #### 2. 设置项目属性 为了让 Visual Studio 正确解析和链接 CUDA文件以及库文件,还需要调整项目的属性设置: - **指定 Include 目录** 进入项目属性对话框 (`Properties`) 后,导航至 `VC++ 目录 -> 包含目录 (Include Directories)`,在此处新增一条记录指向 CUDA 的头文件所在位置,通常为 `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\include`[^3]。 - **指定 Library 目录** 类似地,在同一界面下的 `库目录 (Library Directories)` 添加对应版本的 lib 文件夹地址,例如 `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\lib\x64`。 #### 3. 创建首个 CUDA 工程实例 当上述准备工作完成后,可以尝试创建一个新的 CUDA 应用程序以验证配置是否成功。以下是简单的实现代码示例: ```cpp #include <cuda_runtime.h> #include <stdio.h> __global__ void addKernel(int *c, const int *a, const int *b) { int index = threadIdx.x; c[index] = a[index] + b[index]; } int main() { const int arraySize = 5; int h_a[arraySize] = {1, 2, 3, 4, 5}; int h_b[arraySize] = {10, 20, 30, 40, 50}; int h_c[arraySize] = {0}; int *d_a = nullptr; int *d_b = nullptr; int *d_c = nullptr; cudaMalloc((void**)&d_a, arraySize * sizeof(int)); cudaMalloc((void**)&d_b, arraySize * sizeof(int)); cudaMalloc((void**)&d_c, arraySize * sizeof(int)); cudaMemcpy(d_a, h_a, arraySize * sizeof(int), cudaMemcpyHostToDevice); cudaMemcpy(d_b, h_b, arraySize * sizeof(int), cudaMemcpyHostToDevice); addKernel<<<1, arraySize>>>(d_c, d_a, d_b); cudaMemcpy(h_c, d_c, arraySize * sizeof(int), cudaMemcpyDeviceToHost); printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n", h_c[0], h_c[1], h_c[2], h_c[3], h_c[4]); cudaFree(d_a); cudaFree(d_b); cudaFree(d_c); return 0; } ``` 此代码展示了如何利用 CUDA 实现两个整数数组相加的功能,并将结果返回给主机端打印输出。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值