并行程序设计整理讲稿.ppt
《并行程序设计整理讲稿.ppt》由会员分享,可在线阅读,更多相关《并行程序设计整理讲稿.ppt(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、并行程序设计整理第一页,讲稿共二十五页哦十月 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一种新的库描述,不是一种语言。共有上百个函数调用接口,在
2、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
3、 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程序的编译与运行程序的编译与运行使用节点进行操作使用节点进行
4、操作(范围范围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 ech
5、o$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
6、$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);
7、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.
8、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 发送
9、信息的数据类型发送信息的数据类型 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 接
10、收信息的数据类型接收信息的数据类型 IN source 源进程的源进程的rank值值 IN tag 消息标签消息标签 IN comm 通信子通信子OUT statusstatus对象对象,包含实际接收到的消息的有关信息包含实际接收到的消息的有关信息第十一页,讲稿共二十五页哦十月 22MPI并行程序设计1225数据:*类型,大小必须匹配*信封:第十二页,讲稿共二十五页哦十月 22MPI并行程序设计1325例程:发送字符串例程:发送字符串#include#include mpi.hmain(int argc,char*argv)int numprocs;/*进程数进程数,该变量为各处理器中的同名变
11、量该变量为各处理器中的同名变量,存储是分布的存储是分布的*/int myid;/*我的进程我的进程ID,存储也是分布的存储也是分布的*/MPI_Status status;/*消息接收状态变量消息接收状态变量,存储也是分布的存储也是分布的*/char message100;/*消息消息buffer,存储也是分布的存储也是分布的*/*初始化初始化MPI*/MPI_Init(&argc,&argv);/*该函数被各进程各调用一次该函数被各进程各调用一次,得到自己的进程得到自己的进程rank值值*/MPI_Comm_rank(MPI_COMM_WORLD,&myid);/*该函数被各进程各调用一次该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 程序设计 整理 讲稿
限制150内