我正在想办法使用 CUDA 实现以下算法:
处理大量体素,我为每个体素计算一个 indexi
和一个 value c
。计算后我需要执行histogram[i] += c
c
的是一个浮点值,直方图最多可以有 15,000 个 bin。
我正在寻找一种使用 CUDA 有效实现这一点的方法。第一个明显的问题是,对于我正在使用的计算能力 1.3,我什至不能做一个atomicAdd()
浮点数,所以我怎样才能可靠地积累任何东西?
nVidia 的这个例子做了一些更简单的事情。直方图保存在共享内存中(由于它的大小,我不能这样做)并且它只累积整数。这种方法可以推广到我的情况吗?