2015-06-27 29 views
-1

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

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对此代码进行编程。

非常感谢! 约翰

+2

谷歌搜索“高斯算法矩阵并行算法”,并发现大量的命中。 –

回答

0

高斯消除确实是一个强烈的顺序过程。在完成上一个淘汰步骤之前,您不能选择一个数据透视元素。消除可以通过给处理单元分配一段行来并行化,但是要更新的数组的分数会逐渐减少(按原样)。

另一种方法可以是块分解,在农业模式下将块分配给处理单元。这里再一次难以保持所有PU的繁忙。

+0

谢谢。该算法没有选择主元素。我的计划是将一个循环分成几个进程。但我找不到解决方案。在我看来,每个循环都使用前一步的值。 – johndoe