OpenMP到分布式内存代码

时间:2012-04-04 16:17:32

标签: c++ openmp parallel-processing

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

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

谢谢, 拉胡尔辛格

2 个答案:

答案 0 :(得分:0)

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

因此,您寻求的第一步可能是无法实现您的计划。但是,正如评论员已经指出的那样,提供比我现有的更有用的建议是非常困难的(而且我根本没有提供任何非常有用的建议),而不了解你的应用程序。

答案 1 :(得分:0)

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

在任何一种情况下,我的建议是首先考虑如何在分布式架构上的代码中获得并行性,然后再使用MPI。如果您恰好从事计算科学业务,那么已经有很好的编写软件包,例如来自阿贡国家实验室的PETSc,以及来自桑迪亚国家实验室的Trilinos,可能会帮助您发展更多更快。