0

我的印象是计算能力 1.x GPU 中的(单个)warp 调度程序每 4 个周期每个 warp 发出一条指令,并且由于算术流水线的延迟是 24 个周期,因此可以通过 6 个活动 warp 完全隐藏它在任何时候。

对于计算能力 2.1 GPU,编程指南提到“在每个指令发出时间,每个调度程序都会发出两条独立的指令”,而CUDA warp 调度程序如何一次发出 2 条指令的帖子?建议每个调度程序可以在每个周期的每个 warp 发出一条指令。

那么warp调度程序的确切延迟是多少?每个warp每多少个周期发出一条指令?是否同时向任何活动和准备好的经线发出不同的指令(MIMD)?

4

1 回答 1

1

是的,cc 1.x SM 中有一个 warp 调度程序,对于整数和单精度浮点运算,它将在 4 个时钟周期内发出一条指令来服务整个 warp。

cc 2.x SM 中有两个 warp 调度程序。从编程指南中摘录,我们看到这 2 个调度程序的行为在 cc 2.0 和 cc 2.1 之间略有不同:

在每个指令发布时间,每个调度程序都会发布:

•计算能力2.0设备的一条指令,

•计算能力2.1设备的两条独立指令,

对于一些准备好执行的扭曲,如果有的话。第一个调度器负责具有奇数 ID 的经线,第二个调度器负责具有偶数 ID 的经线。请注意,当一个调度器发出双精度浮点指令时,另一个调度器不能发出任何指令。Warp 调度程序只能向一半的 CUDA 内核发出指令。为了对warp 的所有线程执行指令,warp 调度程序因此必须在两个时钟周期内为整数或浮点算术指令发出指令。

于 2013-08-27T22:51:57.890 回答