mpi4py 中的进程拓扑

上一篇中我们介绍了 mpi4py 中的数据打包解包操作,下面我们将介绍进程拓扑。

MPI 中的进程组是 n 个进程的集合,组中的每一进程被赋予一个从 0 到 n-1 的 rank 号。在许多并行应用程序中,进程的线性排列不能充分地反映进程间在逻辑上的通信模型(通常由基本问题几何和所用的数学算法所决定),例如,根据问题需要,进程经常被排列成二维、三维网格乃至更复杂的图结构上。这种映射的需要与底层硬件设备无关,仅在逻辑上实现与问题领域特点相匹配,因此称作虚拟进程拓扑。

通过虚拟进程拓扑提供的机制,可将 MPI 进程按照编号映射到某种几何形状上。在虚拟进程拓扑和底层的物理硬件拓扑之间有一个清晰的差别。虚拟拓扑的描述仅依赖于应用,独立于机器,但是其可以辅助运行时间系统,将进程映射到硬件上。另外除了可能的性能上的优点以外,虚拟拓扑还可以作为一种方便的进程命名结构,这会大大有利于消息传递编程中的程序可读性和注释能力。

进程拓扑基于组内通信子和组进行管理,事实上,虚拟进程拓扑通过通信子对象的属性缓存来保存其数据结构和实现细节。

MPI 支持笛卡尔拓扑(Cartesian topology)和图拓扑(graph topology)两种。具体到 mpi4py 中,定义了一个拓扑通信子类(Topocomm),它继承自组内通信子类(Intracomm),在 Topocomm 下面继承了三个子类:笛卡尔拓扑类(Cartcomm),图拓扑类(Graphcomm)和分布式图拓扑类(Distgraphcomm),它们的关系可见下图:

通信子继承关系

以上我们简要介绍了进程拓扑的基本概念,在下一篇中我们将介绍与进程拓扑相关的一些方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,486评论 25 709
  • 职场上经常会遇到各种意外,最惨的不是被公司直接解除合同,那样至少还能得到补偿;而是领导用种种手段温水煮青蛙,给你各...
    红尘笑笑生阅读 70,359评论 6 6
  • 我是一条鱼,一条游弋在题海中的鱼。日复一日,我感到我的呼吸被扼杀在无边际的压抑里,眼泪干涸在苦涩的海中,忧郁...
    b20cb0a155d1阅读 2,463评论 0 0
  • 金锭,金锭,筑我楼台小径。流连饰玉粉银,枕落倏然梦惊。 惊梦,惊梦,恍恍西天日尽。 第一次填词,大神们多多指点哦
    瓴小文阅读 1,855评论 7 10
  • 醉是一种放纵你信么?我记得你是不信的,因为你酒精过敏,滴酒不沾,所以你可能是没有醉过的,自然不会体会,醉生梦死...
    昼夜思阅读 1,436评论 0 0

友情链接更多精彩内容