参考文档
计算优化类术语
Reduction(约简)
在计算机科学中,reduction表示一种运算符类型(满足交换律[Commutative]、结合律[Associative]),常见于并行编程,用来缩减阵列中的元素到单个输出结果。reduction运算符可以将一个计算任务分解为一系列小局部任务,对于一个任务需要满足如下几点才能够使用reduction运算符进行计算:
- 任务能够从一个阵列缩减为单个标量值
- 最终的结果能够从各个局部任务中获得
那具体什么运算可以通过reduction来进行并行计算的?
举例:加法[Sum]、乘法[Product]、逻辑算法[And/Or/Xnor/...]、求平均数[Average]都可以使用reduction。
另外还有直方图计算[Histogram]、卷积运算[Convolution]
那有什么运算是不可以通过reduction来进行并行计算的?
举例:矩阵乘法[Matrix Multiplication],因为矩阵乘法不满足交换律。
Tiling(分块)
Tiling可以等价为Split+Reorder两种操作的叠加