OpenMP 到分布式内存代码

OpenMP to Distributed Memory Code

本文关键字:代码 内存 分布式 OpenMP      更新时间:2023-10-16

我有一个与并行计算有关的问题。我有一个用C++编写的相当大的代码,并在共享内存的基础上使用 OpenMP 进行并行化。我想问是否可以将此共享内存代码转换为分布式内存代码?

如果可能,需要执行哪些步骤? 感谢您的合作。

谢谢拉胡尔·辛格

大多数可以并行化以在共享内存计算机上运行的程序也可以并行化以在分布式内存计算机上运行。 所以是的,您的 OpenMP 程序解决的问题可能可以在分布式内存计算机上解决。 但是,将 OpenMP 程序转换为分布式内存程序是另一回事。 建议您最好从串行实现开始并并行化它,而不是尝试将一种并行思维模式适应另一种并行执行模式。

因此,您寻求的第一步可能是取消并行化您的程序。 但是,正如评论员已经指出的那样,如果不对您的应用程序有更多的了解,就很难提供比我已经拥有的更有用的建议(而且我根本没有提供任何非常有用的建议(。

共享内存和分布式内存是并行计算中的两种不同的范式,通常意味着不同的思维策略。一些并行编程框架,如UPC或MPI,可以模拟在共享或分布式机器上运行,尽管最好不要这样做,因为,例如,在这里,UPC旨在用于共享内存,而MPI旨在用于分布式内存机器。我不确定OpenMP。

无论哪种情况,我的建议都是首先考虑如何在分布式架构上的代码中获得并行性,然后使用 MPI。如果你碰巧从事计算科学业务,已经有写得很好的软件包,例如来自阿贡国家实验室的PETSc和桑迪亚国家实验室的Trilinos,可以帮助你更快地开发。