学习C++ MPI的最佳教程是什么?

26

我打算在我的C++代码中使用MPI。我已经在我的电脑上安装了MPICH2。但是我并不了解MPI,希望能找到一些相关的材料进行学习。希望您这些专家能够向我推荐一些好的学习资料。非常感谢。


MPI:消息传递接口,是一种用于并行计算的计算机通信协议。请参阅http://en.wikipedia.org/wiki/Message_Passing_Interface。 - Thomas Matthews
7个回答

17

我假设你已经很好地掌握了C++编程,并且对并行编程有基本的理解(或者至少知道如何将代码并行化)。

我建议先阅读书籍《使用MPI》。 《使用MPI 2》是接下来讨论MPI-2中新功能的书籍。这两本书都是由编写MPI库和领导标准化工作的人所写。《使用MPI》的一个好处是可以在线获取,无需花费金钱 :-)


1
+1 我的评价。有一个小问题,可能是个问题也可能不是:Fortran、C 和 C++ 示例代码之间的切换。 - stephan
我同意这可能有点烦人,但当我使用这本书时,我并没有发现它对理解造成重大的不利影响。 - J Teller

8

+1 这本书是MPI编程的很好入门材料。 - Stan Graves
我认为这本书是学习使用MPI编程的好方法。如果你看到我的回答,你会发现我不赞成在任何新的MPI开发中使用C++。既然你没有提到类似的警告,那就没有点赞了。不过你还是得到了支持性的评论。;) - Stan Graves
Pacheco的书写于许多年前,它现在还有用吗? - Dr. Faust
在我看来,这个内容仍然是相关的。 - Taylor Leese

7

6
我建议不要在任何新开发中使用MPI C++绑定。 程序本身可以使用C++,但请投入额外的精力使用MPI库的C接口。
MPI论坛正在弃用C++绑定。 因此,未来的MPI实现可能会放弃对C ++的支持。 通常,大多数实现在涉及C ++时都会缺少一些功能。 基础功能可以正常工作,但动态进程(即生成),PMPI接口等功能支持较差。
C和Fortran绑定由所有主要实现合理支持,并将在可预见的未来继续受到支持。

对于那些打算坚持使用C++的人来说,MPI有哪些替代品?据我所知,这是将任务分配到不同机器上的唯一方法。还有OpenMP和CUDA,但那是另外一回事 - 我会这么说。 - KcFnMi

6

正如 @semiuseless 所指出的,MPI论坛正在弃用C++绑定。其中一个原因是 boost MPI接口 做得更好。


2

2

Mpich2附带了许多C++/C的示例,其中最著名的可能是cpi,它可以并行计算π。请阅读程序和其他人建议的手册/书籍,这样您就可以立即看到实际的工作代码,并可以进行自己的修改以尝试不同的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接