一个小小的CUDA难题

时间:2011-10-26 08:37:05

标签: cuda

我有A[0...N]的数组doubleB[0...N]的数组int。每个B[i][0...P]中有所不同。我只需要计算数组C[0...P]

C[j] = SUM( A[i] : B[i] = j)

我不能将N个帖子与atomicAdd()函数一起使用,因为据我所知,它不支持double。使用P线程的直接实现非常不同。还有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

如果我理解正确,你试图通过A中保存的整数键对双精度数组B求和。 Thrust模板库包含reduce_by_key操作。 sum rows示例显示了如何将reduce_by_key用于类似的应用程序,尽管它使用计数迭代器来生成密钥而不是使用用户提供的密钥向量。根据您的需要修改它应该是微不足道的。