2013-10-15 60 views
0

我有一個400x900矩陣,意思是360,000個元素。塊中的線程數爲1024.塊的數量(方形排列)爲352,這意味着總共360,448個線程。因此,假設一個線程被分配給每個元素,448個線程將不會執行任何操作。我已閱讀關於分歧分支並理解,但在這裏我不明白分歧陳述和代碼應該是什麼?冗餘線程的分歧陳述

+1

什麼是「分歧陳述」? –

回答

1

由於線程在CUDA中分組爲塊,我們通常使用比實際大小的數據更多的線程來並行執行工作。在這種情況下,我們需要一個分支來確保只有那些分配了數據的線程才能工作,而其他線程只是在等待,什麼也不做。

以下文章顯示瞭如何使用CUDA計算AXPY。你會發現雖然線程總數總是256的倍數,但內核可以處理任意長度的向量N。代碼if (i < n) {...}可確保這些額外的線程不會執行任何操作。

https://developer.nvidia.com/content/easy-introduction-cuda-c-and-c

+0

明白了,謝謝。 – Shibli