截止20220208,CUDA的最新版本为CUDA 11.6,Visual Stadio的最新版本为2022,最新版本的CUDA用在VS上暂时还没试验,下面就CSDN上学习的一篇CUDA9.0+VS2017的学习中我遇到的一些问题进行说明:
win10+CUDA9.0+VS2017配置网址:https://blog.csdn.net/u013165921/article/details/77891913
问题:
1、注意:头文件目录、库目录、依赖项目录(库,比CCS多的一项,当然CCS中还有包)
下面的依赖项可以给:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64文件夹中的.lib文件全部添加上。
可以用管理员运行cmd(ctr+shift+enter)的方法将上述文件中的.lib文件的文件名写入到TXT文本文件中。操作入下图所示:
VS2017配置:
1.打开vs2017,我们可以观察到,在VS2017模板一栏下方出现了“NVIDIA/CUDA 9.0”。创建一个空win32程序,即cuda_test项目。
2.右键源文件文件夹->添加->新建项->选择CUDA C/C++File,取名cuda_main。
3.选择cuda_test,点击右键–>项目依赖项–>自定义生成,选择CUDA9.0。
4.点击cuda_main.cu的属性,在配置属性–>常规–>项类型–>选择“CUDA C/C++”。
1.x64(3点,项目的配置共上面的4点加下面的3点!)
1.1 包含目录配置
1.右键点击项目属性–>属性–>配置属性–>VC++目录–>包含目录
2.添加包含目录:
$(CUDA_PATH)\include
1.2 库目录配置
1.VC++目录–>库目录
2.添加库目录:
$(CUDA_PATH)\lib\x64
1.3 依赖项
配置属性–>链接器–>输入–>附加依赖项
添加库文件:
cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
nvcuvid.lib
OpenCL.lib
。。。
文件夹中的文件名整理方法:可以cmd进入以上路径 用DIR *.lib /B > 1.txt ,复制粘贴即可。
cmd中先“E:回车”切换到E盘,再cd到指定文件中后按上面语句进行操作
.x86(win32)
2.1 包含目录配置
右键点击项目属性–>属性–>配置属性–>VC++目录–>包含目录
添加包含目录:
$(CUDA_PATH)\include
2.2 库目录配置
1.VC++目录–>库目录
2.添加库目录:
$(CUDA_PATH)\lib\Win32
2.3 依赖项
配置属性–>连接器–>输入–>附加依赖项
添加库文件:
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
nvcuvid.lib
OpenCL.lib
备注: win32和x64位的lib库有差别,配置时需注意,除了上述添加的lib文件外,x64还有其他的lib库文件,如cublas.lib,如运行1.6的样例时,要添加这个库,不然会编译失败。
2、程序编译后产生下述错误:
错误 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 “D:\Visual Studio 2017\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86” -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 Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FdDebug\vc141.pdb /FS /Zi /RTC1 /MDd " -o Debug\CUDA_main.cu.obj “D:\Visual Studio 2017 data\repos\CUDAlearn\CUDAlearn\CUDA_main.cu””已退出,返回代码为 1。 CUDAlearn D:\Visual Studio 2017\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 9.2.targets 712
注意图片中下面两处要选择Release x64:
3、该程序运行后计算结果全为0(搜索关键词:VS调用GPU做矩阵相乘运算后结果全为零):CUDA的版本不对,我将CUDA 9.0换成CUDA 11.6后运算结果正确,入下图所示:
**关于CUDA版本安装问题,可以直接在上一版本安装的基础上安装,也可以在应用于程序中按照安装日期卸载之前安装的版本。
**切换CUDA版本:(1)需要修改的环境变量(在高级系统设置里面):CUDA_PATH、CUDA_SDK_PATH。切换CUDA版本的环境变量设置,(2)注意Path路径中变量的上下移动(将系统变量中的Path环境变量中的两个11.6相关的环境变量相较于其它版本的上面):https://blog.csdn.net/qq_38500228/article/details/123870113
检测CUDA安装的成功与否在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite文件夹下运行链接中的两个.exe文件即可!!! deviceQuery.exe 和 bandwidthTest.exe
查看CUDA版本:nvcc -V ; nvidia-smi.exe(两个命令显示的CUDA版本不一样的原因解释:https://blog.csdn.net/m0_50973309/article/details/125623897 ,按照博客所说,前者显示的是运行API,后者显示的是驱动API,实际使用的时候按照运行API来!)