RTX3060+Win10+cuda11.1+cuDNN8.0.4+Libtorch1.9.0+Opencv3.4.6+VS2019深度学习C++配置

0前言

本博客旨在说明在显卡RTX3060+Win10(显卡RTX3080测试下来也可以)环境下,通过正确安装最新驱动+cuda11.1+cudnn8.0.4来配置深度学习环境,接着在VS2019上使用Libtorch1.9.0(C++版本深度学习框架)来做深度学习的开发任务,比如用C++来部署深度学习模型。

本博客的特点在于:

1.基本上将所有需要的操作都具体地交代了,包括一些可能出现的浪费时间的坑点,适合小白学习并快速上手;如果有已经做好或者会的部分(比如安装VS)请直接跳过。

2.在30系列显卡上来使用Libtorch1.9版本的配置教程,目前网上系统介绍的资料较少,本文尽量做到全面介绍。

3.本教程所有需要下载的安装包或者库都有两种下载方式:

第一种是说明如何在官网上找到对应的版本,自行下载;

第二种是可以直接从本人生成的百度网盘链接下载所需要的安装包。

链接:https://pan.baidu.com/s/16M66qZ3ZYY9EzXjUGf4d3g

提取码:6666

打包的文件夹如下图所示,勾选需要的安装包或者库保存下载。

我的环境配置:

显卡RTX3060

Windows10

驱动466.77

cuda11.1

cuDNN8.0.4

Opencv3.4.6

Libtorch1.9.0

Visual StudioCommunity2019

1检查显卡

搜索"设备管理器",在弹出的界面中点击显示适配器,看显示的是什么

如果显示当前读取到的显卡型号,那么说明显卡可以使用了。

如果显示的是下图的Microsoft 基本显示适配器

则说明驱动需要更新,需要安装最新的驱动

而驱动安装只需要记住一个原则:使用最新版本的驱动即可。

最新的驱动一定可以向下兼容。

本人提供的包:

找到466.77-desktop-win10-64bit-international-dch-whql,下载。

官网下载:

可以去NVIDIA官网下载最新驱动

比如RTX3060显卡+Win10,就选择如下图所示的配置

接着点击搜索,下载即可

点击466.77-desktop-win10-64bit-international-dch-whql

一路安装到底即可。

等安装成功后再次检查设备管理器的显示适配器,应该会显示当前读取到的显卡型号,如下图所示。


2下载、安装cuda11.1.0

2.1下载cuda11.1.0

本人提供的包:

找到cuda_11.1.0_456.43_win10.exe,下载。

官网下载:

建议百度搜索cuda11.1.0,会显示cuda11.1.0的下载地址,如下图所示。按照下图

建议不要从英伟达官网进去寻找cuda11.1.0,因为英伟达官网会显示最新版本的cuda(目前是11.3,以后应该会是更高的版本),不是所需要的历史版本,而安装太高的版本就可能需要更高版本的Libtorch。

2.2安装cuda11.1.0

点击cuda_11.1.0_456.43_win10,一路安装到底即可

PS:最后的界面Launch Samples可以不用勾选,直接关闭。

3下载、配置cuDNN8.0.4

3.1下载cuDNN8.0.4

个人建议这里直接使用本人网盘里的cuDNN压缩包,因为如果从英伟达官网下载的话需要登录,而且英伟达官网的速度比较慢,所以比较麻烦。

本人提供的包:

找到cudnn-11.1-windows-x64-v8.0.4.30.zip,下载。

官网下载:

先百度搜索cuDNN下载,进入英伟达官网的cuDNN界面

点击Download cuDNN,进入以下界面。

如果没有注册过的话先点击Join Now进行注册;如果注册过的话,点击Login来登录。

登陆上之后,进入以下界面,勾选I Agree To the Terms of the cuDNN Software License Agreement,会弹出Archived cuDNN Releases

点击Archived cuDNN Releases,在新的界面中找到对应cuda11.1的cudnn8.0.4版本,找到Win10对应的cuDNN Library,点击下载。

3.2配置cuDNN8.0.4

解压cudnn-11.1-windows-x64-v8.0.4.30文件

打开里面的文件,点击cuda,会有3个文件夹bin、include、lib

接着打开以下的路径:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1

然后把刚刚解压好的cudnn的3个文件夹bin、include、lib里面的文件分别复制到上面这个目录下对应的bin、include、lib里面去,复制完后应该要有下图所示的文件。

4确认cuda是否安装成功

键盘按Win+R

输入cmd,按回车,在弹出的界面输入nvcc -V

按回车,如果出现以下界面,则说明安装cuda11.1成功。


5下载、安装、配置Visual Studio2019

5.1下载VS2019

进入Microsoft Visual Studio官网

本人选择社区版本,下载。

5.2安装VS2019

接着安装VS2019,一路安装到底,直到出现以下界面的时候勾选"使用C++的桌面开发"和"Visual Studio扩展开发"。

6.下载Opencv3.4.6

Tip:

Opencv版本如果使用太高的版本可能会不兼容,本人使用Opencv3.4.6没有报错。

本人提供的包:

找到opencv-3.4.6-vc14_vc15,下载,安装后生成opencv文件夹。

官网下载:

操作:

进入Opencv官网在Library一栏找到Releases,如下图所示:

找到所需版本,点击Windows,就可以下载opencv-3.4.6-vc14_vc15.exe,点击后就可以生成opencv库。

7下载Libtorch1.9.0

Tip:

这里需要注意由于30系列显卡的关系,所需要的安装cuda就得在11以上,而较高的cuda版本就需要较高的Libtorch版本,具体的关系就需要去Pytorch官网上查看。

结论:

显卡型号决定cuda版本的下限,而cuda版本又决定了torch的库(不管是C++的Libtorch还是Python的Pytorch)是需要和cuda版本匹配的。

PS:

事实上本人在第一次直接在3060显卡上跑由Libtorch1.7.1开发的程序时死活就是没法加载到GPU上,直到后来想下载debug模式的库时候才想起来Libtorch有一个Compute Platform这个要求,所以这才注意到本人之前使用的Libtorch1.7.1是不支持cuda11.1的。

本人提供的包:

找到libtorch-win-shared-with-deps-1.9.0+cu111.zip,下载,解压。

官网下载:

在Pytorch的官网上可以查到目前Libtorch最新版本1.9.0可以有支持cuda11.1的版本,于是选择最新的这个Libtorch1.9.0的Release版本。

下载,解压。


8VS配置Opencv和Libtorch

VS配置Opencv和Libtorch总共包括头文件,lib文件和dll文件。

操作:

1.打开VS2019,在界面上找到创建新项目,点击后在弹出的界面中,点击空项目

点击右下角的下一步,接着在配置新项目的界面中,输入自己想取的项目名称名字和对应的位置

再点击右下角的创建,这时会弹出项目界面,此时已经产生待会用于C++深度学习开发的项目了。

2.确定自己的编译模式(Debug/Release)和编译平台(x86/x64/Any Cpu)

本人使用的是Release+x64

Tip:关于编译模式和编译平台的选择,可以参考以下资料:

Visual Studio中Debug与Release以及x86、x64、Any CPU的区别


3.配置头文件

在项目界面找到右边的项目名称并右击,找到属性并点击

在弹出的属性页中找到配置属性—>VC++目录

在包含目录中添加opencv和Libtorch的include路径,目的为了调用里面的h文件或者hpp文件

D:\opencv\build\include

D:\libtorch190cu111\include

D:\libtorch190cu111\include\torch\csrc\api\include

点击确定,再点击应用。

4.配置lib文件

还是在刚刚的属性页界面中找到配置属性—>VC++目录

在库目录中添加opencv和Libtorch的lib路径,目的是为了使用里面的lib文件来链接

D:\opencv\build\x64\vc14\lib

D:\libtorch190cu111\lib

(以下图示路径是本人的路径,请修改成自己的opencv和Libtorch的路径)

接着继续在属性页中的左边点击链接器—>输入,点击附加依赖项, 编辑,

弹出的界面中添加opencv和Libtorch的lib路径下的lib文件名

opencv_world346.lib

asmjit.lib

c10.lib

c10d.lib

c10_cuda.lib

caffe2_detectron_ops_gpu.lib

caffe2_module_test_dynamic.lib

caffe2_nvrtc.lib

clog.lib

cpuinfo.lib

dnnl.lib

fbgemm.lib

libprotobuf-lite.lib

libprotobuf.lib

libprotoc.lib

mkldnn.lib

torch.lib

torch_cpu.lib

torch_cuda.lib

torch_cuda_cpp.lib

torch_cuda_cu.lib

此外还需要再加两行

/INCLUDE:?warp_size@cuda@at@@YAHXZ

/INCLUDE:?searchsorted_cuda@native@at@@YA?AVTensor@2@AEBV32@0_N1@Z

(本人是opencv_world346.lib,如果一开始选择了Debug模式就是opencv_world346d.lib)

这两行链接的作用是保证torch::cuda::is_available()返回True,不加的话有可能返回False

参考资料:

1.Torch::cuda::is_available return false in libtorch 1.5

2.libtorch 1.8.0 precompiled has no CUDA backend linked (Adding "-INCLUDE:?warp_size@cuda@at@@YAHXZ" no longer helps) #54131

至于上面两具体怎么理解本人也不是很懂,希望有大佬能指出是如何理解的。

最后点击右下角的应用。


5.配置dll文件

配置dll文件可以使用3种方法:

a.将opencv和Libtorch需要调用的dll对应的路径(Opencv的D:\opencv\build\x64\vc14\bin和Libtorch的D:\libtorch190cu111\lib)放入系统环境变量中。

b.将opencv和Libtorch需要调用的dll文件复制到执行程序的当前目录下(本人选择的Release版本,所以就是复制编译通过后生成的D:\Libtorch_test\x64\Release的目录下)。

c.将opencv和Libtorch需要调用的dll对应的路径配置到VS中。

参考资料:

pytorch部署torchscript篇


而本人平常由于工作需要,经常需要把做好的软件放到其他工控机上测试,所以会倾向于第二种直接复制dll文件的方式,否则的话放到新的机器上又需要重新配置,会比较麻烦和低效。

而如果是采用第二种方式的话需要在编译通过后生成包含exe的Release目录下去复制。

所以建议读者需要等到后面编译成功后复制dll文件,而此项目需要复制的dll文件包括以下:

9代码测试

9.1新建cpp

项目—>源文件,右击—>添加—>新建项,弹出的界面如下,然后修改名称改为main.cpp,再点击右下角的添加

9.2代码测试

这里主要测试Libtorch是否能正常使用,可以使用以下代码,如果返回的都是1说明配置成功了。

#include

#include

int main() {

    std::cout << "CUDA is available:" << torch::cuda::is_available() << std::endl;

    std::cout << "CUDNN is available:" << torch::cuda::cudnn_is_available() << std::endl;

    std::cout << "GPU counts:" << torch::cuda::device_count() << std::endl;

    return 0;

}

Tip:如果要复制代码到main.cpp的话,建议先复制到记事本里面,然后再复制到main.cpp,否则会出现以下提示,导致cpp文件不能调用Libtorch库。

将代码放入main.cpp后先编译,具体操作是右击项目,点击重新生成,等待一会时间,如果出现全部重新生成:成功1个,失败0个,跳过0个,就说明编译成功。

此时Release目录已经生成。

接着将上面所需要复制的dll文件复制到当前的目录D:\Libtorch_test\x64\Release

然后回到项目界面,按F5运行程序,如果运行成功的话界面如下:

10项目推荐

这里给出我师兄的一个Libtorch的开源项目

包含了图像分割从初始化模型、加载权重pt文件、训练模型和预测结果,是本人见到比较完整的Libtorch项目。

可以按照项目里的流程来学习如何使用Libtorch来做深度学习与图像处理的开发任务。

你可能感兴趣的:(RTX3060+Win10+cuda11.1+cuDNN8.0.4+Libtorch1.9.0+Opencv3.4.6+VS2019深度学习C++配置)