并行归约
并行归约是指:在并行计算中,将分布在 N 个不同处理单元(线程/核心) 上的大量数据,通过某个满足结合律(Associative)和交换律(Commutative)的二元运算符(如 +、*、max、min),“多对一”地合并成最终的一个(或一小批)结果的过程。
串行思维:for i in range(N): sum += arr[i](需要 N 步,依次等待)。
并行思维:N 个人各拿一个数,两两配对相加,不断合并,直到剩下最后一个人拿着总和。 2^k=N,经过k轮运算,每轮处理一半的数据,处理完N个样本。复杂度为O(log(N))
并行归约的本质是利用树形拓扑将对一维数组的累加复杂度从 O(N) 降到 O(log N)