MIO/L1TEX的“长”和“短”记分牌是什么?

在最近的 NVIDIA 微架构中,有一种新的(?)warp 停顿原因/warp 调度程序状态分类法。

此分类法中的两个项目是:

  • 短记分板- 记分板依赖于 MIO 队列操作。
  • 长记分牌- 记分牌依赖于 L1TEX 操作。

我认为,“记分板”用于无序执行数据依赖性跟踪的意义(参见例如此处)。

我的问题:

  • 形容词“短”或“长”描述什么?它是单个记分牌的长度吗?两种不同类型的操作的两个不同的记分牌?
  • MIO 之间的这种有点不直观的二分法是什么意思 - 一些,但不是全部都是内存操作;和 L1TEX 操作,哪些都是内存操作?这是一个二分法wrt停顿原因还是与实际硬件有关?

回答

NVIDIA GPU 有两种分类指令:

  1. 固定延迟 - 数学、按位、寄存器移动
  2. 可变延迟 - ld/st 到共享、本地、全局和纹理以及缓慢的数学运算

短记分牌龙记分报告上依赖于从可变等待指令返回的数据的指令。对于不会离开 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 很复杂,因为它有两个输入接口:

  1. LSU 接口用于共享内存、本地/全局内存(标记)和特殊操作,例如 shuffle 和专用寄存器。
  2. TEX 接口用于纹理提取和慢速数学运算的 7.0-8.xa 子集(例如 GeForce 卡上的 FP64)。后者有点混乱。慢速数学单元是为了二进制兼容性而存在的,预计不会与纹理提取同时使用。

MIO 一词可能令人困惑。给定两个不同的接口,术语 L1TEX 也可能令人困惑。虽然有两个接口本地/全局和纹理/表面共享相同的缓存查找阶段、相同的缓存 RAM 和相同的 SM 到 L2 接口,因此对于许多指标,术语 L1TEX 用于指代单元。

  • @PeterCordes the compiler will generally aggressively attempt to unroll loops, with a primary purpose towards independent instruction reordering to allow for long-latency instructions to be issued first. See [here](https://stackoverflow.com/questions/43832429/is-starting-1-thread-per-element-always-optimal-for-data-independent-problems-on/43833050#43833050). This is easy to observe experimentally with the binary analysis tools, and an appropriate code. Even without loop unrolling, the compiler will attempt to reorder independent loads as early as possible.

以上是MIO/L1TEX的“长”和“短”记分牌是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>