MPI和分层集合 - 缺少OpenMPI 2.x中的“层次结构”coll模块?

时间:2017-08-02 11:12:11

标签: mpi

我正在开发一个应用程序,该应用程序严重依赖于MPI_Alltoall调用的性能,其中非常小的消息(小于4KB)在大量进程中飞行(目前大约200个,而目标是数千个以上) )。

我的印象很简陋,阅读this paper似乎证实了这种印象,通过分离流程归属来利用现代PC集群的层次结构(就像我拥有的​​那样)是明智的到单独的通信器中的单个集群节点(OpenMPI甚至有一个功能,从MPI 3标准,只做那个)然后,而不是MPI_Alltoall通过MPI_COMM_WORLD,使用序列MPI_Gather - MPI_Alltoall - MPI_Scatter而Gather和Scatter受限制在那些通信器中,而Alltoall在另一个通信器上,包括每个节点只有一个和一个'收集器'进程,这样就利用内部存储器中所谓的更快的传输来收集和分散,同时希望通过拥有节点之间的Alltoall效率更少,更大的消息通过网络接口(在我的情况下,Mellanox的ConnectX InfiniBand网卡)。

我正在尝试验证论文的断言,如果有人感兴趣我可以分享我的发现,但我想知道的是:仔细阅读1.10.x OpenMPI来源,我清楚地看到'层次' 'coll'模块中的一个组件,README中也提到了这个模块,它似乎已经被提升了。

然而,我从来没有能够使它工作,它似乎从2.x分支完全消失('ompi_info'输出中没有。)

有没有人成功使用它?你能说出与常规MPI_Alltoall相比有任何改进吗?

0 个答案:

没有答案