并行编程初步PPT课件.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPI 编 程 简 介上海超级计算中心提 纲引言基本MPI编程MPI高级编程简介实例CPUCPUCPUCPUCPU内存内存内存内存内存两种内存模型共享存储分布式存储CPUCPUCPUCPUCPU内 存消息传递并行程序设计消息传递并行程序设计用户必须通过显式地发送和接收消息来实现处理机间的数据交换每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现适用于大规模并行处理机(MPP)和机群(Cluster)并行计算粒度大,适合大规模可扩展并行算法消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法什么是MPI?Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C一种新的库描述,不是一种语言共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用是一种标准或规范,而不是特指某一个对它的具体实现MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准为什么要使用MPI?高可移植性MPI已在PC机、MS Windows以及所有主要的Unix工作站上和所有主流的并行机上得到实现使用MPI作消息传递的C或Fortran并行程序可不加改变地在上述平台实现没有更好的选择MPI的发展过程发展的两个阶段1994年5月完成1.0版支持C和Fortran77制定大部分并行功能1997年4月完成2.0版动态进程并行I/O支持Fortran 90和C++常用的MPI版本MPICH 是MPI最流行的非专利实现,由Argonne国家实验室和密西西比州立大学联合开发,具有更好的可移植性当前最新版本有和MPICH2 1.03LAMMPI美国Indiana 大学Open Systems 实验室实现当前最新版本更多的商业版本MPIHP-MPI,MS-MPI,……所有的版本遵循MPI标准,MPI程序可以不加修改的运行提 纲引言基本MPI编程MPI高级编程简介实例从简单入手下面我们首先分别以C语言和Fortran语言的形式给出一个最简单的MPI并行程序 Hello 该程序在终端打印出Hello World!字样.Hello (C语言)#include stdio.h#include mpi.h“main( int argc, char *argv[] ){ MPI_Init( argc, argv ); printf(“Hello World!\n); MPI_Finalize();}Hello (Fortran语言)program maininclude ‘mpif.h’integer ierrcall MPI_INIT( ierr )print *, Hello, world!call MPI_FINALIZE( ierr )endC和Fortran中MPI函数约定C必须包含mpi.hMPI 函数返回出错代码或成功代码MPI_SUCCESSMPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其余小写,例:MPI_InitFortran必须包含mpif.h通过子函数形式调用MPI,函数最后一个值为返回值MPI-前缀,且函数名全部大写,例:MPI_INIT C和Fortran中MPI函数约定(续)MPI函数的参数被标志为以下三种类型IN:参数在函数的调用中不会被修改OUT:参数在函数的调用中可能会被修改INOUT:参数在一些函数中为IN,而在另一些函数中为OUT MPI初始化- MPI_INITint MPI_Init(int *argc, char **argv) MPI_INIT(IERROR)MPI_INIT是MPI程序的第一个调用,完成MPI程序的所有初始化工作。所有的MPI程序的第一条可执行语句都是这条语句启动MPI环境,标志并行代码的开始并行代码之前,第一个mpi函数(除MPI_Initialize外)要求main必须带参数运行。否则出错 MPI结束- MPI_FINALIZEint MPI_Finalize(void) MPI_ Finalize(IERROR)MPI_INIT是MPI程序的最后一个调用,它结束MPI程序的运行,它是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的。标志并行代码的结束,结束除主进程外其它进程之后串行代码仍可在主进程(rank = 0)上运行(如果必须)MPI程序的编译和运行mpif77 –o hello hello.f 或 mpicc –o hello hello.c生成hello的可执行代码mpirun –np 4 hello4,指定np的值,表示进程数,由用户指定hello,要运行的MPI并行

文档评论(0)

天星 + 关注
官方认证
文档贡献者

人人为我,我为人人。

版权声明书
用户编号:5342242001000034
认证主体四川龙斌文化科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510100MA6ADW1H0N

1亿VIP精品文档

相关文档