C++ OpenMP到分布式内存代码

C++ OpenMP到分布式内存代码,c++,openmp,parallel-processing,C++,Openmp,Parallel Processing,我有一个关于并行计算的问题。我有一个很大的代码,用C++编写,并在共享内存基础上使用OpenMP并行化。我想问,有没有可能将这个共享内存代码转换成分布式内存代码 如果可能,需要执行哪些步骤? 谢谢你的合作 谢谢, Rahul Singh大多数可以在共享内存计算机上并行运行的程序也可以在分布式内存计算机上并行运行。是的,OpenMP程序解决的问题可能可以在分布式内存计算机上解决。但是,将OpenMP程序转换为分布式内存程序是另一回事。您最好从串行实现开始并将其并行化,而不是尝试将一种并行思维模式调

我有一个关于并行计算的问题。我有一个很大的代码,用C++编写,并在共享内存基础上使用OpenMP并行化。我想问,有没有可能将这个共享内存代码转换成分布式内存代码

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

谢谢,
Rahul Singh

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


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

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


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

没有更多信息,没有人能给您一个明确的答案。发布一些相关的代码,或者解释一下你的程序是如何更好地工作的。我希望你能意识到这个问题没有一个通用的答案。将共享内存程序转换为分布式程序是非常特定于应用程序的。询问通用答案与询问如何转换相同。共享内存上的MPI通常是一种非常好的方法选择,特别是对于在各种机器上运行的代码。@HighPerformanceMark我同意这一点。只是与OpenMP相比,MPI通常要做更多的工作。因此,如果您只关心共享内存,OpenMp/UPC可能是一个更好的选择。