并行程序设计整理.ppt
《并行程序设计整理.ppt》由会员分享,可在线阅读,更多相关《并行程序设计整理.ppt(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、并行程序设计整理现在学习的是第1页,共25页2022年9月MPI并行程序设计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网上搜索:现在学习的是第2页,共25页2022年9月MPI并行程序设计3/25什么是什么是MPI?Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C 一种新的库描述,不是一种语言。共有上百
2、个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用 MPI是一种标准或规范的代表,而不是特指某一个对它的具体实现 MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准现在学习的是第3页,共25页2022年9月MPI并行程序设计4/25为什么要用为什么要用MPI?高可移植性高可移植性 MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。现在学习的是第4页,共25页2022年
3、9月MPI并行程序设计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();现在学习的是第5页,共25页2022年9月MPI并行程序设计6/25MPI程序的编译与
4、运行程序的编译与运行 使用节点进行操作使用节点进行操作(范围范围c0101-c0116):rsh c0101 进入程序所在目录:进入程序所在目录:cd zhaijg 编译,生成可执行代码文件编译,生成可执行代码文件ccc:mpicc-o ccc myHelloworld.cpp 指定节点数及进程数,并执行:指定节点数及进程数,并执行:qsub-l nodes=2:ppn=2 mytest%小写小写o%小写小写l节点数节点数进程数进程数现在学习的是第6页,共25页2022年9月MPI并行程序设计7/25mytest文件文件echo this script pid is$echo Working
5、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
6、allocated$NPROCS nodes mpirun-m$LJRS_NODEFILE-np$NPROCS/export/home/emfeng/zhaijg/ferm/cccecho date 路径,及编译时起的名字可执行文件ccc现在学习的是第7页,共25页2022年9月MPI并行程序设计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_C
7、omm_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!现在学习的是第8页,共25页2022年9月MPI并行程序设计9/25最基本的最基本的MPIMPI调用借口的总数虽然庞大,但常用的MPI调用的个数确实有限。下面是6个最基本的MPI函数。MPI_Init();M
8、PI_Comm_size();MPI_Comm_rank();MPI_Send();MPI_Recv();1.MPI_Finalize();MPI_Init();并行代码并行代码;MPI_Fainalize();只能有串行代码只能有串行代码;现在学习的是第9页,共25页2022年9月MPI并行程序设计10/25点到点通信点到点通信(MPI_Send)int MPI_Send(void*buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm);IN buf 发送缓冲区的起始地址发送缓冲区的起始地址 IN count 要
9、发送信息的要发送信息的元素元素个数个数 IN datatype 发送信息的数据类型发送信息的数据类型 IN dest 目标进程的目标进程的rank值值 IN tag 消息标签消息标签 IN comm 通信子通信子现在学习的是第10页,共25页2022年9月MPI并行程序设计11/25点到点通信点到点通信(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
10、count 要接收信息的要接收信息的元素元素个数个数 IN datatype 接收信息的数据类型接收信息的数据类型 IN source 源进程的源进程的rank值值 IN tag 消息标签消息标签 IN comm 通信子通信子OUT statusstatus对象对象,包含实际接收到的消息的有关信息包含实际接收到的消息的有关信息现在学习的是第11页,共25页2022年9月MPI并行程序设计12/25数据:*类型,大小必须匹配*信封:现在学习的是第12页,共25页2022年9月MPI并行程序设计13/25例程:发送字符串例程:发送字符串#include#include mpi.hmain(int
11、argc,char*argv)int numprocs;/*进程数进程数,该变量为各处理器中的同名变量该变量为各处理器中的同名变量,存储是分布的存储是分布的*/int myid;/*我的进程我的进程ID,存储也是分布的存储也是分布的*/MPI_Status status;/*消息接收状态变量消息接收状态变量,存储也是分布的存储也是分布的*/char message100;/*消息消息buffer,存储也是分布的存储也是分布的*/*初始化初始化MPI*/MPI_Init(&argc,&argv);/*该函数被各进程各调用一次该函数被各进程各调用一次,得到自己的进程得到自己的进程rank值值*/M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 程序设计 整理
限制150内