我的GPU是NVIDIA GeForce GT440,其計算能力版本是2.x. NVIDIA的官方CUDA_C_Programming_Guide指出OpenGL和CUDA之間的不一致最大線程數
限制1.每塊= 1024
限制2.每多居民的最大線程數的最大線程數= 1536
但是,有兩個OpenGL的計算機着色器實現限制是
極限3. GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 1536
我的問題是
1.爲什麼限制1不等於限制2和限制3?
2.真正的線程/塊(invocations/workgroup)應該是1024還是1536?
Isnt「2」是多個正在運行的線程並依賴於硬件(因此它可能會同時計算兩個塊)? –
CUDA中的每個塊的實際線程數爲1024。它是1536號碼的單獨硬件限制。多處理器可以有多個「駐留」在其上的塊,因此多處理器可以支持更多的線程,而不僅僅是來自單個塊的那些線程。似乎很明顯,GL限制可能與限制2相關聯。限制1和限制2之間的差異在SO上的許多問題以及Web上的許多地方都有討論,如果您願意查看。 –
CUDA中每個塊的最大線程數爲1024.但是,OpenGL中的最大計算工作組調用是1536.它們看起來不同。但我認爲CUDA ** block **相當於OpenGL ** Work Group **,兩個最大值應該相同。我對嗎? –