TensorRT 交叉编译配置

        在使用 trt 过程中,很多时候都习惯于直接在板端编译,但是板端受限于 CPU 性能,最好还是在服务器上进行交叉编译,sample 中告知了交叉编译的方法,环境配置其实还是要折腾一下的,本文总结了 3 种交叉编译环境配置方法,供参考。注,本文使用TensorRT-7.1.3.4,基于 Jetpack 4.5-t210 ,交叉编译环境为 Ubuntu20.04 或 Ubuntu18.04(docker)。

一、环境配置:

方法 1:sdkmanager

        下载 sdkmanager.deb ubuntu版本

        sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb

        也可以直接用 docker:

        docker load -i ./sdkmanager-[version].[build#]-[base_OS]_docker.tar.gz

        docker run -it --rm sdkmanager --help

        注意系统版本,在Ubuntu 20.04 下面没法跑的,要改东西,因此还是推荐直接使用 docker。

        docker 运行脚本:

        docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v \

        /media/$USER:/media/nvidia:slave --name JetPack_NX_Devkit --network host \

        sdkmanager --cli install --logintype devzone --product Jetson --target P3668-0000 \

        --targetos Linux --version 4.4.1 --select 'Jetson OS' \

        --deselect 'Jetson SDK Components' \

        --flash all --license accept --staylogin true --datacollection enable --exitonfinish

        受限于网络原因,有些库可能下不完全,而且可能需要连接 jetson 开发板才能get 到版本。因此有必要探索一下 sdkmanager 以外的方法:

方法2:直接下包

        sdkmanager 是比较麻烦的,我们可以直接把包下下来。然后解压缩,特地写了个 python 脚本,最好和版本进行对齐。

python sdk_manager_download/get_href.py

        安装直接解压缩即可:

cd sdk_manager_download/18.04/extract

for i in `ls *deb`; do dpkg -X $i ./; done

        注意:

        个别库需要手动修改位置,毕竟不是 install 的。譬如 cudnn 的 so 和头文件;下载href 中,不止需要 210 相关的库,还需要 common 的相关库。

方法 3:直接 copy 板端环境

        这个方法比较偷懒,自己选好需要的库拷贝过来即可。

二、编译

        最好在 Ubuntu18.04 下,需要安装 64 位 arm编译器,也可以自己下:

sudo apt-get install g++-aarch64-linux-gnu

        高版本Ubuntu 可能会产生 glibc 的差异,需要折腾一下 lib 的配置可能。

cd /home/ssd1t/workspace/projects/work/jetson/TensorRT-7.1.3.4/samples

make TARGET=aarch64 CUDA_INSTALL_DIR=/home/ssd1t/workspace/projects/work/jetson/cross_libs/extract/usr/local/cuda-10.2 TRT_LIB_DIR=/home/ssd1t/workspace/projects/work/jetson/cross_libs/extract/usr/lib/aarch64-linux-gnu

        编译结果在../bin 目录,拷贝到板端执行:

三、DEBUG

  • 报错:Could NOT find CUDA (missing: CUDA_CUDART_LIBRARY) (found version "10.2")

        修改/home/ssd1t/opt/cmake/cmake-3.21.4-linux-x86_64/share/cmake-3.21/Modules/FindCUDA.cmake

        写死路径:set(CUDA_CUDART_LIBRARY "/home/ssd1t/workspace/projects/work/jetson/cross_libs/extract/usr/local/cuda-10.2/lib64")

  • 报错:libcudart.so.10.2: error adding symbols: DSO missing from command line

        增加cudart.so 的依赖即可

        set(TRT_LIB libnvinfer.so.7 libnvonnxparser.so.7 cuda.so cudart.so)

  • 报错:opencv 缺少对 libpng 的依赖

        安装 aarch64 的库的时候少了 png 和 jpeg,参考这个 docker 文件: https://gist.github.com/robobe/ca8bfa3bc274c691d672c6a0d567b424

        dpkg --add-architecture arm64 && apt install -y \

            libpython3-dev:arm64 \

            libgtk-3-dev:arm64 \

            libcanberra-gtk3-dev:arm64 \

            libtiff-dev:arm64 zlib1g-dev:arm64 \

            libjpeg-dev:arm64 libpng-dev:arm64 \

            libavcodec-dev:arm64 libavformat-dev:arm64 libswscale-dev:arm64 libv4l-dev:arm64 \

            libxvidcore-dev:arm64 libx264-dev:arm64

        安装有点费劲。也可以直接检索下载:https://launchpad.net/ubuntu/bionic/arm64

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值