并行处理-并行化高斯算法



我想将这种高斯算法并行化。我找不到任何解决方案来与其他进程共享循环中的计算。是否有机会将整个代码或代码片段并行化?

for k=1:n-1
for i=k+1:n
    M(i,k) = M(i,k) / M(k,k);
    a(i) = a(i) - a(k)*M(i,k);
    for j=k+1:n
        M(i,j) = M(i,j) - M(k,j)*M(i,k);
    end
end end

起初,这是一个理论问题。在我有了解决方案之后,我想用OpenMPI来编程这段代码。

非常感谢!John

高斯消去确实是一个强序列过程。在完成上一个消除步骤之前,不能选择轴心元素。可以通过将一段行分配给处理单元来并行消除,但要更新的数组部分会逐渐减少(量子位)。

另一种方法可以是通过块分解,将块分配给农业模式中的处理单元。再次来到这里,将很难让所有PU都忙碌起来。

最新更新