十四章分布存储系统并行编程.ppt
《十四章分布存储系统并行编程.ppt》由会员分享,可在线阅读,更多相关《十四章分布存储系统并行编程.ppt(126页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、十四章分布存储系统并行编程 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望分布存储系统并行编程 14.1 14.1 基于消息传递的编程基于消息传递的编程 14.2 MPI14.2 MPI并行编程并行编程 14.3 PVM14.3 PVM并行编程并行编程 14.4 14.4 基于数据并行的并行编程基于数据并行的并行编程 14.5 HPF14.5 HPF并行编程并行编程国家高性能计算中心(合肥)基于消息传递的并行编程基于消息传递的并行编程1消息传递库消息传递库2消息传
2、递方式消息传递方式国家高性能计算中心(合肥)1消息传递库消息传递库(Message-PassingLibraries)建议建议:一个终端用户在开发新的消息传递应用时使用一个终端用户在开发新的消息传递应用时使用MPIMPI或或PVM.PVM.原因是原因是:MPI MPI和和PVMPVM都是都是公用软件公用软件,易于得到易于得到 多数厂家支持多数厂家支持国家高性能计算中心(合肥)CMMD:是一个用于ThinkingMachinesCM-5系统的消息传递库,其特点是基于主动消息(ActiveMessage)机制在用户空间实现通信以减少通信延迟;Express:是一个支持点到点和群集通信以及并行I/O
3、的程序设计环境;Nx:是为IntelMPP(例如,Hypercubes和Paragon)开发的微核系统.现在已由用于Intel/SandiaASCITFLOPS系统中的新的微核系统PUMA代替.Fortran-M:是对Fortran77的扩展,它在设计上既支持共享存储也支持消息传递,但当前只实现了对消息传递的支持.该语言提供了许多机制用于支持开发行为确定、模块化的并行程序.P4(ParallelProgramsforParallelProcessors):是一组宏和子程序,用于支持共享存储和消息传递系统中的程序设计,它可以移植到许多体系结构上.其它的消息传递软件系统还有Vertex,PARMA
4、CS,Zipcode,UNIFY和PICL等.1消息传递库消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)在当前所有的消息传递软件中在当前所有的消息传递软件中,最重要最流行的是最重要最流行的是MPIMPI和和PVM,PVM,它们能运行在所有的并行平台上它们能运行在所有的并行平台上,包括包括SMPSMP和和PVP.PVP.二者二者已经在已经在WindowsNT和和Windows95这样的非这样的非Unix平平台上实现台上实现.程序设计语言支持程序设计语言支持C,Fortran和和Java.在国产的三大并行机系列神威、银河和曙光上都实现了在国产的三大并行机系
5、列神威、银河和曙光上都实现了对对MPIMPI和和PVMPVM和支持和支持.1消息传递库消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)1.1 MPI1.1 MPI(MessagePassingInterface)简介简介1消息传递库消息传递库(Message-PassingLibraries)目标目标:是提供一个实际可用的、可移植的、高效的和灵活的是提供一个实际可用的、可移植的、高效的和灵活的消息传递接口标准消息传递接口标准.MPI.MPI以语言独立的形式来定义这个接口库以语言独立的形式来定义这个接口库,并提供了与并提供了与C C、FortranFort
6、ran和和JavaJava语言的绑定语言的绑定.这个定义不包含这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性任何专用于某个特别的制造商、操作系统或硬件的特性.由由于这个原因于这个原因,MPI,MPI在并行计算界被广泛地接受在并行计算界被广泛地接受.国家高性能计算中心(合肥)MPI的实现的实现建立在厂家专用的环境之上建立在厂家专用的环境之上IBMSP2的的POE/MPL,IntelParagon的的OSF/Nx公共的公共的MPI环境环境:CHIMPEdinburg大学大学LAN(LocalAreaMulticomputer)Ohio超级计算中心超级计算中心MPICHArgonne
7、国家实验室与国家实验室与Mississippi州立大学州立大学MPICH是是MPI在各种机器上的可移植实现在各种机器上的可移植实现,可以安装在几乎所有的平台上可以安装在几乎所有的平台上:PC工作站工作站SMPMPPCOW1消息传递库消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)1.2PVM(ParallelVirtualMachine)简介简介开发时间开发时间:始于始于1989年年开发单位开发单位:美国美国Tennessee大学、大学、OakRidge国家实验室和国家实验室和Emory大学联合研制大学联合研制特点特点:具有较好的适应性、可扩展性、可移植
8、性和易使用性等具有较好的适应性、可扩展性、可移植性和易使用性等特点特点,源代码可以免费获取源代码可以免费获取,现已被用户广泛采纳现已被用户广泛采纳.现状现状:目前对它的研究和开发工作仍在各大学和研究机构进行目前对它的研究和开发工作仍在各大学和研究机构进行.尽管已经有越来越多的人开始使用尽管已经有越来越多的人开始使用MPI,但但PVM仍然是做并行仍然是做并行处理最流行的软件之一处理最流行的软件之一.随着它的不断流行随着它的不断流行,已经被移植到已经被移植到PVP,SMP,MPP,工作站和工作站和PC组成的机群系统组成的机群系统.1消息传递库消息传递库(Message-PassingLibrari
9、es)国家高性能计算中心(合肥)PVMPVM和和MPIMPI间的主要差别间的主要差别:(1)PVM(1)PVM是一个自包含的系统是一个自包含的系统,而而MPIMPI不是不是.MPI.MPI依赖于支持依赖于支持它的平台提供对进程的管理和它的平台提供对进程的管理和I/OI/O功能功能.而而PVMPVM本身就包含本身就包含这些功能这些功能.(2)MPI(2)MPI对消息传递提供了更强大的支持对消息传递提供了更强大的支持.(3)PVM(3)PVM不是一个标准不是一个标准,这就意味着这就意味着PVMPVM可以更方便、更频可以更方便、更频繁地进行版本更新繁地进行版本更新.MPIMPI和和PVMPVM在功能
10、上现在正趋于相互包含在功能上现在正趋于相互包含.例如例如,MPI-2,MPI-2增增加了进程管理功能加了进程管理功能,而现在的而现在的PVMPVM也提供了更多的群集通也提供了更多的群集通信函数信函数.与与MPIMPI不同的是不同的是,1消息传递库消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)1.2Message-PassingModes关于通信模式关于通信模式,用户需要理解的有三个方面用户需要理解的有三个方面:共有多少个进程共有多少个进程?进程间如何同步进程间如何同步?如何管理通信缓冲区如何管理通信缓冲区?现在的消息传递系统多使用三种通信模式现在的消息
11、传递系统多使用三种通信模式:同步的消息传递同步的消息传递(SynchronousMessagePassing)阻塞的消息传递阻塞的消息传递(BlockingMessagePassing)非阻塞的消息传递非阻塞的消息传递(NonblockingMessagePassing)2消息传递方式消息传递方式国家高性能计算中心(合肥)发送例程接收例程进程Q接收返回点开始接收点R_syn1S_Block2S_Non_Block3进程P开始发送点发送返回点S_syn1R_block2R_Non_Block3系统进程等待发送点2消息传递方式消息传递方式国家高性能计算中心(合肥)ProcessP:M=10;L1:
12、send MtoQ;L2:M=20;gotoL1;ProcessQ:L1:S=-100;L2:receive SfromP;X=S+1;例例2.1 2.1 消息传递中的发送和接收缓冲消息传递中的发送和接收缓冲M称为发送消息缓冲称为发送消息缓冲(sendmessagebuffer,orsendbuffer)S称为接收消息缓冲称为接收消息缓冲(receivemessagebuffer,orreceivebuffer)2消息传递方式消息传递方式国家高性能计算中心(合肥)三种通信模式的比较2消息传递方式消息传递方式国家高性能计算中心(合肥)ProcessP:M=10;send MtoQ;do some
13、 computation which does not change M;wait forMto be sent;M=20;ProcessQ:S=-100;receive SfromP;do some computation which does not use S;wait forSto be received;X=S+1;例例2.22.2 非阻塞模式下非阻塞模式下,强制进程等待直到安全时再继续执行强制进程等待直到安全时再继续执行非阻塞模式本身也会带来一些额外开销非阻塞模式本身也会带来一些额外开销:作为临时缓冲区用的内存空间作为临时缓冲区用的内存空间 分配缓冲区的操作分配缓冲区的操作 将消息
14、拷入和拷出临时缓冲区将消息拷入和拷出临时缓冲区 执行一个额外的检测和等待函数执行一个额外的检测和等待函数2消息传递方式消息传递方式国家高性能计算中心(合肥)消息传递的特点消息传递的特点:在消息传递模型中在消息传递模型中,一个并行应用由一组进程组成一个并行应用由一组进程组成,每个进程的代码是本每个进程的代码是本地的地的,只能访问私有数据只能访问私有数据,进程之间通过传递消息实现数据共享和进进程之间通过传递消息实现数据共享和进程同步程同步.优点优点:用户可以对并行性的开发、数据分布和通信实现完全控制用户可以对并行性的开发、数据分布和通信实现完全控制.缺点缺点:(1)(1)要求程序员显式地处理通信问
15、题要求程序员显式地处理通信问题,如如,消息传递调用的位置消息传递调用的位置,数据移数据移动动,数据复制数据复制,数据操作数据操作,数据的一致性等等数据的一致性等等.(2)(2)对大多数科学计算程序来说对大多数科学计算程序来说,消息传递模型的真正困难还在于显式的消息传递模型的真正困难还在于显式的域分解域分解,也就是说也就是说,将对相应数据的操作限定在指定的处理器上进行将对相应数据的操作限定在指定的处理器上进行,在每个处理器上只能看见整个分布数据的一部分在每个处理器上只能看见整个分布数据的一部分.(3)(3)无法以渐进的方式、通过逐步将串行代码转换成并行代码而开发出来无法以渐进的方式、通过逐步将串
16、行代码转换成并行代码而开发出来.大量的散布在程序各处的域分解要求整个程序由串行到并行的转换一大量的散布在程序各处的域分解要求整个程序由串行到并行的转换一次性实现次性实现,而共享存储方法允许在现有的串行代码中插入并行说明从而共享存储方法允许在现有的串行代码中插入并行说明从而实现逐步转换而实现逐步转换.与之相比与之相比,这是消息传递的一个明显的缺点这是消息传递的一个明显的缺点.2消息传递方式消息传递方式国家高性能计算中心(合肥)分布存储系统并行编程 14.1 14.1 基于消息传递的编程基于消息传递的编程 14.2 MPI14.2 MPI并行编程并行编程 14.3 PVM14.3 PVM并行编程并
17、行编程 14.4 14.4 基于数据并行的并行编程基于数据并行的并行编程 14.5 HPF14.5 HPF并行编程并行编程国家高性能计算中心(合肥)MPI并行编程1MPI中的消息中的消息2MPI中的消息信封中的消息信封3MPI中的四种通信模式中的四种通信模式4点对点的通信点对点的通信5群集通信群集通信6MPI扩展扩展7例子例子:计算计算Pi的的MPI程序程序国家高性能计算中心(合肥)1MPI中的消息中的消息第五讲#includempi.hintfoo(i)inti;.main(argc,argv)intargc;char*argvinti,tmp,sum=0,group_size,my_ran
18、k,N;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&group_size);MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);if(my_rank=0)printf(EnterN:);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
19、_INT,i,i,MPI_COMM_WORLD,&status);sum=sum+tmp;printf(nTheresult=%d,sum);elseMPI_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)的的MPISPMD消消息传递程序息传递程序,存放在文件存放在文件“myprog.c”中中初始化初始化
20、MPI环境环境得到缺省的进程组大小得到缺省的进程组大小得到每个进程在组得到每个进程在组中的编号中的编号发送消息发送消息接收消息接收消息终止终止MPIMPI环境环境国家高性能计算中心(合肥)这个程序用以下并行C编译器mpcc来编译:执行下列命令将可执行程序myprog加载到n个节点上:yprogMPIRUNmyprognpnMPI进程是重型的单线进程.它们拥有不同的地址空间.因此,一个进程不能直接访问另一个进程地址空间的中的变量.进程间的通信用消息传递来实现.1MPI中的消息中的消息国家高性能计算中心(合肥)为什么为什么MPI中的发送和接收操作要做得这么复杂呢中的发送和接收操作要做得这么复杂呢?
21、MPI消息的组成消息的组成:消息的内容消息的内容(即即,信的内容信的内容),称为消息缓冲称为消息缓冲(messagebuffer)消息的接收者消息的接收者(即即,写在信封上面的东西写在信封上面的东西),称为消息信封称为消息信封(messageenvelop)MPI_Send(&N,1,MPI_INT,i,i,MPI_COMM_WORLD)MPI_Recv(&N,1,MPI_INT,0,i,MPI_COMM_WORLD,&status)sendMtoQ;receiveSfromP1MPI中的消息中的消息国家高性能计算中心(合肥)考虑一个用考虑一个用C语言声明的由语言声明的由N个复数组成的数组个复
22、数组成的数组doubleA100假定进程假定进程P要把这个数组发送给进程要把这个数组发送给进程Q:例例1用用MPI发送一个数据数组发送一个数据数组1MPI中的消息中的消息国家高性能计算中心(合肥)1MPI中的消息中的消息国家高性能计算中心(合肥)MPI_Send(&N,1,MPI_INT,i,i,MPI_COMM_WORLD)子程序名消息地址消息长度消息数据类型接收进程标识号消息标签通信子MPI_Send(buffer,count,datatype,destination,tag,communicator)(buffer,count,datatype)消息缓冲消息缓冲(destination,
23、tag,communicator)消息信封消息信封1MPI中的消息中的消息国家高性能计算中心(合肥)消息数据类型消息数据类型(messagedatatypes)通信子通信子(communicators)通信操作通信操作(communicationoperations)虚拟拓扑虚拟拓扑(virtualtopology)MPI的的四个重要概念四个重要概念:1MPI中的消息中的消息国家高性能计算中心(合肥)理由有两个理由有两个:一是支持异构计算一是支持异构计算 另一是允许非连续另一是允许非连续,非均匀内存区中的消息非均匀内存区中的消息.异构计算异构计算(heterogeneouscomputing)
24、:指的是在由不同计算机指的是在由不同计算机,如工作站网络如工作站网络,组成的系统上运行应用程序组成的系统上运行应用程序.系统中的每台计算系统中的每台计算机可能由不同的厂商生产、使用不同的处理器和操作系统机可能由不同的厂商生产、使用不同的处理器和操作系统当这些计算机使用不同的数据表示时如何保证互操作性当这些计算机使用不同的数据表示时如何保证互操作性.为什么需要定义消息数据类型为什么需要定义消息数据类型?1MPI中的消息中的消息国家高性能计算中心(合肥)1MPI中的消息中的消息国家高性能计算中心(合肥)例例2发送非连续数据项发送非连续数据项doubleA100;MPI_Pack_size(50,M
25、PI_DOUBLE,comm,&BufferSize);TempBuffer=malloc(BufferSize);j=sizeof(MPI_DOUBLE);Position=0;for(i=0;i50;i+)MPI_Pack(A+i*j,1,MPI_DOUBLE,TempBuffer,BufferSize,&Position,comm);MPI_Send(TempBuffer,Position,MPI_PACKED,destination,tag,comm);国家高性能计算中心(合肥)在下面的消息中在下面的消息中,假定每个双精度数有假定每个双精度数有8 8字节长字节长,一个字符是一个字符是1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 十四 分布 存储系统 并行 编程
限制150内