分布式并行计算-理论

第一章

1.2 单处理机与指令级并行

单处理机主要由中央处理器、存储器以及输入输出系统等组成。因此提高单处理机的速度可以从加快CPU执行速度减少存储延迟改善I/0及网络性能这些方面出发。

加快CPU执行速度:

  • 流水线与超标量:超标量指CPU中设有多条流水线,能同时发射多条指令,即同一时钟周期内发射多条指令。超标量处理器的并行度等于系统中功能单元的个数。
  • 超长指令字:将能够并行执行的指令合在一起分配给处理器,在多个功能单元上同时执行之
  • 向量指令:同一条指令可同时对一组数据(向量)施行相同的操作

减少存储延迟:存储器的性能主要通过存储容量、存储带宽和访存延迟等来衡量。

  • 通过增加访存通路数以及使用交叉存取技术来提高存储带宽
  • 访存延迟主要取决于物理介质的特性
  • 使用高速缓存

改善输入输出以及网络性能:使用DRAM作为磁盘的高速缓存等。

1.3 多核处理器与线程级并行

单核处理器中晶体管数目越大、频率越高(提高CPU工作主频主要受到生产工艺的限制)、电路越复杂,处理器性能越高,但功耗越大。因此将需求转向多核处理器(也称片上多处理器,CMP)。

在工业界,将功能复杂的单一核处理器划分成若干个功能相对简单的多个处理器内核,来在减少额外功耗与降低电路设计复杂度的同时提升处理器的性能。传统单核处理器主要通过提高主频来改善性能,致使功耗问题严重。而在CMP设计中,主要依靠集成多个核来提高性能,而每个核的主频可以相对较低些,从而可降低功效。

1.4 并行计算机体系结构

SISD & SIMD & MIMD

SISD:每个指令部件每次仅译码一条指令,而且在执行时仅为操作部件提供一份数据。

SIDM:是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。

MIMD:多指令流多数据流是用于实现并行性的技术。MIMD计算机具有多个异步和独立工作的处理器。**在任何时钟周期内,不同的处理器可以在不同的数据片段上执行不同的指令,也即是同时执行多个指令流,而这些指令流分别对不同数据流进行操作。**MIMD机器可以是共享存储器或分布式存储器类别。共享存储器机器包括UMA、NUMA、COMA等。分布式存储器机器包括NORAM等。

以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数,之后再一次访问内存,取得第二个操作数,随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。

并行计算机结构模型

以下均为MIMD

PVP(Parallel Vector Processor):并行向量处理机。UMA

在这里插入图片描述

SMP(Symmetric MultiProcessor):对称多处理机。商品微处理器经由高速总线(或交叉开关)连向共享存储器。主要应用于商务领域,如数据库。UMA

在这里插入图片描述

MPP(Massively Parallel Processor):大规模并行处理机。NORMA

在这里插入图片描述

DSM(Distributed Shared Memory):分布式共享存储多处理机。DSM与SMP的区别是,DSM在物理上有分布在各节点中的局存,从而形成了一个共享的存储器。NUMA
在这里插入图片描述

COW(Cluster Of Workstations):工作站机群。COW的每个节点都是一个完整的工作站,各节点通过一种低成本的商品网络互连。各节点内总是有本地磁盘,而MPP节点内却没有;一个完整的操作系统驻留在每个节点中,而MPP中通常只是一个微核。COW的操作系统是工作站UNIX,加上一个附加的软件层,以支持单一系统映像、并行度、通信和负载平衡等。NORMA

在这里插入图片描述

并行计算机访存模型

UMA:均匀存储访问模型。所有处理器访问任何存储单元时间相同。

NUMA:非均匀存储访问模型。被处理器访问存储器时间不一样,访问本地存储器LM或群内共享存储器CSM较快,而访问外地存储器或全局共享存储器GSM较慢。

NORMA:非远程存储访问模型。在一个分布存储的多计算机系统中,如果所有的存储器都是私有的,仅能由其处理器所访问时,就称为NORMA。

COMA(全高速缓存存储访问):由全部高速缓存组成了全局地址空间。数据开始时可任意分配,因为在运行时它最终会被迁移到要用到它的地方。

CC-NUMA(高速缓存一致性非均匀存储访问):多个SMP组合在一起,采用基于目录的高速缓存一致性协议,改善了常规SMP可扩放的问题。网络上的主要通信不是传输数据,而是为高速缓存的无效性所用。

存储墙(Memory Wall)问题

存储器访问能力与处理器计算能力不平衡,造成处理器处于“饥饿”状态。处理器速度每年提高近60%,而存储器访问速度每年仅提高9%,两者的性能差距每年增加50%,致使处理器性能与数据访问带宽及延迟之间的差距越来越大。为突破存储墙问题,必须从存储体系结构出发,改善时延机制,以便提供更高的带宽和更低的延迟。

内存墙

内存墙,指的是内存性能严重限制CPU性能发挥的现象。

第二章

2.1 并行计算机互连网络

静态网络:处理单元间有着固定连接的一类网络,在程序执行期间,这种点到点的连接保持不变

动态网络:用开关单元构成,可按应用程序的要求动态地改变连接组态。包括总线、交叉开关和多级互联网络等

静态互联网络特性一览表P42

2.2 选路方法与开关技术

2.2.1 选路方法

选路:消息从发源地到达目的地所取的走法,即行进的方法。一般可分为最短和非最短法,也可分为确定的和自适应的。

一种最常用确定的最短选路法是维序选路法,它根据通信信道的维来确定消息如何穿越相继的通道。其在二维网孔中就称为X-Y选路法,用于立方网络中时就称为E-立方选路法

2.2.2 开关技术

存储转发(Store and Forward Routing,SF)选路

t c o m m ( S F ) = t s + ( m t w + t h ) l t_{comm}(SF)=t_s+(mt_w+t_h)l tcomm(SF)=ts+(mtw+th)l

切通(Cut-Through Routing)选路

t c o m m ( C T ) = t s + m t w + t h l t_{comm}(CT)=t_s+mt_w+t_hl tcomm(CT)=ts+mtw+thl

以上,通常会忽略 t h t_h th

通信时间汇总一览表

SF选路
通信操作p-环 p × p 二维环绕网孔 \sqrt{p}×\sqrt{p}二维环绕网孔 p ×p 二维环绕网孔p-超立方(p个节点)
一到一传输(上界) t s + ⌊ p / 2 ⌋ m t w t_s+\lfloor p/2\rfloor mt_w ts+p/2mtw t s + 2 ⌊ p / 2 ⌋ m t w t_s+2\lfloor\sqrt{p}/2\rfloor mt_w ts+2p /2mtw t s + m t w log ⁡ p t_s+mt_w\log{p} ts+mtwlogp
一到多播送 ⌈ p / 2 ⌉ ( t s + m t w ) \lceil p/2\rceil(t_s+mt_w) p/2(ts+mtw) 2 ⌈ p / 2 ⌉ ( t s + m t w ) 2\lceil \sqrt{p}/2\rceil(t_s+mt_w) 2p /2(ts+mtw) log ⁡ p ( t s + m t w ) \log{p}(t_s+mt_w) logp(ts+mtw)
多到多播送 ( t s + m t w ) ( p − 1 ) (t_s+mt_w)(p-1) (ts+mtw)(p1) ( t s + m t w ) ( p − 1 ) + ( t s + p m t w ) ( p − 1 ) = 2 t s ( p − 1 ) + m t w ( p − 1 ) (t_s+mt_w)(\sqrt{p}-1)+(t_s+\sqrt{p}mt_w)(\sqrt{p}-1)\\=2t_s(\sqrt{p}-1)+mt_w(p-1) (ts+mtw)(p 1)+(ts+p mtw)(p 1)=2ts(p 1)+mtw(p1) ∑ i = 1 log ⁡ p ( t s + 2 i − 1 m t w ) = t s log ⁡ p + ( p − 1 ) m t w \sum_{i=1}^{\log{p}}(t_s+2^{i-1}mt_w)\\=t_s\log{p}+(p-1)mt_w i=1logp(ts+2i1mtw)=tslogp+(p1)mtw
CT选路
通信操作p-环 p × p 二维环绕网孔 \sqrt{p}×\sqrt{p}二维环绕网孔 p ×p 二维环绕网孔p-超立方
一到多播送 ( t s + m t w ) log ⁡ p (t_s+mt_w)\log{p} (ts+mtw)logp 2 ( t s + m t w ) log ⁡ p = ( t s + m t w ) log ⁡ p 2(t_s+mt_w)\log{\sqrt{p}}\\=(t_s+mt_w)\log{p} 2(ts+mtw)logp =(ts+mtw)logp ( t s + m t w ) log ⁡ p (t_s+mt_w)\log{p} (ts+mtw)logp
多到多播送(同SF选路) ( t s + m t w ) ( p − 1 ) (t_s+mt_w)(p-1) (ts+mtw)(p1) 2 t s ( p − 1 ) + m t w ( p − 1 ) 2t_s(\sqrt{p}-1)+mt_w(p-1) 2ts(p 1)+mtw(p1) = t s log ⁡ p + ( p − 1 ) m t w =t_s\log{p}+(p-1)mt_w =tslogp+(p1)mtw

第三章 典型并行计算机系统介绍

共享存储与分布存储的区别

1、共享存储分为集中共享和分布共享,而分布存储分为分布共享和分布非共享,可见两者相异,又有相交之处(分布共享存储)
2、共享存储支持单地址空间,编程较容易,但集中共享时,随处理器增多,集中存储器容易成为系统瓶颈,这限制了可扩放性
3、分布存储能带来良好可扩放性,采用物理上分布的存储器结构能提供比集中存储器结构更高的总计存储带宽,但可能带来非均匀存储访问和高速缓存一致性问题
以上,采用分布共享存储的DSM可能成为弥补相互缺点的更好选择

3.1 共享存储多处理机系统

SMP是UMA,NUMA是SMP系统的自然推广,而CC-NUMA实际上是将一些SMP作为单节点而彼此连接起来所构成的分布共享存储系统

SMP结构特性:对称性(只有一个OS和DB副本驻留在共享存储器中)、单地址空间、高速缓存及其一致性、低通信延迟、欠可靠、不可扩放性

3.2 分布存储多计算机系统

MPP属于NORMA,CC-NUMA模型的机器算作是可扩放共享存储多处理器(与3.1对比着看)。

MPP公共结构:所有的MPP均使用物理上分布的存储器,且使用分布的I/O也渐渐变多。每个节点有一个或多个处理器和高速缓存P/C、一个局部存储器(M)、有或没有磁盘、网络接口电路NIC

  • 可扩放性:系统能扩展至成千上万个处理器,而存储器和I/O的容量及带宽亦能按比例增加。为此,采用物理上分布的存储器结构能提供比集中存储器结构更高的总计存储带宽。
  • MPP应在不同层次上支持单一系统映像,因为紧耦合式的(MPP内的网络接口是连接到处理节点的存储总线上的)MPP常使用分布式操作系统,所以要在硬件级和操作系统级提供此映像
  • MPP和COW的关键差别是节点间通信,COW使用LAN,而MPP使用高速、专用高带宽、低延迟的互联网络,无疑通信方面优于COW
  • 因为MPP是可扩放系统,所以就要求非常大的总计存储器和I/O设备容量

3.3 分布共享存储计算机系统

这说明共享存储和分布存储是可交叉的。共享存储计算机系统可分为集中共享存储分布共享存储

集中共享存储:多个处理器通过总线、交叉开关或多级互联网络与共享存储器相连,所有处理器访问存储器都有相同的延迟。不过岁处理器数的增加,集中存储器很容易成为系统瓶颈。

分布共享存储:DSM。与消息传递系统相比,共享存储系统支持传统的单地址编程空间。目前在较大规模共享存储系统中,都把共享存储器分成许多模块并分布于各处理机之中(使成为分布共享存储系统)。此外,共享存储系统都采用高速缓存来缓和由共享引起的冲突以及由存储器分布引起的长延迟对性能的影响。DSM系统对于程序设计者来说隐藏了远程通信机制。

  • 存储一致性问题:存储器的分布会引起NUMA,而高速缓存的使用又带来了高速缓存一致性问题
  • DSM系统实现分类
    1. CC-NUMA:采用基于目录的方法维持处理器之间的高速缓存一致性(其决定着系统的可扩放性)。
    2. NCC-NUMA:由编译器或程序员来维护高速缓存一致性
    3. COMA:其优点是在本地共享存储器命中的概率较高,其缺点当不再本节点命中时,需要一种机制来查找被访问单元的当前位置,因此延迟会很大。

3.4 机群系统

机群结构意味着是一个分开的操作系统映像,它和SMP结构驻留在共享存储器中的单一操作系统映像不同(它的操作系统出错将导致全系统崩溃),机群结构一个节点映像失效不会导致全系统崩溃。

COW:从用户、程序员和系统管理员的角度看,COW相当于单一并行系统,感觉不到多个工作站的实际存在;从程序设计模式的角度看,它与MPP一样可采用面向消息传递的SPMD(Single Program Multiple Data)编程方式,即各个工作站均匀性同一个程序,但分别加载不同的数据,从而支持粗粒度的并行应用程序。

SMP、MPP、COW性能比较一览表P113

单一系统映像

是分布式计算的一种模式。使用一个多网络的通用接口,分布式数据库,或者多个服务器,但对用户而言是一个系统。换句话说,该操作系统环境由系统中的所有节点共享。

将众多异构部件或系统作为一个统一的计算资源呈现给用户的方法。

第四章 并行计算机性能评测

时钟频率: f f f,时钟周期长度的导数,单位为MHz

工作负载: W W W,计算操作的数目,单位为MFLOP

速度: R n = W / T n R_n=W/T_n Rn=W/Tn,每秒百万次浮点运算,单位MFLOPS

加速: S n = T 1 / T n S_n=T_1/T_n Sn=T1/Tn,衡量并行机有多快,无量纲

效率: E n = S n / n E_n=S_n/n En=Sn/n,衡量处理机的利用率,无量纲

峰值速度: R p e a k = n R p e a k ′ R_{peak}=nR_{peak}^{'} Rpeak=nRpeak,所有处理器峰值速度之和, R p e a k ′ R_{peak}^{'} Rpeak为一个处理器的峰值速度,单位MFLOPS

利用率: U = R n / R p e a k U=R_n/R_{peak} U=Rn/Rpeak,可达速度与峰值速度之比

通信延迟: t 0 t_0 t0,传送0-字节或单字的时间,可以看作一个字节在被发送时的准备时间,在路上的时间和到达后等待处理的时间,单位 μ s \mu s μs

渐近带宽: r ∞ r_{\infty} r,传送长消息通信速率,传送很长的字节M,总通信延迟为 t t t(此时可以忽略在路上的时间等,时间主要取决于发送M字节所需时间),相除得到渐进带宽,单位MBps

工作负载

所谓工作负载(荷),就是计算操作的数目,通常可用执行时间、所执行的指令数目和所完成的浮点运算数3个物理量来度量它

执行时间:有效计算时间,它不只是CPU时间,还包括访问存储器、磁盘、I/O通道的时间和OS开销等,可以令 W = T e W=T_e W=Te T s e q T_{seq} Tseq

浮点运算数:单位FLOP,与其对应的速度单位为MFLOPS:单独赋值操作、加减乘、比较、数据类型转换等折算成1FLOPS,除法和开平方折算成4FLOPS,正余弦、指数类运算折算成8FLOPS

指令数目:对于任何给定的应用,它所执行的指令条数就可以视为工作负载,单位为百万条指令,预期对应的速度单位为MIPS(M Instructions Per Second)

加速比性能定律

并行系统的加速(比)是指对于一个给定的应用,并行算法(或并行程序)的执行速度相对于串行算法(或串行程序)的执行速度加快了多少倍。
p p p:并行系统中处理器数
W W W:问题规模(计算负载), W s W_s Ws为其中的串行分量, W p W_p Wp为其中的并行分量
f f f:其中串行分量比例 ( W s / W ) (W_s/W) (Ws/W),那么 ( 1 − f ) (1-f) (1f)为其中并行分量比例
S S S:加速比

Amdahl定律:适用于固定负载的加速定律。固定计算负载,比较时间
S = W s + W p W s + W p / p = p p f + 1 − f = p 1 + f ( p − 1 ) S=\frac{W_s+W_p}{W_s+W_p/p}=\frac{p}{pf+1-f}=\frac{p}{1+f(p-1)} S=Ws+Wp/pWs+Wp=pf+1fp=1+f(p1)p
Gustafson定律:适用于可扩放问题的加速定律。固定计算时间,比较工作量
S = W s + p W p W s + W p = f + p ( 1 − f ) S=\frac{W_s+pW_p}{W_s+W_p}=f+p(1-f) S=Ws+WpWs+pWp=f+p(1f)

Sun和Ni定律:存储受限的加速定律。其基本思想是只要存储空间许可,应尽量增大问题规模以产生更好或更精确的解。在这里表达为节点数增加,存储容量增加到原来的p倍,而问题规模W中的并行分量未必就会增加到原来的p倍。因此先求得存储容量增加到原来的p倍时工作负载的大小,比较它们的完成时间
令因子 G ( p ) G(p) G(p)反映存储容量增加到p倍时工作负载的增加量,所以扩大后的工作负载为 W = f W + ( 1 − f ) G ( p ) W W=fW+(1-f)G(p)W W=fW+(1f)G(p)W,则存储受限的加速公式相应为
S = f W + ( 1 − f ) G ( p ) W f W + ( 1 − f ) G ( p ) W / p S=\frac{fW+(1-f)G(p)W}{fW+(1-f)G(p)W/p} S=fW+(1f)G(p)W/pfW+(1f)G(p)W
G ( p ) = 1 G(p)=1 G(p)=1时,它是Amdahl加速定律(由于问题规模固定,即使存储容量增加,工作负载仍保持不变);当 G ( p ) = p G(p)=p G(p)=p时,它是Gustafson加速定律(由于问题规模没有限制,因此存储容量增加到 p p p倍时,问题规模也会增加到原来的 p p p倍)。

可扩放性评测标准

可扩放性最简朴的含义是在确定的应用背景下,计算机系统(或算法或编程等)性能随处理器数目的增加而按比例提高的能力

等效率度量标准

T p = t o i + t e i ⇒ n T p = ∑ p ( t o i + t e i ) = T o + T e S = T e / T p = T e T e / p + T o / p = p 1 + T o / T e E = S / p = 1 1 + T o / T e = 1 1 + T o / W T_p=t_o^i+t_e^i\Rightarrow nT_p=\sum_p{(t_o^i+t_e^i)}=T_o+T_e \\ S=T_e/T_p=\frac{T_e}{T_e/p+T_o/p}=\frac{p}{1+T_o/T_e}\\ E=S/p=\frac{1}{1+T_o/T_e}=\frac{1}{1+T_o/W} Tp=toi+teinTp=p(toi+tei)=To+TeS=Te/Tp=Te/p+To/pTe=1+To/TepE=S/p=1+To/Te1=1+To/W1
为维持效率不变,需要在处理器数p增大的同时相应地增加问题规模W的值才有可能抵消由于p的增大而导致的 T o T_o To增大

等速度度量标准

V = W / T , 平均速度 V ˉ = W / p T Φ ( p , p ′ ) = W / p W ′ / p ′ 当维持平均速度不变时,有 Φ ( p , p ′ ) = T T ′ V=W/T,平均速度\bar{V}=W/pT\\ \Phi(p,p')=\frac{W/p}{W'/p'}\\ 当维持平均速度不变时,有\Phi(p,p')=\frac{T}{T'} V=W/T,平均速度Vˉ=W/pTΦ(p,p)=W/pW/p当维持平均速度不变时,有Φ(p,p)=TT

其比值处于0到1之间,越大可扩放性越好。加速比的定义是保持问题规模不变,标志并行处理相对于串行处理所获得的性能增加;而可扩放性定义是保持平均速度不变,标志从小规模系统到大规模系统所引起的性能衰减

平均延时度量标准

定义 T i T_i Ti P i P_i Pi的执行时间,平均延时为
L ˉ ( W , p ) = ∑ p ( T p a r a − T i + L i ) / p = T p a r a − T s e q / p \bar{L}(W,p)=\sum_p(T_{para}-T_i+L_i)/p=T_{para}-T_{seq}/p Lˉ(W,p)=p(TparaTi+Li)/p=TparaTseq/p

平均延时可扩放性度量标准为,
Φ ( E , p , p ′ ) = L ˉ ( W , p ) L ˉ ( W ′ , p ′ ) E = S / p = T s e q / p T p a r a ,维持 E 不变 Φ ( E , p , p ′ ) = T s e q / p E − T s e q / p T s e q ′ / p ′ E − T s e q ′ / p ′ = W / p W ′ / p ′ \begin{split} \Phi(E,p,p')&=\frac{\bar{L}(W,p)}{\bar{L}(W',p')}\\ E=S/p&=T_{seq}/pT_{para},维持E不变\\ \Phi(E,p,p')&=\frac{T_{seq}/pE-T_{seq}/p}{T_{seq}'/p'E-T_{seq}'/p'}=\frac{W/p}{W'/p'} \end{split} Φ(E,p,p)E=S/pΦ(E,p,p)=Lˉ(W,p)Lˉ(W,p)=Tseq/pTpara,维持E不变=Tseq/pETseq/pTseq/pETseq/p=W/pW/p

该值介于0到1之间,越大可扩放性越好。

第五章 并行算法与并行计算模型

任何的并行算法都是基于某一特定的并行计算模型的,而并行计算模型则是从各种具体的并行机中抽象出来的,它能在一定程度上反映具体并行机的属性,又可使算法不再局限于某一种具体的并行机。

同步和异步

同步和异步关注的是消息通信机制。同步,就是调用某个东西时,调用方得等待这个调用返回结果才能继续往后执行。异步和同步相反,调用方不会等待得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状态来通知调用者,或者通过回掉函数来处理这个调用

在以下介绍的模型中,只有PRAM是真正意义上的同步模型,其余模型中所谓的“同步”均是通过使用某一种机制(比如同步障和超级步)来达到的粗粒度上的同步

5.2 并行计算模型

PRAM(Parallel Random Access Memory)模型——共享存储的SIMD同步模型

PRAM(Parallel Random Access Machine,并行随机存取机器),也称之为共享存储的SIMD模型。其假定存在着一个容量无限大的共享存储器;有有限或无限个功能相同的处理器,且其均具有简单地算数运算和逻辑判断功能;在任何时刻各处理器均可通过共享存储单元相互交换数据。PRAM模型可分为:

  • 不允许同时读和写的PRAM模型,简记之为PRAM-EREW
  • 允许同时读不允许同时写的PRAM模型,简记之为PRAM-CREW
  • 允许同时读和写的PRAM模型,简记之为PRAM-CRCW

优缺点:特别适合于并行算法的表达、分析和比较,使用简单。但PRAM是一个同步模型,就意味着所有的指令均按锁步方式操作,用户虽感觉不到同步的存在,但它的确是很费时间的;共享单一存储器的假定,显然不适合与分布存储的异步的MIMD机器;假定每个处

异步PRAM模型

分相PRAM简记为APRAM,是一个异步的PRAM模型,处理器间的通信经过共享全局存储器。在APRAM中,计算由一系列用同步障分开的全局相所组成。在各全局相内,每个处理器异步地运行其局部程序;每个局部程序中的最后一条指令是一条同步障指令;各处理器均可异步地读取和写入全局存储器,但在同一相内不允许两个处理器访问同一单元。

APRAM模型中的四类指令有:全局度、全局写、局部操作和同步

t p h t_{ph} tph为全局相内各处理器指令执行时间最长者, B B B为同步障时间,整个程序运行时间可表示为: T = ∑ t p h + B × 同步障次数 T=\sum{t_{ph}}+B×同步障次数 T=tph+B×同步障次数

BSP(Bulk Synchronous Parallel)模型——分布存储的MIMD模型

字面意思是“大”同步模型(APRAM算是“轻量”同步模型)。其是一个分布存储的MIMD计算模型,以下述三个参数来描述分布存储的多计算机模型:

  • 处理器数p
  • 选路器(用于施行处理器/存储器模块对之间点到点传递消息)吞吐率g,亦称带宽因子
  • 全局同步之间的时间间隔L

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

特点:它将处理器和选路器分开,强调了计算任务和通信任务的分开,而选路器仅施行点到点的消息传递,不提供组合、复制或广播等功能

LogP模型

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

  • L(Latency)网络中消息从源到目的地所产生的延迟
  • o(Overhead)处理器发送或接收一条消息所需的额外开销
  • g(Gap)处理器可连续进行消息发送或接收的最小时间间隔
  • p(Processor)处理器/存储器模块数

其使用无竞争的通信模式。

对BSP和LogP的评注

BSP使用的是整体大同步,但延迟通信意味着所有的进程均必须等待最慢者。一种改进的方法是采用子集同步,如果子集小到只包含成对的发/收者,则它就变成了异步的个体同步,这就是LogP模型了。也就是说,如果BSP考虑个体通信所造成的开销而去掉路障同步就变成了LogP模型。

路障同步对共享存储结构是不太费时的,而对分布存储结构,主要是目前低层软件绝大多数都不支持访问相应的硬件,所以比较昂贵。

直观上讲,BSP为算法和程序提供了更多的方便,而LogP却提供了较好的对资源的控制

并行计算模型综合比较一览表P160

层次存储模型

存储系统是分层的,所以在并行计算模型中将存储系统分层考虑是十分必要的。

分层并行计算模型——一览表P166

并行计算模型可分为并行算法设计模型(3要素:机器参数、执行行为、成本函数,设计方法有划分、分治、流水线和平衡树)、并行程序设计模型(MPI、OpenMP等)和并行程序执行模型(使用执行时间、加速和效率、可扩展性等指标来衡量程序性能)

看书吧,有点多

第六章 并行算法基本设计策略

  • 串行算法直接并行化
  • 从问题描述开始设计并行算法
  • 借用已有算法求解新问题:寻求问题解法的共同点

第七章 并行算法常用设计技术

划分设计技术

将给定的问题劈成p个独立的几乎等尺寸的子问题,用p台处理器并行求解诸子问题

  • 均匀划分
  • 方根划分
  • 对数划分
  • 功能划分

与排序有关

分治设计技术

分治策略思想是将一个大而复杂的问题分解成若干特性相同的子问题分而治之,其很自然地导致递归。并行分治法分为三步:

  1. 将输入划分成若干个规模近乎相等的子问题
  2. 同时递归地求解各个子问题
  3. 归并各子问题的解成为原问题的解

双调归并算法、凸包问题

平衡树设计技术

平衡树方法是将输入元素作为叶节点构建一颗平衡二叉树,然后自叶向根往返遍历。此法成功的部分原因是在树中能快速地存取所需要的信息。这种方法对数据的播送、压缩、抽取和前缀计算等甚为有效。

求最大值、求前缀和

倍增设计技术

又称指针跳跃技术,特别适合处理以链表或有向有根树之类表示的数据结构。每当递归调用时,所要处理的数据之间的距离将逐步加倍,经过k步后就可完成距离为 2 k 2^k 2k的所有数据的计算。比如位序问题。

表序问题、求森林的根

流水线设计技术

其在VLSI(Very Large Scale Integration,超大规模集成电路)并行计算中表现尤为突出。其基本思想是将一个计算任务t分成一系列子任务 t 1 , t 2 , . . . , t m t_1,t_2,...,t_m t1,t2,...,tm,使得一旦 t 1 t_1 t1完成,后继的子任务就可以立即开始,并以同样的速率进行计算。

我想的是可以让不同处理器负责不同功能(或不同部位的计算),在运行过程中,每一时刻各处理器都在完成不同子任务上不同计算部分的计算。

一维脉动阵列上DFT和卷积的计算

第八章 并行算法一般设计过程

并行算法的设计过程可分为四个阶段——PCAM:任务划分(Partitioning)、通信(Communication)、任务组合(Agglomeration)和处理器映射(Mapping)

划分

所谓划分,就是使用与域分解或功能分解的办法将元计算问题分割成一些小的计算任务,以充分揭示并行执行的机会。其以充分开拓算法的并发性可扩放性为目的。

域分解:

也称数据划分,所要划分的对象是数据

功能分解:

也称计算划分,关注点在被执行的计算上

通信

分为局部/全局通信、结构化/非结构化通信、静态/动态通信和同步/异步通信

  • 全局通信可能导致过多的通信从而限制了并行执行的机会,分治法可以将全局通信化为局部通信
  • 在同步通信中,通信中的双发均知道何时将要产生通信操作。在异步通信中,接受者要明确地(显示地)从发送者请求数据,消息传递式通信方式属于异步通信
  • 在静态的、结构化通信中,一个任务的通信伙伴形成一个规则的模式(如树、网格等);而非结构化、动态通信则不然,模式不规整且又随时间变化

组合

组合将之前的抽象转到具体,即重新考察在划分和通信阶段所作的抉择,力图得到一个在某一类并行机上能有效执行的并行算法

  • 组合的目的是通过合并小尺寸的任务来减少任务数,提高效率和减少通信成本,但也要保持足够的灵活性和降低软件工程代价。用增加计算和通信的粒度的办法可减少通信成本
  • 大量细粒度的任务有可能增加通信代价和任务创建代价。表面-容积效应表明:一个任务的通信需求比例于它所操作的子域的表面积,而计算需求却比例于子域的容积。增加粒度的最好办法是在所有维上组合任务。对通信需求的分析揭示了一组任务不能同时执行时(此时没必要将划分任务来并行),组合总是有益的。

映射

映射用于指定每个任务要到哪里去执行。映射的主要目的是减少算法总的执行时间。其策略有二:一是把哪些能够并发执行的任务放到不同的处理器上以增强并行度;二是把那些需频繁通信的任务置于同一个处理器上以提高局部性

  1. 对于复杂的域分解算法,每个任务的工作量也许不一样,通信也可能是非结构化的,此时采用负载平衡算法——将划分阶段产生的细粒度任务组合成每一个处理器一个粗粒度的任务
    • 递归对剖法需全局意识,性能好但代价高
    • 局部算法代价小,但当负载变化大时调整很慢
    • 概率方法代价地,可扩放性好,但通信代价坑你较大,只适合于任务数远多于处理器数的情况
    • 循环映射技术实际是概率映射的一种形式
  2. 在基于功能分解的算法中,常常会产生一些由短暂任务组成的计算,他们只在执行的开始与结束时需与别的任务协调,此时可使用任务调度算法来分配任务给那些可能处于空闲状态的处理器
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值