ein*_*ica 4 cuda gpu gpgpu micro-architecture nsight-compute
在最近的 NVIDIA 微架构中,有一种新的(?)warp 停顿原因/warp 调度程序状态分类法。
此分类法中的两个项目是:
我认为,“记分板”用于无序执行数据依赖性跟踪的意义(参见例如此处)。
我的问题:
NVIDIA GPU 有两种分类指令:
该短记分牌和龙记分报告上依赖于从可变等待指令返回的数据的指令。对于不会离开 SM 的可变延迟指令的依赖项(例如慢数学,例如相互 sqrt 或共享内存),会报告短记分板。对于可能离开 SM 的依赖项,例如全局/本地内存访问和纹理获取,会报告长记分板。
Nsight Cmpute v2020.3.1 Kernel Profiling Guide 中的详细说明
长记分牌
Warp 停止等待记分板对 L1TEX(局部、全局、表面、tex)操作的依赖。为了减少等待 L1TEX 数据访问的周期数,验证内存访问模式是否适合目标架构,尝试通过增加数据局部性或更改缓存配置来提高缓存命中率,并考虑将常用数据移至共享内存.
短记分牌
Warp 停止等待记分板对 MIO(内存输入/输出)操作(不是 L1TEX)的依赖。由于记分板短而导致大量停顿的主要原因通常是对共享内存的内存操作。其他原因包括特殊数学指令(例如 MUFU)或动态分支(例如 BRX、JMX)的频繁执行。验证是否存在共享内存操作并减少组冲突(如果适用)。
MIO 与 L1TEX
MIO 和 L1TEX 是 NVIDIA SM 中的分区。MIO 单元负责共享执行单元(由 1 个或多个 SM 子分区共享),包括低速率数学单元(例如 GeForce 芯片上的双精度)和内存输入/输出。内存子系统包含 L1、TEX 单元、共享内存单元和其他特定于 SM 的域(例如图形)接口。MIO 子系统(包括 L1、TEX 和共享内存)的实现在 Kepler、Maxwell-Pascal 和 Volta-Ampere 之间差异很大。SM 子分区(warp 调度器)通过指令队列与直接调度向共享执行单元发出指令。对于 SM 7.0+,如果这些单元的指令队列已满,则会出现停顿原因(mio_throttle、lg_throttle 和 tex_throttle)。
MIO 定义中包含的内容因架构而异。L1TEX 在技术上是在 MIO 分区中。L1TEX 很复杂,因为它有两个输入接口:
MIO 一词可能令人困惑。给定两个不同的接口,术语 L1TEX 也可能令人困惑。虽然有两个接口本地/全局和纹理/表面共享相同的缓存查找阶段、相同的缓存 RAM 和相同的 SM 到 L2 接口,因此对于许多指标,术语 L1TEX 用于指代单元。