我有一个与并行计算相关的问题。我有一个用C++写的很大的代码,它是使用OpenMP在共享内存的基础上并行化的。我想问一下,有没有可能将这种共享内存代码转换为分布式内存代码?
如果可能,需要执行哪些步骤?谢谢合作。
谢谢,拉胡尔·辛格
发布于 2012-04-05 00:54:03
大多数可以被并行化以在共享存储器计算机上运行的程序也可以被并行化以在分布式存储器计算机上运行。所以,是的,您的OpenMP程序解决的问题可能可以在分布式内存计算机上解决。但是,将OpenMP程序转换为分布式内存程序则是另一回事。您可能更好地建议从串行实现开始,并将其并行化,而不是尝试将一种并行思维模式适应于另一种并行执行模式。
所以,你寻找的第一步可能是不并行化你的程序。但是,正如评论员已经指出的那样,如果不更多地了解您的应用程序,就很难提供比我已经提供的更多有用的建议(而且我根本没有提供任何非常有用的建议)。
发布于 2012-04-05 01:18:27
共享内存和分布式内存是并行计算中两种截然不同的范式,它们往往意味着不同的思维策略。一些并行编程框架,如UPC或MPI,可以模拟在共享或分布式机器上运行,尽管最好不要这样做,因为在这里,UPC是用来在共享内存上使用的,而MPI是用来在分布式内存机器上使用的。我对OpenMP不太确定。
无论哪种情况,我的建议是首先考虑如何在分布式架构上实现代码的并行性,然后再使用MPI。如果您碰巧从事计算科学业务,那么已经有一些编写得非常好的包,例如来自Argonne National Lab的PETSc和来自Sandia National Lab的Trilinos,它们可能会帮助您更快地进行开发。
https://stackoverflow.com/questions/10015198
复制相似问题