2016-07-11 47 views
1

在CUDA PTX,有持有線程的經指數特殊寄存器:%warpid。現在,規範說:在CUDA PTX中,%warpid是什麼意思呢?

注意%warpid是揮發性的,讀取時的時刻返回一個線程 的位置,但其價值可能會執行, 例如在發生變化,由於以下搶佔線程的重新安排。

嗯,什麼位置是什麼?它不應該是塊內的位置,例如對於一維網格%tid.x/warpSize?它是否是SM中的一個槽口(例如warp調度程序或某個內部隊列)?我很困惑。

動機:我想省去計算%tid.x/warpSize以及通過使用這個特殊寄存器釋放寄存器的麻煩。

回答

4

你需要閱讀,你在你的問題貼在開盤後直接按照文檔的下一個25個字:

爲此,%ctaid和%TID應該被用來計算一個虛擬的 如果在內核代碼中需要這樣的值,warp索引;

然後

%warpid主要目的是使分析和診斷代碼來 樣品並記錄諸如工作場所映射和負載 分佈信息。

所以,不,你不能使用你想要的東西。 %warpid是一個有效的調度時隙ID而不是塊內的恆定的,獨特的經編索引。

+0

Emboldend實際的答案。而且 - 我確實閱讀過這部分內容,但事實並非如此。在這種情況下,我真的不明白他們爲什麼稱它爲%warpid而不是'%warpsmslot'或'%warpidinsm'或'%warpslot'等。 – einpoklum