• 在windows和linux上玩转Tensorrt


    为避免重复,一些安装内容我直接贴其他大佬的帖子了,我是按照他们的步骤来操作的,趟过一遍,没有问题。
    本篇着重在tensort在Cmakelist中如何配置,以及如何配置编译动/静态库,比较基础,也是想做个笔记记录一下。


    一、环境

    • windows
      1. windows11
      2. cuda:11.8
      3. cudnn:8(注意和cuda配套)
      4. tensorrt:8.6.1.6
    • linux
      1. ubuntu18.04 x86
      2. cuda: 11.4
      3. cudnn: 8
      4. tensorrt:8.6.1.6

    二、安装cuda和cudnn

    linux可以参考:ubunu安装cuda

    三、安装tensorrt以及配置

    均可以参考:https://blog.csdn.net/djstavaV/article/details/125195569

    四、CMakeLists如何配置tensorrt以及坑

    这里的场景是这样的,有两个工程,A工程来调用B工程,B工程中包含tensorrt的推理操作依赖tensorrt,那么这就需要把B工程打包成库文件,关于Cmakelist详细指导可以跳转到如何在CMakelist中配置,这里编译成库文件,在Cmakelist中,需要把

    add_executable(${PROJECT_NAME} ${SOURCE_FILES})
    
    • 1

    改成

    add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES}) 
    
    • 1

    注意: 这里一定要用静态库,不然会报这个错误:

    ERROR: 1: [dispatchStubs.cpp::deserializeEngine::14] Error Code 1: Internal Error (Unexpected call to stub)
    
    • 1

    查询资料参考:https://github.com/NVIDIA/TensorRT/issues/3307

    然后要注意顺序:

    include_directories -> link_directories -> add_library -> target_link_libraries -> install
    
    • 1

    对了,这里最后一步最好install一下,可以加入到系统路径/usr/local/lib/中。可参考:

    install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION /usr/local/lib/)
    
    • 1

    其他的,target_link_libraries把tensorrt依赖的库文件放入即可,包括cuda的,这里也举例:

    target_link_libraries(${PROJECT_NAME}  cublas cudart cudadevrt nvinfer nvinfer_dispatch nvinfer_lean nvinfer_plugin nvinfer_vc_plugin nvonnxparser nvparsers)
    
    • 1

    然后include_directorieslink_directories分别放入cuda和tensorrt的include文件和lib文件即可。
    注意: include、lib和链接库一定要加,不然会出现以下问题:

    cmakelist  /usr/bin/ld: cannot find -lcublas
    
    • 1
    • 小抄
      1. add_executable 用来生成可执行文件;
      2. add_library 用来生成库文件,其中的关键字SHAREDSTATIC又分别代表动态库和静态库。

    以上就是全部内容,有什么问题可以评论,一起交流 ,Enjoy~

  • 相关阅读:
    树莓派读取gps neo6m信息
    Java将djvu文件转成pdf
    LeetCode-404. Sum of Left Leaves [C++][Java]
    线程和线程池
    黑客(网络安全)技术速成自学
    【书籍篇】Git 学习指南(一)基础概念及入门
    Linux 和 macOS 下 rename 批量重命名文件
    Pytorch源码编译Libtorch
    larvel 中的api.php_Laravel 开发 API
    sklearn模型整理
  • 原文地址:https://blog.csdn.net/ThomasCai001/article/details/133139369