繁体   English   中英

为什么在GPU的SM中有两个warp调度程序?

[英]Why there are two warp schedulers in a SM of GPU?

我读了NVIDIA Fermi白皮书,当我计算SP核心,调度程序的数量时感到困惑。

根据白皮书,在每个SM中,有两个warp调度器和两个指令调度单元,允许两个warp同时发出和执行。 SM中有32个SP内核,每个内核都有一个完全流水线的ALU和FPU,用于执行线程的指令

众所周知,如果我们只是在每个周期发出一个warp,那么warp由32个线程组成,这意味着这个warp中的所有线程都将占用所有SP内核,并将在一个周期内完成执行(假设没有任何停顿) )。

但是,NVIDIA设计了双调度器,它选择两个warp,并从每个warp发出一条指令到一组16个内核,16个加载/存储单元或4个SFU。

NVIDIA表示,这种设计可以带来最高的硬件性能。 也许最高硬件性能来自交错执行不同指令,充分利用硬件资源。

我的问题如下(假设没有内存档和所有操作数都可用):

  1. 每个warp是否需要两个周期才能完成执行,并且每个warp调度程序将所有32个SP内核分成两组?

  2. ld / st和SFU单元是由所有warp共享的(对于来自双调度程序的warp看起来是统一的)?

  3. 如果将经线分为两部分,哪部分先安排好? 有没有调度员? 或者只是随机选择一个部分来执行。

  4. 这种设计有什么优势? 只是最大限度地利用硬件?

每个warp是否需要两个周期才能完成执行,并且每个warp调度程序将所有32个SP内核分成两组?

是。 与后代不同,费米有一个“时钟” (着色时钟),它的运行频率是“核心”时钟的2 每个单精度浮点指令(例如)发出超过2个“hotclocks”,但是发布到同一组16个SP核心。 每个调度程序的每个“核心”时钟的净效应是一个问题。

ld / st和SFU单元是由所有warp共享的(对于来自双调度程序的warp看起来是统一的)?

真的不明白这个问题。 所有执行资源都可用于来自任一调度程序的指令。

如果将经线分为两部分,哪部分先安排好? 有没有调度员? 或者只是随机选择一个部分来执行。

为什么这很重要? 该机器表现得好像在一个核心时钟中安排了两个完整的扭曲指令,即“双重问题”。 无论如何,您无法看到在hotclock级别发生的任何事情。

这种设计有什么优势? 只是最大限度地利用硬件?

是的,正如费米白皮书中所述:

“使用这种优雅的双重问题模型,Fermi实现了接近峰值的硬件性能。”

问题未解决?试试以下方法:

为什么在GPU的SM中有两个warp调度程序?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM