2012-03-22 39 views
0

如果我以最大的本地組大小和一些大的全局組大小調用EnqueueNDRange,我可以確定本地組內核將被執行inorder嗎?EnqueueNDRange內核序列

即:

Global 0 : Local 0 1 2 3 4 
Global 5 : Local 0 1 2 3 4 
Global 10 : Local 0 1 2 3 4 
etc 

回答

0

AFAIK參數global_work_size參數指定的工作項目數量在NDRange的每個維度和local_work_size指定工作組中的每個維度的工作項數量。

所有工作項目和工作組都應該並行運行,而工作組中的工作項以鎖步方式運行,不同的工作組將執行不同的SIMD引擎,但它們應該並行運行,除非GPU中存在硬件限制可用的SIMD引擎數量,波形/扭曲調度程序限制等。

0

無法保證同一組內的工作項目按順序運行。這就是爲什麼你需要在內核中的重要位置使用屏障來同步組。卡之間gpu硬件的差異使得很明顯爲什麼項目可能無法順序執行。即使您訪問內存的方式也可能意味着工作項很難同步 - 即使是針對您正在優化的特定gpu。