分布存储系统并行编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《分布存储系统并行编程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布 存储系统 并行 编程 课件
- 资源描述:
-
1、整理ppt第十四章 分布存储系统并行编程整理ppt分布存储系统并行编程整理ppt基于消息传递的并行编程基于消息传递的并行编程1 消息传递库消息传递库2 消息传递方式消息传递方式整理ppt1 消息传递库消息传递库(Message-Passing Libraries)表 1.1 一些最流行的消息传递软件的例子NameOriginal CreatorDistinct FeaturesCMMDThinking MachinesUse Active Messages for low latencyExpressParasoftCollective communication and I/OFortran
2、-MArgonne National LabModularity and DeterminacyMPIMPI ForumA widely adopted standardNXIntelOriginated from the Intel hypercube MPPsP4Argonne National LabIntegrate shared memory and message passingPARMACSANL/GMDMainly used in EuropePVMOak Ridge National LabA widely used,stand-alone systemUNIFYMissis
3、sippi StateA system allowing both MPI and PVM callsZipcodeLivemore National LabContributed to the context concept建议建议:一个终端用户在开发新的消息传递应用时使用一个终端用户在开发新的消息传递应用时使用MPIMPI或或PVM.PVM.原因是原因是:MPI MPI和和PVMPVM都是都是公用软件公用软件,易于得到易于得到 多数厂家支持多数厂家支持整理pptCMMD:是一个用于Thinking Machines CM-5系统的消息传递库,其特点是基于主动消息(Active Messag
4、e)机制在用户空间实现通信以减少通信延迟;Express:是一个支持点到点和群集通信以及并行I/O的程序设计环境;Nx:是为Intel MPP(例如,Hypercubes和 Paragon)开发的微核系统.现在已由用于Intel/Sandia ASCI TFLOPS 系统中的新的微核系统PUMA代替.Fortran-M:是对Fortran77的扩展,它在设计上既支持共享存储也支持消息传递,但当前只实现了对消息传递的支持.该语言提供了许多机制用于支持开发行为确定、模块化的并行程序.P4(Parallel Programs for Parallel Processors):是一组宏和子程序,用于支
5、持共享存储和消息传递系统中的程序设计,它可以移植到许多体系结构上.其它的消息传递软件系统还有Vertex,PARMACS,Zipcode,UNIFY和PICL等.1 消息传递库消息传递库(Message-Passing Libraries)整理ppt在当前所有的消息传递软件中在当前所有的消息传递软件中,最重要最流行的是最重要最流行的是MPIMPI和和PVM,PVM,它们能运行在所有的并行平台上它们能运行在所有的并行平台上,包括包括SMPSMP和和PVP.PVP.二者二者已经在已经在Windows NT 和和Windows 95这样的非这样的非Unix平平台上实现台上实现.程序设计语言支持程序设
6、计语言支持C,Fortran和和Java.在国产的三大并行机系列神威、银河和曙光上都实现了在国产的三大并行机系列神威、银河和曙光上都实现了对对MPIMPI和和PVMPVM和支持和支持.1 消息传递库消息传递库(Message-Passing Libraries)整理ppt1.1 MPI1.1 MPI(Message Passing Interface)简介简介1 消息传递库消息传递库(Message-Passing Libraries)1992年4月 组建了一个制定消息传递接口标准的工作组 1992年10月 初稿形成,主要定义了点对点通信接口 1993年1月 第一届MPI会议在Dallas举行
7、 1993年2月 公布了MPI-1修定版本 1993年11月 MPI的草稿和概述发表在Supercomputing93的会议论文集中 1994年5月 MPI标准正式发布 1994年7月 发布了MPI标准的勘误表 1997年 MPI论坛发布了一个修订的标准,叫做MPI-2,同时,原来的MPI更名为MPI-1 目标目标:是提供一个实际可用的、可移植的、高效的和灵活的是提供一个实际可用的、可移植的、高效的和灵活的消息传递接口标准消息传递接口标准.MPI.MPI以语言独立的形式来定义这个接口库以语言独立的形式来定义这个接口库,并提供了与并提供了与C C、FortranFortran和和JavaJava
8、语言的绑定语言的绑定.这个定义不包含这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性任何专用于某个特别的制造商、操作系统或硬件的特性.由由于这个原因于这个原因,MPI,MPI在并行计算界被广泛地接受在并行计算界被广泛地接受.整理pptMPI的实现的实现 建立在厂家专用的环境之上建立在厂家专用的环境之上IBM SP2的的POE/MPL,Intel Paragon的的OSF/Nx 公共的公共的MPI环境环境:CHIMP Edinburg 大学大学LAN(Local Area Multicomputer)Ohio超级计算中心超级计算中心 MPICH Argonne国家实验室与国家实验室
9、与Mississippi州立大学州立大学 MPICH是是MPI在各种机器上的可移植实现在各种机器上的可移植实现,可以安装在几乎所有的平台上可以安装在几乎所有的平台上:PC 工作站工作站 SMP MPP COW1 消息传递库消息传递库(Message-Passing Libraries)整理ppt1.2 PVM(Parallel Virtual Machine)简介简介开发时间开发时间:始于始于1989年年开发单位开发单位:美国美国Tennessee大学、大学、Oak Ridge国家实验室和国家实验室和Emory大学联合研制大学联合研制特点特点:具有较好的适应性、可扩展性、可移植性和易使用性等具
10、有较好的适应性、可扩展性、可移植性和易使用性等特点特点,源代码可以免费获取源代码可以免费获取,现已被用户广泛采纳现已被用户广泛采纳.现状现状:目前对它的研究和开发工作仍在各大学和研究机构进行目前对它的研究和开发工作仍在各大学和研究机构进行.尽管已经有越来越多的人开始使用尽管已经有越来越多的人开始使用MPI,但但PVM仍然是做并行仍然是做并行处理最流行的软件之一处理最流行的软件之一.随着它的不断流行随着它的不断流行,已经被移植到已经被移植到PVP,SMP,MPP,工作站和工作站和PC组成的机群系统组成的机群系统.1 消息传递库消息传递库(Message-Passing Libraries)整理p
11、ptPVMPVM和和MPIMPI间的主要差别间的主要差别:(1)PVM(1)PVM是一个自包含的系统是一个自包含的系统,而而MPIMPI不是不是.MPI.MPI依赖于支持依赖于支持它的平台提供对进程的管理和它的平台提供对进程的管理和I/OI/O功能功能.而而PVMPVM本身就包含本身就包含这些功能这些功能.(2)MPI(2)MPI对消息传递提供了更强大的支持对消息传递提供了更强大的支持.(3)PVM(3)PVM不是一个标准不是一个标准,这就意味着这就意味着PVMPVM可以更方便、更频可以更方便、更频繁地进行版本更新繁地进行版本更新.MPIMPI和和PVMPVM在功能上现在正趋于相互包含在功能上
12、现在正趋于相互包含.例如例如,MPI-2,MPI-2增增加了进程管理功能加了进程管理功能,而现在的而现在的PVMPVM也提供了更多的群集通也提供了更多的群集通信函数信函数.与与MPIMPI不同的是不同的是,1 消息传递库消息传递库(Message-Passing Libraries)整理ppt1.2 Message-Passing Modes关于通信模式关于通信模式,用户需要理解的有三个方面用户需要理解的有三个方面:共有多少个进程共有多少个进程?进程间如何同步进程间如何同步?如何管理通信缓冲区如何管理通信缓冲区?现在的消息传递系统多使用三种通信模式现在的消息传递系统多使用三种通信模式:同步的消
13、息传递同步的消息传递(Synchronous Message Passing)阻塞的消息传递阻塞的消息传递(Blocking Message Passing)非阻塞的消息传递非阻塞的消息传递(Nonblocking Message Passing)2 消息传递方式消息传递方式整理ppt发送例程接收例程进程 Q接收返回点开始接收点R_syn1S_Block2S_Non_Block3进程 P开始发送点发送返回点S_syn1R_block2R_Non_Block3系统进程等待发送点2 消息传递方式消息传递方式整理pptProcess P:M=10;L1:send M to Q;L2:M=20;got
14、o L1;Process Q:L1:S=-100;L2:receive S from P;X=S+1;例例2.1 2.1 消息传递中的发送和接收缓冲消息传递中的发送和接收缓冲M 称为发送消息缓冲称为发送消息缓冲(send message buffer,or send buffer)S 称为接收消息缓冲称为接收消息缓冲(receive message buffer,or receive buffer)2 消息传递方式消息传递方式整理ppt三种通信模式的比较 通通信信事事件件 同同步步通通信信 阻阻塞塞的的通通信信 非非阻阻塞塞的的通通信信 发发送送开开始始的的条条件件 双方都到达了发送和接收点
15、发送方到达发送点 发送方到达发送点 发发送送返返回回意意味味着着 消息已被收到 消息已被发送完 通知完系统某个消息要被发送 接接收收开开始始的的条条件件 双方都到达了发送和接收点 接收方到达发送点 接收方到达发送点 接接收收返返回回意意味味着着 消息已被收到 消息已被收到 通知完系统某个消息要被接收 语语义义 明确 二者之间 需做错误探测 是是 否否 需需 要要 系系 统统 提提 供供临临时时的的消消息息缓缓冲冲区区 不需要 需要 需要 状状态态检检查查 不需要 不需要 需要 等等待待的的时时间间开开销销 最高 二者之间 最低 通通信信与与计计算算、通通信信与与通通信信的的重重迭迭 不重迭 重
16、迭 重迭 X X 11 11 11,21,-99 2 消息传递方式消息传递方式整理pptProcess P:M=10;send M to Q;do some computation which does not change M;wait for M to be sent;M=20;Process Q:S=-100;receive S from P;do some computation which does not use S;wait for S to be received;X=S+1;例例2.22.2 非阻塞模式下非阻塞模式下,强制进程等待直到安全时再继续执行强制进程等待直到安全时再继
17、续执行非阻塞模式本身也会带来一些额外开销非阻塞模式本身也会带来一些额外开销:作为临时缓冲区用的内存空间作为临时缓冲区用的内存空间 分配缓冲区的操作分配缓冲区的操作 将消息拷入和拷出临时缓冲区将消息拷入和拷出临时缓冲区 执行一个额外的检测和等待函数执行一个额外的检测和等待函数2 消息传递方式消息传递方式整理ppt消息传递的特点消息传递的特点:在消息传递模型中在消息传递模型中,一个并行应用由一组进程组成一个并行应用由一组进程组成,每个进程的代码是本每个进程的代码是本地的地的,只能访问私有数据只能访问私有数据,进程之间通过传递消息实现数据共享和进进程之间通过传递消息实现数据共享和进程同步程同步.优点
18、优点:用户可以对并行性的开发、数据分布和通信实现完全控制用户可以对并行性的开发、数据分布和通信实现完全控制.缺点缺点:要求程序员显式地处理通信问题要求程序员显式地处理通信问题,如如,消息传递调用的位置消息传递调用的位置,数据移数据移动动,数据复制数据复制,数据操作数据操作,数据的一致性等等数据的一致性等等.对大多数科学计算程序来说对大多数科学计算程序来说,消息传递模型的真正困难还在于显式的消息传递模型的真正困难还在于显式的域分解域分解,也就是说也就是说,将对相应数据的操作限定在指定的处理器上进行将对相应数据的操作限定在指定的处理器上进行,在每个处理器上只能看见整个分布数据的一部分在每个处理器上
19、只能看见整个分布数据的一部分.(1)(1)无法以渐进的方式、通过逐步将串行代码转换成并行代码而开发出来无法以渐进的方式、通过逐步将串行代码转换成并行代码而开发出来.大量的散布在程序各处的域分解要求整个程序由串行到并行的转换一大量的散布在程序各处的域分解要求整个程序由串行到并行的转换一次性实现次性实现,而共享存储方法允许在现有的串行代码中插入并行说明从而共享存储方法允许在现有的串行代码中插入并行说明从而实现逐步转换而实现逐步转换.与之相比与之相比,这是消息传递的一个明显的缺点这是消息传递的一个明显的缺点.2 消息传递方式消息传递方式整理ppt分布存储系统并行编程整理pptMPI并行编程1 MPI
20、中的消息中的消息2 MPI中的消息信封中的消息信封3 MPI中的四种通信模式中的四种通信模式4 点对点的通信点对点的通信5 群集通信群集通信6 MPI扩展扩展7 例子例子:计算计算Pi的的MPI程序程序整理ppt1 MPI中的消息中的消息第五讲#include mpi.hint foo(i)int i;.main(argc,argv)int argc;char*argvint i,tmp,sum=0,group_size,my_rank,N;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&group_size);MPI_Comm_rank
21、(MPI_COMM_WORLD,&my_rank);if(my_rank=0)printf(Enter N:);scanf(%d,&N);for(i=1;igroup_size;i+)MPI_Send(&N,1,MPI_INT,i,i,MPI_COMM_WORLD);for(i=my_rank;iN;i=i+group_size)sum=sum+tmp;for(i=1;igroup_size;i+)MPI_Recv(&tmp,1,MPI_INT,i,i,MPI_COMM_WORLD,&status);sum=sum+tmp;printf(n The result=%d,sum);else MP
22、I_Recv(&N,1,MPI_INT,i,i,MPI_COMM_WORLD,&status);for(i-my_rank;iN;i=i+group_size)sum=sum+foo(i);MPI_Send(&sum,1,MPI_INT,0,i,MPI_COMM_WORLD);MPI_Finalize();例例1.1 一个计算一个计算foo(i)的的MPI SPMD消消息传递程序息传递程序,存放在文件存放在文件“myprog.c”中中初始化初始化MPI环境环境得到缺省的进程组大小得到缺省的进程组大小得到每个进程在组得到每个进程在组中的编号中的编号发送消息发送消息接收消息接收消息终止终止MPIM
23、PI环境环境整理ppt这个程序用以下并行C编译器mpcc来编译:执行下列命令将可执行程序myprog加载到n个节点上:mpcc myprog.c o myprogMPIRUN myprog np n MPI进程是重型的单线进程.它们拥有不同的地址空间.因此,一个进程不能直接访问另一个进程地址空间的中的变量.进程间的通信用消息传递来实现.1 MPI中的消息中的消息整理ppt为什么为什么MPI中的发送和接收操作要做得这么复杂呢中的发送和接收操作要做得这么复杂呢?MPI消息的组成消息的组成:消息的内容消息的内容(即即,信的内容信的内容),称为消息缓冲称为消息缓冲(message buffer)消息的
24、接收者消息的接收者(即即,写在信封上面的东西写在信封上面的东西),称为消息信封称为消息信封(message envelop)MPI_Send(&N,1,MPI_INT,i,i,MPI_COMM_WORLD)MPI_Recv(&N,1,MPI_INT,0,i,MPI_COMM_WORLD,&status)send M to Q;receive S from P 1 MPI中的消息中的消息整理ppt考虑一个用考虑一个用C语言声明的由语言声明的由N个复数组成的数组个复数组成的数组 double A100假定进程假定进程P要把这个数组发送给进程要把这个数组发送给进程Q:例例1 用用MPI发送一个数据数
25、组发送一个数据数组1 MPI中的消息中的消息整理ppt 要发送的消息要发送的消息 可用的消息传递系统可用的消息传递系统 说说 明明(1)发送整个数组A 理论的消息传递理论的消息传递 send A to Q 消息缓冲由数组 A 标识,信封就是进程名 Q.(2)发送数组A的头两个元素,即:A0和A1 商用的消息传递商用的消息传递(假定在一台计算机上,一个双精度数是 64 位,即 8 个字节.)send(A,16,Q,tag)使用的发送例程形式如下:send(address,length,destination,tag)(address,length)定义消息缓冲,(destination,tag)
展开阅读全文