资源描述:
《优秀的mpi编程指南》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MPI编程指南一、MPI概述1.1MPI的发展史MPI标准化涉及到大约60个国家的人们,他们主要来自于美国和欧洲的40个组织,这包括并行计算机的多数主要生产商,还有来自大学、政府实验室和工厂的研究者们。1992年4月,并行计算研究中心在Williamsburg,Virginia,召开了一个关于消息传递的标准的工作会议,会议上讨论了标准消息传递的必要的、基本的特点,并建立了工作组继续进行标准化工作。1992年10月,MPI的初步草稿MPI1形成,MPI1主要包含的是在Williamsburg工作组会议上讨论的基本消息传递的接口,因为它的基本
2、目的就是促进讨论并继续此项工作,所以它主要集中在点对点的通信。1993年1月,第一届MPI会议在Dallas举行,1993年2月MPI1修定版本公布;之后定期召开了一系列关于MPI的核心的研讨会;1993年11月MPI的草稿和概述分别发表于Supercomputing'93和theproceedings。直到1994年5月,MPI标准正式发布。1994年7月发布了MPI标准的勘误表。现在该工作组正在着手扩展MPI、完善MPI,从事于MPI2(MPI的扩展标准)的制定工作。1.2MPI的优点●可移植性和易于使用。以低级消息传递程序为基础的较
3、高级和(或)抽象程序所构成的分布存储通信环境中,标准化的效益特别明显。●MPI是被正式的详细说明的:它已经成为一个标准。消息传递标准的定义能提供给生产商清晰定义的程序库,以便他们能有效地实现这些库或在某些情况下为库程序提供硬件支持,因此加强了可扩展性。●MPI有完备的异步通信:使得send,recieve能与计算重叠。●可以很有效的在MPP上或Cluster上用MPI编程:MPI的虚拟拓扑反映了应用程序所申请的一组结点的通信模式,在MPP上实现的MPI便可以利用这种信息来优化处理器间的通信路径。1.3主要内容●点对点通信(point_to
4、_pointcommunication)●群体操作(collectiveoperations)●进程组(processgroups)●通信上下文(communicationcontexts)●进程拓扑结构(processtopologies)●与Fortran77和C语言的邦定(bindingsforFortran77andC)●环境的管理与查询(environmentalmanagementandinquiry)●轮廓管理(profilinginterface)1.4MPI的各种实现在国外有许多自从MPI标准制定以来在各种机器上的MPI
5、的portable的实现,并且他们仍从事于自己的MPI实现的性能改进,其中最著名的一些见表1。表1国外MPI的各种实现名称单位网址CHIMPU.ofEdinburghftp.epcc.ed.ac.uk/pub/chimp/.LAMOhiostatetbag.osc.edu/pub/lam/MPICHArgonne_Mississippistateinfo.mcs.anl.gov/pub/mpiUnifyMississippistateftp.erc.msstate.edu/unify二、MPI入门介绍以下均以MPICH为例。2.1MPI的
6、编程方式对于基本的应用,MPI同其它消息传送系统一样易于使用。下面是一个简单的基于C语言的MPI样本代码。它是SPMD方式的,即每个进程都执行该程序,通过返回的进程编号来区分不同的进程。该程序完成进程0向进程1传递数据buf。/*first.c*/#include"mpi.h"/*MPI的头函数,提供基本的MPI定义和类型*/#includeintmain(argc,argv)intargc;char**argv;{intrank,size,tag=333;intbuf[20]MPI_StatusstatusMPI_In
7、it(&argc,&argv);/*MPI的初始化函数*/MPI_Comm_rank(MPI_COMM_WORLD,&rank);/*该进程的编号*/MPI_Comm_size(MPI_COMM_WORLD,&size);/*总的进程数目*/if(rank==0)MPI_Send(buf,20,MPI_Int,1,tag,MPI_COMM_WORLD);/*发送buf到进程1*/if(rank==0)MPI_Recv(buf,20,MPI_Int,0,tag,MPI_COMM_WORLD,&status);/*从进程0接收buf*/MPI
8、_Finalize();/*MPI的结束函数*/return0;}2.2MPI的基本语句介绍1、MPI世界进程由一个唯一的“标识数”(整数)表示,进程的标识数为数0、1、2、……、N-1。MP