我刚刚开始尝试一些来自 OpenGL/GLSL 的 CUDA 编程。
在 OpenGL 中,原子计数器似乎与主图形内存分开,并且开销几乎为零(与图像单元或“无绑定图形”内存上的原子操作明显较慢但不完全慢)不同。它们的局限性在于它们的数量是固定的(~16k),它们只能被读取、递增或递减,我猜这具有较低的开销。
CUDA 中这些极快的原子计数器是否有等效接口?
我想写这样的东西:
if (some_condition)
{
index = atomicIncrement(globalCounter);
output[index] = myValue;
}
使用基数排序或类似“组织金字塔”的压缩可以实现相同的结果,但原子计数器更简单。