MPI并行编程.pptVIP

  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并行编程      报告人:李俊照 内容 1、MPI并行编程简介 2、efund并行的结果分析 3、主程序的并行思路 MPI并行编程简介 主/从式  主进程将任务分发到从进程分别计算,再收集计算结果,比如计算1+…+100,可以分成两部份。进从程计算1+..+50和51+..+100,主进程收集结果再相加     对等式 每个进程相对独立计算各自的任务 比如要计算1+…+100和1*…*100,可以由两个进程独立计算 混合模式 主进程分发完任务后,参与计算 如计算1+..+100,主进程可以自己计算1..33,分发任务34..66和67..100到两个从进程。可以提高效率 一个简单的MPI程序 include  mpif.h‘ integer  myid,numprocs,ierr,rc call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr) call MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr) //添加需要并行的程序 Write(*,*) Hello World! process is :,myid // call MPI_Finalize(rc) 运行的结果 MPI初始化 call MPI_Init(ierr) Integer ierr  MPI结束 call MPI_Finalize(ierr) Integer ierr 当前进程标识 call MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr) In MPI_COMM_WORLD 为进程所在的通信域 Out Integer myid,ierr 通信域包含的进程数 Call MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr) In MPI_COMM_WORLD Out Integer numprocs,ierr 通信域 一个通信域是一个进程组加上一个现场,进程组是所有参加通信的进程的集合,如果一共有N个进程参加通信,则进程编号从0到N-1;现场提供一个相对独立的通信区域 MPI消息 MPI消息包括信封和数据两部份 信封:<源/目,标识,通信域> 数据:<起始地址,数据个数,数据类型> MPI_Send(buf,count,datatype,dest,tag,comm)   消息数据     消息信封 In buf,count,datatype,dest,tag,comm 消息接收 MPI_Recv(buf,count,datatype,source,tag,comm,status) In count,datatype,source,tag,comm Out buf,status(返回状态) MPI类型匹配:数据类型要一致  阻塞通信与非阻塞通信   非阻塞消息发送 MPI_ISend(buf,count,datatype,dest,tag,comm,request,ierr) In buf,count,datatype,dest,tag,comm Out request,ierr Request(返回的非阻塞通信对象) 非阻塞消息接收 MPI_IRecv(buf,count,datatype,source,tag,comm,request,ierr) In buf,count,datatype,source,tag,comm Out request,ierr 非阻塞通信的完成 MPI_Wait(request,status) In request Out status 组通信 一对一 编写安全的通信 If (rank.eq.0) then Call MPI_Recv(recvbuf,count,real,1,tag,comm,status,ierr) Call MPI_Rend(sendbuf,count,real,1,tag,comm,ierr) Else if (rank.eq.1) Call MPI_Recv(recvbuf,count,real,0,tag,comm,status,ierr) Call MPI_Rend(sendbuf,count,real,0,tag,comm,ierr) Endif 例子 Myid:本身进程号 Numprocs:总的进程数 For(I=myid+1;I=n;I+=numprocs) /*每一个进程计算一部份矩形的面

文档评论(0)

book1986 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档