Don*_*ang 5 cuda warp-scheduler
我阅读了NVIDIA Fermi白皮书,并在计算SP内核,调度程序的数量时感到困惑。
根据白皮书,每个SM中都有两个Warp调度程序和两个指令分派单元,从而允许同时发布和执行两个Warp。SM中有32个SP内核,每个内核具有完全流水线化的ALU和FPU,用于执行线程的指令
众所周知,一个warp由32个线程组成,如果我们仅在每个周期内发出一个warp,则意味着该warp中的所有线程将占用所有SP内核,并在一个周期内完成执行(假设没有任何停顿) )。
但是,NVIDIA设计了双调度程序,该调度程序选择两个扭曲,然后从每个扭曲向一个16个核,16个加载/存储单元或4个SFU的组发出一条指令。
NVIDIA表示,这种设计可带来最高的硬件性能。最高的硬件性能可能来自对不同指令的交错执行,从而充分利用了硬件资源。
我的问题如下(假设没有内存停滞并且所有操作数都可用):
每个warp是否需要两个周期来完成执行,并且每个warp调度程序将所有32个SP内核分为两组?
ld / st和SFU单元由所有经线共享(看起来像来自双重调度程序的经线的统一服)?
如果将经纱分为两个部分,请先安排哪一部分?有调度程序吗?或只是随机选择一个要执行的部分。
这种设计的优点是什么?只是最大限度地利用硬件?
每个 warp 是否需要两个周期才能完成执行,并且所有 32 个 SP 内核针对每个 warp 调度程序分为两组?
是的。与后代不同,Fermi 有一个“hotclock”(着色器时钟),其运行速度是“核心”时钟的 2倍。每个单精度浮点指令(例如)发出超过 2 个“热时钟”,但发送到同一组 16 个 SP 内核。净效果是每个调度程序每个“核心”时钟一个问题。
ld/st 和 SFU 单元由所有经线共享(对于来自双调度程序的经线看起来是统一的)?
不是很明白这个问题。 所有执行资源都可共享/可用于来自任一调度程序的指令。
如果一个经线被分成两部分,先安排哪一部分?有调度程序吗?或者只是随机选择一个部分来执行。
为什么这很重要?机器的行为就像在一个核心时钟中安排了两个完整的扭曲指令,即“双重发布”。无论如何,您无法看到 hotclock 级别发生的任何事情。
这种设计的优势是什么?只是最大限度地利用硬件?
是的,正如费米白皮书中所述:
“使用这种优雅的双发行模型,Fermi 实现了接近峰值的硬件性能。”
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |