970 likes | 1.12k Views
并行算法设计. www.ict.ac.cn ; www.ncic.ac.cn. 主要内容. 基本知识及现状 并行计算性能评测 并行算法的一般设计方法 并行算法的基本设计技术 并行算法的一般设计过程 例子. 现代计算机的共同特点 :并行性. 现代计算机的共同特点 :并行性. 并行 : 古老的思想 !.
E N D
并行算法设计 www.ict.ac.cn; www.ncic.ac.cn
主要内容 • 基本知识及现状 • 并行计算性能评测 • 并行算法的一般设计方法 • 并行算法的基本设计技术 • 并行算法的一般设计过程 • 例子
并行:古老的思想! • “... 并行计算并不是什么新的思想,只是将它扩展应用于计算机而已. 作者也不认为这种扩展应用会存在什么无法克服的困难. 但也不要期待有效的并行编程方法与技术能够在一夜之间诞生. 期间还需要有许多的工作和实验要做. 毕竟, 今天的编程技术(串行)是若干年来艰苦的探索才取得的. 现在编程工作似乎成了一种令人单调乏味的工作,事实上,并行编程的出现将会使重新恢复编程工作者们的探索精神 ...” (Gill, S. (1958), “Parallel Programming,” The Computer Journal, vol. 1, April, pp. 2-10.) Parallel Programming with MPI by Peter Pacheco(2000)
综述——为什么要做并行计算 • 从系统的角度:集成系统资源,以满足不断增长的对性能和功能的要求 • 从应用的角度:适当分解应用,以实现更大规模或更细致的计算
并行计算的功能? • 降低单个问题求解的时间. • 增加问题求解规模. • 提高吞吐率(多机同时执行多个串行程序).
并行计算? 分而治之! 资料来源: Tim MattsonIntel Co. Com. Science Lab. Rudolf EigenmannPurdue Uni. School of Elec. and Comp. Eng.
并行计算现状(硬件) 共享内存SMP并行计算机 • 对称多处理器或共享内存处理器 • 多个处理器通过系统总线或者交叉开关共享一个或者多个内存模块 • 优点:使用简单,维护方便 • 缺点:受系统总线带宽限制,只能支持少量处理器(十几个) • 并行编程方式:通常OpenMP,也可用消息传递(PVM/MPI)及HPF • 代表机型:SGI PowerChanlenge;SUN E10000等
并行计算现状(硬件) • 分布内存MPP型计算机 • Massively Paralleled Processors的简称 • 指由大量具有局部内存的计算节点通过高速系统网络连接而成的并行处理系统 • MPP系统的系统网络通常具有某种拓扑结构(Tree,Mesh,Torus,Hypercuber)
并行计算现状(硬件) • DSM型并行计算机 • 分布共享内:Distributed Shared Memory • 多个物理上具有独立内存的处理单元,通过高速网络连接在一起 • 逻辑上作为共享内存并行机使用 • 不同处理单元间内存的共享通过特殊的硬件/软件实现 • 具有比SMP型计算机更好的可扩展性(超过100个CPU) • 代表机型:SGI Origina 2000/3000
并行计算现状(硬件) • SMP/DSM机群 • 多台SMP型/DSM型并行机通过互联网络连接而成 • 目前国内外最高性能的并行机大多是这种结构
并行计算现状(硬件) • 微机/工作站机群 • 微机机群(PC cluster,又称Beowulf Cluster),工作站机群(NOW, Network of Workstations):将联网的多台微机/工作站组织诚意台并行机。 • 适用于中等规模的并行系统,(数百个处理器) • 根据机群中使用的机型分为同构型和议购型两种 • 根据使用方式可分为专用型和兼用型,前者指专门用于并行计算。 • 价格便宜、配置灵活,但规模及并行效率收网络设备的制约,配以适当的系统工具可以达到MPP的以适当的系统工具可以达到MPP的使用效果
并行计算现状(软件) • : “并行软件开发远远落后于并行系统体系结构的发展.” • : “与串行软件相比,并行软件数量少,功能原始.” ----悲观者
并行计算现状 • :编程环境 • 落后的并行编译器,调试器 vs.通用先进的串行编程环境. • 自动并行编译器远远满足不了程序并行化的要求. • :算法 • 并行模型的多样化 vs. 串行编程中的唯一模型:冯.诺依曼模型 • 对串行机而言,解法 = 唯一串行算法+计算程序(通用) • 对并行机而言,解法 = 某种并行算法+有针对性的计算程序(很难通用) • :人 • 稀少而初级的并行编程人员 vs. 成熟而经验丰富的串行程序员
并行计算现状 • : “并行编程正处理蓬勃发展时期,机遇与挑战并存.” ----乐观者
并行计算现状(并行编程模式) • 自动并行与手工并行 • 在SMP/DSM并行机上编译系统通常具有一定的对用户程序进行自动并行化的能力但需人工干预(制导语句,命令行选项),针对循环(细粒度)并行 • 分布式内存并行机上不具备,需人工编写并行程序 • 并行算法的设计和并行程序的编制成为大规模并行机应用的主要障碍。
并行计算现状(并行编程模式) • OpenMP:串行程序的循环语句前插入特定的制导语句,告知编译系统一些有助于对其进行并行的信息,以及/或是强制编译系统按照指定的方式将其并行化 • 主要是SMP/DSM,某些MPP也开始发展 • 结合编译系统的自动并行化功能使用 • 某些自动化工具,可对程序结构及数据流分析,自动插入适当的OpenMP语句 • 优点:简单,不需对原算法/程序作大的改动,缺点:只适合某些机型,且可扩展性不如消息传递 • 对某些具有强数据相关的过程需改变计算顺序,或修改算法
并行计算现状(并行编程模式) • DSM编程模式 • 建立在某种内存协议之上,通过软件或者软硬件结合的方式实现处理器间内存的共享 • 通过要求DSM并行程序中对内存的读写遵循一定的要求来减小维护内存一致性的开销
并行计算现状(并行编程模式) • 高性能FORTRAN(HPF) • 基于数据并行的编程语言,用户通过指导语句指示编译系统将数据分布到各处理器上,并根据分布情况生成并行程序,针对Fortran90/95 • 适合于SMP/DSM/MPP /Cluster系统 • 优点:编程简单,串并行程序一致 • 缺点:并行过程对用户透明度不高,性能编译系统和用户对编译系统的了解程度;不同的编译器需做不通的优化,影响移植性
并行计算现状(并行编程模式) • 消息传递编程模式 • 并行程序由一组独立的进程组成,相互通过发送消息实现数据交换 • 并行应用程序开发的最底层编程方式之一,很多其他并行开发语言/工具将程序转化成消息传递类型实现。 • 常用的平台:PVM(Parallel Virtue Machine)和MPI(Message Passing Interface) • 优点:通用性好,用PVM和MPI编写的程序可用于任何并行机;缺点:编制、调试困难,有时需对程序算法做大的改动
并行计算现状(并行编程模式) • MPI+OpenMP • 用于SMP组成的机群系统,节点间一消息传递方式,节点内不同处理器之间通过共享内存并行 • 可以充分利用计算资源
并行算法的概念 • 并行算法:是一些可同时执行的诸进程的集合,这些进程相互作用和协调动作从而达到给定问题的求解。 • 并行性条件 数据相关性:流相关、反相关、输出相关 • 相关性判别条件 输入集合I1,I2, 输出集合U1,U2, I1ΛU2=Φ; I2ΛU1= Φ; U1ΛU2= Φ
并行算法的分类 • 数值并行算法:数值计算 • 非数值并行算法:符号运算 • 同步并行算法:向量算法、SIMD、MIMD同步 • 异步并行算法:不需相互等待 • 独立并行算法:进程间完全独立 • 细粒度并行算法:基于向量和循环系级并行 • 中粒度并行算法:较大的循环级并行 • 大粒度并行算法:任务级并行(区域分解)
并行编程标准 • 多线程库标准 • Win32 API. • POSIX threads. • 编译制导标准 • OpenMP 可移植共享存储并行编程标准. • 消息传递库标准 • MPI • PVM
并行算法的发展 • 基于向量运算的并行算法设计阶段 • 基于多向量处理机的并行算法设计阶段 • SIMD类并行机上的算法设计阶段 • MIMD类并行机上的并行算法设计阶段 • 现代并行算法设计——以MIMD为主,要求可扩展性、可移植性
并行软件程序员的工作 • 指令层,非常细的粒度 • 数据层,细粒度 • 控制层,中粒度 • 任务层,大粒度 前两层大都由硬件和编译器负责处理,程序员通常处理后两层的并行
并行计算性能评测 • 机器的峰值速度 • 用户能得到的实际速度 Benchmark top500 LINPACK www.top500.org • 加速比、效率 • 可扩展性:体系结构、软件、算法 • 性能依赖因素: 算法设计:并行性、计算量 程序设计:体系结构特点的利用(通信、存储、cache)、负载平衡、 并行粒度
并行计算性能评测 • 加速比性能定律p/logp <=s <=p • Amdahl定律:负载不变,减少时间 s=(f+(1-f))/(f+(1-f)/p) s--->1/f • Gustafson定律:时间不变,提高规模(精度) S=f+p(1-f)=p+f(1-p)=p-f(p-1) • Sun和Ni定律:存储受限的加速定律 S=(f+(1-f)G(p))/(f+(1-f)G(p)/p) G(p)=1 :Amdahl;G(p)=p,Gustafson
并行计算性能评测 • 可扩放性评测标准(目的) • 确定某类问题用哪种并行算法与哪种并行体系结构结合,可以有效地利用大量处理器; • 运行于某种体系结构的并行机上的某种算法,根据在小规模机器上的运行性能,预测在大规模机器上的性能 • 对固定的问题规模,确定最有的处理机数和加速比 • 指导改进算法、体系结构,以利用可扩充的大量处理器
并行计算性能评测 可扩放性评测标准: • 等效率度量标准:随着系统规模的增加,测量增加多少运算量会保持效率不变。E=s/p • 等速度度量标准:系统规模增加时,若保持速度不变,每个处理器增加浮点操作的量V=Wp/pTp • 等计算时间/通信开销比率度量标准:系统规模增加时,保持计/通比不变所需要增加的问题规模。 计算时间/通信开销比率:并行计算时间与系统开销之比。
并行计算性能评测 • 基准测试程序:测试计算机系统的性能 • 综合型 • 核心型 • 数学库 • 应用型 • 并行型
并行计算模型 • 什么是并行计算模型? 将并行计算机的基本特征抽象出来,形成一个抽象的计算模型,作为并行算法分析、设计、性能预测的基础。 用户 • 编程模型 • 计算模型 • 体系结构模型 • 机器模型 系统
并行计算模型 • PRAM模型(Parallel Random Access MAchine),并行速记存取机器,也叫共享存储的SIMD模型,一种抽象的并行计算模型 • 容量无限大的共享存储器 • 有限/无限个功能相同的处理器,具有简单的算术运算和逻辑判断功能; • 任何时刻各处理器均可以通过共享内存交换数据
并行计算模型 • PRAM模型: • 优点:适合于并行算法的表达,分析和比较;使用简单处理器间通信、存储管理和进程同步等细节均隐含于模型中;易于设计算法,且稍加修改即可运行于不同的处理机 • 缺点:同步模型,不能反映现实中许多系统的异步性;假设每个处理器可在单位时间访问共享存储器的任一单元,忽略了存取竞争和有限带宽等是不现实的;假设处理机有限或无限,对并行任务的增大不加限制。
并行计算模型 • BSP(Bulk Synchronous Parallel)模型 • 处理器/存储器模块,(简称处理器)p • 处理器间点对点消息传递的选路器,g • 执行以时间间隔L为周期的路障同步器L • 计算由一系列用全局同步分开的周期为L的超步(Superstep)组成。在各步中,各处理器均执行局部计算,并通过选路器接收和发送信息;然后做全局检查,确定该步是否已由所有处理器完成:是进入下一超步;否则,下一个L周期分配给为完成的超步。
并行计算模型 • BSP模型特点: • 处理器与选路器分开,选路器只有点对点的消息传递 • 路障方式实现的同步在粗粒度,提供了执行紧耦合同步式算法的有效方式 • 假定局部操作在一个时间步完成,每一超步中,每一处理器至多传送或接收有限条信息 • 每个PRAM模型所设计的算法,均可在每个BSP处理器上模拟一些PRAM处理器的方法实现。
并行计算模型 • logP模型:分布存储的,点到点通信的多处理机模型,通信网络由一组参数来描述,不涉及具体的网络结构,也不假定算法一定用显示的消息传递操作描述。 • L(Latency):网络中消息从源到目的地所遭到的延迟。 • O(Overhead):发送/接收一条消息所需的额外开销。 • G(Gap):处理器可以连续进行消息发送/接收的最小时间间隔。处理器通信带宽的倒数 • P(Processor):处理器/存储器模块数。 L,g:反映网络的容量。L,o,g均可表示为处理器周期的整数倍
并行计算模型 • logP模型的特点 • 表述了分布存储并行机的性能瓶颈。 • 隐藏了网络的拓扑结构 • 无需说明编程风格或通信协议,可用于共享存储、消息传递和数据并行。 • 如果g=0;L=0;o=0, logP等同于PRAM,同时也是BSP的改进和细化
并行计算模型 • C3模型:(Computation,Communication,Congestion) • p处理器数,l信包的长度,s执行发送的建立时间;h表示延迟 • 与体系结构无关的粗粒度并行计算模型,旨在反映计算复杂度,通信模式和通信期间潜在的拥挤等因素对粗粒度网络算法的影响 • 考虑了网络链路拥挤和处理器拥挤对并行算法的影响
并行计算模型 • L:通信延迟时间 • o:CPU准备发送或接收开销 • g:CPU连续发送或接收的最小时间间隔,倒数为处理机的通信带宽 • P:处理机个数
并行计算模型 • BSP和LogP的相互比较: • 本质等价,可互相模拟,BSP模拟LogP进行的计算,慢常数倍,反之慢对数倍 • BSP为算法和程序提供了更多的方便,LogP提供了较好的机器资源的控制 • BSP在结构化编程风格方面的优点大于精确度方面的损失
PRAM APRAM BSP LogP C3 体系结构 SIMD-SM MIMD-SM MIMD-DM MIMD-DM MIMD-DM 计算模式 同步计算 异步计算 异步计算 异步计算 异步计算 同步方式 自动同步 路障同步 路障同步 隐式同步 路障同步 模型参数 1 (单位时间步) d,B d:读/写时间 B:同步时间 P,g,l P:处理器数 G:带宽因子 l:同步间隔 L,o,g,p L通信延迟 P:处理器数 o:额外开销 g:带宽因子 L,s,h L:信包长度 S:发送建立时间 H:通信延迟 计算粒度 细/中粒度 中/大粒度 中/大粒度 中/大粒度 大粒度 通信方式 读/写 共享变量 读/写 共享变量 发送/接收 消息 发送/接收 消息 发送/接收 消息 编程地质空间 全局地址空间 单一地址空间 单地址/多地址空间 单地址/多地址空间 多地址空间 并行计算模型
并行化方法 • 分而治之 • 模型并行、算法并行、程序并行 • 自然并行:数据并行、功能分割 • 任务主从型、SPMD型、管道型(流水线)、二叉树型(分解与递归)
分而治之 Y=(A+B(C+DEF))+G 6 Y=(A+G)+B(C+DEF) 5 Y=(A+G+BC)+BD*EF 3
并行化方法 C=A*B P1 P2 P3 P4 = *
并行化方法 红黑格法 P1 mem1 communication mem2 P2
0 0 0 0 4 1 hot-spot 0 2 4 6 2 3 1 3 5 7 4 5 6 7 0 2 4 6 并行化方法 • 并行二叉树技术:解决通信瓶颈问题,通信复杂度O(P)下降到O(log P)
并行化方法 • 并行流水线技术:解决串行算法中不可避免的数据相关性,例如Gauss-Seidel迭代、双曲型方程中的上下游流场数据依赖问题等
并行化方法—物理建模 Flight_dynamics control atmosphere Tail body Wing Wing Rudder Input_data