S51882: Become Faster in Writing Performant CUDA Kernels using the Source Page in Nsight Compute

Magnus Strengert | GTC2023 | 03/23/23

目录


NVIDIA Nsight Suite 概述

NVIDIA Nsight Suite 是一套综合性的开发者工具,用于优化应用程序在 NVIDIA GPU 上的性能。该套件包含多个关键组件:

Nsight Compute 2023.1.0 / CUDA 12.1 概述

Nsight Compute 提供了多项功能,用于 GPU 核函数性能分析和优化:

更多信息请访问:https://developer.nvidia.com/nsight-compute

Nsight Compute 功能概述
Nsight Compute 功能概述

现场演示:报告导航与引导分析 (Live Demo: Report Navigation and Guided Analysis)

该演示展示了 Nsight Compute 用户界面中报告的导航和引导分析功能,包括性能吞吐量和内存图表等详细视图。

报告导航与引导分析演示
报告导航与引导分析演示

NVIDIA Nsight Compute - 即将推出的功能亮点

Nsight Compute 的最新版本和未来更新将引入以下功能,以进一步增强性能分析能力:

以下是关于调度器统计信息和预计加速的详细描述:

NVIDIA Nsight Compute 未来功能亮点
NVIDIA Nsight Compute 未来功能亮点

Source Page 基础 (Source Page Basics)

Source Page - 应用程序配置 (Application Configuration)

Nsight Compute 的 Source Page 支持多种语言和配置,以实现精确的代码关联和性能分析:

Source Page 应用程序配置
Source Page 应用程序配置

现场演示:Source Page 导航、关联和指标交互 (Live Demo: Source Page Navigation, Correlation, and Metric Interaction)

该演示展示了 Source Page 的详细功能,包括如何在源代码级别进行导航、查看代码与性能指标的关联以及进行指标交互分析。

Source Page 导航、关联和指标交互演示
Source Page 导航、关联和指标交互演示

Source Page 指标 (Source Page Metrics)

实时演示:已执行指令指标 (Live Demo: Instructions Executed Metrics)

实时演示:已执行指令指标
实时演示:已执行指令指标

此幻灯片展示了NVIDIA Nsight Compute软件界面的实时演示,聚焦于“已执行指令指标”。界面详细展示了源代码、不同线程块和线程数量下的指令执行计数、以及与程序地址关联的指令执行统计数据。这些指标有助于识别活跃的代码路径以及由于不活跃线程和线程发散导致的效率低下。

Warp 停顿聚合:数据收集

Warp 停顿聚合的数据收集方法涉及对程序计数器 (PC) 和 Warp 停顿的采样。

SM 架构图
上图展示了一个 SM (GA10x) 的结构,其中包含 SMSP0 到 SMSP3 四个子处理器,每个子处理器又包含 12 个 Warp 槽位(W0-W11)。图例区分了“活跃 Warp”和“未使用的 Warp 槽位”。

Warp 停顿聚合:指标背景

样本计数

与详细页面上的停顿原因指标的比较

Warp 停顿聚合:案例研究

在案例研究中,展示了具体指标值及其计算过程。

样本计数

与详细页面上的停顿原因指标的比较
* 未采样
* 聚合硬件计数器
* 所有 Warp 调度器上每个活跃 Warp 在每个周期内的停顿原因总和。
* 所有 smsp_stall_sum 的总和 (smsp_cycles_active.sum * smsp_warps_active.avg_per_cycle_active) = 1,217,807,035

以下表格展示了具体的指标名称、单位和值:
案例研究指标表格

基于上述数据,计算得到的聚合停顿估计值如下:
* 采样计数:29,046
* 每个活跃周期的平均活跃 Warp 数:10.12
* 采样间隔:1,024
* 每个 SM 的 Warp 调度器数量:4
* 估计的聚合停顿数:1,223,441,612

实时演示:Warp 停顿聚合与 L2 内存指标 (Live Demo: Warp Stalls Aggregates, and L2 Memory Metrics)

实时演示:Warp 停顿聚合与 L2 内存指标
实时演示:Warp 停顿聚合与 L2 内存指标

此幻灯片展示了NVIDIA Nsight Compute软件界面的实时演示,聚焦于“Warp 停顿聚合”和“L2 内存指标”。界面详细展示了与Warp停顿原因和L2内存访问相关的各种指标,例如Load/Store操作、访问延迟等。

源页面指标:总结

已执行指令指标
* 识别已执行的代码路径。
* 检测因不活跃线程和线程发散导致的效率低下。

Warp 停顿聚合
* 高样本计数是高延迟/高成本的指示器。
* 仅在 Issue Slot Utilization 不接近 100% 时才进行调查。
* 停顿样本通常聚合在依赖指令上,而非“慢速”指令本身。

内存指标
* 过多的扇区计数(全局/局部)和内存体冲突(共享)表明有改进潜力。
* 确认核函数是否受内存限制。
* 查阅详细信息页面以分析 L1TEX 和 L2 缓存的影响。
* 牢记“每执行指令的超额消耗”。
* 优先处理频繁执行且存在效率低下的指令。

Source Page 高级功能 (Source Page Advanced Features)

源页面高级功能
源页面高级功能

实时演示:函数级统计、相对指标模式和内联函数表

实时演示
实时演示

本幻灯片展示了一个实时演示,重点介绍了以下功能:
* 函数级统计 (Per-Function Statistics)
* 相对指标模式 (Relative Metric Modes)
* 内联函数表 (Inline Function Table)

演示界面左侧显示了代码视图,右侧则展示了汇编指令及其相关的性能指标,包括每指令执行次数(Instructions Executed)、占空比(Occupancy)等。界面中还可以看到详细的指令地址、源行、指令和操作数,以及全局(Global)和共享(Shared)内存访问信息,帮助用户深入分析代码性能。

Source Page 总结与展望

源页面总结与展望
源页面总结与展望

源页面总结

以下是源页面的主要总结要点:

NVIDIA Nsight Compute:源页面的未来功能亮点

NVIDIA Nsight Compute:源页面的未来功能亮点
NVIDIA Nsight Compute:源页面的未来功能亮点

NVIDIA Nsight Compute 将在源页面中引入以下未来功能亮点:

右侧的截图展示了 Nsight Compute 界面如何通过在代码行旁边的黄色感叹号标记来突出显示检测到的性能问题,并提供关于这些问题的描述和相关建议。

GTC'23 上的开发者工具

GTC'23 开发者工具
GTC'23 开发者工具