Optimization CUDA中的warp调度程序的指令发出时间延迟是多少?

Optimization CUDA中的warp调度程序的指令发出时间延迟是多少?,optimization,cuda,warp-scheduler,Optimization,Cuda,Warp Scheduler,我的印象是,compute capability 1.x GPU中的(单个)warp调度器每4个周期为每个warp发出一条指令,并且由于算术管道的延迟为24个周期,因此在任何时间有6个活动warp都可以完全隐藏它 对于compute capability 2.1 GPU,《编程指南》提到“在每个指令发出时,每个调度器发出两条独立的指令”,而post At建议每个调度器可以在每个周期的每个扭曲中发出一条指令 那么warp调度程序的确切延迟是多少?每多少个周期,每一次扭曲都会发出一条指令?是否有不同

我的印象是,compute capability 1.x GPU中的(单个)warp调度器每4个周期为每个warp发出一条指令,并且由于算术管道的延迟为24个周期,因此在任何时间有6个活动warp都可以完全隐藏它

对于compute capability 2.1 GPU,《编程指南》提到“在每个指令发出时,每个调度器发出两条独立的指令”,而post At建议每个调度器可以在每个周期的每个扭曲中发出一条指令

那么warp调度程序的确切延迟是多少?每多少个周期,每一次扭曲都会发出一条指令?是否有不同的指令(MIMD)同时发送到任何活动和就绪扭曲?

是的,对于整数和单精度浮点操作,它将发出超过4个时钟周期的指令来服务整个扭曲

有。摘自《编程指南》,我们看到这两个调度器的行为在cc 2.0和cc 2.1之间略有不同:

在每次指令发出时,每个计划程序都会发出:

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

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

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


这与C无关,我会删除标记。完成删除标记谢谢你的回答。我的问题是算术管道的确切延迟和warp调度程序的延迟。我已经更新了这个问题,使上面的问题更加清楚每个warp调度程序可以在每个GPU时钟周期(不是费米上的热时钟)发出指令。未记录指令延迟。您可以通过编写调查寄存器原始延迟和WAR延迟的简单微基准来确定几乎所有指令的延迟。发布了许多操作的吞吐量数字,并在CUDA编程指南中进行了记录。