并行缩减(例如如何对数组求和)

并行约简算法通常是指组合元素阵列,产生单个结果的算法。属于此类别的典型问题是:

  • 总结数组中的所有元素
  • 在数组中找到最大值

通常,并行缩减可以应用于任何二元关联运算符 ,即 (A*B)*C = A*(B*C)。使用这样的运算符*,并行缩减算法重复地成对地对数组参数进行分组。每对与其他对并行计算,一步将整个阵列大小减半。重复该过程直到仅存在单个元素。

如果运算符除了是关联的之外是可交换的 (即 A*B = B*A),则算法可以以不同的模式配对。从理论的角度来看,它没有任何区别,但在实践中它提供了更好的内存访问模式:

并非所有关联运算符都是可交换的 - 例如采用矩阵乘法。