干了快一周了,终于把工程代码移植到新的测试机,并调试转码成功了。踩了很多坑,找时间一定要把chatgpt中的实验结果进行总结归纳。
原始工程环境
Ubuntu 18.04
Cuda 11.0
Cuda toolkit 10.2
tensorrt:由7.0.0升级到7.2.3
新工程环境
Ubuntu 22.04
Cuda 11.4
Cuda toolkit 10.2
主要问题:
在旧环境中make,移植exe和lib所需依赖库。持续遇到的问题为
**Assertion failed: (smVersion < SM_VERSION_A100) && “SM version not supported in this NVRTC version“**
但是测试机是内部使用,不能联网,想法是离线安装trt7.2.3.deb,但是太痛苦了,由于无法更新软件源,导致安装时一直出现多个依赖库未安装的问题。解决思路时安装依赖库,但是对于很重要的cuda toolkit(这边为了跑通安装了10.2、11.0、11.4、11.6)等多个版本,在系统文件中存在,但是用dpkg -i就是无法安装。
转换思路,打了申请将整体工程文件传至测试机进行重新编译,更换了较多版本,在此对新版本主要依赖环境进行了一个记录:
gcc 7.5.0
cmake 3.28.3
cudnn 8.9.0
在编译中缺少的deb文件寻找网址为:https://ubuntu.pkgs.org/
工程编译过程中,直接将trt-7.2.3的库复制到测试机,cmakelists重新编译,生成的libnvifer.so等文件会直接写入./x86_64-linux-gnu/目录中,就可以正常运行了。(不知道为什么自己复制过去的就是不管用)
总结
该问题主要是依赖环境导致的:nvida官方的解释是最低需要cuda-11、trt-7.2.1。如果依赖环境没有问题,和我一样只是想移植之前编译时生成的so文件运行,还是建议在新的环境中重新编译一遍,注意环境变量问题。快一周的时间也没白费,逐渐成为专业能力很强的人。