CUDA中的OpenGL原子计数器等价物

时间:2013-04-11 07:20:08

标签: cuda glsl atomic

我刚刚开始尝试一些来自OpenGL / GLSL的CUDA编程。

在OpenGL中,原子计数器似乎与主图形内存是分开的,并且几乎没有开销(与图像单元或“无绑定图形”内存上的显着较慢但不是非常慢的原子操作不同)。它们是有限的,因为它们有固定数量(~16k),它们只能被读取,递增或递减,我猜这些开销较低。

CUDA中是否有与这些极快原子计数器等效的接口?

我想写这样的东西:

if (some_condition)
{
    index = atomicIncrement(globalCounter);
    output[index] = myValue;
}

使用基数排序或类似“组合树脂”的压缩可以实现相同的结果,但原子计数器更简单。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用atomicAdd()?我不知道OpenGL原子,但我想它们是相似的。

int atomicAdd(int* address, int val);
unsigned int atomicAdd(unsigned int* address,
                       unsigned int val);
unsigned long long int atomicAdd(unsigned long long int* address,
                                 unsigned long long int val);
float atomicAdd(float* address, float val);