官方教程提供了三种方法:SD卡、SDK Manager 以及 apt安装Jetpack。前两种主要用于Orin系列之前的 Jetson开发板,主要针对还没有烧录系统的空机。而从 Jetson Orin系列开始,便支持 apt 安装 Jetpack 。

1、安装 JetPack 组件

用一句话总结 为啥安装 Jetpack,那就是 Jetpack 是 Nvidia为 Jetson系列开发板开发的一款软件开发包,常用的开发工具基本都包括了,并在在安装 Jetpack的时候,会自动的将匹配版本的CUDA、cuDNN、TensorRT等安装好,极大地方便了开发者!几乎就是一键傻瓜安装,爽到爆!

1.1 安装Jetpack

jetson tx2卸载原有的opencv jetson nano安装cudnn_Jetson


烧录好 Jetson系统之后,给Jetson连接键盘、鼠标和显示器,配置好系统之后就可以从Internet安装与 Jetson L4T版本对应的最新JetPack组件。

cat /etc/nv_tegra_release

sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/common r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'
sudo bash -c 'echo "deb https://repo.download.nvidia.com/jetson/t234 r34.1 main" >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list'

1.2 安装注意事项

jetson tx2卸载原有的opencv jetson nano安装cudnn_cuDNN_02

博主的版本是 R35 (release)

sun@ubuntu:~$ cat /etc/nv_tegra_release
# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64, DATE: Sun Mar 19 15:19:21 UTC 2023

然后可以参考 Nvida官方指导教程安装JetPack,命令如下:

sudo apt upgrade
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack

安装完输入 sudo jetson_release 进行查询 ( 注:需要提前装好Jtop才可以使用,Jtop 安装教程):

jetson tx2卸载原有的opencv jetson nano安装cudnn_TensorRT_03

可以发现 Jetpack会自动安装相关版本的CUDA、cuDNN、TensorRT等
其中 cuDNN 默认安装路径在 /usr/lib/aarch64-linux-gnu 下
CUDA 默认安装路径在 /usr/local/cuda 下

1.3 升级 JetPack

jetson tx2卸载原有的opencv jetson nano安装cudnn_TensorRT_04



2、配置Cuda环境变量:

Cuda 已经默认安装在了/usr/local/cuda下,运行如下指令:

sudo vim ~/.bashrc									# 打开~/.bashrc

#在文本末输入如下代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

source ~/.bashrc									# 更新环境变量配置

运行 nvcc -V 查看版本号:

nvcc -V

jetson tx2卸载原有的opencv jetson nano安装cudnn_TensorRT_05

3、配置 cuDNN

虽然安装了cuDNN,但没有将对应的头文件、库文件放到cuda目录。

cuDNN的头文件在:/usr/include,库文件位于:/usr/lib/aarch64-linux-gnu。将头文件与库文件复制到cuda目录下:

(这里我与amd64上的cudnn头文件进行了对比,发现amd64下的头文件都是源文件,而arm64下的头文件都是软链接,当我将软链接头文件复制到cuda头文件目录下,变为了源文件。。。之所以说这些,就是为了证明这里的操作和amd64的一样,不用担心)

操作如下:

# 复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64

# 修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h 
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

# 重新软链接,这里的8.6.0和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64

sudo ln -sf libcudnn.so.8.6.0 libcudnn.so.8

sudo ln -sf libcudnn_ops_train.so.8.6.0 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.6.0 libcudnn_ops_infer.so.8

sudo ln -sf libcudnn_adv_train.so.8.6.0 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.6.0 libcudnn_adv_infer.so.8

sudo ln -sf libcudnn_cnn_train.so.8.6.0 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.6.0 libcudnn_cnn_infer.so.8

sudo ldconfig

4、测试Cudnn:

sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
./mnistCUDNN

配置成功输出:

Result of classification: 1 3 5

Test passed!