5.14. 什么是流水线利用率?
流水线利用率用于衡量 内核 (kernel) 对每个 流式多处理器 (Streaming Multiprocessor, SM) 内执行资源的利用效率。
每个 流式多处理器 (SM) 包含多个独立的执行流水线,这些流水线针对不同的指令类型进行了优化 —— CUDA 核心 (CUDA Cores) 用于通用浮点运算,张量核心 (Tensor Cores) 用于张量收缩,加载/存储单元 (load/store units) 用于内存访问,以及用于分支操作的控制流单元。流水线利用率显示了当某个流水线至少有一个 线程束 (warp) 在执行时,该流水线达到其 峰值速率 (peak rate) 的百分比,该数值在所有活跃 流式多处理器 (SM) 上取平均值。
在从流水线利用率层面调试应用程序性能之前,GPU 程序员应首先考虑 GPU 内核利用率 和 流式多处理器利用率 (SM utilization)。
流水线利用率可以通过 NSight Compute (ncu) 中的 sm__inst_executed_pipe_*.avg.pct_of_peak_sustained_active 指标获取,其中星号代表特定的流水线,例如 fma、tensor、lsu 或 adu(地址)。