MPI: 虚拟拓扑和近邻通信
admin
2024-03-16 02:36:43

Process Topologies & Neighborhood Communication

MPI通信域(Communicator)由进程组(Group of Processes)组成,进程组内进程从0开始按自然顺序依次被赋予唯一编号(rank),rank相当于本进程在组中的唯一身份(ID). MPI保证通信域内的任意进程对(i,j)之间,可以互相发送数据,整个进程内的所有进程组成一个连接图: 图中的顶点代表进程,顶点之间有边连接,所有的边是双通道的(即可发送数据,也可接收数据), 节点也可以给自身发送数据。

对于有些并行应用,自然的进程编号不是便利的,用户可以在已有的通信域上定义适合本身应用的进程之间链接关系(拓扑):每个进程定义自己的上下游数据交换进程,计算中可以和这些上下游进程进行数据交换。

虚拟拓扑是定义在通讯域上的进程命名规则。MPI实现中用一个图(graph)表示进程之间的连接关系: 图的节点(node)代表进程,有方向的边(edge)代表节点之间的连接关系,节点和节点之间可有多条有向边,每条边附有权重。


概念

名词解释备注
虚拟拓扑(virtual topology)
物理进程映射(physical mapping)

拓扑类型

拓扑类型解释备注
Cartesian多维规则Grid网格: hypercube或tori
Graph有向图Graph。边是有方向的,不一定是对称的:(i,j)边存在不保证(j,i)边存在;边有权重;两个顶点之间可有多条边连接
Distributed Graph和Graph相同,边带权重的有向图

函数

  • 生成函数

    函数解释备注
    MPI_CART_CREATE
    MPI_GRPAH_CREATE每个进程提供一致的全局图信息:顶点、边,进程和进程之间可以有多条边存在
    MPI_DIST_GRAPH_CREATE_ADJACENT定义本进程的上游(incoming,source)和下游(outgoing,dest)进程,可包含自身,每条边(edge)可定义权重
    MPI_DIST_GRAPH_CREATE每个进程定义图的一部分信息,每条边定义权重,带权重的多边超图
  • 查询函数

    函数解释备注
  • 近邻collective通信(Neighborhood Communication on Process Topologies)

    函数解释备注
    MPI_NEIGHBOR_ALLGATHER
    MPI_NEIGHBOR_ALLGATHERV
    MPI_NEIGHBOR_ALLTOALL
    MPI_NEIGHBOR_ALLTOALLV
    MPI_NEIGHBOR_ALLTOALLW允许发送接收不同数据类型(different datatypes)

    每个函数对应一个非阻塞版本(Nonblocking Neighborhood Communication),和长连接函数(Persistent Neighborhood Communication)


参考资料

  • mpi40-report: 8 ProcessTopologies
  • MPI 3.0 Neighbourhood Collectives
  • MPI-3 学习笔记(三):混合编程与邻居集合通信

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...