我有数组A[0...N]
的double
和阵列B[0...N]
的int
.每个B[i]
变化都有[0...P]
.我只需要计算数组C[0...P]
:
C[j] = SUM( A[i] : B[i] = j)
Run Code Online (Sandbox Code Playgroud)
据我所知,我不能使用N
具有atomicAdd()
函数的线程,因为它不支持double
.使用P
线程的直接实现非常不同.有没有更好的办法?
如果我理解正确,你试图A
通过保持的整数键对双精度数组求和B
.该推力模板库包含reduce_by_key进行此项操作.的总和的行例子展示了如何使用reduce_by_key用于类似的应用,尽管它使用计数迭代生成密钥而不是使用用户提供的密钥矢量.根据您的需要修改它应该是微不足道的.