繁体   English   中英

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

[英]What is the instruction issue time latency of the warp schedulers in CUDA?

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

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

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

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

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

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

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

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

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

暂无
暂无

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

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