什么是最好的MPI实现[关闭](What is the best MPI implementatio

2019-07-18 11:10发布

我要实现MPI系统在集群中。 如果有人在这里有MPI(MPICH /的openmpi)的经验,我想知道这是更好的性能如何能的x86_64的框集群上被提升。

Answer 1:

MPICH已经围了很多时间。 这是非常便携,你会在网上找到多年价值的技巧和窍门。 这是一个安全的赌注,而且它可能更多的MPI程序在那里兼容。

的openmpi是新的。 虽然它不是很便携,它支持最常见的平台非常好。 大多数人似乎认为这是在几个方面好多了,尤其是对于容错 - 而是要利用这个你可能需要使用它的一些特殊功能,是不是MPI标准的一部分。

至于性能方面,它取决于很多应用; 很难给出一般性的建议。 你应该张贴关于要运行的计算类型,节点的数量和硬件的类型的特定问题 - 包括你正在使用的网络硬件是什么类型的。



Answer 2:

我已经写了适用于Windows和Linux集群都相当多的并行应用程序,我可以告诉你,现在MPICH2可能是更安全的选择。 它是,因为其他响应者提到,一个非常成熟的库。 此外,有足够的广播支持(通过MPI_Bcast )现在,而事实上,MPICH2有不少很不错的功能,如分散和聚集 。

是的openmpi虽然获得一些地面。 企鹅计算(他们是一个大的集群供应商,他们喜欢的Linux)实际上具有这样的openmpi击败MPICH2手了在某些情况下,一些真正强大的基准。

关于你提到的有关“提高性能”的评论,我可以给建议最好的一块是从来没有超过绝对必要发送更多的数据,如果你是I / O限制,而且永远不会做超过必要的工作,如果你的CPU的约束。 我陷入优化了错误的代码不止一次:)希望你不会在我的脚步的陷阱!

退房的MPI论坛-他们有很多优秀的约MPI程序的信息 ,以及贝奥武夫网站有很多的回答有趣的问题。



Answer 3:

“好”是很难界定的......“快”可以用你的代码,你的硬件标杆它回答。 像集体和卸载优化的事情将取决于你的具体硬件,并且也与关于驱动程序堆栈版本变化很大,谷歌应该可以找到你的工作组合。

至于优化工作,这一定程度上取决于代码,有些在硬件上。

是您的代码,I / O密集型存储? 在这种情况下,调查的东西比NFS可能有很大的帮助,或使用MPI I / O,而不是天真的并行I / O

如果你是网络的约束,然后看着通信局部性,以及通信/计算重叠可以提供帮助。 大多数的各种MPI实现的具有使用本地共享存储器,而不是在网络中节点内通讯科,这对于一些代码可以显著减少网络负载调谐选项。

的I / O和MPI流量隔离可以对一些集群有很大的区别,特别是对于千兆以太网集群。



Answer 4:

我们使用MPICH,只是因为它看起来最可用的,最好的证明,我们并没有把大量的精力投入到测试的替代品。 MPICH有关于Windows部署合理的工具。
我们不得不主要性能问题是,我们需要同样的基础数据发送给所有节点和MPICH没有(或没有)支持广播 - 因此部署的初始数据为O(N)



文章来源: What is the best MPI implementation [closed]