前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >充分利用NVIDIA Nsight开发工具发挥Jetson Orin的最大潜力

充分利用NVIDIA Nsight开发工具发挥Jetson Orin的最大潜力

作者头像
GPUS Lady
发布2023-05-29 14:44:40
6790
发布2023-05-29 14:44:40
举报
文章被收录于专栏:GPUS开发者GPUS开发者GPUS开发者

Orin 架构以行业领先的性能为下一代边缘 AI 系统提供动力,该系统由 12 个 ARM Cortex A78 内核和 2 MB 三级缓存, NVIDIA Ampere 架构 GPU 提供 16 个流式多处理器或每个 SM 128 个 CUDA 内核的 SM,Orin 还具有用于工作负载的专用加速器,用于视频缩放、图像处理,还有光流加速器即OFA、2 个 JPEG 解码器、2 个深度学习加速器单元或支持张量 RT 的 DLA,用于深度学习操作,还有可编程视频加速器(PVA)和视频编解码引擎。Orin 使用高带宽 LPDDR5 内存,并具有一组丰富的 IO 连接选项,包括 22 个 PCI Express 通道、4 个千兆以太网连接器和 16 个 CSI 通道。凭借所有这些强大的功能,Jetson Orin 完全有能力应对边缘 AI 场景。

现在让我们谈谈如何使用 NVIDIA Nsight 开发工具充分利用该平台。在我们深入了解开发工具的细节之前,我想快速概述一下新功能。

NVIDIA 现在在 http://nvidia.com 上有一个完全改版的开发者工具登录页面。您现在可以访问该站点以全面了解所有工具及其功能,从而找到适合工作的工具。您还可以使用方便的引导界面来帮助缩小针对您正在处理的问题的特定工具的范围。

我们现在还支持在 ARM 上本地运行工具 GUI。除了现有的远程分析和命令行界面外,Nsight Sys term、Nsight compute和 Nsight Visual Studio Code 版本现在可以在 NVIDIA Jetson AGX Orin SOC 上本地运行。

现在让我们深入了解典型的开发工作流程以及与这些步骤相关的 NVIDIA Nsight 工具的整体情况。

应用程序的开发经历几个阶段:

从创建开始,在 IDE 或开发环境中创建应用程序,

然后进行调试,确保其正确性并证明其功能。

最后是性能调整或分析,其中调整应用程序或算法以最大限度地利用平台和优化性能。

NVIDIA Nsight 工具套件可用于协助完成每一步,同时还为专注于计算或图形工作负载的工作流提供解决方案。为 Jetson 开发应用程序从未如此简单。

Nsight Visual Studio Code 版本为 VSC 代码提供完整的 IDE 集成以及对 CUDA 的原生 IntelliSense 支持。您现在可以直接在 Jetson 上的 Visual Studio 代码中或从 Windows 或 Linux 主机远程构建和调试 CPU 和 GPU 代码。Nsight Visual Studio Code 版本可以从内置的 Visual Studio Code 市场或人工安装,也可以从网站手动下载。

一旦启用,Nsight Visual Studio Code 版本将成为 CUDA 编程和调试的一站式工具。它允许您设置 GPU 断点和设备代码。使用 CUDA focus 查看 SM warp 或 Lane 状态。查找 CUDA 调用堆栈并检查变量以查找有趣的事件。与 CPU 和 GPU 寄存器跟踪一起,监视覆盖和其他状态。对于高级用户。调试控制台是一个方便的界面,可以直接执行调试器命令。

我们刚刚讨论了 Nsight Visual Studio Code 版本中可用的调试功能。但它并没有就此结束。还有更多。

使用 CUDA gdb,您可以获得一个命令行和 IDE 后端调试器,它基于 gdb 构建并使用许多相同的 CLI 命令。CUDA gdb 提供统一的 CPU 和 CUDA 调试,以及 CUDA C 和 SASS 支持。

Compute Sanitizer 是一套用于检查正确性并识别内存问题和错误的工具。它由memcheck组成,用于识别内存泄漏。Racecheck 查找竞争条件,Initcheck 查找未初始化的全局内存访问,Synccheck 标记线程同步问题。

一旦应用程序通过调试阶段,它就会被验证为可以正常运行,并按设计运行。它现在进入分析阶段,现在将对其进行优化以以最有效的形式运行。在充分利用其运行平台的同时。

优化性能的艺术是一个迭代过程。它通常包括三个步骤:

首先是分析或观察运行中的应用程序,然后是分析分析结果。一旦进行了手头的分析,您现在就有了调整和优化的提示,您可以对算法或应用程序执行这些调整和优化,以改进和解决在进行这些更改后发现的设计瓶颈和错误。您重复该过程并再次运行配置文件,以查看所做的更改是否产生了预期的效果和结果。

使用 NVIDIA Nsight 工具进行分析是无缝且强大的。这些工具提供了广泛的分析选项,例如使用此 GUI 或 CLI 在设备上或从远程主机进行分析。它还允许在系统内置数据源的帮助下深入了解系统的工作情况。使用 NVTX 和开发人员为正在开发的应用程序定义的 NVTX 标记进行预注释的库。一旦收集到跟踪,就可以在按时间排列事件并突出显示依赖关系的 GUI 上对其进行可视化分析。应用程序行为的可视化表示是一个非常有用的工具,可以突出以前可能被误解的设计注意事项和算法行为。此外,可以利用数据配置文件创建统计模型,以帮助识别模式和异常值。

Nsight 工具还附带内置分析工具,可帮助分析跟踪并查找可以解决的常见问题和违规行为,以提高应用程序性能。利用刚刚完成的分析中的经验教训,现在修改应用程序以解决已识别的问题并进行必要的优化。然后,在快速健全性检查排除任何功能错误后,我们返回第一步并再次分析应用程序,并重复该过程以确保所做的更改产生了预期的改进。这种迭代过程通常遵循收益递减规律。此练习的最终目标是由为此应用程序或场景设置的性能目标驱动的。

在上一节中,我们讨论了分析工作流程以及分析标记如何帮助我们突出显示和跟踪应用程序行为。NVTX 或 NVIDIA 工具扩展库是一个轻量级的标头注释库,开销最小。NVTX 可用于使用标记和范围注释来修饰应用程序源代码。它包括几个功能以进一步帮助分析。NVTX 注释可以限定在域中以避免冲突并提高跟踪内的可读性。嵌套的线程可以随着时间的推移使用线程范围可视化。进程范围可用于随时间跟踪和可视化进程,同时考虑任意并发性。使用事件属性装饰标记和范围注释,为事件提供额外的信息属性,例如颜色和/或类别,以指导数据的工具可视化,从而帮助提高可读性和辅助分析。

使用 Nsight 工具运行配置文件跟踪可利用大量内置数据源,这些数据源开箱即用。除了能够观察系统上的 CPU、GPU、内存、通信、网络、CUDA 和 OS 活动外,SDK 和加速库(如TensorRT、cuDLA、cuDNN 等)更完全装饰有 NVTX 注释,允许它们显示在跟踪中,从而使开发人员解放出来,只需注释他们正在处理的应用程序。

Nsight 分析工具系列可用于支持计算和图形应用程序的分析场景。开发以计算为中心的应用程序的开发人员结合使用 Nsight Systems 和 Nsight compute,而从事图形工作的开发人员最终使用 Nsight Systems和 Nsight Graphics。

他们通常从 Nsight Systems开始,这有助于呈现全面的系统范围视图,有助于分析和识别瓶颈和冷点。如果他们正在处理计算机应用程序,那么他们将使用 Nsight compute进行深入研究,以进一步调查和解决 CUDA 内核性能问题。

同样,对于图形应用程序,他们使用 Nsight 图形优化解决着色器和帧渲染性能问题。在验证 Nsight 计算机图形中的修复后,使用 Nsight 系统重做系统级配置文件以确保优化按预期工作,更重要的是,排除其他地方回归的可能性。就像我们之前看到的那样,您冲洗并重复该过程。

分析时要考虑的专业提示是在继续研究 CUDA 内核或图形着色器之前不要跳过收集系统级视图。运行 Nsight 系统配置文件时,很明显它会突出显示内存瓶颈、操作系统和 CPU 调度问题,和 PCI BAR1 订阅问题仅举几例。在某些情况下,这些问题严重到足以通过阻止应用程序充分利用可用系统上的 GPU 加速器来影响系统的性能。

现在让我们更深入地了解 Nsight 系统的功能。Nsight 系统是一个强大的系统范围分析工具。它允许您检查您的 C P U 和 G P U 交互,以确定优化和调整代码的最大机会。使用 Nsight 进行分析有助于跟踪 G P U 工作负载回到其 C P U 起源的调查工作,从而更深入地了解 G P U 和加速器单元利用率以及操作系统与不同 API(例如 vulan 和 cuda)之间的活动。

Nsight 支持使用 Gui 或 CLI 进行设备和远程分析,并且可以支持多 GPU 系统和开箱即用的运行时配置文件和加速的酷库,这些都是 NVTX 开箱即用的。通过向您的应用程序添加低开销和 NVTX,只需几步就可以进一步深入了解您的应用程序。Nsight 上的 G PU 指标采样有助于在视觉时间线上提供对低级系统指标的可见性。这些提供了系统范围的工作负载效率概述。这些包括 IO 活动指标,包括 PCIE 、DRAM 等的吞吐量。它们还显示了已发布的一些利用率Tensor Cores活动指令、warp 占用和未分配的工作槽。此信息有助于更好地了解系统活动,并有助于回答基本问题,例如 GPU 在大多数时间是否处于活动状态。内核grid是否足够大,SM 指令率高吗?是否使用了Tensor Core等等。还附带了一个可扩展的分析和专家系统框架,其中包含人们可能会遇到的常见优化流程。

我们今天介绍的所有工具可以在 jetson 上本地运行。

Nsight compute 是用于 CUDA 应用程序的内核分析器。它有助于收集详细的低级性能指标和 API 信息,以帮助分析在 GPU 上运行的 cUDA 内核。它允许您使用 GUI 或 CLI 交互式地分析 CUDA 内核,同时指定所选内核配置文件的特定实例。它非常强大并可用于跟踪内存工作负载,以帮助充分利用 G P U。它还包括一个可扩展的基于 Python 的引导分析框架,以帮助指导您完成核心优化。

Nsight compute是一个GPU调试器和分析器。它可以帮助您更便宜地进行性能监控,调试 3D 和光线跟踪 API, 他还可以帮助图形应用程序的性能调整,以帮助消除启动器和停顿。G P U 跟踪提供程序支持 jetson 上的 vulcan 和 opengl,可用于查看图形应用程序中一帧或多帧过程中的低级别指标。这些指标可用于识别帧中 G PU 利用率低下的区域,从而帮助推动优化决策。但它并不止于此。进入平稳状态并开始自由状态可能需要更深入地挖掘。使用范围分析器或着色器分析器。您可以更深入地查看指令的调度,并确定导致GPU 利用率低下的停顿。删除这些停顿让 GPU 同时执行多条指令,提高吞吐量并确保最快的帧速率。

构建和交付经过微调的软件可能发生在许多层面。在开发人员办公桌的微观层面,开发人员使用 Pro Nsight 分析工具在设备上分析或使用远程主机分析目标。可用的 Gui 和 cli 界面允许开发人员收集配置文件数据,然后他们可以在 Gui 上可视化以分析和微调他们的应用程序。更进一步,他们可以使用分析器生成的统计输出来运行回归分析并执行他们的测试应用程序。利用 C I C D ,也就是持续集成和持续部署系统的大型系统和组织中,探查器输出可用于监控性能并针对 K P I 目标对应用程序进行基准测试。

现在让我们谈谈 Nsight DL designer,这是我们用于卷积神经网络或 CNN 的工具。它包括一个 IDE,可以帮助您创建实时推理 CNN, 它是基于 Gui 的编辑器,提供了非常直观的模型表示。它还包括一个分析器,该分析器利用 GPU 指标来帮助识别可能过于昂贵的层,然后帮助推动优化例如重新排序图层以帮助加快操作,甚至可能进行权衡,例如在质量或速度之间做出决定,可能就像试图减少被检测到的特征的数量一样。就像我们今天谈到或谈论的其他工具一样,设计师内部还能够直接在Jetson上运行,并允许您使用 Pytorch 并导出模型以进行部署.

Nvidia SDK Manager为我们的开发人员简化和自动化开发环境设置。它协调 SDK、库和驱动程序组合。并确保兼容性依赖性。它可以在Jetson平臺上把所有 Nvidia 硬件依赖项和软件刷到目标Jetson设备。它还让您了解最新的 Nvidia S D K 工具和软件版本的通知,以便您始终在最新和最好的设备上运行和工作。

更多

使用NSight工具套件在NVIDIA JetsonAGX Orin上进行本机开发

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档