- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPI编程入门MPI编程进阶
MPI编程入门
MPI概述
1.1 MPI的发展史
MPI标准化涉及到大约60个国家的人们,他们主要来自于美国和欧洲的40个组织,这包括并行计算机的多数主要生产商,还有来自大学、政府实验室和工厂的研究者们。1992年4月,并行计算研究中心在Williamsburg,Virginia,召开了一个关于消息传递的标准的工作会议,会议上讨论了标准消息传递的必要的、基本的特点,并建立了工作组继续进行标准化工作。
1992年10月,MPI的初步草稿MPI1形成,MPI1主要包含的是在Williamsburg工作组会议上讨论的基本消息传递的接口,因为它的基本目的就是促进讨论并继续此项工作,所以它主要集中在点对点的通信。1993年1月,第一届MPI会议在Dallas举行,1993年2月MPI1修定版本公布;之后定期召开了一系列关于MPI的核心的研讨会;1993年11月MPI的草稿和概述分别发表于Supercomputing93和the proceedings。直到1994年5月,MPI标准正式发布。1994年7月发布了MPI标准的勘误表。
现在该工作组正在着手扩展MPI、完善MPI,从事于MPI2(MPI的扩展标准)的制定工作。
1.2 MPI的优点
●可移植性和易于使用。以低级消息传递程序为基础的较高级和(或)抽象程序所构成的分布存储通信环境中,标准化的效益特别明显。
●MPI是被正式的详细说明的:它已经成为一个标准。消息传递标准的定义能提供给生产商清晰定义的程序库,以便他们能有效地实现这些库或在某些情况下为库程序提供硬件支持,因此加强了可扩展性。
●MPI有完备的异步通信:使得send,recieve能与计算重叠。
●可以很有效的在MPP上或Cluster上用MPI编程:MPI的虚拟拓扑反映了应用程序所申请的一组结点的通信模式,在MPP上实现的MPI便可以利用这种信息来优化处理器间的通信路径。
1.3 主要内容
●点对点通信(point_to_point communication)
●群体操作(collective operations)
●进程组(process groups)
●通信上下文(communication contexts)
●进程拓扑结构(process topologies)
●与Fortran 77和C语言的邦定(bindings for Fortran 77 and C)
●环境的管理与查询(environmental management and inquiry)
●轮廓管理(profiling interface)
1.4 MPI的各种实现
在国外有许多自从MPI标准制定以来在各种机器上的MPI的portable的实现,并且他们仍从事于自己的MPI实现的性能改进,其中最著名的一些见表1。
表1 国外MPI的各种实现
名称 单 位 网 址 CHIMP U. of Edinburgh ftp.epcc.ed.ac.uk/pub/chimp/. LAM Ohio state /pub/lam/ MPICH Argonne_Mississippi state /pub/mpi Unify Mississippi state /unify
二、 MPI入门介绍
以下均以MPICH为例。
2.1 MPI的编程方式
对于基本的应用,MPI同其它消息传送系统一样易于使用。下面是一个简单的基于C语言的MPI样本代码。它是SPMD方式的,即每个进程都执行该程序,通过返回的进程编号来区分不同的进程。该程序完成进程0向进程1传递数据buf。
/* first.c */
#include mpi.h /*MPI的头函数,提供基本的MPI定义和类型*/
#include stdio.h
int main( argc, argv )
int argc;
char **argv;
{
int rank, size, tag=333;
int buf[20]
MPI_Status status
MPI_Init( 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, t
文档评论(0)