2013-08-26 60 views
0

我的印象是,計算能力1.x GPU中的(單個)warp調度程序每4個週期發送一個指令每個warp,並且由於算術管道的延遲是24個週期,因此可以通過使用6個主動扭曲在任何時候。CUDA中的warp調度程序的指令問題時間延遲是什麼?

對於計算能力2.1GPU,編程指南提到「在每個指令發佈時間,每個調度程序發出兩條獨立的指令」,而How does the CUDA warp scheduler issue 2 instructions at a time for a warp?的帖子則建議每個調度程序每個週期可以發送一條指令每個warp。

那麼warp調度器的確切延遲是多少?每個指令每發送多少個週期?是否有不同的指令(MIMD)同時發佈到任何活動和準備好的翹曲?

+1

這與C沒有任何關係,我會刪除標記。 – Veltas

+0

完成刪除標記 – charis

回答

1

是的,有one warp scheduler in a cc 1.x SM,對於整數和單精度浮點運算,它將在4個時鐘週期內發出指令來服務整個warp。

two warp schedulers in a cc 2.x SM。從節目指南摘編,我們看到,這2個調度的行爲是CC 2.0和CC 2.1之間略有不同:

在每一個指令的問題時,每個調度問題:對設備

•一個指令的計算能力2.0,

•爲計算能力2.1的設備的兩個獨立的指令,

一些經線是準備來執行,如果有的話。第一個調度程序負責帶有奇數ID的經紗,第二個調度程序負責帶有偶數ID的經紗。請注意,當調度程序發出雙精度浮點指令時,另一個調度程序不能發出任何指令。 一個warp調度程序可以只對一半的CUDA核心發出指令。爲了執行warp的所有線程的指令,warp調度器因此必須在整個或浮點算術指令的兩個時鐘週期內發出指令。

+0

謝謝您的回答。我的問題是算術流水線的延遲和warp調度器的延遲。我已經更新了這個問題,以使上面更清楚 – charis

+1

每個warp調度器都可以在每個GPU時鐘週期發出指令(Fermi上的時鐘不是)。指令延遲沒有記錄。您可以通過編寫調查寄存器RAW和WAR延遲的簡單微型基準來確定幾乎所有指令的延遲時間。在CUDA編程指南中記錄了許多操作的吞吐量數字。 –