欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    并行程序设计整理讲稿.ppt

    • 资源ID:48377073       资源大小:1.91MB        全文页数:25页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    并行程序设计整理讲稿.ppt

    并行程序设计整理第一页,讲稿共二十五页哦十月 22MPI并行程序设计2/25相关网址MPI:http:/ww.mpi-forum.org,http:/www.mcs.anl.gov/mpiPthreads:http:/PVM:http:/www.epm.ornl.gov/pvm/OpemMP:http:/www.openmp.org网上搜索:第二页,讲稿共二十五页哦十月 22MPI并行程序设计3/25什么是什么是MPI?Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C一种新的库描述,不是一种语言。共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用MPI是一种标准或规范的代表,而不是特指某一个对它的具体实现MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准第三页,讲稿共二十五页哦十月 22MPI并行程序设计4/25为什么要用为什么要用MPI?高可移植性高可移植性MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。第四页,讲稿共二十五页哦十月 22MPI并行程序设计5/25Hello World(.cpp)#include#include mpi.hmain(int argc,char*argv)int myid,numprocs;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);coutHello world!;coutI am myid of numprocs!endl;MPI_Finalize();第五页,讲稿共二十五页哦十月 22MPI并行程序设计6/25MPI程序的编译与运行程序的编译与运行使用节点进行操作使用节点进行操作(范围范围c0101-c0116):rsh c0101进入程序所在目录:进入程序所在目录:cd zhaijg编译,生成可执行代码文件编译,生成可执行代码文件ccc:mpicc-o ccc myHelloworld.cpp 指定节点数及进程数,并执行:指定节点数及进程数,并执行:qsub-l nodes=2:ppn=2 mytest%小写小写o%小写小写l节点数节点数进程数进程数第六页,讲稿共二十五页哦十月 22MPI并行程序设计7/25mytest文件文件echo this script pid is$echo Working directory is$LJRS_O_WORKDIR echo$LJRS_0_WORKDIR=$LJRS_O_WORKDIR cd$LJRS_O_WORKDIR echo Runing on host hostname echo Time is date echo Directory is pwd echo This jobs runs on the following processors:echo$LJRS_NODEFILE=$LJRS_NODEFILE echo cat$LJRS_NODEFILE NPROCS=wc-l$LJRS_NODEFILE echo This job has allocated$NPROCS nodes mpirun-m$LJRS_NODEFILE-np$NPROCS/export/home/emfeng/zhaijg/ferm/cccecho date 路径,及编译时起的名字可执行文件ccc第七页,讲稿共二十五页哦十月 22MPI并行程序设计8/25Hello是如何被执行的是如何被执行的:#include#include mpi.hmain(int argc,char*argv)int myid,numprocs;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);cout“Hello world!”;cout“I am”myid“of”numprocs“!”);MPI_Finalize();Hello World!I am 3 of 4!Hello World!I am 2 of 4!Hello World!I am 4 of 4!Hello World!I am 1 of 4!第八页,讲稿共二十五页哦十月 22MPI并行程序设计9/25最基本的最基本的MPIMPI调用借口的总数虽然庞大,但常用的MPI调用的个数确实有限。下面是6个最基本的MPI函数。1.MPI_Init();2.MPI_Comm_size();3.MPI_Comm_rank();4.MPI_Send();5.MPI_Recv();6.MPI_Finalize();MPI_Init();并行代码并行代码;MPI_Fainalize();只能有串行代码只能有串行代码;第九页,讲稿共二十五页哦十月 22MPI并行程序设计1025点到点通信点到点通信(MPI_Send)int MPI_Send(void*buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm);IN buf 发送缓冲区的起始地址发送缓冲区的起始地址 IN count 要发送信息的要发送信息的元素元素个数个数 IN datatype 发送信息的数据类型发送信息的数据类型 IN dest 目标进程的目标进程的rank值值 IN tag 消息标签消息标签 IN comm 通信子通信子第十页,讲稿共二十五页哦十月 22MPI并行程序设计1125点到点通信点到点通信(MPI_Recv)int MPI_Recv(void*buf,int count,MPI_Datatype datatype,int source,int tag,MPI_Comm comm,MPI_Status*status);OUT buf 接收缓冲区的起始地址接收缓冲区的起始地址 IN count 要接收信息的要接收信息的元素元素个数个数 IN datatype 接收信息的数据类型接收信息的数据类型 IN source 源进程的源进程的rank值值 IN tag 消息标签消息标签 IN comm 通信子通信子OUT statusstatus对象对象,包含实际接收到的消息的有关信息包含实际接收到的消息的有关信息第十一页,讲稿共二十五页哦十月 22MPI并行程序设计1225数据:*类型,大小必须匹配*信封:第十二页,讲稿共二十五页哦十月 22MPI并行程序设计1325例程:发送字符串例程:发送字符串#include#include mpi.hmain(int argc,char*argv)int numprocs;/*进程数进程数,该变量为各处理器中的同名变量该变量为各处理器中的同名变量,存储是分布的存储是分布的*/int myid;/*我的进程我的进程ID,存储也是分布的存储也是分布的*/MPI_Status status;/*消息接收状态变量消息接收状态变量,存储也是分布的存储也是分布的*/char message100;/*消息消息buffer,存储也是分布的存储也是分布的*/*初始化初始化MPI*/MPI_Init(&argc,&argv);/*该函数被各进程各调用一次该函数被各进程各调用一次,得到自己的进程得到自己的进程rank值值*/MPI_Comm_rank(MPI_COMM_WORLD,&myid);/*该函数被各进程各调用一次该函数被各进程各调用一次,得到进程数得到进程数*/MPI_Comm_size(MPI_COMM_WORLD,&numprocs);第十三页,讲稿共二十五页哦十月 22MPI并行程序设计1425if(myid!=0)/*建立消息建立消息*/sprintf(message,Greetings from process%d!,myid);/*发送长度取发送长度取strlen(message)+1,使使0也一同发送出去也一同发送出去*/MPI_Send(message,strlen(message)+1,MPI_CHAR,0,99,MPI_COMM_WORLD);else/*myid=0*/for(source=1;source numprocs;source+)MPI_Recv(message,100,MPI_CHAR,source,99,MPI_COMM_WORLD,&status);printf(“%sn,message);/*关闭关闭MPI,标志并行代码段的结束标志并行代码段的结束*/MPI_Finalize();/*End main*/第十四页,讲稿共二十五页哦十月 22MPI并行程序设计1525程序执行过程程序执行过程 假设进程数为假设进程数为3 (进程0)(进程1)(进程2)(rank=0)(rank=1)(rank=2).Recv();.Recv();.Send();.Send().第十五页,讲稿共二十五页哦MPI并行程序设计十月 221625MPI基本数据类型第十六页,讲稿共二十五页哦十月 22MPI并行程序设计1725集合通信集合通信特点通信空间中的所有进程都参与通信操作每一个进程都需要调用该操作函数一到多多到一同步第十七页,讲稿共二十五页哦十月 22MPI并行程序设计1825类型函数功能数据移动MPI_Bcast一到多,数据广播MPI_Gather多到一,数据汇合MPI_GathervMPI_Gather的一般形式MPI_AllgatherMPI_Gather的一般形式MPI_AllgathervMPI_Allgather的一般形式MPI_Scatter一到多,数据分散MPI_ScattervMPI_Scatter的一般形式MPI_Alltoall多到多,置换数据(全互换)MPI_AlltoallvMPI_Alltoall的一般形式数据聚集MPI_Reduce多到一,数据归约MPI_Allreduce上者的一般形式,结果在所有进程MPI_Reduce_scatter结果scatter到各个进程MPI_Scan前缀操作同步MPI_Barrier同步操作MPI集合通信函数All:表示结果到所有所有进程.V:Variety,被操作的数据对象和操作更为灵活.%第十八页,讲稿共二十五页哦十月 22MPI并行程序设计1925数据移动BroadcastScatterGatherAllgatherAlltoall第十九页,讲稿共二十五页哦十月 22MPI并行程序设计2025数据聚集ReduceAllreduceReduce-scatterScanMPI 预定义全局数据运算符:MPI_MAX/MPI_MIN;MPI_SUM 求和 MPI_PROD 求积MPI_LAND 逻辑与 MPI_LOR 逻辑或 MPI_MAXLOC/MPI_MINLOC 最大/小值求下相应位置 第二十页,讲稿共二十五页哦十月 22MPI并行程序设计2125int p,myrank;float buf;MPI_Comm comm;MPI_Init(&argc,&argv);/*得进程编号得进程编号*/MPI_Comm_rank(comm,&my_rank);/*得进程总数得进程总数*/MPI_Comm_size(comm,&p);if(myrank=0)buf=1.0;MPI_Bcast(&buf,1,MPI_FLOAT,0,comm);MPI_Bcast-数据广播databuf.MPI_Bcast();.data.MPI_Bcast();.data.MPI_Bcast();.Process 0myrank=0Process 1myrank=1Process p-1myrank=p-1根进程既是发送缓冲区也是接收根进程既是发送缓冲区也是接收缓冲区缓冲区第二十一页,讲稿共二十五页哦十月 22MPI并行程序设计2225MPI_Gather-数据收集int p,myrank;float data10;/*分布变量分布变量*/float*buf;MPI_Comm comm;MPI_Init(&argc,&argv);/*得进程编号得进程编号*/MPI_Comm_rank(comm,&my_rank);/*得进程总数得进程总数*/MPI_Comm_size(comm,&p);if(myrank=0)buf=(float*)malloc(p*10*sizeof(float);/*开辟接收缓冲区开辟接收缓冲区*/MPI_Gather(data,10,MPI_FLOAT,buf,10,MPI_FlOAT,0,comm);data.MPI_Gather();.data.MPI_Gather();.data.MPI_Gather();.Process 0myrank=0Process 1myrank=1Process p-1myrank=p-1根进程接收其他进程来的消息根进程接收其他进程来的消息(包括根进程包括根进程),),按按每在进程每在进程在通信组中的编号在通信组中的编号依次联接在一下依次联接在一下,存放在根进程的接收缓冲区中存放在根进程的接收缓冲区中.buf第二十二页,讲稿共二十五页哦十月 22MPI并行程序设计2325MPI_Scatter-数据分散int p,myrank;float data10;float*buf;MPI_Comm comm;MPI_Init(&argc,&argv);/*得进程编号得进程编号*/MPI_Comm_rank(comm,&my_rank);/*得进程总数得进程总数*/MPI_Comm_size(comm,&p);if(myrank=0)buf=(float*)malloc(p*10*sizeof(float);/*开辟开辟发送缓冲区发送缓冲区*/MPI_Scatter(buf,10,MPI_FLOAT,data,10,MPI_FlOAT,0,comm);data.MPI_Scatter();.data.MPI_ Scatter();.data.MPI_ Scatter();.Process 0myrank=0Process 1myrank=1Process p-1myrank=p-1根进程中存储了根进程中存储了p p个消息个消息,第第i i个消个消息将传给第息将传给第i i个进程个进程.buf第二十三页,讲稿共二十五页哦十月 22MPI并行程序设计2425MPI_Reduce-数据规约int p,myrank;float data=0.0;float buf;MPI_Comm comm;MPI_Init(&argc,&argv);/*得进程编号得进程编号*/MPI_Comm_rank(comm,&my_rank);/*各进程对各进程对data进行不同的操作进行不同的操作*/data=data+myrank*10;/*将各进程中的将各进程中的data数相加并存入根进程的数相加并存入根进程的buf中中*/MPI_Reduce(&data,&buf,1,MPI_FLOAT,MPI_SUM,0,comm);data.MPI_Reduce();.data.MPI_ Reduce();.data.MPI_ Reduce();.Process 0myrank=0Process 1myrank=1Process p-1myrank=p-1对组中所有进程的发送缓冲区中的数据用OP参数指定的操作进行运算,并将结果送回到根进程的接收缓冲区中.buf+第二十四页,讲稿共二十五页哦以发酵程序为例以发酵程序为例MPI_BcastMPI_GatherMPI_Barrier(MPI_COMM_WORLD)*注意不要限制在某个进程中进行,例如用注意不要限制在某个进程中进行,例如用if(myid=0)限制在限制在0进程中执行进程中执行*第二十五页,讲稿共二十五页哦

    注意事项

    本文(并行程序设计整理讲稿.ppt)为本站会员(石***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开