第27卷 第3期河北理工学院学报Vol127 No13 2005年8月Journa l of Hebe i I n stitute of Technology Aug.2005
文章编号:100722829(2005)0320041203
MP I并行编程环境及程序设计
杨爱民1,陈一鸣2
(11河北理工大学理学院,河北唐山063009;21燕山大学理学院,河北秦皇岛066004)关键词:MP I;并行编程;消息传递
摘 要:通过对MP I原理和特点的研究,给出了并行MP I程序的基本设计思路和执行过程,并
实现了向量相加的并行计算。
中图分类号:TP316 文献标识码:A
0 引 言
近几十年来,大规模和超大规模的并行机取得了快速发展,由于各种原因,开发商对用户提供的必要支持,如它们各自专有的消息传递包NX、EU I、P VM等,虽然在特定平台上具有很优越的性能,但是从应用程序来看,可移植性差。
1992年11月,在Supercomputi ong’92会议上,正式成立了一个旨在建立一个消息传递标准平台的MP I(Message Passing I nterface)论坛,该论坛不仅包括了许多P VM、Exp ress等的研制者及并行程序用户,还吸收了许多著名计算机厂商的代表。
论坛于1994年5月,公布了MP I标准。
MP I是一种为消息传递而开发的广泛使用的标准,它为消息传递建立了一个可移植的、高效、灵活的标准。
1 MP I的原理与特征
MP I是一个函数库,而不是一门语言,它是一种消息传递模型,它的最终目的是服务于进程间通信。
MP I作为一个并行程序库的开发平台,为用户编写和运行程序提供了便利的条件。
由于MP I是基于消息传递机制构建的系统,因此它在体系结构为分布存储的并行机中有很宽阔的应用空间,它可以应用在各种同构和异构的网络平台中。
它的编程语言可以为Fortran77/90、C/C++。
在Fortran77/90、C/C++语言中都可以对MP I的函数进行调用,它作为一种消息传递模式的并行编程环境,MP I并行程序要求将任务进行划分,同时启动多个进程并发的执行,而各个进程之间通过MP I的库函数来实现其中的消息传递。
MP I与其它并行编程环境相比,显著的特点有:
(1)可移植性强,能同时支持同构和异构的并行计算;
(2)可伸缩性强,允许并行结构中的节点任意增加或减少;
(3)能很好的支持点对点通信和集体通信方式;
(4)对C语言和Fortran语言的支持,使其能很好的满足各种大规模科学和工程计算的需要。
这样,以MP I作为公共消息传递接口的并行应用程序就可以不作任何改动的移植到不同种类和型号的并行机上,也能够正常运行,或者移到网络环境中也一样。
2 MP I的基本函数
MP I为消息传递和相关操作提供了功能强大的库函数,MPl-1中有128个,MP I-2中有287个库函数。
但是从理论上来说,MP I的所有通信功能都可以用它的6个基本调用来完成,即使用这6个函数可以实现所有的消息传递并行程序。
这六个函数分别为呼(Fortran77语言的调用格式来描述):
(1)MP I初始化
MP I程序的初始化工作通过调用MPl l N I T(I ERROR)来实现,所有MP I程序的第一条可执行语句都是
收稿日期:2004210221
基金项目:河北省自然科学基金项目(E2004000245)
作者简介:杨爱民(19782),男,河北顺平人,河北理工大学理学院教师,硕士。
这个语句。
初始化后,MP I 自动创建一个通信域MP I COMM WORLD,由它定义通信操作的作用域。
(2)MP I 结束
MP I F I N I L I ZE (I ERROR )是MP I 程序的最后一个调用,它结束MP I 程序的运行,它是MP I 程序的最后一条可执行语句,否则程序的运行结果是不可预知的。
(3)当前进程标示
MP I COMM RANK (COMM ,RANK,I ERROR )
I N T RGER I ERROR,COMM ,RANK
这一调用返回调用进程在给定的通信域中的进程标识号,有了这一标识号,不同的进程就可以将自身和其它的进程区分开,实现进程的并行和协作。
(4)通信域包含的进程数
MP I COMM SI ZE (COMM ,SI ZE,I ERROR )
I N T RGER I ERROR,COMM ,SI ZE
这一调用返回给定的通信域中所包含的进程的个数,不同的进程通过这一调用得知在给定的通信域中一共有多少个进程在并行执行。
(5)消息发送
MP I SE ND (BUF,COUNT DAT ATYPE,DEST T AG COMM ,I ERROR )
<type >BUF (3)
I N TEGER COUNT,DAT ATYPE,DEST T AG COMM ,I ERROR
该调用将发送缓冲区中的count 个datatype 数据类型的数据发送到目的进程,目的进程在通信域中的标识号是dest,本次发送的消息标志是tag,使用这一标志,就可以把本次发送的消息和本进程向同一目的进程发送的其它消息区别开。
(6)消息接收MPl RECV (BUF,COUNT,DAT ATYPE,S OURCE,T AG COMM;ST AT US,I ERROR )
<type >BUF (3)
I N TEGER COUNT DAT ATYPE,S OURCE,T AG COMM ,ST AT US (MP I ST AT US SI ZE ),I ERROR
该调用从指定的进程s ource 接收消息,并且该消息的数据类型是消息标识要和本接收进程指定的data 2tyPe 和tag 相一致,接收到的消息所包含的数据元素的个数最多不能超过count。
图1 M P I 并行程序设计流程图
24 河 北 理 工 学 院 学 报 第27卷
3 MP I 程序的设计与执行
一个MP I 并行程序由若干个进程组成,这些进程可相同也可不同,但是每个进程在执行前必须在MP I 环境中登记,并且要求它们一起启动。
在构成MP I 程序的任何主程序和于程序中,只要调用了MP I 库函数,程序就必须包含MP I 系统文件“mp if .h ”,这个文件包含了MP I 程序编译所必需的MP I 系统预先定义的常数、宏、数据类型和函数类型。
上图1给出了用Fortran77语言设计并行MP I 程序的流程图。
MP I 程序的执行步骤一般为:
(1)编译得到MP I 可执行程序;
(2)将可执行程序拷贝到各个节点机上;
(3)通过mp irun 命令并行执行该MP I 程序。
4 结论
本文对MP I 并行编程环境进行了详细的介绍和深入的研究,给出了MP I 并行程序的基本设计思路和执行过程,并且用实际范例加以说明,对于指导MP I 并行程序的编制,具有较高的实用价值。
参考文献:
[1] 都志辉1高性能计算并行编程技术—MP I 并行程序设计[M ]1北京:清华大学出版社,20011
[2] 王萃寒,赵晨,许小刚等1分布式并行计算环境[M ]1计算机科学,2003,30(1):252261
[3] 陈国良1并行算法的设计与分析[M ]1北京:中国科学技术出版社,19931
[4] 卞旭芬1消息传递并行编程环境MP I[J ]1福建电脑,2003,6:28229
M P I Para llel Env i ronm en t and Program D esi gn
Y ANG A i 2m in 1,CHEN Yi 2m ing 2
(1.College of Science,Hebei Polytechnic University,Tangshan Hebei 063009,China;
2.College of Scieve,Yanshan University,Q inhugangdao Hebei 066004,China )
Key words :message passing interface;parallel p r ogra mm ing;message passing
Abstract:I n this paper,thr ough the analysis on p rinci p le and s pecially characterists of MP I,the basic designing thougtht and executive p r ocess ofMP I parallel p r ogra mm ing is given,es pecially the parallel computati on on additi on of vect or is accomp lished .
34 第3期 杨爱民,等:MP I 并行编程环境及程序设计。