我一直想知道何时使用并行前缀和而不是使用顺序构建。我正在使用的算法构造了并行和,但我读到的地方对于少量元素(通常少于100个元素),它更适合顺序算法。这带来了一个问题,即是否存在某个阈值,高于该阈值并行实现可能会比顺序实现一些增益?我使用opencl进行编码,并使用Blelloch 1990实现实现了并行前缀和。
答案 0 :(得分:1)
GPU Gems 3, chapter 39有一些漂亮的图表,显示他们的特定实现何时具有阈值。他们当然没有天真地实现算法 - 它是使用共享内存,展开循环和缓存库冲突避免的优化版本。
一旦实施,您只需对其进行基准测试即可找到阈值。