欢迎来到天天文库
浏览记录
ID:57058334
大小:543.50 KB
页数:56页
时间:2020-07-30
《MPI编程简介解析课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MPI编程简介提纲引言基本MPI编程MPI高级编程简介实例两种内存模型共享存储分布式存储内存CPUCPUCPUCPUCPU内存CPUCPUCPUCPUCPU内存内存内存内存消息传递并行程序设计消息传递并行程序设计用户必须通过显式地发送和接收消息来实现处理机间的数据交换每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现适用于大规模并行处理机(MPP)和机群(Cluster)并行计算粒度大,适合大规模可扩展并行算法消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换,并行计算粒度
2、大,特别适合于大规模可扩展并行算法什么是MPI?MassagePassingInterface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C一种新的库描述,不是一种语言共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用是一种标准或规范,而不是特指某一个对它的具体实现MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准为什么要使用MPI?高可移植性MPI已在PC机、MSWindows以及所有主要的Unix工作站上和所有主流的并行机上得到实现使用MPI作消息传递的C
3、或Fortran并行程序可不加改变地在上述平台实现没有更好的选择MPI的发展过程发展的两个阶段1994年5月完成1.0版支持C和Fortran77制定大部分并行功能1997年4月完成2.0版动态进程并行I/O支持Fortran90和C++常用的MPI版本MPICH是MPI最流行的非专利实现,由Argonne国家实验室和密西西比州立大学联合开发,具有更好的可移植性当前最新版本有MPICH1.2.7和MPICH21.03LAMMPI美国Indiana大学OpenSystems实验室实现当前最新版本7.1.2更多的商业版本MPIHP
4、-MPI,MS-MPI,……所有的版本遵循MPI标准,MPI程序可以不加修改的运行提纲引言基本MPI编程MPI高级编程简介实例从简单入手下面我们首先分别以C语言和Fortran语言的形式给出一个最简单的MPI并行程序Hello该程序在终端打印出HelloWorld!字样.Hello(C语言)#include#include"mpi.h“main(intargc,char*argv[]){MPI_Init(&argc,&argv);printf(“HelloWorld!");MPI_Finalize();}
5、Hello(Fortran语言)programmaininclude‘mpif.h’integerierrcallMPI_INIT(ierr)print*,'Hello,world!'callMPI_FINALIZE(ierr)endC和Fortran中MPI函数约定C必须包含mpi.hMPI函数返回出错代码或成功代码MPI_SUCCESSMPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其余小写,例:MPI_InitFortran必须包含mpif.h通过子函数形式调用MPI,函数最后一个值为返回值MPI-前缀,且
6、函数名全部大写,例:MPI_INITC和Fortran中MPI函数约定(续)MPI函数的参数被标志为以下三种类型IN:参数在函数的调用中不会被修改OUT:参数在函数的调用中可能会被修改INOUT:参数在一些函数中为IN,而在另一些函数中为OUTMPI初始化-MPI_INITintMPI_Init(int*argc,char**argv)MPI_INIT(IERROR)MPI_INIT是MPI程序的第一个调用,完成MPI程序的所有初始化工作。所有的MPI程序的第一条可执行语句都是这条语句启动MPI环境,标志并行代码的开始并行代码
7、之前,第一个mpi函数(除MPI_Initialize外)要求main必须带参数运行。否则出错MPI结束-MPI_FINALIZEintMPI_Finalize(void)MPI_Finalize(IERROR)MPI_INIT是MPI程序的最后一个调用,它结束MPI程序的运行,它是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的。标志并行代码的结束,结束除主进程外其它进程之后串行代码仍可在主进程(rank=0)上运行(如果必须)MPI程序的编译和运行mpif77–ohellohello.f或mpicc–ohel
8、lohello.c生成hello的可执行代码mpirun–np4hello4,指定np的值,表示进程数,由用户指定hello,要运行的MPI并行程序运行MPI程序编译:mpicc-ohellohello.c运行:./hello[0]Abortingprogram!Couldn
此文档下载收益归作者所有