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