0

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

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

谢谢,拉胡尔·辛格

4

2 回答 2

0

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

因此,您寻求的第一步可能是使您的程序无与伦比。但是,正如评论员已经指出的那样,如果不了解更多关于您的应用程序的信息,很难提供比我已经拥有的更有用的建议(而且我根本没有提供任何非常有用的建议)。

于 2012-04-04T16:54:02.940 回答
0

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

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

于 2012-04-04T17:18:27.493 回答