在 NVIDIA Jetson AGX Orin 平台上,Nsight Systems 是一个强大的分析和性能调试工具,帮助开发者识别性能瓶颈、优化应用程序,特别是 GPU 加速应用和 AI 推理任务。它能够对系统中不同硬件资源(如 CPU、GPU、内存等)进行全面的性能分析,支持 CUDA 和多线程应用的性能剖析。
以下是如何在 Jetson AGX Orin 平台上安装和使用 Nsight Systems 的详细步骤:
- 安装 Nsight Systems
Nsight Systems 通常与 JetPack 一起安装,但你也可以手动安装或更新它。确保系统安装了最新的 JetPack 版本,这样 Nsight Systems 也会被安装。
1.1 检查 Nsight Systems 是否已安装
你可以使用以下命令来检查是否已经安装了 Nsight Systems:
nsys --version
如果返回版本号,则说明已经安装了 Nsight Systems。如果没有安装,可以使用下面的步骤进行安装。
1.2 手动安装 Nsight Systems
如果 Nsight Systems 没有安装,可以通过 APT 包管理器安装:
sudo apt update
sudo apt install nvidia-nsight-systems
- 运行 Nsight Systems
一旦安装好 Nsight Systems,就可以开始使用它来分析应用的性能。
2.1 使用命令行运行 Nsight Systems
Nsight Systems 提供命令行界面(CLI),你可以通过命令 nsys 进行性能分析。以下是基本的使用步骤:
在命令行中执行程序,并通过 nsys 进行性能捕获。例如,捕获一个 CUDA 应用的性能:
nsys profile --trace=cuda,nvtx,osrt --output=profile_report ./my_cuda_application
这个命令将 my_cuda_application 的运行情况进行分析,并生成一个包含 CUDA、NVTX(NVIDIA 工具扩展)和操作系统线程调度信息的性能报告,输出文件命名为 profile_report.qdrep。
选项说明:
–trace=cuda,nvtx,osrt:指定要跟踪的事件,cuda 用于捕获 GPU 相关的事件,nvtx 是用于标记应用程序中的重要事件,osrt 是操作系统线程调度信息。
–output=profile_report:指定输出文件名,生成的报告文件将以 .qdrep 结尾,可以用 Nsight Systems GUI 查看。
2.2 分析其他工作负载
Nsight Systems 支持 CUDA、OpenGL、Vulkan、TensorRT 等多种工作负载。以下是一个捕获 TensorRT 推理任务性能的示例:
nsys profile --trace=cuda,osrt,tensorrt --output=tensorrt_report ./my_tensorrt_application
这个命令会捕获与 TensorRT 和 CUDA 相关的所有性能数据。
- 使用 Nsight Systems GUI
除了命令行,Nsight Systems 还提供图形化用户界面 (GUI),你可以在 PC 或远程机器上使用 GUI 来分析性能报告。
3.1 从 Jetson 设备导出报告
使用 Nsight Systems 生成 .qdrep 文件后,可以将报告文件从 Jetson AGX Orin 设备传输到你的本地机器。你可以使用 scp 或 rsync 等工具来传输文件:
scp profile_report.qdrep username@your_pc_ip:/path/to/destination
3.2 在本地机器上查看报告
在本地安装 Nsight Systems GUI(可以通过 NVIDIA 官网下载 Nsight Systems 工具)。
启动 Nsight Systems GUI,然后打开生成的 .qdrep 文件进行分析。GUI 提供了可视化的时间轴、CPU/GPU 占用率、内存使用情况等信息,有助于定位性能瓶颈。
4. 性能分析的常用场景
4.1 CUDA 应用性能分析
通过 Nsight Systems 可以捕获和分析 CUDA 应用中的数据传输、内核启动和 GPU 占用率。这个过程可以帮助你优化 CUDA 应用程序的性能,找到瓶颈(如内存传输延迟或 GPU 低利用率)。
4.2 AI 推理任务的分析
对于运行 TensorRT 或其他深度学习推理任务的应用,Nsight Systems 可以捕获 GPU 和 DLA 的任务调度,分析推理过程中 GPU 或 CPU 的性能瓶颈,优化模型的推理速度。
4.3 多线程应用分析
Nsight Systems 也支持多线程应用程序的性能分析,通过捕获线程的调度和同步情况,帮助你优化 CPU 任务的并行度和调度延迟。
- Nsight Systems 的进阶选项
增加捕获时间:可以通过设置 --duration 选项来调整捕获的时间长度,例如:
nsys profile --trace=cuda --duration=60 --output=long_profile ./my_application
该命令将捕获 60 秒的应用程序性能。
过滤事件:你可以通过命令行过滤出特定的事件进行跟踪。假如你只对 GPU 任务的启动感兴趣,可以只捕获与 GPU 相关的事件:
nsys profile --trace=cuda ./my_application
系统资源监控:Nsight Systems 还能监控操作系统级别的性能数据(如线程调度、内存使用等),帮助全面了解应用程序对系统资源的影响。
- 总结
在 Jetson AGX Orin 上,Nsight Systems 是一个功能强大的性能分析工具,帮助开发者在 CUDA、TensorRT 等 GPU 加速应用中进行性能优化。通过命令行工具 nsys,你可以轻松地捕获应用程序的性能数据,并通过 GUI 进行可视化分析。这些数据为优化 AI 推理任务、计算密集型应用以及多线程应用提供了重要支持。
通过以上步骤,你可以在 Jetson AGX Orin 平台上高效使用 Nsight Systems,帮助开发和优化你的 AI 应用。