赞
踩
在使用 trt 过程中,很多时候都习惯于直接在板端编译,但是板端受限于 CPU 性能,最好还是在服务器上进行交叉编译,sample 中告知了交叉编译的方法,环境配置其实还是要折腾一下的,本文总结了 3 种交叉编译环境配置方法,供参考。注,本文使用TensorRT-7.1.3.4,基于 Jetpack 4.5-t210 ,交叉编译环境为 Ubuntu20.04 或 Ubuntu18.04(docker)。
下载 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 以外的方法:
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 的相关库。
这个方法比较偷懒,自己选好需要的库拷贝过来即可。
最好在 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 目录,拷贝到板端执行:
修改/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")
增加cudart.so 的依赖即可
set(TRT_LIB libnvinfer.so.7 libnvonnxparser.so.7 cuda.so cudart.so)
安装 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。