JACKSON MARUSARZ
日期信息未提供
开发者工具分为几个主要类别,以支持CUDA应用的调试、性能分析和正确性检查。
调试器 (Debuggers):
性能分析器 (Profilers):
正确性检查器 (Correctness Checker):
compute-sanitizer --leak-check full memcheck_demo 可检测内存分配错误、未初始化的内核、越界访问等问题。IDE 集成 (IDE integrations):
计算调试器用于调试在设备上运行的GPU内核。
CUDA GDB 是一个命令行和IDE后端调试器。
为Visual Studio提供IDE集成,用于构建和调试CPU+GPU代码。
为VS Code提供新的IDE集成,用于构建和调试CPU+GPU代码。
* 支持从Windows或Linux远程调试Linux目标。
Compute Sanitizer自动扫描错误和内存问题。
通过子工具检查正确性问题:
示例输出:执行 compute-sanitizer --leak-check full memcheck_demo 可能会报告内存泄漏、未初始化的内核执行、越界访问以及无效的全局写入等问题,并提供详细的调用栈信息。
OptiX在Compute Sanitizer中的支持:
Compute Sanitizer中的核心转储支持:
核心转储生成性能提升5倍。
Nsight Visual Studio Code Edition已正式发布。
Nsight工具也支持Visual Studio 2022,提供集成的调试体验,包括代码、汇编、线程状态、断点等。
Nsight Systems是一个系统级性能分析器 (System Profiler)。
系统级应用算法调优:
平衡多CPU和GPU的工作负载:
提供命令行、独立工具和IDE集成。
https://developer.nvidia.com/nsight-systems该视图展示了Nsight Systems时间线分析器的详细功能:
* Processes and threads (进程和线程)
* Thread/core migration (线程/核心迁移)
* Thread state (线程状态)
* CUDA and OpenGL API trace (CUDA和OpenGL API追踪)
* cuDNN and cuBLAS trace (cuDNN和cuBLAS追踪)
* Kernel and memory transfer activities (内核和内存传输活动)
* Multi-GPU (多GPU)
Nsight Systems允许用户精确地缩放和过滤时间线上的特定区域,以深入分析:
* 可以查看详细的CUDA API调用,如 cudaGraphInstantiate、cudaGraphLaunch。
* 显示内核的执行时间,如 cudaGraphManual。
* 识别出特定事件(如 reduce 操作)在时间线上的分布和持续时间。
* 通过详细的事件信息和上下文(如 NVIDIA NVTX 事件),帮助开发者定位性能瓶颈和优化机会。
为了实现更多并行活动的可视化,Nsight Systems 引入了多报告平铺功能。它允许用户在时间轴上加载多个报告,并根据挂钟时间(wall-clock)进行对齐。
该功能可以将不同 CLI 会话或节点排名的报告以垂直平铺的形式展现,每个报告在水平方向上代表时间,从而形成一个 k 行 n 列的平铺视图,方便并行活动的比较和分析。
用户可以打开多个报告,这些报告将基于挂钟时间加载在同一个时间轴上。这使得用户可以轻松地对比不同会话或进程的执行情况。
Nsight Systems 提供内置的数据分析和建议功能。
专家系统可以识别潜在的性能瓶颈,并提供优化建议。例如,对于“CUDA Async Memcpy with Pageable Memory”(使用可分页内存进行 CUDA 异步内存复制)的问题,系统可能会建议:“如果适用,请使用固定内存(PINNED memory)”。此外,它还提供相应的 CLI 命令,以便用户在命令行中进行进一步分析。用户可以通过下拉菜单选择不同的专家系统检查,例如 CUDA 同步内存复制、CUDA 同步内存设置、CUDA 同步 API、CUDA GPU 饥饿、VULKAN GPU 饥饿、VULKAN GPU 低利用率等。
Nsight Systems 现在支持 UCX 追踪,包括异步追踪。这允许用户在时间轴上查看 UCX API 调用,并为每个事件提供异步的开始/结束时间。
该功能用于分析 NVIDIA 网络适配器,包括:
* 对 NVIDIA 网络适配器进行性能分析。
* 追踪发送/接收数据和拥塞情况。
* 将网络流量与预期的网络活动和其他系统活动进行关联分析。
Nsight Systems 支持 GPU 直接存储,通过对 PCIe BAR1 请求和 CuFile 追踪进行 GPU 指标采样。
* 实现与 GPU 内存的直接通信。
* CUFILE API 用于 GPU 直接存储。
提供另一种查看注解的方式:
* NVTX 行既可以自然地(组合)显示,也可以按类别分离显示。
* 此示例按事件类型进行拆分,但类型可以在不同类别中混合。
Nsight Systems 还包含许多其他新功能,例如:
* cuBLAS LT, XT, & cuSPARSE 追踪。
* MPI 参数追踪(src, dst, op, size...)。
* 支持 Windows 11 & Server 2022。
* Windows ISR & DPC 追踪。
* SSH 公钥认证。
* GUI 中的统计信息。
Nsight Compute 是一个强大的内核性能分析工具。
主要特点:
* 交互式 CUDA API 调试和内核性能分析。
* 内置专业知识,提供优化建议。
* 数据收集和显示完全可定制。
* 支持命令行、独立应用、IDE 集成和远程目标。
支持操作系统: Linux (x86, Power, Tegra, Arm SBSA), Windows, MacOSX (仅主机)。
支持 GPU: Volta, Turing, Ampere GPU。
文档/产品链接: https://developer.nvidia.com/nsight-compute
Nsight Compute 提供:
* 目标性指标部分:用户可以关注特定的性能指标区域。
* 可定制的数据收集和展示:灵活配置需要收集和显示的数据。
* 内置专业知识:提供引导式分析和优化建议,例如针对性能瓶颈的警告和详细的计算工作负载分析,帮助用户理解和改进 GPU 利用率、指令执行和内存访问模式。
该工具提供:
* 可视化内存分析图表:清晰展示内存访问路径和数据流,例如从全局内存、局部内存、纹理内存、表面内存到共享内存、L1 缓存、L2 缓存和设备内存/系统内存的传输。
* 峰值性能比率指标:提供详细的共享内存、第一级缓存和 L2 缓存统计数据,包括指令数、请求数、命中率等,以评估内存性能效率。
Nsight Compute 能够:
* 源代码/PTX/SASS 分析与关联:将性能指标与源代码、PTX 码或 SASS 码进行关联,帮助用户理解代码层面上的性能表现。
* 每条指令的源指标:详细显示每条指令的性能数据。
* 指标热图:通过颜色编码快速识别性能热点,例如在源代码或汇编代码中哪些行或指令导致了较高的延迟或资源瓶颈。
本部分介绍了用于可视化寄存器使用和依赖链的工具。
该工具提供了一个独立的源代码查看器,主要特点包括:
.cubin 文件进行分析。占用率计算器用于建模硬件使用情况并识别限制因素:
分层屋脊图(Hierarchical Roofline)用于可视化浮点运算性能(双精度):
范围重放功能允许对特定代码范围进行捕获和重放,其关键特性包括:
OptiX 加速结构查看器提供以下功能:
CUPTI (CUDA Profiling Tools Interface) 提供了一个接口,用于收集CUDA应用程序的性能数据。
CUPTI 的最新更新包括:
即将发布的版本将支持 ARM 平台上的 GUI:
Nsight Systems - Nsight Compute - Nsight Visual Studio Code Edition 等 GUI 将原生运行于以下平台:
用户可以使用新的原生 GUI 或现有的远程收集功能。
GTC (GPU Technology Conference) 提供了丰富的开发者工具相关内容:
会议 (Sessions)
实验 (Labs)
与专家联系 (Connect With Experts)
开发者工具在最新版 CUDA Toolkit 中免费提供和打包。
支持可通过以下方式获取:
更多信息: