DAWNING 乡 曙光 DAWNING 科拔计算未来 机群应用开发 并行编程原理及 程序设计 Parallel Programming: Fundamentals and Implementation 曙光信息产业有限公司 2021年1月 2021年1月 MP|并行程序设计 1/217
2021年1月 MPI并行程序设计 1/217 机群应用开发 并行编程原理及 程序设计 Parallel Programming: Fundamentals and Implementation 曙光信息产业有限公司 2021年1月
DAWNING 乡 曙光 DAWNING 科拔计算未来 MP并行程序设计 Parallel Programming with the Massage Passing Interface(MPl) 2021年1月 MP|并行程序设计 4/217
2021年1月 MPI并行程序设计 4/217 MPI并行程序设计 Parallel Programming with the Massage Passing Interface (MPI)
DAWNING 乡 曙光 DAWNING 并行编程标准 科拔计算未来 多线程库标准 Win 32 AP POSIX threads 编译制导标准 OpenMP-可移植共享存储并行编程标准. 消息传递库标准 本讨论的重 MPI PVM 2021年1月 MP|并行程序设计 5/217
2021年1月 MPI并行程序设计 5/217 • 多线程库标准 – – Win32 API. – – POSIX threads. • 编译制导标准 – – OpenMP – 可移植共享存储并行编程标准. • 消息传递库标准 – – MPI – – PVM 并行编程标准 本讨论的重点
DAWNING 乡 曙光 DAWNING 消息传递并行程序设计 科拔计算未来 消息传递并行程序设计 一指用户必须通过显式地发送和接收消息来实现处理机间的数据交 换 一在这种并行编程中,每个并行进程均有自己独立的地址空间,相 互之间访问不能直接进行,必须通过显式的消息传递来实现。 这种编程方式是大规模并行处理机(MPP)和机群( Cluster)采 用的主要编程方式。 ·并行计算粒度大,特别适合于大规模可扩展并行算法 由于消息传递程序设计要求用户很好地分解问题组织不同进程间 的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法. ·消息传递是当前并行计算领域的一个非常重要的并行程序 设计方式 2021年1月 MP|并行程序设计 6/217
2021年1月 MPI并行程序设计 6/217 消息传递并行程序设计 • 消息传递并行程序设计 – 指用户必须通过显式地发送和接收消息来实现处理机间的数据交 换。 – 在这种并行编程中,每个并行进程均有自己独立的地址空间,相 互之间访问不能直接进行,必须通过显式的消息传递来实现。 – 这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采 用的主要编程方式。 • 并行计算粒度大,特别适合于大规模可扩展并行算法 – 由于消息传递程序设计要求用户很好地分解问题,组织不同进程间 的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法. • 消息传递是当前并行计算领域的一个非常重要的并行程序 设计方式
DAWNING 乡 曙光 DAWNING 什么是MP? 科拔计算未来 Massage Passing Interface:是消息传递函数库的 标准规范,由MP论坛开发,支持 Fortran和C 一种新的库描述,不是一种语言。共有上百个函数调 用接口,在 Fortran和C语言中可以直接对这些函数进行 调用 MP|是一种标准或规范的代表,而不是特指某一个对它 的具体实现 MPl是一种消息传递编程模型,并成为这种编程模型的 代表和事实上的标准 2021年1月 MP|并行程序设计 7/217
2021年1月 MPI并行程序设计 7/217 什么是MPI? • Massage Passing Interface:是消息传递函数库的 标准规范,由MPI论坛开发,支持Fortran和C – 一种新的库描述,不是一种语言。共有上百个函数调 用接口,在Fortran和C语言中可以直接对这些函数进行 调用 – MPI是一种标准或规范的代表,而不是特指某一个对它 的具体实现 – MPI是一种消息传递编程模型,并成为这种编程模型的 代表和事实上的标准
DAWNING 乡 曙光 DAWNING MP的发展过程 科拔计算未来 发展的两个阶段 -MP1.1:1995 MPCH:是MP|最流行的非专利实现,由 Argonne国家 实验室和密西西比州立大学联合开发,具有更好的可 移植性. MP|1.2~2.0:动态进程,并行MO,支持F90和 C++(1997) 2021年1月 MP|并行程序设计 8/217
2021年1月 MPI并行程序设计 8/217 MPI的发展过程 • 发展的两个阶段 – MPI 1.1: 1995 • MPICH:是MPI最流行的非专利实现,由Argonne国家 实验室和密西西比州立大学联合开发,具有更好的可 移植性. – MPI 1.2~2.0:动态进程, 并行 I/O, 支持F90和 C++(1997)
DAWNING 乡 曙光 DAWNING 为什么要用MP? 科拔计算未来 高可移植性 MP|已在|BMPC机上、 MS Windows上、所有主要的 Uniⅸx工作站上和所有主流的并行机上得到实现。使用 MP作消息传递的C或 Fortran并行程序可不加改变地运 行在|BMPC、 MS Windows、Uni工作站、以及各种并 行机上 2021年1月 MP|并行程序设计 9/217
2021年1月 MPI并行程序设计 9/217 为什么要用MPI? • 高可移植性 – MPI已在IBM PC机上、MS Windows上、所有主要的 Unix工作站上和所有主流的并行机上得到实现。使用 MPI作消息传递的C或Fortran并行程序可不加改变地运 行在IBM PC、MS Windows、Unix工作站、以及各种并 行机上
DAWNING 乡 曙光 DAWNING 讲座内容提示 科拔计算未来 ·基本的MP 基本概念 点到点通信( Point to point) MP|中AP的主要内容,为MP最基本,最重要的内容 MP序的编译和运行 ·深入MP 用户自定义派生数据类型User- defined(Derived) data type 事实上MP的所有数据类型均为MP自定义类型 支持异构系统 允许消息来自不连续的或类型不一致的存储区(结构数组散元 集合通信( Collective ·数据移动,数据聚集,同步 基于 point to point构建 MP环境管理函数 组,上下文和通信空间通信子的管理 实例 2021年1月 MP|并行程序设计 10/217
2021年1月 MPI并行程序设计 10/217 讲座内容提示 • 基本的MPI – 基本概念 – 点到点通信(Point to point) • MPI中API的主要内容,为MPI最基本,最重要的内容 – MPI程序的编译和运行 • 深入MPI – 用户自定义(/派生)数据类型(User-defined(Derived) data type) • 事实上MPI的所有数据类型均为MPI自定义类型 – 支持异构系统 – 允许消息来自不连续的或类型不一致的存储区(结构,数组散元) – 集合通信(Collective) • 数据移动,数据聚集,同步 • 基于point to point 构建 – MPI环境管理函数 • 组,上下文和通信空间/通信子的管理 • 实例
DAWNING 乡 曙光 DAWNING 从简单入手! 科拔计算未来 下面我们首先分别以C语言和 Fortran语言的 形式给出一个最简单的MP|并行程序He|o (下页) 该程序在终端打印出 Hello world!字样. ·“He| lo World:一声来自新生儿的问候 2021年1月 MP|并行程序设计 11/217
2021年1月 MPI并行程序设计 11/217 从简单入手! • 下面我们首先分别以C语言和Fortran语言的 形式给出一个最简单的MPI并行程序Hello (下页). • 该程序在终端打印出Hello World!字样. • “Hello World”:一声来自新生儿的问候
DAWNING 乡 曙光 DAWNING 科拔计算未来 Hello world(c) include include "mpi. h w main( int argc, char *argv [] MPI Init( &argc, &argv printf("Hello, world! \n") MPI Finalize 2021年1月 MP|并行程序设计 12/217
2021年1月 MPI并行程序设计 12/217 Hello world(C) #include #include "mpi.h“ main( int argc, char *argv[] ) { MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize(); }