将MPI支持添加到C++程序

lvc*_*ini 3 c++ parallel-processing mpi openmpi

我有一个用C++实现的程序,我现在想要添加MPI支持.有一个用于C++的MPI绑定,带有命名空间MPI和所有东西.

在我的例子中,我有一个特定的对象,适合作为集群的并行化进程.

我的问题是:

  • 以前有人做过这样的事吗?我可以就如何最好地实现这一点获得一些建议吗?
  • 如何在构造函数中初始化MPI?在Class的构造函数中初始化MPI之后,所有的中间调用都会被并行化吗?

例如:

MyClass obj;

x = x; //this will be parallelized ?
onj.calc();

y = x++; //this will be parallelized ?

z = obj.result();
Run Code Online (Sandbox Code Playgroud)

sha*_*oth 7

MPI不会自动并行化任何内容,它只为您提供了一个在节点之间发送数据的接口.您的代码在每个节点上独立编写并运行为常规顺序代码,并且每隔一段时间将数据发送到其他节点或尝试从其他节点接收数据.


Ed *_*mes 6

我真的建议拿起Gropp MPI Book,它真的有助于基本的MPI!


Xor*_*lev 6

在一个旧线程中,我发现OpenMPI和Boost :: MPI很好用.库的面向对象设计可能有点笨拙,但我发现它比纯MPI更好用,特别是对于许多类型的自动序列化和用于收集/缩小功能的相当可扩展的接口以及序列化用户类型.