设计实现 MPI 程序模拟广播
一、实验目的
1. 掌握并行设计思路
2. 熟悉 MPI 开发环境和编程方法
二、实验内容
设计 MPI 程序模拟广播(MPI_Bcast)操作:将每个 MPI 进程按照所在节点
名称建立 node 通信子域分组;再将各个 node 子通信域的 0 号进程再次组成一个
名为 head 的通信域;在进行广播时,首先,由 root 进程将消息在 head 通信子
域内广播,然后,再由 head 子域内各进程在其所在的 node 子域内进行广播。
编写一个完整的 MPI 程序测试,对比你的实现和 MPI 原有 bcast 实现的性能。
三、实验步骤
1. 问题分析实现
根据实验内容实现 MPI 程序模拟广播,主要分为三步:
1.1 划分节点通信域
首先获取各进程的节点名并 hash,具有相同 hash 值的进程,表明在同一节
点,再根据全局 rank,划分通信域:
MPI_Get_processor_name(processor_name,&namelen);
proc_hash=hash(processor_name);
MPI_Comm_split(MPI_COMM_WORLD,proc_hash,world_rank,&Node_World);
1.2 划分头节点通信域
根据节点通信域的 rank 来判断是否划归头节点域,加上全局 rank,可以划
分出头节点通信域:
评论0