我有A[0...N]
的数组double
和B[0...N]
的数组int
。每个B[i]
在[0...P]
中有所不同。我只需要计算数组C[0...P]
:
C[j] = SUM( A[i] : B[i] = j)
我不能将N
个帖子与atomicAdd()
函数一起使用,因为据我所知,它不支持double
。使用P
线程的直接实现非常不同。还有更好的方法吗?
答案 0 :(得分:5)
如果我理解正确,你试图通过A
中保存的整数键对双精度数组B
求和。 Thrust模板库包含reduce_by_key操作。 sum rows示例显示了如何将reduce_by_key用于类似的应用程序,尽管它使用计数迭代器来生成密钥而不是使用用户提供的密钥向量。根据您的需要修改它应该是微不足道的。