预处理共轭梯度法与并行FFT的高效并行化策略
1. 预处理共轭梯度法并行化
在并行化算法中,数据数组的组织至关重要。对于嵌套扭曲分解的并行化,所有数据数组需将八分圆内的元素从角落向内编号。从技术上讲,这些数据表示为四维数组 (i,j,k,ij)
,前三个索引枚举子数组(八分圆)内的元素,最后一个索引表示子数组(八分圆)的编号。
具体操作步骤如下:
1. 在例程开始时,将初始按自然顺序排列的数据数组复制到上述组织方式的工作数组中。
2. 进行计算。
3. 计算结束后,将结果数据复制回初始数据数组。
当处理器数量达到16个或更多时,嵌套扭曲分解的潜力耗尽,需要采用新的方法。对于递归算法,如高斯消元法,可以使用楼梯(或流水线)方法。该方法在每个八分圆内应用,以进一步为2个或更多处理器并行化处理。
操作步骤如下:
1. 将子域沿索引 j
方向分成两部分。
2. 处理器0先计算某个 k
值的平面 (i,j)
上的计算。
3. 处理器1在处理器0完成后开始计算相同 k
值的层,同时处理器0计算 k+1
的下一层。
4. 此方法需要处理器对之间进行同步,即处理器1在开始计算某个 k
之前,必须等待处理器0完成同一层的计算。
5. 在算法的回代阶段,计算顺序相反,处理器0等待处理器1进行同步。
为了减少同步开销,可以应用按索引 k
进行分块,