我的印象是,计算能力1.x GPU中的(单个)warp调度程序每4个周期发出一个指令,并且因为算术流水线的延迟是24个周期,所以可以完全隐藏它任何时候都有6次活动扭曲。
对于计算能力2.1 GPU,编程指南提到“在每个指令发布时,每个调度程序发出两个独立指令”,而How does the CUDA warp scheduler issue 2 instructions at a time for a warp?处的帖子表明每个调度程序可以在每个周期每个warp发出一条指令。
那么warp调度程序的确切延迟是多少?每个warp发出一条指令的周期是多少?是否会同时向任何活动和就绪的warp发出不同的指令(MIMD)?
答案 0 :(得分:1)
是的,有one warp scheduler in a cc 1.x SM,对于整数和单精度浮点运算,它将在4个时钟周期内发出指令以服务整个变形。
有two warp schedulers in a cc 2.x SM。从编程指南中摘录,我们发现这两个调度程序的行为在cc 2.0和cc 2.1之间略有不同:
在每个指令发布时,每个调度程序都会发出:
•计算能力2.0设备的一条指令,
•两个独立的计算能力设备指令2.1,
对于准备执行的某些warp,如果有的话。第一个调度程序负责具有奇数ID的warp,第二个调度程序负责具有偶数ID的warp。请注意,当调度程序发出双精度浮点指令时,另一个调度程序不能发出任何指令。 warp调度程序只能向一半的CUDA核心发出指令。因此,要为warp的所有线程执行指令,warp调度程序必须在两个时钟周期内发出整数或浮点算术指令的指令。