资源描述:
《MPI并行程序设计内容_曙光.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MPI并行程序设计曙光信息产业(北京)有限公司2012年6月2012年6月MPI并行程序设计1/214参考文献•黄铠,徐志伟著,陆鑫达等译.可扩展并行计算技术,结构与编程.北京:机械工业出版社,2000.•陈国良著.并行计算—结构、算法、编程.北京:高等教育出版社,1999.•BarryWilkinsonandMichaelAllen.ParallelProgramming(TechniquesandApplicationsusingNetworkedWorkstationsandParallelComputers).Prenti
2、ceHall,1999.•李晓梅,莫则尧等著.可扩展并行算法的设计与分析.北京:国防工业出版社,2000.•张宝琳,谷同祥等著.数值并行计算原理与方法.北京:国防工业出版社,1999.•都志辉著.高性能计算并行编程技术—MPI并行程序设计.北京:清华大学出版社,2001.2012年6月并行算法设计2/113相关网址•MPI:http://ww.mpi-forum.org,http://www.mcs.anl.gov/mpi•PVM:http://www.epm.ornl.gov/pvm/•Pthreads:http://www.o
3、reilly.com•OpenMP:http://www.openmp.org•网上搜索:www.google.com2012年6月并行算法设计3/113并行编程标准•多线程库标准––Win32API.––POSIXthreads.•编译制导标准––OpenMP–可移植共享存储并行编程标准.•消息传递库标准本讨论的重点––MPI––PVM2012年6月MPI并行程序设计4/214消息传递并行程序设计•消息传递并行程序设计–指用户必须通过显式地发送和接收消息来实现处理机间的数据交换。–在这种并行编程中,每个并行进程均有自己独立的地址
4、空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现。–这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采用的主要编程方式。•并行计算力度大,特别适合于大规模可扩展并行算法–由于消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换,并行计算力度大,特别适合于大规模可扩展并行算法.•消息传递是当前并行计算领域的一个非常重要的并行程序设计方式2012年6月MPI并行程序设计5/214什么是MPI?•MassagePassingInterface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fo
5、rtran和C–一种新的库描述,不是一种语言。共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用–MPI是一种标准或规范的代表,而不是特指某一个对它的具体实现–MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准2012年6月MPI并行程序设计6/214MPI的发展过程•发展的两个阶段–MPI1.1:1995•MPICH:是MPI最流行的非专利实现,由Argonne国家实验室和密西西比州立大学联合开发,具有更好的可移植性.–MPI1.2~2.0:动态进程,并行I/O,支持F90和C++(1
6、997).2012年6月MPI并行程序设计7/214为什么要用MPI?•高可移植性–MPI已在IBMPC机上、MSWindows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBMPC、MSWindows、Unix工作站、以及各种并行机上。2012年6月MPI并行程序设计8/214讲座内容提示•基本的MPI–基本概念–点到点通信(Pointtopoint)•MPI中API的主要内容,为MPI最基本,最重要的内容–MPI程序的编译和运行•深入MPI–用户
7、自定义(/派生)数据类型(User-defined(Derived)datatype)•事实上MPI的所有数据类型均为MPI自定义类型–支持异构系统–允许消息来自不连续的或类型不一致的存储区(结构,数组散元)–集合通信(Collective)•数据移动,数据聚集,同步•基于pointtopoint构建–MPI环境管理函数•组,上下文和通信空间/通信子的管理•实例2012年6月MPI并行程序设计9/214从简单入手!•下面我们首先分别以C语言和Fortran语言的形式给出一个最简单的MPI并行程序Hello(下页).•该程序在终端打
8、印出HelloWorld!字样.•“HelloWorld”:一声来自新生儿的问候.2012年6月MPI并行程序设计10/214Helloworld(C)#include#include"mpi.h“main(intargc,cha