新到一块Nvidia Jetson AGX Orin 32G的板子,想压测下GPU性能时发现里边没有带CUDA,重新刷下机,记录下刷机过程。
一、准备工作
要开始刷写Jetson AGX Orin,需要准备一下内容:
- AGX Orin板子
- Ubuntu PC机(安装SDK-Manager/刷写Orin用,Ubuntu20/22版本均可)
- DP转HDMI线(Orin只有DP口)
- Type-C转USB线(Orin只能用这个线才能刷写,miniUSB转USB确认不行)
- 无线键盘和鼠标(给Orin用)
二、安装SDK-Manager
PC机安装NVIDIA SDK Manager,会提示在NVIDIA官网注册账号,下载安装SDK Manager后,使用SDK-Manager时需要先登录Nvidia账户。
sudo apt install ./sdkmanager_1.9.1-10844_amd64.deb
sudo apt-get update
具体参考:Download and Run SDK Manager
三、物理连线与板卡识别
1. 物理连线
将主机与AGX ORIN用USB转Type-C线连接,Type-C接AGX ORIN:
Orin接上显示器和电源,默认此时会自动进入刷机模式,显示器黑屏等待刷机:
2. 进入刷写模式
默认此时SDK-Manger会自动检测到Orin的板子,但是如果没有检测到,可以尝试强制将板子进入Recovery模式,方法有两种:
- Orin处于未开机状态:先长按住②键(Force Recovery键),然后给Orin接上电源线通电,此时白色指示灯亮起,但进入Recovery模式后连接Orin的显示屏是黑屏的。
- Orin处于已开机状态:先长按住②键,然后按下③键(Reset键),先松开③键,再松开②键。
在PC端执行lsusb,检查是否存在NVIDIA的设备,如有则可以确认Orin已进入刷机模式:
lsusb
Bus 001 Device 008: ID 0955:7020 NVIDIA Corp. L4T (Linux for Tegra) running on Tegra
四、系统刷写
刷写选项需要注意的地方:
- SDK-Manager取消勾选Host Machine,PC不需要安装,仅选中TargetHardware的Orin板子即可。
- SDK VERSION版本必须选择JetPack 6.0,
- JetPack 6.0基于Ubuntu 22.04、CUDA 12.2、CuDNN 8.9、Tensorrt 8.6,满足Autoware的工作条件。
- JetPack 6.1基于Ubuntu 22.04、CUDA 12.6、CuDNN 9.3、Tensorrt 10.3,Autoware目前暂不支持。
- DeepStream建议选中直接安装好,省的后边自己再手动安装。
1. 环境配置
点击继续,会开始下载安装包到本地:
2. 烧写系统镜像
等到下载完并且安装一定时间后,会弹出如下Pre-Config界面,设置用户名和密码,点击Flash后会开始刷写操作系统:
可以看到Flash Jetson Linux状态处于Flashing刷写中,其他的都处于Pending状态,等待操作系统刷写并启动完毕后才能开始:
刷机完成后,Orin连接的显示器会亮起,Ubuntu 22.04 的系统安装成功,Orin操作系统会进入设置引导界面,需要完成系统引导和网络配置。
SDK-Manager会处于等待配置Orin IP并安装SDK组件的界面,需要等Orin操作系统都初始化完毕并配置好网络后再继续(Orin需要与PC处于统一局域网中,因为后续SDK组件是通过ssh Orin的IP进行安装的)。
我这里把Orin板子和PC都连到手机热点,查看Orin的IP为172.20.10.2,检查从PC端ping和ssh正常:
ping 172.20.10.2
ssh work@172.20.10.2
3. 安装Jetson SDK
Jetson平台的系统镜像和SDK安装是分开的,先烧录系统镜像,再安装SDK。在烧录系统镜像时,Jetson平台需要处于Recovery模式。在安装SDK时,Orin板子操作系统处于正常运行状态,不是在Recovery模式。
如果想安装速度快点,有以下两个方法:
- orin apt源更换为国内清华源
wget http://fishros.com/install -O fishros && . fishros
- orin 增加hosts
sudo vim /etc/hosts
23.213.41.22 www.nvidia.com
152.199.39.144 developer.nvidia.com
我们回到SDK-Manager,填写Orin设置好的IP后点击Install继续:
开始安装Jetson Runtime Components:
有一部分SDK Components下载失败了,看detail原因是访问nvidia.com失败了,添加orin的hosts并修改apt源后,重启orin板子和SDK-Manager,连到一个网络更好的wifi,只勾选失败的Jetson SDK部分或使用STEP-01左下方的Repair按钮重新安装即可。
4. 版本检查
最终安装的版本为:
- CUDA 12.2
- CuDNN 8.9.4.25-1+cuda12.2
- TensorRT 8.6.2.3-1+cuda12.2
- OpenCV 4.8.0
添加环境变量:
vim ~/.bashrc
export PATH=/usr/local/cuda/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
export CUDA_HOME=/usr/local/cuda
source ~/.bashrc
版本检查:
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.2.r12.2/compiler.33567101_0
$ dpkg -l | grep -i cudnn
hi libcudnn8 8.9.4.25-1+cuda12.2 amd64 cuDNN runtime libraries
hi libcudnn8-dev 8.9.4.25-1+cuda12.2 amd64 cuDNN development libraries and headers
$ dpkg -l | grep -i libnvinfer-dev
hi libnvinfer-dev 8.6.2.3-1+cuda12.2 amd64 TensorRT development libraries
or
$ dpkg-query -W tensorrt
tensorrt 8.6.2.3-1+cuda12.2
$ opencv_version
4.8.0
5. 编译opencv contrib
autoware use opencv4/opencv2/ximgproc/segmentation.hpp, so need install opencv_contrib
# depend
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev
# download source
cd ~/tools
git clone -b 4.8.0 https://github.com/opencv/opencv.git
cd ~/tools/opencv
git clone -b 4.8.0 https://github.com/opencv/opencv_contrib.git
# build
cd ~/tools/opencv
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=/usr ..
make -j8
sudo make install # DESTDIR=/usr/local
五、GPU性能检测
Jetson GPU Burn 是一个专为NVIDIA Jetson系列嵌入式计算模块设计的多GPU CUDA压力测试工具。此项目源自wilicc/gpu-burn,并进行了修改以适应Jetson系统独特的硬件架构,尤其是其集成图形处理器(iGPU)。通过这个工具,开发者和研究人员能够全面测试Jetson平台上GPU的稳定性与极限性能,对于散热设计验证及性能调优至关重要。Jetson GPU Burn依赖CUDA等基础工具包。
1. 压测
1.1 gpu_burn压力测试
# 克隆项目源代码
git clone https://github.com/anseeto/jetson-gpu-burn.git
# 切换到项目目录并编译
cd jetson-gpu-burn
make
# 运行GPU烧毁测试(默认10秒,若需自定义时间,请在命令中指定,例如:./gpu_burn 600表示600秒)
./gpu_burn 1000 # 此命令如果没有指定运行时间,将默认运行10秒
在部署任何烧毁测试前,务必确认设备的散热方案能够应对极端的工作负载。通过调整Jetson的电源管理模式至MAXN或其它高性能模式,可以最大化测试条件。长时间运行此类高压力测试可能会导致系统自动重启,特别是在散热不足的情况下。因此,建议在受控环境中,并伴有适当的散热措施下进行。
1.2 CuDNN测试
手写数字识别等测试:
sudo cp -r /usr/src/cudnn_samples_v9/ ~/tools/gpu/
sudo chown work:work ~/tools/gpu/cudnn_samples_v9 -R
cd ~/tools/gpu/cudnn_samples_v9/mnistCUDNN
make
./mnistCUDNN
Result of classification: 1 3 5
Test passed!
2. 监控
使用jtop或其他监控工具,如nvidia-smi(尽管后者不直接支持Jetson iGPU的全部功能),来观察GPU和CPU的使用率、温度和功耗。
jtop查看:
# 更新pip到最新版本
sudo apt install python3-pip
sudo pip install -U pip
# 安装jetson-stats,用于监控GPU和CPU状态(非必需,但推荐)
sudo pip install -U jetson-stats
# 启动jtop
sudo jtop
Jetson Power GUI:(在Orin右上角Nvidia工具栏里)
参考:
【AGX ORIN】系列(1)—AGX ORIN使用SDK Manager
Install Jetson Software with SDK Manager
Jetson GPU Burn: 针对NVIDIA Jetson平台的CUDA GPU压力测试工具
[Orin Nx] 如何跑满GPU和CPU,观察温度和散热性能?
Ubuntu20.04部署CUDA11.8/cuDNN8.7
Jetson AGX Xavier 如何看nvidia-smi?调风扇?用jtop
ubuntu22.04安装opencv4和opencv_contrib
TensorRT 10.x NOTFOUND TENSORRT_NVPARSERS_LIBRARY 问题