并行计算基础知识讲座2.ppt
《并行计算基础知识讲座2.ppt》由会员分享,可在线阅读,更多相关《并行计算基础知识讲座2.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于基于MPI的并行程序设计的并行程序设计王振海王振海西北工业大学理学院西北工业大学理学院西北工业大学高性能计算研究与发展中心西北工业大学高性能计算研究与发展中心2023/4/121MPI并行编程并行编程环境环境进程与消息传递进程与消息传递MPI并行程序设计入门并行程序设计入门初步的初步的MPI消息传递函数消息传递函数先进的先进的MPI函数函数MPI并行程序示例并行程序示例面向性能的程序设计面向性能的程序设计主要内容主要内容2023/4/122目前,高性能并行机主要可以分为对称多处理共享存储并行机(SMP,Symmetric MultiProcessor)、分布式共享存储多处理机(DSM,Di
2、stributied Shared Memory)、大规模并行处理机(MPP,Massively Parallel Processor)和微机机群(Cluster)等四类。在这些并行机上,并行程序设计平台主要可分为消息传递、共享存储和数据并行三类,其中消息传递具有很好的可移植性,它能被所有这些类型的并行机所支持,而共享存储只能在在SMP和DSM并行机中使用,数据并行只能在SMP,DSM和MPP并行机上使用。并行编程并行编程环境简介环境简介2023/4/123消息传递并行编程环境(MPI:Message Passing Interface)是目前国际上最流行、可移植性和可扩展性很好的并行程序设计
3、平台,并被当前流行的所有高性能并行机所支持。它是在标准串行程序设计语言(C,Fortran,C+)的基础上,再加入实现进程间通信的MPI消息传递库函数,就构成了MPI并行程序设计所依赖的并行编程环境。MPI已经在Windows系列的非Unix、Linux平台上实现,其程序设计语言支持C,Fortran和Java。在国产的三大并行机系列神威、银河和曙光上也都实现了对MPI和支持。MPI并行编程并行编程环境环境2023/4/124MPI并行并行环境的应用现状环境的应用现状 MPI是全球工业、政府和科研部门联合推出的适合进程间进行标准消息传递的并行程序设计平台,最初版MPI 1.0本于1994年6月
4、推出,目前最新的为MPI 2.0版,于1998年10月推出。MPI的具体实现:MPICH和LAMMPI,目前均已实现MPI 1.2版,适用于任何并行计算平台;部分并行机已实现MPI 2.0版。MPI是目前应用最广的并行程序设计平台,几乎被所有并行计算环境(共享和分布式存储并行机、MPP、机群系统等)和流行的多进程操作系统(UNIX、Windows NT)所支持,基于它开发的应用程序具有最佳的可移植性。2023/4/125MPI并行并行环境的应用现状(续)环境的应用现状(续)目前高效率的超大规模并行计算(1000个处理器)最可信赖的平台。工业、科学与工程计算部门的大量科研和工程软件(气象、石油、
5、地震、空气动力学、核等)目前已经移植到MPI平台,发挥了重要作用。MPI的优点:(1)具有很好的可移植性,几乎被所有的并行环境支持;(2)具有很好的可扩展性,是目前高效率的大规模并行计算最可信赖的平台;(3)比其它消息传递系统好用;(4)有完备的异步通信功能;(5)有精确的定义,从而为并行软件产业的发展提供了必要的条件。2023/4/126MPI并行并行环境的应用现状(续)环境的应用现状(续)MPI 2.0版在1.0版的基础上,增加了如下的消息传递功能:(1)并行I/O:允许多个进程同时读写同一个文件;(2)线程安全:允许MPI进程的多个线程执行,即支持与OpenMP的混合并行编程;(3)动态
6、进程管理:允许并行应用程序在执行过程中,动态地增加和删除进程个数;(4)单边通信:允许某个进程对其它进程的局部内存单元直接执行读写访问,而步需要对方进程的显式干预;(5)并行应用程序之间的动态互操作:允许各个MPI并行应用程序之间动态地建立和删除消息传递通道。目前,各类并行机,特别式微机机群,只实现了MPI 2.0的部分功能。本中心机群所支持的为MPI 1.2.5版本。2023/4/127MPI并行编程并行编程环境环境进程与消息传递进程与消息传递MPI并行程序设计入门并行程序设计入门初步的初步的MPI消息传递函数消息传递函数先进的先进的MPI函数函数MPI并行程序示例并行程序示例面向性能的程序
7、设计面向性能的程序设计2023/4/128单个进程(单个进程(process)进程进程是一个程序,同时包含它的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位。通俗理解:串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。进程进程1内存进程进程22023/4/129单机内多个进程单机内多个进程多个进程可以同同时时存存在在于于单单机机内内同同一一操操作作系系统统:由操作系统负责调度分时共享处理机资源(CPU、内存、存储、外设等)。进进程程间间相相互互独独立立(内内存存空空间间
8、不不相相交交):在操作系统调度下各自独立地运行,例如多个串行应用程序在同一台计算机中运行。进进程程间间可可以以相相互互交交换换信信息息:例如数据交换、同步等待,消消息息是这些交换信息的基本单位,消消息息传传递递是指这些信息在进程间的相互交换,是实现进程间通信的唯一方式。2023/4/1210最最基基本本的的消消息息传传递递操操作作:发送消息(send)、接受消息(receive)、进程同步(barrier)、规约(reduction)。消消息息传传递递的的实实现现:共享内存或信号量,用户不必关心。单机内多个进程(续)单机内多个进程(续)2023/4/1211包含于通过网络联接的不包含于通过网络
9、联接的不同计算机的多个进程同计算机的多个进程 进进程程独独立立存存在在:进程位于不同的计算机,由各自独立的操作系统调度,享有独立的CPU和内存资源。进程间相互信息交换进程间相互信息交换:消息传递。消消息息传传递递的的实实现现:基于网络socket机制,用户不必关心。2023/4/1212消息传递库函数消息传递库函数 应应用用程程序序接接口口(API):提供给应用程序(FORTRAN、C、C+语言)的可直接调用的完成进程间消息传递的某项特定功能的函数。消消息息传传递递库库:所有定义的消息传递函数编译形成的软件库,调用其内部函数的应用程序,通过与之联接,即可成为可并行执行的程序。目目前前流流行行的
10、的消消息息传传递递函函数数库库:PVM 3.3.11、MPICH 1.2、LAMMPI 6.4等。2023/4/1213标准消息传递界面标准消息传递界面MPIMPIMPI标标准准:根据应用程序对消息传递功能的需求,全球工业、应用和研究部门联合推出标准的消息传递界面函数,不考虑其具体实现,以保证并行应用程序的可移植性。MPI的的具具体体实实现现:消息传递库函数,目前有影响的为MPICH和LAMMPI,我们注重MPICH系列。2023/4/1214基于消息传递的并行程序执行模式基于消息传递的并行程序执行模式 SPMD模式:单程序多数据流2023/4/1215基于消息传递的并行程序执行模式(续)基于
11、消息传递的并行程序执行模式(续)MPM模式:多程序多数据流,除初始启动多个可执行代码,其余与SPMD模式一致。2023/4/1216共享存储与分布式存储共享存储与分布式存储属于并行机体系结构的范畴,与消息传递并行程序设计平台无关。2023/4/1217消息传递是相对于进进程程间间通通信信方方式式而言的,与具体并行机存储模式无关,任何支持进程间通信的并行机,均可支持消息传递并行程序设计。几乎所有共享和分布存储并行计算环境均支持进程间的消息传递通信。共享存储与分布式存储(续)共享存储与分布式存储(续)2023/4/1218MPI并行编程并行编程环境环境进程与消息传递进程与消息传递MPI并行程序设计
12、入门并行程序设计入门初步的初步的MPI消息传递函数消息传递函数先进的先进的MPI函数函数MPI并行程序示例并行程序示例面向性能的程序设计面向性能的程序设计2023/4/1219MPI并行程序设计平台由标标准准消消息息传传递递函函数数及及相相关关辅辅助助函函数数构成,多个进程通过调用这些函数(类似调用子程序),进行通信。SPMD执执行行模模式式:一个程序同时启动多份,形成多个独立的进程,在不同的处理机上运行,拥有独立的内存空间,进程间通信通过调用MPI函数来实现。每个进程开始执行时,将获得一个唯一的序号(rank)。例如启动P个进程,序号依次为0,1,P-1。MPI并行程序并行程序2023/4/
13、1220MPI并行程序并行程序例例1进程0发送一个整数给进程1;进程1将该数加1,传递给进程2;进程2再将该数加1,再传递给进程3;依次类推,最后,进程P-1将该数传递给进程0,由进程0负责广播该数给所有进程,并打印输出。programexample1 include “mpif.h”!MPI系统头文件 integer status(MPI_STATUS_SIZE),my_rank,p integer source,dest,tag,ierr,datac2023/4/1221MPI并行程序并行程序例例1(续)(续)c-进入MPI系统 call MPI_Init(ierr)call MPI_Co
14、mm_rank(MPI_COMM_WORLD,my_rank,ierr)call MPI_Comm_size(MPI_COMM_WORLD,p,ierr)c-数据交换 data=0 tag =5 source=my_rank-1 if(source.eq.-1)source=p-1 dest=my_rank+1 if(dest.eq.p)dest=02023/4/1222 if(my_rank.eq.0)then call MPI_Send(data,1,MPI_INTEGER,dest,tag,MPI_COMM_WORLD,ierr)call MPI_Recv(data,1,MPI_INTE
15、GER,source,tag,MPI_COMM_WORLD,status,ierr)else call MPI_Recv(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,ierr)data=data+1 call MPI_Send(data,1,MPI_INTEGER,dest,tag,MPI_COMM_WORLD,ierr)endifcMPI并行程序并行程序例例1(续)(续)2023/4/1223c-广播数据 call MPI_Bcast(data,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)c-打印输出 i
16、f(my_rank.eq.0)then if(data.eq.p-1)then print*,”Successful,data=”,data else print*,”Failure,data=”,data endif endifc call MPI_Finalize(ierr)endMPI并行程序并行程序例例1(续)(续)2023/4/1224MPI并行程序的运行并行程序的运行MPI编译命令:mpif77 -o exam.e example.f运行命令:mpirun np 4 exam.e运行效果:MPI系统选择相同或不同的4个处理机,在每个处理机上运行程序代码exam.e。运行结果:Suc
17、cessful,data=32023/4/1225运运行行分分析析2023/4/1226MPI重要概念重要概念进进程程序序号号(rank):各进程通过函数MPI_Comm_rank()获取各自的序号。消息号消息号:消息的标号。通通信信器器(Communicator):1)理解为一类进程的集合,且在该集合内,进程间可以相互通信;类比:邮局、电话局、国际网;2)任何MPI通信函数均必须在某个通信器内发生;3)MPI系统提供省缺的通信器MPI_COMM_WORLD,所有启动的MPI进程通过调用函数MPI_Init()包含在该通信器内;4)各进程通过函数MPI_Comm_size()获取通信器包含的(
18、初始启动)的MPI进程个数。2023/4/1227消消息息:分为数数据据(data)和包包装装(envelope)两个部分,其中,包装由接接收收进进程程序序号号、发发送送进进程程序序号号、消消息息标标号号和通通信信器器四部分组成,数据包含用户将要传递的内容。进进程程组组:一类进程的集合,在它的基础上,可以定义新的通信器。基基本本数数据据类类型型:对应于FORTRAN和C语言的内部数据类型(INTEGER,REAL,DOUBLE PRECISION,COMPLEX,LOGICAL,CHARACTER),MPI系统提供已定义好的对应数据类型(MPI_INTEGER,MPI_REAL,MPI_DOU
19、BLE_PRECISION,MPI_COMPLEX,MPI_LOGICAL,MPI_CHARACTER)。MPI重要概念(续)重要概念(续)2023/4/1228MPI重要概念(续)重要概念(续)自自定定义义数数据据类类型型:基于基本数据类型,用户自己定义的数据类型(后面介绍)。MPIMPI对对象象:MPI系统内部定义的数据结构,包括数据类型、进程组、通信器等,它们对用户不透明,在FORTRAN语言中,所有MPI对象均必须说明为“整型变量INTEGER”。MPI联联接接器器(handle):联接MPI对象和用户的桥梁,用户可以通过它访问和参与相应MPI对象的具体操作;例如,MPI系统内部提供的
20、通信器MPI_COMM_WORLD;在FORTRAN语言中,所有MPI联接器均必须说明为“整型变量整型变量INTEGERINTEGER”。2023/4/1229MPI重要概念(续)重要概念(续)进进程程拓拓扑扑结结构构:进程组内部进程之间的一种相互连接结构,如33 网格,将在后面介绍。33 网格拓扑结构静静态态进进程程个个数数:进程数由命令“mpirun np xxx”初始确定为xxx个,程序执行过程中不不能能动动态改变态改变进程的个数。2023/4/1230MPI重要概念(续)重要概念(续)消消息息缓缓存存区区:应用程序产生的消息包含的数据所处的内存空间。标标准准输输入入:所有进程的标准输入
21、read(*,*)均省缺为当前终端屏幕,且只能由0号进程执行该操作,其他进程需要这些输入参数,只能由0号进程执行数据广播操作。标标准准输输出出:所有进程可以独立执行标准输出write(*,*),但其省缺为当前终端屏幕。2023/4/1231MPI函数格式函数格式FORTAN语言中,最后一个参数为该函数调用是否成功的标志:0表示成功,其它表示各种可能的错误。C语言中,该标志有函数参数返回。C :ierr=MPI_Comm_rank(myrank)F :MPI_Comm_rank(myrank,ierr)2023/4/1232MPI函数的使用查询函数的使用查询由函数名查询:man 函数名(MPI_
22、Xxxx),注意大小写,例如 man MPI_Comm_rankman MPI_Sendman MPI_recv2023/4/1233MPIMPI函数的学习与使用函数的学习与使用注重MPI函数的各类功能,由应用程序的通信需求出发,寻找匹配的函数类型,在查找具体函数名,采用man命令可以查询该函数的具体参数含义和使用方法。2023/4/1234一般的一般的MPIMPI程序设计流程图程序设计流程图 程序参数说明Call MPI_Init()进入MPI系统,通信器 MPI_COMM_WORLD形成Call MPI_Comm_rank()Call MPI_Comm_size()建立新的通信器、定义新的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 计算 基础知识 讲座
限制150内