CUDA+Windows+VS环境配置
Index 目录索引写在前面1VS的安装2CUDA 的安装和配置2.1 CUDA的安装2.2 CUDA环境变量的配置2.3 检验CUDA环境变量的配置3 VS中CUDA的配置安装过程中可能遇到的问题情况1写在前面以前只是在 PyCharm 编译环境中调用 GPU 来运行程序,这篇文章将记录 VS 编译环境中如何使用 CUDA 调用 GPU 来运行程序。1VS的安装如果要在VS中调用CUDA,需先按
Index 目录索引
写在前面
以前只是在 PyCharm
编译环境中调用 GPU
来运行程序,这篇文章将记录 VS
编译环境中如何使用 CUDA
调用 GPU
来运行程序。
1 VS的安装
如果要在VS中调用CUDA,需先按照VS编译环境,因为CUDA在安装的过程中会自动将相关文件安装至VS环境中,所以要先安装VS
,安装教程这里不再赘述。
2 CUDA 的安装和配置
2.1 CUDA的安装
首先是CUDA的下载和安装,安装教程这里不再赘述,要注意CUDA和GPU版本的对应。
2.2 CUDA环境变量的配置
参考这篇文章,在电脑中打开环境变量
,根据下图,在系统变量
里添加如下内容:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
【注】CUDA _PATH
与CUDA _PATH_V10_1
是安装CUDA在时自动添加的,CUDA _PATH_V10_1
中的10_1
指的是安装的CUDA版本号。
接着, 根据下图所示,添加以下内容到用户变量
的path
中:
%CUDA_LIB_PATH%
%CUDA_BIN_PAHT%
%CUDA_SDK_BIN_PAHT%
%CUDA_SDK_LIB_PATH%
2.3 检验CUDA环境变量的配置
重启电脑,打开cmd,在命令行中输入 set cuda
,可以看到刚才配置的CUDA
的环境变量配置信息。
接下来通过cd命令切换到如下目录:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite
输入如下命令:
deviceQuery.exe
即运行该目录下的deviceQuery.exe
,如下所示:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite>deviceQuery.exe
会在命令框中输出GPU的信息,如果最下面如下语句:
Result=PASS
则表示CUDA已安装和配置成功,且能调用CUDA加速程序的运行。
或者可以进入到如下所示的CUDA自带的测试案例目录中,如图所示:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\1_Utilities\deviceQuery
用VS
打开*.sln
文件,同样的,运行如果输出GPU的信息,则表示CUDA已配置成功,且能调用CUDA加速程序的运行。
3 VS中CUDA的配置
打开VS,新建工程后,如果想要调用GPU加速程序,则要找到属性管理器
,在Debug
模式中,新建一个*.props
文件,点击右键,打开属性页
,如下图所示,在左侧找到VC++目录
,接着在包含目录
中添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
,在库目录
中添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
。
其次,如下图所示,在左侧找到链接器
,接着找到下面的输入
,在右侧的附加依赖项
中,添加如下内容:
cublas.lib
cublasLt.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppicom.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvgraph.lib
nvml.lib
nvrtc.lib
OpenCL.lib
至此,VS编译环境中的CUDA已经配置完毕。
4 VS中OpenCV的CUDA版本编译
在VS编译环境下,调用OpenCV库进行图像处理的过程中,如果想要使用GPU加速,则需要对OpenCV进行相应的编译,即编译Opencv的CUDA版本,用以驱动GPU。
(未完待续…)
本小节通过记录CUDA的编译过程,以期做到授之以渔。
4.1 未使用CUDA加速时
C++的图像处理代码,在未使用CUDA加速时,处理一张图像的速度可能要500ms左右,接下来尝试如何使用CUDA加速。
4.2 不修改代码,直接使用编译CUDA后的OpenCV来运行
官网下载的OpenCV是CPU版本的,如若想要调用GPU来运行程序,首先要编译CUDA版本的OpenCV,编译方法可以参考前辈的这篇文章。
编译后,再次运行代码,一张图像的处理时间可以由原来的 500ms
降至 200ms
,但通过检查代码运行过程中GPU的消耗,发现并未实现真正意义上的GPU调用,接下来需要修改代码。
4.3 编译OpenCV CUDA后,添加CUDA加速的代码
在原有代码的基础上,尝试修改代码,目的是实现真正意义上的GPU调用。在原有程序中添加下列CUDA加速的代码:
//加上这样几句之后,程序再运行dnn计算时,会使用gpu加速
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
//net.setPreferableBackend(cv::dnn::DNN_BACKEND_OPENCV);
//net.setPreferableTarget(cv::dnn::DNN_TARGET_CPU);
一张图像的处理所用时间继续降至了 2ms
。
【注】经试验发现,如果只添加CUDA加速的代码,而不使用经过OpenCV CUDA编译的库,则无法调用CUDA使用GPU加速。
安装过程中可能遇到的问题
情况1
在VS点击生成解决方案,会出现下面这样的找不到SDK
报错信息,如下如图所示:
找不到windows SDK版本10.0.15063.0
可能原因:缺少相应的SDK。
解决办法:参考这篇文章和这篇文章,如下图所示,无需重装VS
,找到VS的安装软件,点击打开,点击修改(modify),缺少哪个版本安装哪个windows SDK即可。
更多推荐
所有评论(0)