资源描述:
《第十四章 分布存储系统并行编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十四章分布存储系统并行编程国家高性能计算中心(合肥)分布存储系统并行编程14.1基于消息传递的编程14.2MPI并行编程14.3PVM并行编程14.4基于数据并行的并行编程14.5HPF并行编程国家高性能计算中心(合肥)基于消息传递的并行编程1消息传递库2消息传递方式国家高性能计算中心(合肥)1消息传递库(Message-PassingLibraries)建议:一个终端用户在开发新的消息传递应用时使用MPI或PVM.原因是:MPI和PVM都是公用软件,易于得到多数厂家支持国家高性能计算中心(合肥)CMMD:是一个用于ThinkingMachinesCM-5系统的消息传递库,其特点是基于主
2、动消息(ActiveMessage)机制在用户空间实现通信以减少通信延迟;Express:是一个支持点到点和群集通信以及并行I/O的程序设计环境;Nx:是为IntelMPP(例如,Hypercubes和Paragon)开发的微核系统.现在已由用于Intel/SandiaASCITFLOPS系统中的新的微核系统PUMA代替.Fortran-M:是对Fortran77的扩展,它在设计上既支持共享存储也支持消息传递,但当前只实现了对消息传递的支持.该语言提供了许多机制用于支持开发行为确定、模块化的并行程序.P4(ParallelProgramsforParallelProcessors):是一组
3、宏和子程序,用于支持共享存储和消息传递系统中的程序设计,它可以移植到许多体系结构上.其它的消息传递软件系统还有Vertex,PARMACS,Zipcode,UNIFY和PICL等.1消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)在当前所有的消息传递软件中,最重要最流行的是MPI和PVM,它们能运行在所有的并行平台上,包括SMP和PVP.二者已经在WindowsNT和Windows95这样的非Unix平台上实现.程序设计语言支持C,Fortran和Java.在国产的三大并行机系列神威、银河和曙光上都实现了对MPI和PVM和支持.1消息传递库(Mess
4、age-PassingLibraries)国家高性能计算中心(合肥)1.1MPI(MessagePassingInterface)简介1消息传递库(Message-PassingLibraries)目标:是提供一个实际可用的、可移植的、高效的和灵活的消息传递接口标准.MPI以语言独立的形式来定义这个接口库,并提供了与C、Fortran和Java语言的绑定.这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性.由于这个原因,MPI在并行计算界被广泛地接受.国家高性能计算中心(合肥)MPI的实现建立在厂家专用的环境之上IBMSP2的POE/MPL,IntelParagon的OSF/N
5、x公共的MPI环境:CHIMPEdinburg大学LAN(LocalAreaMulticomputer)Ohio超级计算中心MPICHArgonne国家实验室与Mississippi州立大学MPICH是MPI在各种机器上的可移植实现,可以安装在几乎所有的平台上:PC工作站SMPMPPCOW1消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)1.2PVM(ParallelVirtualMachine)简介开发时间:始于1989年开发单位:美国Tennessee大学、OakRidge国家实验室和Emory大学联合研制特点:具有较好的适应性、可扩展性、可移植
6、性和易使用性等特点,源代码可以免费获取,现已被用户广泛采纳.现状:目前对它的研究和开发工作仍在各大学和研究机构进行.尽管已经有越来越多的人开始使用MPI,但PVM仍然是做并行处理最流行的软件之一.随着它的不断流行,已经被移植到PVP,SMP,MPP,工作站和PC组成的机群系统.1消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)PVM和MPI间的主要差别:(1)PVM是一个自包含的系统,而MPI不是.MPI依赖于支持它的平台提供对进程的管理和I/O功能.而PVM本身就包含这些功能.(2)MPI对消息传递提供了更强大的支持.(3)PVM不是一个标准,这就
7、意味着PVM可以更方便、更频繁地进行版本更新.MPI和PVM在功能上现在正趋于相互包含.例如,MPI-2增加了进程管理功能,而现在的PVM也提供了更多的群集通信函数.与MPI不同的是,1消息传递库(Message-PassingLibraries)国家高性能计算中心(合肥)1.2Message-PassingModes关于通信模式,用户需要理解的有三个方面:共有多少个进程?进程间如何同步?如何管理通信缓冲区?现在的消息传