安装tensorrt8.6.1及编译工程文件踩坑与总结

在一个新的环境安装tensorrt8.6.1,并将编译中的一些错误总结,避免以后踩坑。

安装tensorrt8.6.1

根据环境选择对应的版本,主要看cuda、ubuntu、cudnn和架构。如果不需要python调用,直接下deb包。(我目前用python调用的还没下成功过)其中deb包的不好的点在于直接写入系统路径,不利于移植,这个点待以后学习。
下载地址
官方文档
安装过程中cuda如果缺少一些依赖库,类似于cuda-xxxx but it is not installed,在一下网站中寻找相关版本包并安装,基本linux系统下的都能找到。
debian库
若编译不成功记得及时加入环境变量,我这里是linux环境:

LD_LIBRARY_PATH=/xx/TensorRT-xxx/lib:$LD_LIBRARY_PATH

安装好后用指令检查:

dpkg -l | grep TensorRT

在cmakelists中可以进行tensorrt版本的指定,基本上编译就没什么问题了。

find_library(TENSORRT_LIBRARY nvinfer HINTS "/usr/local/lib/")[tensorrt lib.so path]
target_link_libraries(${MOUDLE_NAME} ${TENSORRT_LIBRARY} )

编译文件

新环境为:

cuda 11.8
ubuntu 22.4
cuda toolkit 11.5
tensorrt 8.6.1
  1. 由于升级了cuda、cudnn等,在编译过程中也遇到了些许问题。首先就是narrowing conversion报错,由于在include 文件中设置的数据类型是unsigned int,所以会有范围报错。如果确定不报错,就在cmakelists中设定忽略该类型错误:
# 添加编译选项
add_compile_options(
    "$<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-narrowing>"
    "$<$<C_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-narrowing>"
)
  1. 升级了cuda toolkit,之前进行图像预处理的库nppicom被弃用了(最起码在当前版本被弃用),可用NVJPEG 库代替,在cmakelists中修改为target_link_libraries(${MOUDLE_NAME} nvjpeg) 即可。
  2. 之前版本的log在新环境中报错looser exception specification on overriding virtual function。这个问题意味着在派生类中重写了一个基类的虚拟函数,但是在异常规格上与基类中的声明不兼容。若原始代码为:
class Logger : public nvinfer1::ILogger {
public:
    void log(Severity severity, const char* msg) override; // 检查是否有异常规格
};

可改为:

class Logger : public nvinfer1::ILogger {
public:
    void log(Severity severity, const char* msg) noexcept override; // 添加 noexcept
};
  1. 遇到tensorrt api调用错误:Destroying a runtime before destroying deserialized engines created by the runtime leads to undefined behavior. 这意味着在销毁用于执行推理的运行时(runtime)对象之前,需要先销毁所有由该运行时创建或管理的反序列化引擎(engine)。但是我这里是写在不同的类中了,nvida官方说是可正确转换engine,可忽略。issue
  2. 剩余部分是将swin transformer由onnx转为engine中的踩坑与总结。update:swin transformerv2
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值