【发布时间】:2015-10-14 19:12:49
【问题描述】:
首先我想注意到我读过 sum reduction,但这不是我想要达到的目标。
假设我有一个包含元素的数组:
array[0] = 2
array[1] = 1
array[2] = -1
array[3] = 3
array[4] = -1
array[5] = 2
结果应该是:
array[0] = array[0] = 2
array[1] = array[0] + array[1] = 2 + 1 = 3
array[2] = -1 (when -1 omitting)
array[3] = array[0] + array[1] + array[3] = 2 + 1 + 3 = 6 (ommited array[2] due to -1 value)
array[4] = -1 (omitting)
array[5] = array[0] + array[1] + array[3] + array[5] = 2 + 1 + 3 + 2 = 8
一般来说应该是:
array[0] = array[0]
array[1] = array[0] + array[1]
array[2] = array[1] + array[2]
array[3] = array[2] + array[3]
array[4] = array[3] + array[4]
array[5] = array[4] + array[5]
or just
array[n] += array[n-1] where n > 0
(省略 -1 可以稍后添加)。
我想在 CUDA 中并行执行此操作。实现这一目标的最快方法是什么?
【问题讨论】:
-
你问的操作不是归约,而是前缀和。
-
我知道,这就是为什么我说这不是我想要实现的目标 :) 但是感谢您给我正确的问题名称,我不知道。
标签: c++ arrays cuda parallel-processing