1
我剛開始嘗試一些來自OpenGL/GLSL的CUDA編程。OpenGL原子計數器等效於CUDA
在OpenGL中,原子計數器似乎與主圖形存儲器分開,接近零開銷(不像圖像單元或「無圖形」圖形存儲器上的顯着較慢但不完全緩慢的原子操作)。它們是有限的,因爲它們的數量是固定的(約16k),它們只能被讀取,增加或減少,我認爲它的開銷較低。
CUDA中是否有與這些極速原子計數器相當的接口?
我想寫的東西是這樣的:
if (some_condition)
{
index = atomicIncrement(globalCounter);
output[index] = myValue;
}
同樣的結果可以用一個基數排序或「histopyramid」般的壓實來完成,但原子櫃檯只是簡單。
這些新的GLSL原子計數器應該在更快的專用硬件中實現。我的理解是,在紅色盒子的硬件上,在最近的體系結構中有少量專用硬件計數器,而在採用綠色盒子的硬件中,實現僅在全局存儲器中完成,具有標準原子添加指令 – talonmies 2013-04-11 10:02:31
是的,我知道atomicAdd。它似乎與[imageAtomicAdd](http://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt)和[atomicAdd](http://developer.download.nvidia.com/opengl/specs)類似/GL_NV_shader_buffer_store.txt)。我只是想知道在全球範圍內是否還有其他更快的原子增量,OpenGL提供的[原子計數器](http://www.opengl.org/registry/specs/ARB/shader_atomic_counters.txt) – jozxyqk 2013-04-11 10:06:16
@talonmies yes I即使使用相同的硬件也能體驗到這一點。在2011年底,一個驅動程序的改變讓原子計數器的跳躍速度與原子操作一樣快,直到我提到的幾乎爲零的開銷。 – jozxyqk 2013-04-11 10:12:18