Nvidia Jetson AGX Orin系统刷写&性能压测

新到一块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工具栏里)

 

参考:

Jetson AGX Orin刷机教程

【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 问题

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。