并行计算

1 并行计算机系统结构

大型并行机系统一般可分为6类机器:单指令多数据流SIMD(single instruction multiple data);并行向量处理机PVP(parallel vector processor);对称多处理机SMP(symmetric multiprocessor);大规模并行处理机MPP(massively parallel processor);工作站机群COW(cluster of workstations)和分布共享存储多处理机DSM(distributed shared memory);SIMD计算机多为专用,其余的五种均属于多指令多数据流计算机。

分为3大类:

共享存储多处理机系统、分布存储多处理机系统、机群系统


PVP

这样的系统中包含了少量的高性能专门设计定制的向量处理器VP,每个至少具有1Gflops的处理能力,系统中使用专门设计的高带宽的交叉开关网络将VP连向共享存储模块,存储器可以兆字节每秒的速度向处理器传送数据这样的机器通常不使用高速缓存而使用大量向量寄存器和指令缓冲器。


SMP

SMP(symmetric multiprocessor, 对称多处理机),这种并行计算机结构,多个处理器共享存储器,这种结构在现今的并行服务器中几乎普遍采用。 

SMP系统使用商品微处理器(具有片上和外置高速缓存),它们经由高速总线(或交叉开关)连向共享存储器。主要应用于商务,数据库、数据仓库、在线事务处理系统等。重要的是对称,每个处理器等同访问共享存储器、I/O设备和操作系统服务。正是对称,才能拓展并行性,也正是共享存储,限制系统中的处理器不能太多(一般少于64个),同时总线和交叉开关互连一旦做成也难于拓展。

特性:

  1. 对称性,系统任何处理机均可访问任何存储单元和I/O设备;
  2. 单地址空间,单地址空间有很多好处,如因为只有一个OS和DB副本驻留在共享存储器中,所以OS可以按照负载情况在多处理机上调度进程从而易达到动态负载平衡,同理由于只有一个数据库副本,用户不必担心数据的分配和再分配;
  3. 高速缓存及其一致性,多级高速缓存可支持数据的局部性,一致性可由硬件来增强;
  4. 低通信延迟,处理器之间的通信可用简单的读/写指令来完成(而多计算机系统中处理器间的通信要用多条指令才能完成发送/接受操作);

大多数商用的SMP系统都是基于总线连接的,占用了并行计算机很大的市场,但SMP存在以下的缺点:

  1. 欠可靠,总线、存储器或OS失效会造成系统崩溃
  2. 可观的延迟,虽然SMP比MPP通信延迟要小,但相对处理器速度而言仍相当的可观,一般通行延迟为数百个处理器周期,长者可达数千个指令周期。
  3. 慢速增加的带宽,存储器传输带宽的增长速度跟不上处理器速度和存储器容量增长的步伐;
  4. 不可扩放性,总线是不可扩放的,这就限制了最大处理器数量一般不能超过10,为了增大系统的规模,可改用交叉开关连接或改用CC-NUMA或机群结构;

MPP

MPP (Massively Parallel Processing),意为大规模并行处理系统,这样的系统是由许多松耦合处理单元组成的,要注意的是这里指的是处理单元而不是处理器。每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。在每个单元内都有操作系统和管理数据库的实例复本。这种结构最大的特点在于不共享资源。

MPP一般指超大型(very large scale)计算机系统,它具有如下特性:

  • 处理节点采用商品微处理器
  • 系统中有物理上的分布式存储器
  • 采用高通信带宽和低延迟的互联网络
  • 能扩放至成百上千乃至上万个处理器
  • 它是一种异步的MIMD机器,程序系由多个进程组成,每个都有其私有地址空间,进程采用消息传递。MPP主要应用于科学计算、工程模拟、和信号处理等以计算为主的领域

DSM

分布式共享存储器多处理机,高速缓存目录DIR用于支持分布高速缓存的一致性,DSM和SMP的主要差别是,DSM在物理上有分布在各个节点中的局存,从而形成了共享存储器。对用户而言,系统硬件和软件提供了一个单地址的编程空间。DSM相对于SMP的优越性在于编程容易。


COW

工作站机群,在有些情况下,机群往往是低成本的变形的MPP。COW的重要界线和特征是:

  • COW的每个节点都是一个完整的工作站,这样的节点有时叫做“无头工作站”,一个节点也可以是一台PC或SMP
  • 各节点通过一种低成本的商品网络互连
  • 各节点内总是有本地磁盘,而MPP节点内却没有
  • 节点内的网络接口是松散偶合到I/O总线的,而MPP的网络接口是连到处理节点的存储总线上的,因而可谓是紧耦合式的
  • 一个完整的操作系统驻留在每个节点中,而MPP中只有一个微核,COW的操作系统是工作站UNIX,加上一个附加的软件层,以支持单一系统映像、并行度、通信和负载平衡等。

现今,MPP和COW之间的界线越来越模糊,机群相对于MPP有性价比高的优势,所以在发展可扩放并行计算机方面呼声很高。





2 并行计算机的访存模型

          UMA(uniform memory access) 均匀存储访问模型

主要特点有:

  • 物理存储器被所有处理器均匀共享
  • 所有处理器访问任何存储单元取相同
  • 每台处理器可带有私有高速缓存
  • 外围设备也可以一定形式共享

这种系统由于高度共享资源而称为紧耦合系统,当所有的处理器都能等同地访问所有I/O设备、能同样地运行执行程序时称为对称多处理机;如果只有一台或一组处理器,它能执行操作系统并能操纵I/O,而其余的处理器无I/O能力,只在主处理器的监控之下执行用户代码,这时称为非对称处理机。


APRAM模型中的指令类型

  • 全局读: 将全局存储单元中内容读入局存中
  • 局部操作: 局存中的数据执行操作
  • 全局写: 将局存中的内容写入全局中
  • 同步:同步是计算中的一个逻辑节点,在该点各处理器均需等待别的处理器到达后才能继续执行其局部程序


            NUMA(nonuniform memory access)非均匀存储模型

主要特点:

  • 被共享的存储器在物理上是分布在所有的处理器中的,所以本地存储器的集合就组成了全局地址空间;
  • 处理器访问存储器的时间是不一样的:访问本地存储器LM或群内共享存储器CSM较快,但外地的存储器或全局共享存储器GSM较慢
  • 每台处理器可带私有高速缓存,且外设也可以某种形式共享

        COMA(Cache-Only memory access)  全高速缓存存储模型

主要特点:

  • 各处理器节点中没有存储层次结构,全部高速缓存组成了全局地址空间
  • 利用分布的高速缓存目录进行远程高速缓存的访问
  • COMA中的高速缓存容量一般都大于2级高速缓存容量
  • 使用COMA时,数据开始时可任意分配,因为在运行时它最终会被迁移到要用到它的地方

         CC-NUMA(coherent-cache nonuniform menory access) 高速缓存一致性非均匀存储访问

它实际上是将一些SMP机器作为一个单节点而彼此连接起来所形成的一个较大的系统,主要特点是:

  • 大多数商用CC-NUMA多处理机系统都使用基于目录的高速缓存一致性协议;
  • 它在保留SMP结构易于编程的优点的同时,也改善了常规SMP的可扩展性问题
  • CC-NUMA是一个分布共享存储的DSM多处理机系统
  • 最明显的优点是程序员无需明确地在节点上分配数据,系统的硬件和软件开始时自动在各节点分配数据,运行期间,高速缓存一致性硬件会自动地将数据移至要用到它的地方。总之,CC-NUMA所发明的一些技术在开拓数据局部性和增强系统的可扩放性方面很有效。

NORMA(No-Remote Memory Access)非远程存储模型

在一个分布存储的计算机系统中,如果所有的存储器都是私有的、仅能由其处理器访问就称为NORMA。  每个节点都是由处理器、本地存储器、I/O外设组成的自治计算机。

主要特点是:

  • 所有存储器均是私有的
  • 绝大多数NUMA都不支持远程存储器的访问
  • 在DSM中,DORMA就消失了

















3 并行算法设计基础

并行算法定义和分类

算法是对解决问题的描述,它是一系列步骤的有序并且有限的集合。

并行算法是一些可同时执行的进程的集合,这些进程相互协调和相互作用从而达到给定问题的求解。

数值计算指基于代数关系运算的一类诸如矩阵运算、多项式求值、求解线性方程组等数值计算问题。求解数值计算问题的算法称为数值算法

非数值计算指基于比较关系运算的诸如排序、选择、搜索、匹配等符号处理问题。求解非数值计算问题的算法称为非数值算法

同步算法指算法的诸进程的执行必须相互等待的一类并行算法,诸进程的相互协调。

异步算法指算法的诸进程的执行不必相互等待的一类并行算法。

分布算法指通信链路连接的多个节点,协同完成问题求解的一类并行算法。


如此,在局域网环境下进行的计算为分布计算,工作站机群环境下进行的计算为网络计算,基于internet的计算称为元计算


确定算法指算法的每一步都能明确地指明下一步应该行进的一种算法。

随机算法指算法的每一步随机地从指定范围内选取若干参数,由其来确定算法的下一步走向的一种算法。

并行算法指标

运行时间:运行是时间就是算法运行在给定模型上求解问题所需的时间(主要是输入规模n的函数),通常包含计算时间和通行时间,分别用计算时间步和选路时间步作单位。

处理器数p(n):它是求解问题所用的处理器数目,通常p(n)=n的(1-x)次方,其中0

并行算法的成本  c(n)=t(n)*p(n)


如果求解一个问题的并行算法的成本,在数量接上等于串行算法的最差复杂度,则称此并行算法是成本最优。


总运算量:并行算法所完成的总的操作数量,此时我们并不关心也不必指明算法使用了多少台处理器,当给定了并行系统中的处理器数量时,就可使用Brent定理计算出相应的运行时间。


Brent定理:令W(n)是并行算法A在运行时间T(n)内执行的运算量,则A使用p台处理器可在t(n)=O(W(n)/p+T(n))时间内执行完毕。

W(n)和C(n)密切相关, 对于任意的p,c(n)>w(n),这说明一个算法在运行过程中,不一定都能充分利用有效的处理器去工作。



同步:是在时间上强使各执行进程在某一点必须相互等待;

通信:指在空间上对各并发执行的进程施行数据交换;  通信可使用通行原语来表达。


并行计算模型

计算模型就是硬件和软件之间的一种桥梁,使用它能够设计分析算法,在其上高级语言能被有效地编译且能够用硬件来实现。

在串行计算时,冯若伊曼机就是一个理想的串行计算模型,在该模型上硬件设计者能够设计出各种冯若伊曼机而无须虑及被执行的软件;而软件设计师可以编写各种在此模型上

有效执行的软件而无须虑及硬件的事。

并行计算中,尚未有真正通用的并行计算模型,现在流行的计算模型要么过于简单、抽象(如PRAM); 要么过于专业(互联网络模型和VLS计算模型)。


PRAM模型

pram(parallel random access machine) 即并行随机存取机器,共享存储的SIMD模型,一种抽象的并行计算模型,这种模型中,假设有一个容量无限大的共享存储器;有有限或无限个功能相同的处理器,且其均具有简单的算术运算和逻辑判断功能;任何时刻个处理器均可通过共享存储单元相互交换数据。

根据处理器对共享存储单元同时读、同时写的限制,PRAM模型又可分为:

  • 不允许同时读和同时写(exclusive-Read and exclusive-write)的PRAM,PRAM-EREW;
  • 允许同时读不允许同时写(concurrent-Read and exclusive-Write)的PRAM,PRAM-CREW;
  • 不允许同时读和同时写(exclusive -Read and exclusive-Write )的PRAM,PRAM-EREW;

显然允许同时写是不现实的,于是又对PRAM-CRCW模型作了进一步的约定

  • 只允许所有的处理器写相同的数,简记之CPRAM-CRCW;
  • 只允许最优先的处理器先写,此时称为优先(priority)的PRAM-CRCW,简记之PPRAM-CRCW
  • 允许任意处理器自由写,此时称为任意的PRAM-CRCW,简记之APRAM-CRCW

PRAM的优点:

  • 适合并行算法的表达、分析和比较;
  • 使用简单,诸如处理器间通信、存储管理和进程同步等并行机的低级细节均隐含于模型中;
  • 易于设计算法和稍加修改便可运行在并行机上;

PRAM的缺点:

  • PRAM是同步模型,所有的指令均按锁步方式操作,用户虽感觉不到同步的存在,但它的确是很费时的;
  • 共享单一存储器的假定,显然不适合分布存储的异步的MIMD机器;
  • 假定每个处理器均可在单位时间内访问任何存储单元而略去存取竞争和有限带宽是不现实的;

异步PRAM模型

分相(phase)PRAM模型是一个异步的PRAM模型,简记之为APRAM,系由p个处理器组成,每个处理器都有其局存、局部时钟和局部程序;处理器间的通信经过共享全局存储器;无全局时钟,各处理器异步地独立执行各自的指令;任何时间依赖关系需明确地在处理器程序中加入同步障;一条指令可在非确定但有限的时间内完成。

BSP(Bulk synchronous parallel)模型

字面的含义是大同步模型(相应的,APRAM也叫做“轻量”同步模型)



基本参数:

  • 处理器/存储器模块
  • 实施处理器/存储器模块对间传递消息的选路器
  • 执行以时间间隔L为周期的所谓路障同步器

BSP模型中的计算

在BSP模型中,计算系由一系列用全局同步分开的周期为L的超级步所组成。在各超级步中,每个处理器均执行局部计算,并通过选路器接受和发送消息;然后作一全局检查,确定该超级步是否已由所有的处理器完成:若是,则前进到下一超级步,否则下一个L周期被分配给未完成的超级步。


logP模型

logP模型是一种分布存储的、点到点通信的多处理器模型,其中通信网络由一组参数来描述,但它并不涉及到具体的网络结构,也不假定算法一定要用显示的消息传递操作进行描述。

参数:

  • l(latency)表示在网络中消息从源到目的地所遭到的延迟
  • o(overhead) 表示处理器发送或接受一条消息所需要的额外开销(包含操作系统核心开销和网络软件开销),在此期间,它不能进行其他操作
  • g(gap)处理器可连续进行消息发送或接受的最小时间间隔;
  • p(process)表示处理器/存储器模块数


4 并行算法设计策略

串行算法直接并行化

从问题描述开始设计并行算法

借用已有算法求解新问题





4 并行程序设计

体系结构

并行程序设计体系结构包括:共享内存(PVP、SMP、DSM),数据并行(SIMD),消息传递(MPP、Clusters)。

编程类型渐渐汇聚于两类:用于PVP、SMP 和 DSM 的共享变量的单地址空间模型和用于MPP和机群的消息传递的多地址空间模型,SIMD 模型已退出主流,但对专用领域(如信号、图像处理、多媒体处理等)仍是有用的。

编程模型

隐式并行、数据并行、共享并行、消息并行

编程模型渐渐汇聚于三类标准模型:数据并行(如HPF)、消息传递(如MPI和PVM)和共享变量(如OpenMP)

编程语言

KAP、Fortran90、HPF、X3H5、OpenMP、PVM、MPI


并行程序设计方法

在实际的并行机上设计并行程序时,绝大多数均是采用扩展fortran和c语言的办法。目前有三种扩展的办法:

  1. 库函数法:除了串行语言所包含的库函数外,一组新的支持并行性和交互操作的库函数(如MPI消息传递库)引入到并行程序设计中;
  2. 新语言结构法:采用某些新语言结构法来帮助并行程序设计以支持并行性和交互操作;
  3. 编译制导法:程序设计语言保持不变,但是将称之为编译制导的格式注释引入到并行程序中




你可能感兴趣的:(并行计算)