gpt4 book ai didi

cuda - MIO throttle 失速什么时候发生?

转载 作者:行者123 更新时间:2023-12-04 03:39:55 27 4
gpt4 key购买 nike

根据此链接 https://docs.nvidia.com/nsight-compute/ProfilingGuide/index.html :

Warp was stalled waiting for the MIO (memory input/output) instructionqueue to be not full. This stall reason is high in cases of extremeutilization of the MIO pipelines, which include special mathinstructions, dynamic branches, as well as shared memory instructions.


而根据这个 https://docs.nvidia.com/drive/drive_os_5.1.12.0L/nsight-graphics/activities/index.html :

May be triggered by local, global, shared, attribute, IPA, indexedconstant loads (LDC), and decoupled math.


我的理解是所有的内存操作都是在 LSU 上执行的,所以我可以想象它们一起存储在同一个指令队列中,然后由 LSU 单元执行。由于它们都排在一起,因此第二种解释(包括全局内存访问)对我来说更有意义。问题是,如果是这样的话,LG Throttle 就没有必要了。
MIO throttle 实际上意味着什么?所有内存指令都存储在同一个队列中吗?

最佳答案

MIO 是 NVIDIA SM 中的一个分区(从 Maxwell 开始),其中包含在 4 个 warp 调度程序或更慢的数学执行单元(例如 XU 管道)之间共享的执行单元。
向这些执行单元发出的指令首先被发送到指令队列中,从而允许warp 调度程序继续从warp 发出独立的指令。如果warp 的下一条指令指向已满的指令队列,则warp 将停止,直到队列未满并且指令可以入队。当发生这种停顿时,warp 将根据指令队列类型报告节流原因。指令队列到管道的映射因芯片而异。这是一般的映射。

  • mio_throttle(ADU、CBU、LSU、XU)
  • lg_throttle (LSU)
  • 如果 MIO 指令队列达到本地/全局指令的水印,则使用 lg_throttle。提前限制本地/全局指令允许 SM 在由于本地/全局 L1 未命中导致 L1 背压时继续发出共享内存指令。

  • tex_throttle(TEX,非*100 芯片上的 FP64,TU11x 上的张量)

  • 如果 warp 发出的下一条指令是针对特定于子分区的执行单元(FMA、ALU、Tensor、FP64(*100 个 GPU)),那么停顿的原因是 math_throttle。

    关于cuda - MIO throttle 失速什么时候发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66233462/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com