第四讲消息传递编程接口MPI.ppt
《第四讲消息传递编程接口MPI.ppt》由会员分享,可在线阅读,更多相关《第四讲消息传递编程接口MPI.ppt(40页珍藏版)》请在三一文库上搜索。
1、第四讲 消息传递编程接口 MPI,一、 MPI 编程基础,主要内容,MPI 程序基本结构,MPI 编程基础,MPI 安装、程序编译与运行,MPI 数据类型,消息发送和接收,MPI 一些常用函数,MPI 介绍,Message Passing Interface,消息传递编程标准,目前最为通用的并行编程方式 提供一个高效、可扩展、统一的并行编程环境,MPI 是一个库,不是一门语言,MPI 提供库函数/过程供 C/FORTRAN 调用 MPI 是一种标准或规范的代表而不特指某一个对它的具体实现。迄今为止所有的并行计算机制造商都提供对MPI 的支持 MPI 是一种消息传递编程模型,最终目的是服务于进程
2、间通信这一目标,MPI 介绍,MPI 1.0:MPICH 1.2.7 MPI 2.0:MPICH2 1.0.7,MPI 的目标,较高的通信性能; 较好的程序可移植性; 强大的功能,MPI 下载与安装,MPICH 下载,http:/www.mpich.org/,MPI 编程基本概念,MPI 进程,MPI 程序中一个独立参与通信的个体,MPI 进程与通信器,MPI 通信器/通信子(Communicator),MPI 程序中进程间的通信必须通过通信器进行 通信器分为域内通信器(同一进程组内的通信)和域间通信器(不同进程组的进程间的通信),MPI 程序中,一个 MPI 进程 由一个进程组和在该组中的进
3、程号唯一确定;或 由一个通信器和在该通信器中的进程号唯一确定,进程号是相对进程组或通信器而言的,同一进程在不 同的进程组或通信器中可以有不同的进程号,MPI 程序启动时自动建立两个通信器: MPI_COMM_WORLD :包含程序中所有 MPI 进程 MPI_COMM_SELF :有单个进程独自构成,仅包含自己,MPI 消息,进程号是在进程组或通信器被创建时赋予的 空进程:MPI_PROC_NULL 与空进程通信时不做任何操作,第一个 MPI Fortran 程序,program main include mpif.h character * (MPI_MAX_PROCESSOR_NAME)
4、proc_name integer myid, numprocs, namelen, rc, ierr call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) call MPI_GET_PROCESSOR_NAME(proc_name, namelen, ierr) write(*,10) myid, numprocs, proc_name 10 FORMAT(Hello, I am Proc. ,I2,
5、 of ,I1, on , 20A) call MPI_FINALIZE(ierr) end,mpif.h 是MPI相对于FORTRAN的头文件,MPI 程序分析,所有包含 MPI 调用的程序必须包含 MPI 头文件,MPI_MAX_PROCESSOR_NAME 是 MPI 预定义的宏, 即 MPI 所允许的机器名字的最大长度,MPI 程序的开始和结束必须是 MPI_INIT 和 MPI_FINALIZE,分别完成 MPI 的初始化和结束工作,MPI_COMM_RANK 得到本进程的进程号 MPI_COMM_SIZE 得到所有参加运算的进程的个数 MPI_GET_PROCESSOR_NAME
6、得到运行本进程所在的 结点的主机名,进程号取值范围为 0, , np-1,MPI 程序分析,在单个结点(c1)上,开 4 个进程的运行结果,Hello, I am Proc. 1 of 4 on c1 Hello, I am Proc. 0 of 4 on c1 Hello, I am Proc. 2 of 4 on c1 Hello, I am Proc. 3 of 4 on c1,MPI 程序执行过程,启动编译生成的可执行文件 hello,进程 0,MPI_INIT,MPI_COMM_RANK myid=0,MPI_GET_PROCESSOR_NAME proc_name=c1 namel
7、en=2,Write hello, I am proc. 0 of 4 on c1,MPI_FINALIZE,进程 3,MPI_INIT,MPI_COMM_RANK myid=4,MPI_GET_PROCESSOR_NAME proc_name=c1 namelen=2,Write hello, I am proc. 3 of 4 on c1,MPI_FINALIZE, ,程序运行结束, ,进程 1,进程 2,第一个 MPI C 程序,#include “mpi.h“ #include #include int main(argc,argv) int argc; char *argv; int
8、 myid, np; int namelen; char proc_nameMPI_MAX_PROCESSOR_NAME; MPI_Init( ,mpi.h 是 MPI 相对于C语言的头文件,MPI 编程的一些惯例,MPI 的所有常量、变量与函数/过程均以 MPI_ 开头 MPI 的 C 语言接口为函数,FORTRAN 接口为 SUBROUTINE,且对应接口的名称相同 在 C 程序中,所有常数的定义除下划线外一律由大写字母 组成,在函数和数据类型定义中, 接 MPI_ 之后的第一个字 母大写,其余全部为小写字母,即 MPI_Xxxx_xxx 形式 对于 FORTRAN 程序,MPI 函数全部
9、以过程方式调用, 一般全用大写字母表示,即 MPI_XXXX_XXX 形式 (FORTRAN 不区分大小写) 除 MPI_WTIME 和 MPI_WTICK 外,所有 C 函数调用之后 都将返回一个错误信息码,而 MPI 的所有 FORTRAN 子 程序中都有一个哑元参数(IERR)代表错误码,MPI 编程的一些惯例,由于 C 语言的函数调用机制是值传递,所以 MPI 的所有 C 函数中的输出参数用的都是指针 MPI 是按进程组(Process Group) 方式工作: 所有 MPI 程序在开始时均被认为是在通信器 MPI_COMM_WORLD 所拥有的进程组中工作, 之后用户可以根据自己的需
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 消息 传递 编程 接口 MPI
链接地址:https://www.31doc.com/p-3135398.html