MPI-3 近邻集合通信

本文从本人简书博客同步过来

上一篇中我们介绍了 mpi4py 中的非阻塞集合通信方法,下面我们将介绍 mpi4py 中的近邻集合通信方法,另一个 MPI-3 引进的新特性。

近邻集合通信(neighborhood collective communication) 是定义在拓扑通信子之上的一类集合通信操作,不同于一般集合通信操作中通信子上的所有进程都会参与,近邻集合通信只要求拓扑通信子上的某个进程和其直接邻居进程之间进行集合通信,其它进程可以不用参与,因此近邻集合通信具有非常好的可扩展性。

近邻集合操作也有阻塞和非阻塞两个版本。

方法接口

下面给出 mpi4py 中近邻集合通信的方法接口。

MPI.Topocomm.neighbor_allgather(self, sendobj)

近邻全收集操作,对应 MPI.Comm.allgather。以小写字母开头的方法,可以传递任意可被 pickle 的 Python 对象 sendobj,为阻塞通信方法。

MPI.Topocomm.neighbor_alltoall(self, sendobj)

近邻全发散操作,对应 MPI.Comm.alltoall。以小写字母开头的方法,可以传递任意可被 pickle 的 Python 对象 sendobj,为阻塞通信方法。

MPI.Topocomm.Neighbor_allgather(self, sendbuf, recvbuf)

近邻阻塞全收集操作,对应 MPI.Comm.Allgather,只适用于传递具有缓冲区接口的对象。

MPI.Topocomm.Neighbor_allgatherv(self, sendbuf, recvbuf)

近邻阻塞向量全收集操作,对应 MPI.Comm.Allgatherv,只适用于传递具有缓冲区接口的对象。

MPI.Topocomm.Neighbor_alltoall(self, sendbuf, recvbuf)

近邻阻塞全发散操作,对应 MPI.Comm.Alltoall,只适用于传递具有缓冲区接口的对象。

MPI.Topocomm.Neighbor_alltoallv(self, sendbuf, recvbuf)

近邻阻塞向量全发散操作,对应 MPI.Comm.Alltoallv,只适用于传递具有缓冲区接口的对象。

MPI.Topocomm.Neighbor_alltoallw(self, sendbuf, recvbuf)

近邻阻塞向量全发散操作,对应 MPI.Comm.Alltoallw,只适用于传递具有缓冲区接口的对象。

MPI.Topocomm.Ineighbor_allgather(self, sendbuf
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值