多核程序设计课件.ppt

多核程序设计课件.ppt

ID:57113466

大小:185.00 KB

页数:15页

时间:2020-07-31

多核程序设计课件.ppt_第1页
多核程序设计课件.ppt_第2页
多核程序设计课件.ppt_第3页
多核程序设计课件.ppt_第4页
多核程序设计课件.ppt_第5页
资源描述:

《多核程序设计课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、多核程序设计第七章MPI编程及性能优化2007年6月12日MPI简介MPI及其历史消息传递接口(MessagePassingInterface,简称MPI)是一种编程接口标准,而不是一种具体的编程语言。由消息传递接口论坛(MessagePassingInterfaceForum,简称MPIF)发起讨论并进行规范化的。MPI标准如今已经成为事实意义上的消息传递并行编程标准,也是最为流行的并行编程接口。MPI标准定义了一组具有可移植性的编程接口。典型的实现包括开源的MPICH、LAMMPI以及不开源的INTELMPI。MPI程序特点消息传递指的是并行执行的各个进程具有自己独

2、立的堆栈和代码段。分类:单程序多数据(SingleProgramMultipleData,简称SPMD)prog_aLoadProcessStoreprocess0process1process2LoadProcessGatherStoreMPI程序特点(续)分类:多程序多数据MPMD(a)MPMDMaster/Worker(b)MPMDCoupledAnalysisNode1Node2Node3Node1Node2Node3prog_aprog_bprog_aprog_bprog_c(c)MPMDStreamlineprog_aprog_bprog_cNode1Nod

3、e2Node3MPI编程基础简单的MPI程序示例#include#include"mpi.h"intmain(intargc,char*argv[]){intrank;intsize;MPI_Init(argc,argv);MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD,&size);printf("Helloworldfromprocess%dof%d",rank,size);MPI_Finalize();return0;}Helloworldfromprocess

4、0of4Helloworldfromprocess1of4Helloworldfromprocess2of4Helloworldfromprocess3of4MPI程序的四个基本函数MPI_Init和MPI_FinalizeMPI_Init初始化MPI执行环境,建立多个MPI进程之间的联系,为后续通信做准备。而MPI_Finalize则是结束MPI执行环境。MPI_Comm_rank来标识各个MPI进程MPI_Comm_size用来标识相应进程组中有多少个进程MPI的点对点通信两个最重要的MPI函数MPI_Send和MPI_Recv。intMPI_SEND(buf,co

5、unt,datatype,dest,tag,comm)这个函数的含义是向通信域comm中的dest进程发送数据。消息数据存放在buf中,类型是datatype,个数是count个。这个消息的标志是tag,用以和本进程向同一目的进程发送的其他消息区别开来。intMPI_RECV(buf,count,datatype,source,tag,comm,status)MPI_Recv绝大多数的参数和MPI_Send相对应,有相同的意义,很好理解。唯一的区别就是MPI_Recv里面多了一个参数status。status主要显示接收函数的各种错误状态。消息管理7要素MPI最重要的功

6、能莫过于消息传递。正如我们先前看到一样,MPI_Send和MPI_Recv负责在两个进程间发送和接收消息。总结起来,点对点消息通信的参数主要是由以下7个参数组成:发送或者接收缓冲区buf;数据数量count;数据类型datatype;目标进程或者源进程destination/source;消息标签tag;通信域comm;.消息状态status,只在接收的函数中出现。错误管理MPI在错误管理方面提供了丰富的接口函数,这里我们介绍其中最简单的部分接口。用status.MPI_ERROR来获取错误码。MPI终止MPI程序执行的函数MPI_Abort。intMPI_Abort(

7、MPI_Commcomm,interrorcode)它使comm通信域的所有进程退出,返回errorcode给调用的环境。通信域comm中的任一进程调用此函数都能够使该通信域内所有的进程结束运行。MPI群集通信同步本函数接口是:intMPI_Barrier(MPI_Commcomm)在操作中,通信子comm中的所有进程相互同步,即它们相互等待,直到所有进程都执行了他们各自的MPI_Barrier函数,然后再各自接着开始执行后续的代码。广播从一个root进程向组内所有其他的进程发送一条消息。接口是:intMPI_Bcast(void*buf

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。