50

Click here to load reader

并 行 计 算 基 础 知 识

  • Upload
    ataret

  • View
    122

  • Download
    5

Embed Size (px)

DESCRIPTION

并 行 计 算 基 础 知 识. 赵俊锋 西北工业大学理学院 [email protected]. 主要内容. 并行计算环境 并行算法基础 什么问题可以并行化 串行程序如何改为并行程序. 为什么需要并行计算机. 问题: 科学和工程问题的数值模拟与仿真 计算密集 数据密集 网络密集 三种混合 要求:在合理的时限内完成计算任务 秒级制造业 分钟级短时天气预报(当天) 小时级中期天气预报(3~10日) 尽可能快长期天气预报(气候) 可计算湍流模拟. 什么任务适合在超级计算环境内运行?. - PowerPoint PPT Presentation

Citation preview

Page 1: 并 行 计 算 基 础 知 识

并 行 计 算 基 础 知 识 赵俊锋

西北工业大学理学院[email protected]

Page 2: 并 行 计 算 基 础 知 识

主要内容 并行计算环境 并行算法基础 什么问题可以并行化 串行程序如何改为并行程序

Page 3: 并 行 计 算 基 础 知 识

为什么需要并行计算机 问题 : 科学和工程问题的数值模拟与仿真

计算密集 数据密集 网络密集 三种混合

要求 :在合理的时限内完成计算任务 秒级 制造业 分钟级 短时天气预报 (当天 ) 小时级 中期天气预报 (3~10 日 ) 尽可能快 长期天气预报 (气候 ) 可计算 湍流模拟

Page 4: 并 行 计 算 基 础 知 识

什么任务适合在超级计算环境内运行? 一般来说,计算量极大而使 PC 不能满足要求或者根本不能计算的任务是适合在超级计算环境中运行的。比如, ( 1 )需要分布式并行处理的科学计算任务,包括:由于对计算资源要求过大而使现在的硬件条件无法满足要求的计算任务,通过将串行源代码改编为并行源代码来进行计算,或者有通行的并行计算程序(商业或非商业);( 2 )虽然可以计算但是时间过长的问题等。

Page 5: 并 行 计 算 基 础 知 识

并行计算机的分类 并行向量机( PVP) 对称多处理共享存储多处理机( SMP) 大规模并行处理机( MPP) 工作站(微机)机群( COW) 分布式共享存储多处理机( DSM)

Page 6: 并 行 计 算 基 础 知 识

COW(Cluster of Workstation)

一个节点可以是一台 PC或 SMP; 各节点一般由商品化的网络互连;机群节点通过使用标准网络协议( TCP/

IP )来通信。使用的是千兆网。 每个节点一般有本地磁盘; 节点上的网络接口是松散耦合到 I/O 总线上; 每个节点有一个完整的操作系统 , 但是通过中间层实现了单一系统映像( SSI)。

Page 7: 并 行 计 算 基 础 知 识

单一系统映像 单 一 系 统 映 像 ( Single System

Image, SSI )并不是指系统中仅有唯一的操作系统映像驻留在内存,而只是感觉上,像一个单一系统。 其基本特征是单一系统、单一控制、对称性、位置透明。采用 SSI 的主要目的,是使机群的使用、控制和维护似乎和一台工作站一样。 单一系统映像包括单一入口点、单一文件层次结构、单一 I/O 空间、单一网络、单一作业管理系统、单一存储空间和单一进程空间。

Page 8: 并 行 计 算 基 础 知 识

定 制 网 络

P/C

M

B

MB

LDNIC

IOB

P/C

M

B

MB

LDNIC

IOB

Page 9: 并 行 计 算 基 础 知 识
Page 10: 并 行 计 算 基 础 知 识

并行机软件环境 操作系统方面: RatHat9.0 程序设计语言: Fortran 77 、

Fortran 90、 C/C++ 等

Page 11: 并 行 计 算 基 础 知 识

什么是并行算法 算法是解题的精确描述,是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。并行计算时可同时求解的诸进程的集合,这些进程相互作用和协调动作,并最终获得问题的求解 并行算法就是对并行计算过程的精确描述

Page 12: 并 行 计 算 基 础 知 识

并行算法的分类 非数值计算并行算法 数值计算并行算法,基于矩阵运算、多项式求解、线性方程组求解等代数关系运算的计算问题。

Page 13: 并 行 计 算 基 础 知 识

进程 1

发送信息

进程 2

接收信息

传统的串行计算,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。

并行计算将进程相对独立的分配于不同的节点上,由各自独立的操作系统调度,享有独立的 CPU和内存资源(内存可以共享);进程间相互信息交换通过消息传递;

进程 1

进程 2

Page 14: 并 行 计 算 基 础 知 识

进程间通信 现代操作系统提供基本的系统调用函数,允许位于同一台处理机或不同处理机的多个进程之间相互交流信息,操作具体表现为三种形式:通信、同步和聚集。 以上的三种形式统称为进程间通信,操作的具体数据对象为消息,具体的操作为消息传递。

Page 15: 并 行 计 算 基 础 知 识

通信 进程间的数据传递称为进程间通信。 在同一台处理机中,通信可以读 /写操作系统提供的共享数据缓存区来实现。 不同处理机中,通信可以通过网络来实现。

Page 16: 并 行 计 算 基 础 知 识

同步 同步是使位于相同或不同处理机中的多个进程之间的相互等待的操作,它要求进程的所有操作均必须等待到达某一控制状态之后才并行。

Page 17: 并 行 计 算 基 础 知 识

聚集 聚集将位于相同后不同处理机中的多个进程的局部结果综合起来,通过某种操作,例如最大值、最小值、累加和,产生一个新的结果,存储在某个指定的或者所有的进程变量中。

Page 18: 并 行 计 算 基 础 知 识

共享存储共享存储的模型和语言 ( 适于 PVP, SMP, DSM)X3H5, PthreadOpenMP

消息传递消息传递的模型和语言的模型和语言 (( 适于适于 MPP, Cluster, COW)MPP, Cluster, COW)MPI (MPI (Fortran, C, Gamess, VaspFortran, C, Gamess, Vasp))PVM (PVM (Fortran, CFortran, C))

数据并行数据并行的模型和语言的模型和语言 (( 适于在适于在 MPP/ClusterMPP/Cluster 上实现上实现 SPMDSPMD 应应用用 ))Fortran 90Fortran 90HPF(High Performance Fortran) HPF(High Performance Fortran)

并行编程环境

Page 19: 并 行 计 算 基 础 知 识

MPI(Message Passing Interface)

在当前所有的消息传递软件中 , 最重要最流行的是 MPI, 它能运行在所有的并行平台上。 程序设计语言支持 C, Fortran 等。

Page 20: 并 行 计 算 基 础 知 识

MPI已经成为一种标准, 它以与语言独立的形式来定义这个接口库 , 这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性 . 由于这个原因 , MPI 在并行计算界被广泛地接受 .

Page 21: 并 行 计 算 基 础 知 识

MPI 标准的实现包括MPICH、 LAM、 IBM MPL 等多个版本,最常用和稳定的是 MPICH 。它提供了与C、 Fortran 语言的绑定。

Page 22: 并 行 计 算 基 础 知 识

我们可以将 MPI看成一个“库” ,目前使用的消息传递库是 MPICH 1.2 ,共有上百个接口,在 FORTRAN 77和 C语言中可以直接对这些函数进行调用。多个进程通过调用这些函数(类似调用子程序),进行通信;

Page 23: 并 行 计 算 基 础 知 识

Include 文件 C语言应用程序应有 #include “mpi.h” Fortran 语言应用程序应有 #include

‘mpif.h’

Page 24: 并 行 计 算 基 础 知 识

MPI 并行编程模式 单程序多数据流模式( SPMD) 多程序多数据流模式( MPMD)

为了降低使用和维护并行应用软件的复杂度,一般采用 SPMD 模式

Page 25: 并 行 计 算 基 础 知 识

MPI 程序的 SPMD执行模式 一个程序同时启动多份 , 形成多个独立的进程,在不同的处理机上运行,拥有独立的内存空间,进程间通信通过调用

MPI 函数来实现;

Page 26: 并 行 计 算 基 础 知 识

SPMD 模式:单程序多数据流 可执行代码

运行

复制多份并独立执行,

形成多个独立的进程

进程一(内存)

进程二(内存)

进程三(内存)

消息传递(交换数据、同步、规约)协同

Page 27: 并 行 计 算 基 础 知 识

例一进程 0发送一个整数给进程 1;进程 1将该数加 1,传递给进程 2;进程 2再将该数加 1,再传递给进程 3;依次类推,最后,进程 N-1将该数传递给进程0,由进程 1负责广播该数给所有进程,并打印输出。

Page 28: 并 行 计 算 基 础 知 识

进程 1传递信息 进程 3传递信息进程 2传递信息进程 0传递信息

Page 29: 并 行 计 算 基 础 知 识

编译运行命令 mpif77 –o exam exam.f mpirun –np 4 exam 其中, exam.f 指需要编译的源文件,- o 表示生成输出文件, exam 指输出文件名,- np表示进程数。

使用 mpicc和mpif77省略了有关 MPI的路径设置

Page 30: 并 行 计 算 基 础 知 识
Page 31: 并 行 计 算 基 础 知 识

什么可以并行 能否将顺序执行的程序转换成语义等价的、可并行执行的程序,主要取决于程序的结构形式,特别是其中的数据相关性。

Page 32: 并 行 计 算 基 础 知 识

P1: A= B+CP2: D= A×B 其中,变量 A 是导致 P1和 P2发生数据相关的原因。为了保证程序执行的语义正确性,变量 A 必须是先在

P1 中写入后方可从 P2 中读出,即必须先写后读。显然, P1和 P2 不能并行执行。

数据相关

Page 33: 并 行 计 算 基 础 知 识

数据反相关P1: A= B×CP2: C= E+D P1 通过变量 C数据相关于 P2 。为保证语义正确性,必须等 P1 将变量 C 读出后, P2 方可向变量C进行写入操作,即必须先读后写。也不可并行化

Page 34: 并 行 计 算 基 础 知 识

数据输出相关P1: A= B+CP2: A= D×E 为保证语义正确性,必须保证 P1先写入 A ,然后允许 P2再写入 A。

除了上述 3 种相关外,还存在一种特殊情况,即两个程序段的输入变量互为输出变量。此时,两者必须并行执行,方可保证语义的正确性。这就要求硬件机构能保证两者进行同步读写。但若两个处理机各带有局部存储器,则可降低同步要求。

Page 35: 并 行 计 算 基 础 知 识

相关性与可并行化伯恩斯坦准则 I1∩O2= Φ ,即 P1 的输入变量集与 P2 的输出变量集不相交;

I2∩O1= Φ ,即 P2 的输入变量集与 P1 的输出变量集不相交;O1∩O2= Φ ,即 P1和 P2 的输出变量集不相交

可并行处理

Page 36: 并 行 计 算 基 础 知 识

如何将串行程序改为并行 为理解创建一个并行程序中的步骤, 让我们首先定义三个重要的概念 : 任务, 进程和处理器。

Page 37: 并 行 计 算 基 础 知 识

任务 任务是程序要完成的一个工作, 其内容和大小是随意的, 它是并行程序所能处理的并发性最小的单元 ; 即一个任务只能由一个处理器执行, 处理器之间的并发性只能在任务之间开发。

Page 38: 并 行 计 算 基 础 知 识

进程 进程 ( 我们也称为线程 ) 是一个完成任务的实体。一个并行程序由许多合作的进程构成, 每个完成程序中任务的一个子集。 通过某种分配机制, 任务被分配给进程 。 进程完成其任务的方式是通过在机器的物理处理器上执行

Page 39: 并 行 计 算 基 础 知 识

进程与处理器的区别 并行化的观点,:处理器是物理资源, 进程是抽象, 或者虚拟化多处理器的一种方便的方式 : 我们通过进程, 而不是处理器来写并行程序 ; 将进程映射到处理器是下一步。 在一次程序的执行中, 进程数不一定要等于处理器数。 如果进程多, 一个处理器有可能要执行多个进程 ; 如果进程少, 某些处理器则要闲置

Page 40: 并 行 计 算 基 础 知 识

串行程序并行化的几个步骤 从一个串行程序得到一个并行程序的工作由四个步骤构成: 1.    将计算的问题分解成任务 2.   将任务分配给进程 3.  在进程之间组织必要的数据访问, 通信, 和同步。 4.    将进程映射或绑定到处理器

Page 41: 并 行 计 算 基 础 知 识

在以上的几个步骤中,并没有考虑并行的效率问题。 考虑到消息传递的开销是计算开销的 10倍以上,一般来说,如果在应用的一部分中,计算的时间是分钟级的而数据传输的时间是秒级的,那么这一部分可以并行执行。

估计并行的效率

Page 42: 并 行 计 算 基 础 知 识

例二:矩阵相乘C = A B其中 A 和 B 分别是 m k 和 k n 矩阵 ,

C 是m n 矩阵 . 不失一般性 , 假设m = m p, k = k p和 n = n p。

Page 43: 并 行 计 算 基 础 知 识

串行程序double a[N][N],b[N][N],c[N][N];for (i=0; i<N; i++)

for (j=0; j<N; j++)for (k=0; k<N; k++)

c[i][j]+=a[i][k]*b[k][j];

Page 44: 并 行 计 算 基 础 知 识

并行实现 先将矩阵分块

110

110

,,,,,

P

TTP

TT

BBBBAAAA

Page 45: 并 行 计 算 基 础 知 识

将 存放在 中,使数据在处理机中不重复。 矩阵 A 在各自进程中保持不变, B在处理机中每次循环向前移动一个处理机。

1,,0,, , pjCBA jiii 和iP

Page 46: 并 行 计 算 基 础 知 识

110

1

1

0

1

1

0

,,

p

pp

BBB

A

AA

C

CC

Page 47: 并 行 计 算 基 础 知 识

对应于前面所提到的四个步骤,矩阵乘法并行算法可做如下表述: 1 、将问题(矩阵乘法)分成p个任务,即将 C 的求解分成 p块。 2 、每个进程对应一个 C 块的求解。

Page 48: 并 行 计 算 基 础 知 识

组织进程间的通讯。即将 B的各个子块send() 到各个进程。

通过 mpirun 运行 , 将进程映射到处理器上。

Page 49: 并 行 计 算 基 础 知 识

并行描述for i = 0 to p - 1 dol = i+myid mod pCl = A * B, mp1 = myid+1 mod p,

mm1 = myid-1 mod pif i != p- 1, send(B, mm1),

recv(B, mp1)Endfor

Page 50: 并 行 计 算 基 础 知 识

谢谢!