- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[]2 MPI语言
MPI语言
陈国良著. 并行算法实践. 北京: 高等教育出版社, 2004.
都志辉著. 高性能计算并行编程技术—MPI并行程序设计. 北京: 清华大学出版社, 2001.
/mpi
参考文献
多线程库标准
Win32 API
POSIX threads
编译制导标准
OpenMP – 可移植共享存储并行编程标准。
消息传递库标准
MPI – 我们讨论的重点
PVM
并行编程标准
消息传递并行程序设计
指用户必须通过显式地发送和接收消息来实现处理机间的数据交换。
在这种并行编程中,每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现。
这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采用的主要编程方式。
并行计算粒度大,特别适合于大规模可扩展并行算法。
由于消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法。
消息传递是当前并行计算领域的一个非常重要的并行程序设计方式。
消息传递并行程序设计
Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C。
一种新的库描述,不是一种语言。共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用。
MPI是一种标准或规范的代表,而不是特指某一个对它的具体实现。
MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准。
什么是MPI?
发展的两个阶段
MPI 1.1:1995
MPICH:是MPI最流行的非专利实现,由Argonne国家实验室和密西西比州立大学联合开发,具有更好的可移植性。
MPI 1.2~2.0:动态进程,并行 I/O,支持F90和C++(1997)。
MPI的发展过程
高可移植性
MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。
为什么要用MPI?
基本的MPI
基本概念
点到点通信(Point to point)
MPI中API的主要内容,为MPI最基本,最重要的内容。
深入MPI
用户自定义(/派生)数据类型(User-defined(Derived) data type)
事实上MPI的所有数据类型均为MPI自定义类型
支持异构系统。
允许消息来自不连续的或类型不一致的存储区(结构,数组散元)。
集合通信(Collective)
数据移动,数据聚集,同步。
基于point to point构建。
MPI环境管理函数
组,上下文和通信空间/通信子的管理。
实例
讲座内容提示
下面我们首先分别以C语言和Fortran语言的形式给出一个最简单的MPI并行程序Hello (下页)。
该程序在终端打印出Hello World!字样。
“Hello World”:一声来自新生儿的问候。
从简单入手!
#include stdio.h
#include mpi.h
void main(int argc,char *argv[])
{
MPI_Init( argc, argv );
printf( Hello, world!\n );
MPI_Finalize();
}
Hello world(C)
program main
include mpif.h
integer ierr
call MPI_INIT(ierr)
print *, Hello, world!
call MPI_FINALIZE(ierr)
end
Hello world(Fortran)
C
必须包含mpi.h。
MPI函数返回出错代码或 MPI_SUCCESS成功标志。
MPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其余小写。
Fortran
必须包含mpif.h。
通过子函数形式调用MPI,函数最后一个参数为返回值。
MPI-前缀,且函数名全部为大写。
MPI函数的参数被标志为以下三种类型:
IN:参数在例程的调用中不会被修正。
OUT:参数在例程的调用中可能会被修正。
INOUT:参数在一些例程中为IN,而在另一些例程中为OUT。
C和Fortran中MPI函数约定
int MPI_Init(int *argc, char **argv)
MPI_Init是MPI程序的第一个调用,它完成MPI程序的所有初始化工作。所有的MPI程序的第一条可执行语句都是这条语句。
启动MPI环境,标志并行代码的开始。
并行代码之前,第一个mpi函数。
要求main必须带参
您可能关注的文档
最近下载
- 车位所有权人许可建设充电桩证明.pdf VIP
- 红辽卷烟公司品牌竞争力分析结论与参考文献.docx VIP
- 2025贵州省旅游产业发展集团有限公司招聘115人笔试备考试题及答案解析.docx VIP
- 【泛微客户期刊】2023年36期:某医药集团费控管理项目案例分享.pptx VIP
- 区域土地利用土地覆盖遥感调查.pdf VIP
- 泛微软件集团管控解决方案文档资料.pptx VIP
- 廉租房、公租房维修项目方案.pdf VIP
- 2025贵州省旅游产业发展集团有限公司招聘115人笔试备考题库及答案解析.docx VIP
- 农业产业化发展规划-特色农业发展规划.doc VIP
- 采购与供应商控制程序(ISO9001 IATF16949).pdf VIP
文档评论(0)