2011-05-04 74 views
0

我在理解GPU上的SIMT執行時遇到了一些問題。到目前爲止,我已經將這些線程放置在「warps」(例如32個線程/ warp)中。這些線程將是相同的類型,並可以並行運行(但可以獨立運行,支持&)。SIMT扭曲問題

我正在閱讀的書然後繼續混淆我。 'It is then up to the instruction unit to select warps that are ready to execute their next instruction, and this instruction is then issued to the active threads of the warp. Each SP core executes an instruction for four individual threads of a warp using four clocks'.

選擇的架構有8個SP,每個warp有32個線程。因此每個SP分配4個線程。爲什麼不分配1個線程/ SP? 「使用四個鐘錶」是什麼意思?每條指令是否需要1個時鐘,並執行4次(每個線程1個)?

我的另一個問題是如果你有一個32線程的warp每個包含一個條件。如果半分支一路和另一半?從我讀過的內容來看,線程執行兩個結果?這個怎麼用?即它如何遵守程序規則

回答

0

由於每個內核實際上都是一個標量ALU,因此出現'使用四個時鐘'部分(在NVIDIA g80/g90/g200系列GPU中)。它只能處理來自每個時鐘的單個線程的單個指令。因此,爲了退出32個線程的warp指令,每個指令在四個時鐘週期內執行四次(或執行該指令的時鐘數的四倍,有些需要比一個週期更長的時間)。這比這更復雜一點,因爲某些指令組合可能是雙重發行的,但希望你能明白。在計算2.0費米部件上,每個週期有兩個半經線是雙發的,所以32個核心每兩個週期退出兩個經線。在計算2.1費米部件時,有48個內核,具有相同的雙重問題方案,加上來自其中一個活動變形的附加指令(如果可用),使得多處理器亂序。

有條件執行和分支分歧問題已在您的另一個問題中討論過,因此我不會在此重新提供。