TensorRT是英伟达的AI加速推理模型,我们在使用GPU深度学习训练完后,会生成.pt模型,但是这个模型在推理时不够快,这时候就需要转化成trt模型,使用c++利用TensorRT API编写程序进行快速推理。
本人下载的版本是cuda11.6,cudnn8.4,正好对应上的,当然cuda版本要能支持你的GPU,cuda版本太高你的GPU跑不了,cuda版本太低也不好。
运行命令提示符cmd,输入图中指令查看自己显卡信息
如图所示,我的电脑显卡是3050ti,驱动版本是516.91,CUDA版本是11.7,对应关系如下图:
这里只提供一部分,更前的和随着40系显卡的出现,这张表肯定会落后,如图,我的显卡版本正好卡在11.7update1和11.8GA之间,我下了11.6update2版本。
CUDA下载官网:CUDA Toolkit Archive | NVIDIA Developer
如图,日期左侧是下载,右侧是官方安装教程,找到自己合适的版本下载安装即可。
cuda和cudnn是一对双胞胎,缺一不可,不过cudnn无需安装,只需下载。
CUDA默认的安装路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6
过一会需要频繁往里添加文件。
cudnn下载版本要和CUDA对应,官网地址:cuDNN Archive | NVIDIA Developer
我找的是cudnn8.4,正好对应cuda11.6
下载好之后解压缩,目录如下图:
其中bin文件夹存放的是Windows上的.dll动态库文件,将里面的所有dll文件复制粘贴到cuda安装路径下bin文件夹下;
其中include文件夹存放的是头文件.h,将所有.h文件复制粘贴到CUDA安装目录下的include目录下;
其中lib文件夹存放的是Windows上的.lib静态库文件,将里面所有lib文件复制粘贴到CUDA安装目录下的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64目录下。
你说整半天就不能在下载cuda时一次性下完嘛?咱也不知道为啥。
有人下载安装软件后运行不起来,就是没有添加环境变量,有人可能会不理解,简单解释一下,软件运行其实就是代码运行,而代码是高级语言编写的,它需要经历预编译阶段展开头文件声明,去掉注释代码,替换宏定义,内联函数替换等操作,然后经历汇编代码,再经历机器代码即二进制代码,最后好几个二进制代码文件加上库文件链接起来。
动态库即共享库,跟位置无关,在程序运行时动态加载到内存中运行。而我们的操作系统找不到动态库就会失败。为什么不编译到一个可执行文件exe中?而要附加一堆dll文件?因为动态库是共享的,开多个相同程序时,在内存中只会存在一份动态库供所有程序使用,从而减少内存使用量。
添加方法很简单:
直接点击左下角图标,搜索环境变量,点击环境变量,编辑,在新弹出的第二张图中直接在空白出=处双击把你dll文件所在文件夹路径粘贴上去。
后面还要添加TensorRT环境变量,一样的步骤。
在官网下载的TensorRT是windows版的,不需要安装,只需要添加环境变量。
注意TensorRT也要和CUDA版本对应,下载地址:NVIDIA TensorRT 8.x Download | NVIDIA Developer页面可能需要注册账号,注册一个就行,很简单。我下载的版本是这个:和cuda,cudnn对应。
TensorRT-8.4.1.5.Windows10.x86_64.cuda-11.6.cudnn8.4
这里添加tensorrt环境变量因为它有可执行程序,和cudnn不一样。
将include文件夹下头文件加到cuda文件夹下include里;
将lib文件夹下dll文件添加到CUDA文件夹下bin下;
将lib文件夹下lib文件添加到CUDA文件夹下lib\x64下;
添加环境变量参考第三节。
在tensorrt有个samples文件夹,我们测试一个sampleMNIST,双击用VS打开.sln解决方案。
我们要配置自己的项目属性文件,将需要的CUDA和cudnn信息加进去,生成.vcxproj文件,下次项目我们也可以添加这个属性文件,一劳永逸。
点击调试-下面小扳手图标的项目属性配置,
在上图c/c++常规那里附加包含目录把CUDA的include和TensorRT的include路径加进去。注意这个下面的对勾要打上,设置继承。
在上图链接器常规那里附加库目录将库目录加进去。
在链接器输入这里附加依赖项加入所有....\*.lib文件。
报错,各种c++语法报错,就再查看自己的属性表有没有配置好;
报错,找不到windows SDK, 右击右侧项目名,选择重定向项目,更换一下SDK即可,选择无升级。
然后重新生成解决方案,成功后在bin文件夹下运行该exe文件,一闪而过图案就说明成功。
下一篇说一下yolov7用TensorRT进行加速推理。