理论背景
文章目录
1. PRAM
与在特定的并行体系结构上实现一个复杂的算法相比,有时候退一步,使用一个理论计算机模型就很有益处,一种最流行的模型就是并行随机访问机器模型 PRAM。PRAM就是可以看作一个理想化的共享内存体系结构,而不考虑真实计算机系统的许多特质,如内存访问时长、同步开销、缓存等。
系统包含n个独立的处理器Pi,i=0…,n-1,以锁定步骤方式操作。每一个步骤中,每个处理器分三个阶段执行一个指令周期;
- 读阶段:每个处理器都自发的从各自的共享内存单元中读取单条数据,保存到本地寄存器。
- 计算阶段:每个处理器针对他的本地数据执行一个基本操作,将结果存储在寄存器中。
- 写阶段:每个处理器并发地写一条数据到共享内存单元
2. PRAM变体
几种不同类型的PRAM变体的区别在于读/写共享内存中数据的方式:只允许独占方式,还是允许并发方式。
四种可能的组合:ER(独占式读)、CR(并发式读)、EW(独占式写)、CW(并发式写)。
- 独占式读独占式写(EREW):任何一个周期内,不允许两个处理器在相同的共享内存单元上读或写;
- 并发式读独占式写(CREW):多个处理器可以并发地从相同的共享内存单元读数据,但是不允许写数据
- 并发式读并发式写(CRCW):读和写操作都可以在相同的共享内存单元上并发,但是并发写时,有四种处理方法。
- 优先CW:处理器分配了不同的优先级,优先级最高的处理器成功写入其值。
- 任意CW:随机选中的一个处理器成功写入其值。
- 共同CW:如果些值都相等,则写入共同值;否则,该内存的位置不变。
- 组合CW:通过一种关联二进制运算,比如求和,求积,最小值或者逻辑等,把要写入的值组成为一个单独的值。
显然,CRCW PRAM是最强大的实体,而EREW反之。
3. PRAM上稀疏数组的压缩算法
假设一个一维数组A,其中大部分元素为零,现在基于并行前缀和方法,使用 p = n / l o g 2 ( n ) p=n/log_2(n) p=n/log2(n)个处理器去构造一个开销优化的PRAM算法。方法如下:
- 生成一个临时数组(tmp),如果A[i]≠0,则tmp[i]=1,否则tmp[i]=0。然后我们在tmp上执行并行前缀求和计算。对于数组A中的一个非零元,现在tmp数组中存储的值对应数组V中元素的目标地址。
- 使用并行前缀求和计算得到的地址列表,我们把数组A的非零元素写入V,同样的方式对应的坐标写入。
4. 网络拓扑
高性能分布式内存体系结构中的互联网代表性实现方式式交换网络,允许节点之间能快速地点到点通信。对于决定并行计算机体系结构的可扩展性和性能而言,特定的网络拓扑是一个关键因素。
把网络表示为一个连通图,其中,图的顶点代表节点,图的边表示通信链路。图可以分为直接网络和间接网络。在直接网络中,所有定点关联到一个处理器,也就是说,处理器之间都有直接的连接。相反,间接网络中,也包含仅用于路由的中间节点。
- 度:网络的度,指的是所有节点中邻居数目的的最大值。
- 对分宽度:一个网络的对分宽带,指的是一个边集合的最小数目,在这些网络中移除后,网络分裂成为尺寸相等的两个不连通的部分。
- 直径:网络的直径,指任意两节点之间全部最短路径中的最大值。
- 常数度:网络的度应该是个常数。
- 小直径:为了支持任意进程对之间的高效通信,直径需要最小化。
- 高对分宽度:对分宽度代表的是一个网络的潜在瓶颈,隐含表示系统的内部带宽。
常见的拓扑结构有:线性排列、2D网面、2D环面、3D网面、胖树、超立方体网络等;
如果想进一步减小网络直径,可以采用基于树的结构的二叉树拓扑,而二叉树拓扑的缺点又是其对分宽度极低,其应对方法式在靠近树结构层次的顶部引入更多的链接,形成胖树网络拓扑,即顶部层次中的链接比靠经底部层次中的链接更胖。胖树的一个变体是超树网络
5. Amdahl定律和Gustafson定律
Amdahl定律:
S
(
p
)
=
T
(
1
)
T
(
p
)
≤
T
s
e
r
+
T
p
a
r
T
s
e
r
+
T
p
a
r
p
S(p)=\frac{T(1)}{T(p)}\leq\frac{T_{ser}+T_{par}}{T_{ser}+\frac{T_{par}}{p}}
S(p)=T(p)T(1)≤Tser+pTparTser+Tpar
其中,Tser 表示不能从并行化中获益的程序部分,可以认为这部分程序串行的;而Tpar 表示能够从并行化中获益的程序部分,p表示处理器的数量。S表示加速比上界;
或者用
f
f
f 表示Tser 相对于T1 的比例来表示公式:
S
(
p
)
=
T
(
1
)
T
(
p
)
≤
T
s
e
r
+
T
p
a
r
T
s
e
r
+
T
p
a
r
p
=
1
f
+
(
1
−
f
)
p
S(p)=\frac{T(1)}{T(p)}\leq\frac{T_{ser}+T_{par}}{T_{ser}+\frac{T_{par}}{p}} =\frac{1}{f+\frac{(1-f)}{p}}
S(p)=T(p)T(1)≤Tser+pTparTser+Tpar=f+p(1−f)1
而Amdahl定律一个熟知的限制是,它只适用于问题规模为常数,处理器数目变化的情况(强可扩展性)。而对于弱可扩展性,则需要使用Gustafson定律。
Gustafson定律:
S
α
β
(
p
)
=
T
α
β
(
1
)
T
α
β
(
p
)
≤
α
∗
f
∗
T
(
1
)
+
β
∗
(
1
−
f
)
∗
T
(
1
)
α
∗
f
∗
T
(
1
)
+
β
∗
(
1
−
f
)
∗
T
(
1
)
p
=
α
∗
f
+
β
∗
(
1
−
f
)
α
∗
f
+
β
∗
(
1
−
f
)
∗
T
(
1
)
p
S_{\alpha\beta}(p)=\frac{T_{\alpha\beta}(1)}{T_{\alpha\beta}(p)}\leq\frac{\alpha*f*T(1)+\beta*(1-f)*T(1)}{\alpha*f*T(1)+\frac{\beta*(1-f)*T(1)}{p}}=\frac{\alpha*f+\beta*(1-f)}{\alpha*f+\frac{\beta*(1-f)*T(1)}{p}}
Sαβ(p)=Tαβ(p)Tαβ(1)≤α∗f∗T(1)+pβ∗(1−f)∗T(1)α∗f∗T(1)+β∗(1−f)∗T(1)=α∗f+pβ∗(1−f)∗T(1)α∗f+β∗(1−f)
其中,
α
\alpha
α表示根据问题规模的复杂度,不能从并行化中获益的程序部分的尺度函数。
α
\alpha
α表示根据问题规模的复杂度,不能从并行化中获益的程序部分的尺度函数。
当定义 γ = α / β \gamma=\alpha/\beta γ=α/β 为可并行部分与不可并行部分之间的问题复杂度扩展比率。
S
γ
(
p
)
≤
f
+
γ
∗
(
1
−
f
)
f
+
γ
∗
(
1
−
f
)
p
S_\gamma(p)\leq\frac{f+\gamma*(1-f)}{f+\frac{\gamma*(1-f)}{p}}
Sγ(p)≤f+pγ∗(1−f)f+γ∗(1−f)
按照p的个数对
γ
\gamma
γ 使用不同的函数,得到以下特例:
-
γ = 1 ( 即 α = β ) \gamma=1(即\alpha=\beta) γ=1(即α=β) :比率为常数,因此正好就是 Amdahl定律;
-
γ = p ( 比如 α = 1 , β = p ) \gamma=p(比如\alpha=1,\beta=p) γ=p(比如α=1,β=p) :可并行部分以线性p增长,而不可并行部分保持常量。这就是Gustafson定律,即用公式表示为:
S ( p ) ≤ f + p ∗ ( 1 − f ) = p + f ∗ ( 1 − p ) S(p)\leq f+p*(1-f)=p+f*(1-p) S(p)≤f+p∗(1−f)=p+f∗(1−p) -
当 γ \gamma γ 是任意依赖p的其他函数时,具体情况具体分析;
6. PRAM的优缺点
优点:
- 基于此模型可以最大限度地开发一个特定问题的内在并行性;
- 特别适合并行算法的表达、分析和比较;
- 使用简单,很多诸如处理器间通信、存储管理和进程同步等并行机的低级细节均隐含于模型中;
- 易于设计算法和稍加修改便可以运行在不同的并行机上。有可能在PRAM模型中加入一些诸如同步和通信等需要考虑的问题
缺点:
- PRAM模型是一个同步模型,意味着所有同步均用锁操作,用户虽然感觉不到同步的存在,但它的确很费时,不能反映现实中很多系统的异步性;
- 假定每个处理器均可在单位时间内访问任何存储单元而略去存取竞争和有限带宽等是不现实的;
- PRAM模型要求有一个全局存储器,同时局存的容量较小,不足以描述分布存储多处理机的特点;
7.机群系统(工作站机群cow)
cow结构特点:
- 每个节点都是一个完整的工作站或PC机;
- 各节点机通过网络连接;
- 各节点内都有本地磁盘;
- 一个完整的操作系统在每个节点中;
8. Flynn(1966年)分类法
Flynn(1966年)分类法是根据系统的指令流和数据流对计算机系统进行分类的一种方法。
指令流:机器所执行的指令序列
数据流:指令流调用的数据序列(包括输入数据和中间结果)
1、SISD (Single Instruction stream Single Data stream) 单指令单数据模型
传统的单处理机系统。由程序生成的一个单指令流,在任意时刻处理单独的数据项。
2、SIMD (Single Instruction stream Multiple Data stream) 单指令多数据模型
如:阵列处理机系统(Processor Arrays)。由一个控制器负责从存储器中取出指令并将这些指令发送给各个处理器,每个处理器同步执行相同的指令,但操作不同的数据。
3、MISD (Multiple Instruction stream Single Data stream) 多指令单数据模型
相当于在指令一级并行,而在被操作的数据级串行的情况,实际上这种模型是不能实现的。
4、MIMD (Multiple Instruction stream Multiple Data stream) 多指令多数据模型
当今绝大多数并行计算机都属于这一类。每个处理器拥有一个单独的程序,每个程序为每一个处理器生成一个指令流,每条指令对不同的数据进行操作。
Flynn分类法实际上并不能对所有计算机进行分类,如流水线向量处理机就难于按Flynn分类法简单地归为上述四类之一。
并行计算机系统除少量专用的SIMD系统外,绝大部分为MIMD系统。
按进程执行方式分类
并行计算中进程的并行执行方式
- MPMD 控制并行结构,各进程执行程序不同,操作数据不同,各进程可同步执行,也可以异步执行;
- SPMD 数据域并行结构, 在分布存储并行计算机系统上执行的程序,每个进程执行相同的程序,但处理不同的数据。;
衡量并行程序的5个指标
-
加速比: S = T ( 1 ) T ( p ) S=\frac{T(1)}{T(p)} S=T(p)T(1)
任务在单处理器系统和并行处理器系统中执行消耗时间的比率,用于衡量并行化的性能;
-
效率: E = S P = T ( 1 ) T ( p ) ∗ p E=\frac{S}{P}=\frac{T(1)}{T(p)\ast p} E=PS=T(p)∗pT(1)
-
开销: C = T ( p ) ∗ p C=T(p)*p C=T(p)∗p
-
可拓展性:强可拓展性,弱可拓展性;
-
计算通信比:
计算花费的时间除以处理器间消息通信花费的时间,通常更大的比值会带来更好的加速比