回 帖 发 新 帖 刷新版面

主题:[讨论]对共轭梯度法实现并行采用mpi实现时 mpi_barrier是必须的吧

目前在编写共轭梯度法的并行化,感觉由于这个cg算法的特点,在完成一次cg迭代算法时,需要必须调用mpi_barrier来使各进程同步,否则由于不同进程执行速度的快慢可能在进程1中完成了此次迭代,要进入到下一次迭代了,而可能进程2本次迭代还没有完成而造成次序混乱。

但若真是需要同步,就会造成各进程执行时间都是一样的,若是采用不同性能计算机进行计算,最终的并行效率将取决于性能最差的那台计算机的执行时间。

不知道我理解是否有误,这种编程思路对吗?
ps 目前我已经按照这种思路编写调试完毕,能得到正确结果,但是总觉得这种效率 并没有最优化。

回复列表 (共1个回复)

沙发

CG法不做预处理收敛会较慢,预处理PCG法从算法角度上来说,依赖较为严重,本身并不适合做并行计算,当然非要并行处理也是可以的,不过得从算法角度上去修改,国外有文献,你可以查查,以前我看到过ICCG的并行算法,你可以参考下。
当然我很想了解下你的算法流程,如何设计的并行算法。

我来回复

您尚未登录,请登录后再回复。点此登录或注册