消息传递并行编程环境MPI

上传人:大米 文档编号:509395024 上传时间:2023-01-02 格式:DOCX 页数:36 大小:327.30KB
返回 下载 相关 举报
消息传递并行编程环境MPI_第1页
第1页 / 共36页
消息传递并行编程环境MPI_第2页
第2页 / 共36页
消息传递并行编程环境MPI_第3页
第3页 / 共36页
消息传递并行编程环境MPI_第4页
第4页 / 共36页
消息传递并行编程环境MPI_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《消息传递并行编程环境MPI》由会员分享,可在线阅读,更多相关《消息传递并行编程环境MPI(36页珍藏版)》请在金锄头文库上搜索。

1、家 973 项目高性能计算环境支持讲座MPI 与 PETSc莫则尧北京应用物理与计算数学研究所)期 日容 内58.上午程4P附加 进黑卿M初论 讨、一 业 作168.上 午讲巩冷眦 业的權4PI 作进脸M下 午论 讨、 二 业 作178.评诈 讲ex 二鳩 业作拷个人介绍莫则尧,男,汉族,1971 年 7 月生,副研究员: 1992年国防科技大学应用数学专业本科毕业; 1997年国防科技大学计算机应用专业并行算法 方向博士毕业; 1999 年北京应用物理与计算数学数学博士后流动站出站,并留所工作; 主要从事大规模科学与工程并行计算研究。消息传递并行编程环境 MPI一、进程与消息传递二、MPI

2、环境的应用现状三、MPI 并行程序设计入门(程序例 1四、初步的 MPI 消息传递函数五、作业一六、先进的 MPI 函数七、 MPI 并行程序示例 2(求解- u=f);八、 MPI 环境的发展九、 作业二、进程与消息传递1单个进程(process)进程是一个程序,同时包含它的执行环境(内存、寄 存器、程序计数器等),是操作系统中独立存在的可 执行的基本程序单位; 通俗理解:串行应用程序编译形成的可执行代码,分 为“指令”和“数据”两个部分,并在程序执行时“独 立地申请和占有”内存空间,且所有计算均局限于该 内存空间。2单机内多个进程: 多个进程可以同时存在于单机内同一操作系统:由操 作系统负

3、责调度分时共享处理机资源(CPU、内存、 存储、外设等); 进程间相互独立(内存空间不相交):在操作系统调 度下各自独立地运行,例如多个串行应用程序在同一 台计算机中运行; 进程间可以相互交换信息:例如数据交换、同步等待,消息是这些交换信息的基本单位,消息传递是指这些信息在进程间的相互交换,是实现进程间通信的唯一方式;最基本的消息传递操作:发送消息(send)、接受消息(receive)、进程同步(barrier)、规约(reduction); 消息传递的实现:共享内存或信号量,用户不必关心;3包含于通过网络联接的不同计算机的多个进程: 进程独立存在:进程位于不同的计算机,由各自独立 的操作系

4、统调度,享有独立的 CPU 和内存资源; 进程间相互信息交换:消息传递; 消息传递的实现:基于网络 socket 机制,用户不必关心;4消息传递库函数:应用程序接口(API):提供给应用程序(FORTRAN、C、C+语言)的可直接调用的完成进程间消息传递的某项特定功能的函数;消息传递库:所有定义的消息传递函数编译形成的软 件库,调用其内部函数的应用程序,通过与之联接, 即可成为可并行执行的程序; 目前流行的消息传递函数库: PVM 3.3.11、MPICH 1.2、LAMMPI 6.4 等;5 标准消息传递界面(MPI: Message Passing Interface): MPI 标准:根

5、据应用程序对消息传递功能的需求, 全球工业、应用和研究部门联合推出标准的消息传递 界面函数,不考虑其具体实现,以保证并行应用程序 的可移植性; MPI 的具体实现:消息传递库函数,目前有影响的为 MPICH和LAMMPI,我们注重 MPICH系列;6基于消息传递的并行程序执行模式 SPMD模式:单程序多数据流并行应用程序代码一 、可执仃代码运仃复制多份并独立执行,形成多个独立的进程进程内存T进程二(内存)进程三(内存)消息传递(交换数据、同步、规约)协同 MPMD 模式:多程序多数据流,除初始启动多个可执行代码,其余与 SPMD 模式一致;7共享存储与分布式存储: 属于并行机体系结构的范畴,与

6、消息传递并行程序设 计平台无关;分布式存储 共享存储消息传递是相对于进程间通信方式而言的,与具体并 行机存储模式无关,任何支持进程间通信的并行机, 均可支持消息传递并行程序设计; 几乎所有共享和分布存储并行计算环境均支持进程 间的消息传递通信;二、MPI环境的应用现状 MPI (消息传递界面)是全球工业、政府和科研部门联 合推出的适合进程间进行标准消息传递的并行程序设 计平台,最初版 MPI 1.0 本于 1994 年 6 月推出,目前 最新的为 MPI 2.0 版,于1998 年年低推出; MPI的具体实现:MPICH和LAMMPI,目前均 已实现MPI 1.2 版,适用于任何并行计算平台;

7、部分并行机已 实现 MPI 2.0 版; MPI 是目前应用最广的并行程序设计平台,几乎被所有 并行计算环境(共享和分布式存储并行机、MPP、机群 系统等)和流行的多进程操作系统( UNIX、 Windows NT)所支持,基于它开发的应用程序具有最佳的可移 植性; 目前高效率的超大规模并行计算( 1000 个处理器)最 可信赖的平台; 工业、科学与工程计算部门的大量科研和工程软件(气 象、石油、地震、空气动力学、核等)目前已经移植到 MPI 平台,发挥了重要作用; 目前, MPI 相对于 PVM:优点:功能强大,性能高,适应面广,使用方便,可扩展性好;缺点:进程数不能动态改变;三、MPI并行

8、程序设计入门1MPI并行程序设计平台由标准消息传递函数及相关辅助函数构成,多个进程通过调用这些函数(类似调用子程序),进行通信;2MPI 程序: SPMD执行模式:一个程序同时启动多份,形成多个 独立的进程,在不同的处理机上运行,拥有独立的内 存空间,进程间通信通过调用 MPI 函数来实现; 每个进程开始执行时, 将获得一个唯一的序号(rank)。例如启动P个进程,序号依次为0, 1,, P-1; MPI 程序例 1:进程 0 发送一个整数给进程 1;进程1 将该数加 1,传递给进程 2;进程 2 再将该数加 1, 再传递给进程 3;依次类推,最后,进程 P-1 将该数 传递给进程 0,由进程

9、 0 负责广播该数给所有进程, 并打印输出。program example1include “mpif.h”! MPI 系统头文件integer status(MPI_STATUS_SIZE),my_rank,p,source,dest,tag,ierr,datacc进入 MPI 系统call MPI_Init(ierr)call MPI_Comm_rank(MPI_COMM_WORLD,my_rank,ierr)call MPI_Comm_size(MPI_COMM_WORLD,p,ierr)cc数据交换data=0tag = 5source= my_rank-1if(source.eq.-

10、1) source=p-1dest =my_rank+1if(dest.eq.p) dest=0if(my_rank.eq.0) thencall MPI_Send(data,1,MPI_INTEGER,dest,tag,MPI_COMM_WORLD,ierr)call MPI_Recv(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,ierr) elsecall MPI_Recv(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,ierr) data=data+1call MPI_S

11、end(data,1,MPI_INTEGER,dest,tag,MPI_COMM_WORLD,ierr)endifcc广播数据call MPI_Bcast(data,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)cc打印输出if(my_rank.eq.0) thenif(data.eq.p-1) thenprint *,”Successful, data=”,dataelseprint *,”Failure, data=”,dataendifendifccall MPI_Finalize(ierr)end编译命令:mpif77 -o exam.e example.f

12、运行命令: mpirun -np 4 exam.e 运行效果: MPI 系统选择相同或不同的 4 个处理机在每个处理机上运行程序代码 exam.e。MPI 函数进程 0进程 1进程 2 进程 3Init()进入MPI系统Comm_rank()my_rank=0 myrank=1myrank=2 my_rank=3Comm_size()p=4p=4p=4tag=5,data=0tag=5,data=0p=4*tag=5,data=0 tag=5,data=0source=3source=0source=1source=2数据交换Broadcast()Finalize()dest=1dest=2d

13、est=3dest=03MPI 重要概念进程序号(rank);各进程通过函数MPI_Comm_rank()获取各 自的序号; 消息号:消息的标号;通信器(Communicator): 1)理解为一类进程的集合,且在该集 合内,进程间可以相互通信;类比:邮局、电话局、国际网 2)任何MPI通信函数均必须在某个通信器内发生;3) MPI系 统提供省缺的通信器MPI_COMM_WORLD,所有启动的MPI 进程通过调用函数MPI_Init()包含在该通信器内;4)各进程通 过函数MPI_Comm_size()获取通信器包含的(初始启动)的 MPI 进程个数;消息:分为数据(data)和包装(enve

14、lope)两个部分,其中, 包装由接收进程序号、发送进程序号、消息标号和通信器四 部分组成,数据包含用户将要传递的内容; 进程组:一类进程的集合,在它的基础上,可以定义新的通 信器;基本数据类型:对应于FORTRAN和C语言的内部数据类型( INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER), MPI 系统提供已定义好的对应 数 据 类 型 ( MPI_INTEGER , MPI_REAL , MPI_DOUBLE_PRECISION ,MPI_COMPLEX ,MPI_LOGICAL, MPI_CHARACTER) ;自定义数据类型:基于基本数据类型,用户自己定义的数据类型(后面介绍); MPI 对象: MPI 系统内部定义的数据结构,包括数据类 型、进程组、通信器等,它们对用户不透明,在 FORTRAN 语 言 中 , 所 有 MPI 对 象 均 必 须 说 明 为 “ 整型变量 INTEGER”; MPI联接器(handle):联接MPI对象和用户的桥梁,用 户可以通过它访问和参与相应 MPI 对象的具体操作;例 如, MPI 系统内部提供的通信器 MPI_COMM_WORLD; 在 FORTRAN 语言中,所有 MPI 联接器均必须说明为“整 型变量 INTEGER”; 进程拓扑结构:进程组内部进程之

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号