Jetson上安装TensorRT
前情提要:一般来说在刷 Jetson 系统镜像时,如果用 NVIDIA SDK Manager 安装了 JetPack(比如 JetPack 5.x/6.x),就会自动包含:
CUDA
cuDNN
TensorRT
其他常用库(VisionWorks、OpenCV、DeepStream)
安装完成后,系统里已经有 TensorRT,可以直接用。但如果没有,则可能没安装全,就需要看这篇文档了。
一、Jetson's NV 和 Server's NV 的区别
1.1 安装包区别
nvidia-cuda-dev:arm64
11.5.1 是 Ubuntu 官方的,而 JetPack 6.0 要求 nvidia-cuda-dev = 6.0+b106
。
其他组件(cudnn8
、tensorrt
、cuda
meta 包)都应该是 6.0+b106 → JetPack 源版本。
1.2 Jetson上NV各个版本
dpkg -l | grep nvidia-l4t-core # 系统版本 (L4T)
dpkg -l | grep nvidia-cuda # CUDA
dpkg -l | grep nvidia-cudnn # cuDNN
dpkg -l | grep nvidia-tensorrt # TensorRT
1.3 Jetson上看NV版本的脚本
#!/bin/bash
# check_jetpack.sh
# 用于检测 JetPack 关键组件的安装和版本信息echo "=============================="
echo " Jetson JetPack 组件检测结果 "
echo "=============================="# 检查 L4T 版本
echo -n "[L4T] "
if dpkg -l | grep -q nvidia-l4t-core; thendpkg -l | grep nvidia-l4t-core | awk '{print $2, $3}'
elseecho "未安装"
fi# 检查 CUDA
echo -n "[CUDA] "
if command -v nvcc >/dev/null 2>&1; thennvcc -V | grep "release"
elseecho "未安装"
fi# 检查 cuDNN
echo -n "[cuDNN] "
if dpkg -l | grep -q nvidia-cudnn; thendpkg -l | grep nvidia-cudnn | awk '{print $2, $3}'
elseecho "未安装"
fi# 检查 TensorRT
echo -n "[TensorRT] "
if python3 -c "import tensorrt" 2>/dev/null; thenpython3 -c "import tensorrt; print('tensorrt', tensorrt.__version__)"
elseecho "未安装"
fiecho "=============================="
echo " 检测完成 "
echo "=============================="
二、Jetson安装CUDA等相关工具
2.1 更新Jetpack的apt源
检查 apt 源配置
sudo vim /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
需要确认有(相应的)
deb https://repo.download.nvidia.com/jetson/common r36 main
deb https://repo.download.nvidia.com/jetson/t234 r36 main
更新 apt 源
sudo apt update
最后确认
sudo apt search nvidia-jetpack
观察是否能搜索到。
2.2 安装Jetpack版本的CUDA相关
先卸载 Ubuntu 官方 CUDA 开发包
# 先卸载 Ubuntu 官方 CUDA 开发包
sudo apt purge nvidia-cuda-dev nvidia-cuda-gdb nvidia-cuda-toolkit nvidia-cuda-toolkit-doc
# 更新 apt
sudo apt update
安装
sudo apt install nvidia-cuda nvidia-cudnn8 nvidia-tensorrt
更新环境变量
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
2.3 进一步核对tensorrt安装
安装jetpack对应的python-tensorrt
sudo apt update
sudo apt install python3-libnvinfer python3-libnvinfer-dev
然后看是否成功安装tensorrt
:
python3 -c "import tensorrt; print(tensorrt.__version__)"
如果还是找不到tensorrt,则要找下tensorrt的包在哪个位置并放入环境变量,如:
echo 'export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages' >> ~/.bashrc
source ~/.bashrc
如果发生错误:
ImportError: libnvdla_compiler.so: cannot open shared object file: No such file or directory
参考有效帖子:https://blog.csdn.net/qq_45233572/article/details/146396937
先看自己的l4t
版本:
dpkg -l | grep nvidia-l4t-core
如我的是:
ii nvidia-l4t-core 36.3.0-20240506102626 arm64 NVIDIA Core Package
将36.XXXX
替换到以下命令中:
wget -O - https://repo.download.nvidia.com/jetson/common/pool/main/n/nvidia-l4t-dla-compiler/nvidia-l4t-dla-compiler_36.3.0-20240506102626_arm64.deb | dpkg-deb --fsys-tarfile - | sudo tar xv --strip-components=5 --directory=/usr/lib/aarch64-linux-gnu/nvidia/ ./usr/lib/aarch64-linux-gnu/nvidia/libnvdla_compiler.so
然后加入环境变量:
echo 'export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/nvidia:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
到这一步,我就可以了:
2.4 安装tensorrt对应工具trtexec
Jetson 通过 APT 安装 trtexec
sudo apt install tensorrt sudo apt install tensorrt-samples
加入环境变量
echo 'export PATH=/usr/src/tensorrt/bin:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
看
trtexec
版本
trtexec --help | head -n 5