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