cuda ncu section 含义解释
NVIDIA Nsight Compute (NCU) 是用于分析 CUDA 程序性能的工具,通过 Sections 组织性能指标。用户提供的 24 个 Sections 涵盖了计算、内存、调度、互连和可视化等方面。本报告详细解释每个 Section 的含义、用途及相关分析场景。
Sections 详细解析
C2CLink
含义:分析芯片到芯片 (Chip-to-Chip) 互连的性能,如 NVLink 或 PCIe 的带宽和延迟。
用途:在多 GPU 系统(如 DGX)中,评估 GPU 间或 GPU-CPU 间的通信效率。
示例 Metrics:nvlink__bytes_tx(传输字节数)。
场景:优化多 GPU 数据传输,减少通信瓶颈。
ComputeWorkloadAnalysis
含义:分析 SM 的计算工作负载,包括指令吞吐量、浮点运算效率等。
用途:评估 GPU 计算资源的利用率,识别计算瓶颈。
示例 Metrics:sm__inst_executed(指令数)、flop_sp_efficiency(单精度浮点效率)。
场景:优化矩阵计算或科学计算内核。
InstructionStats
含义:统计 SASS(底层 Shader Assembly)指令的分布和执行情况。
用途:分析指令类型(如算术、内存操作)和执行频率,定位低效指令。
示例 Metrics:sm__sass_inst_executed_op_fadd(浮点加法指令数)。
场景:优化指令级性能,减少冗余操作。
LaunchStats
含义:分析 CUDA 内核启动参数,如网格大小、块大小和寄存器使用量。
用途:评估线程块分配和启动配置是否合理。
示例 Metrics:launch__grid_size(网格大小)。
场景:调整线程块配置以提高 SM 占用率。
MemoryWorkloadAnalysis
含义:分析内存工作负载,涵盖全局、共享、纹理和本地内存访问。
用途:识别内存访问瓶颈,如缓存未命中或非合并访问。
示例 Metrics:l1tex__t_sectors_pipe_lsu_mem_global_op_ld(全局内存加载扇区)。
场景:优化内存访问模式,减少全局内存延迟。
MemoryWorkloadAnalysis_Chart
含义:为内存工作负载提供可视化图表,如内存层次利用率或带宽图。
用途:辅助 MemoryWorkloadAnalysis,提供直观内存性能分析。
示例 Metrics:与 MemoryWorkloadAnalysis 共享 Metrics,但格式为图表。
场景:在 NCU GUI 中查看内存瓶颈的图形化表示。
MemoryWorkloadAnalysis_Tables
含义:提供内存工作负载的详细表格数据,补充 MemoryWorkloadAnalysis。
用途:提供结构化数据,便于深入分析内存访问细节。
示例 Metrics:类似 l1tex__t_bytes_pipe_lsu_mem_global_op_ld(全局内存加载字节数)。
场景:导出表格数据进行脚本化分析。
NumaAffinity
含义:分析 NUMA(非均匀内存访问)亲和性,评估内存分配与 GPU/CPU 亲和性。
用途:在多 GPU 或 CPU-GPU 系统中,优化内存分配以降低访问延迟。
示例 Metrics:NUMA 相关的内存分配统计(具体 Metrics 因架构而异)。
场景:优化 DGX 或服务器环境中的内存亲和性。
Nvlink
含义:分析 NVLink 互连的性能,测量多 GPU 间的带宽和延迟。
用途:评估 GPU 间通信效率,定位 NVLink 瓶颈。
示例 Metrics:nvlink__bytes_tx(NVLink 传输字节数)。
场景:优化多 GPU 并行程序(如深度学习训练)。
Nvlink_Tables
含义:提供 NVLink 性能的详细表格数据,补充 Nvlink Section。
用途:为 NVLink 性能提供结构化数据,便于分析。
示例 Metrics:与 Nvlink 共享 Metrics,但以表格形式组织。
场景:导出 NVLink 数据进行离线分析。
Nvlink_Topology
含义:显示 NVLink 拓扑结构,描述多 GPU 间的互连配置。
用途:帮助理解系统拓扑,优化 GPU 间数据传输路径。
示例 Metrics:拓扑相关的元数据(非数值 Metrics)。
场景:规划多 GPU 系统的数据分配。
Occupancy
含义:评估 SM 的占用率,即活跃 warp 数与最大 warp 数的比例。
用途:分析线程并行度,优化资源利用。
示例 Metrics:achieved_occupancy(实际占用率)。
场景:调整块大小以提高 SM 占用率。
PmSampling
含义:通过性能监控 (Performance Monitoring) 采样,收集硬件计数器数据。
用途:提供实时性能数据,分析硬件级行为。
示例 Metrics:sm__cycles_elapsed(SM 运行周期)。
场景:深入分析硬件性能瓶颈。
PmSampling_WarpStates
含义:分析 warp 状态(如活跃、等待内存),基于性能监控采样。
用途:诊断 warp 暂停原因,优化调度效率。
示例 Metrics:smsp__warp_issue_stalled_memory(因内存等待暂停的周期)。
场景:减少 warp 等待时间,提高执行效率。
SchedulerStats
含义:统计 warp 调度器行为,分析调度效率和暂停原因。
用途:定位调度瓶颈,如分支发散或资源竞争。
示例 Metrics:smsp__warp_issue_stalled(warp 暂停周期)。
场景:优化 warp 调度,减少分支发散。
SourceCounters
含义:将性能指标映射到源代码行,分析代码级性能。
用途:帮助开发者定位特定代码行的性能瓶颈。
示例 Metrics:sm__inst_executed(按源代码行统计)。
场景:优化特定 CUDA 内核代码。
SpeedOfLight
含义:提供 SM 和内存利用率的概览,快速识别主要瓶颈。
用途:作为性能分析的起点,判断是计算还是内存受限。
示例 Metrics:sm_efficiency(SM 利用率)、dram__bytes(DRAM 字节数)。
场景:快速诊断程序性能瓶颈。
SpeedOfLight_HierarchicalDoubleRooflineChart
含义:显示双精度浮点运算的 Roofline 图表,分析计算与内存性能平衡。
用途:评估双精度计算是否受内存或计算限制。
示例 Metrics:flop_dp_efficiency(双精度浮点效率)。
场景:优化科学计算程序。
SpeedOfLight_HierarchicalHalfRooflineChart
含义:显示半精度浮点运算的 Roofline 图表,针对 AI 工作负载。
用途:评估半精度计算(如 FP16)的性能瓶颈。
示例 Metrics:flop_hp_efficiency(半精度浮点效率)。
场景:优化深度学习模型。
SpeedOfLight_HierarchicalSingleRooflineChart
含义:显示单精度浮点运算的 Roofline 图表,分析通用计算性能。
用途:评估单精度计算(如 FP32)的性能瓶颈。
示例 Metrics:flop_sp_efficiency(单精度浮点效率)。
场景:优化图形渲染或通用计算。
SpeedOfLight_HierarchicalTensorRooflineChart
含义:显示 Tensor 核心运算的 Roofline 图表,针对机器学习任务。
用途:评估 Tensor 核心(如 Volta、Ampere 架构)的性能。
示例 Metrics:tensor__throughput(Tensor 核心吞吐量)。
场景:优化深度学习训练或推理。
SpeedOfLight_RooflineChart
含义:提供综合 Roofline 图表,比较计算与内存性能。
用途:综合分析程序的计算和内存限制。
示例 Metrics:结合多种浮点运算和内存带宽指标。
场景:全面评估程序性能。
WarpStateStats
含义:详细统计 warp 状态(如等待内存、分支发散、活跃)。
用途:分析线程执行效率,定位 warp 级瓶颈。
示例 Metrics:smsp__warp_issue_stalled_branch(因分支发散暂停的周期)。
场景:优化线程同步和分支逻辑。
WorkloadDistribution
含义:分析工作负载在 SM 间的分布,评估负载均衡性。
用途:确保所有 SM 均匀分配工作,最大化 GPU 利用率。
示例 Metrics:sm__inst_executed.avg.per_sm(每 SM 的平均指令数)。
场景:优化线程块分配,平衡多 SM 负载。