定义
primitive operations
: 基本运算,即任何一步小操作,可以是加减乘除等,每一步运算消耗单位时间( unit time )time steps
: 每个 time step 中可并行地执行多个 primitive operations ,所以每个 time step 所耗费是时长为单位时间
注:Timesteps 是我们理解并行计算的关键
为了解释 Timesteps 和 primitive operations 的关系,下面通过图解解方程(运用 Cramer 法则)来说明(为方便后面对比说明,先假设此时只有4个处理器,图中反映为每个 Timestep 有多少列)
{ a u + b v = x c u + d v = y \begin{cases} au+bv=x\\ cu+dv=y \end{cases} {au+bv=xcu+dv=y
将计算解出 u 和 v u\text{ 和 }v u 和 v 的过程按照下图分割
下面正式引入并行算法中的一些概念:
-
P
P
P:表示处理器(processors)的个数,一般用字母
p
(
P
)
p(P)
p(P)表示
例如Fig1
表示有4个处理器的情况, P = 4 P=4 P=4 -
T
p
T_p
Tp: 在
p
p
p个处理器的情况下,从计算开始到结束所花的总时间(括计算和等待时间)
注1:所谓等待时间,很直观地表现在 Timestep 上,即必须执行完 Timestep 1 才可开始 Timestep 2
注2:例如Fig1
中的 T 4 = 4 T_4=4 T4=4(4个 Timestep) - W o r k Work Work: 完成算法所需的基础操作的个数和(反映为总共消耗了多少单位时间)。当处理器个数为1时,Timestep个数等于基础操作个数,所以可以把 Work 记做 T 1 T_1 T1(或 W W W)
-
S
p
a
n
Span
Span: 由于数据依赖关系(简单说就是必须执行完某一步骤后,才能进行下一步),必须 按照顺序执行的最长路径,即在最大并行度下的
T
p
m
T_{p_m}
Tpm,记作
T
∞
(
T_∞(
T∞(或
S
)
S)
S) ,其中
p
m
p_m
pm为实现最大并行度所需处理器的个数
注:所谓最大并行度,就是 P = p m P=p_m P=pm与 P = ∞ P=∞ P=∞情况一致,下图中6 processors
和∞ processors
没有区别,称 p m p_m pm为最大并行度
下图是在 P = 6 P=6 P=6下,解Fig1中的方程
对比
Fig1
和Fig2
,Fig2中的time step数就是在最大并行度下的Span
的值
-
c
o
s
t
cost
cost:
p
T
p
pT_p
pTp
注:这里的 c o s t cost cost与常规意义下的耗费不同,因为在并行算法中每个Timestep中没有使用的处理器也算是一种浪费,所以 c o s t cost cost记作上图中所有方格个数 -
S
p
e
e
d
u
p
Speedup
Speedup:与串行执行相比,并行执行在速度上的增加(程度)
S
p
=
T
1
T
p
(
W
T
p
S_p = \frac{T_1}{T_p}(\frac{W}{T_p}
Sp=TpT1(TpW)
当 S p = P S_p=P Sp=P 时,此时的 Speedup 被称作perfect linear speedup
。此时反映在上面的 TimeSteps 图上很直观,每个方格均被填满,没有那一时刻有一台机器被浪费。 - E f f i c i e n c y Efficiency Efficiency:每个执行器的Speedup,用 S p P \frac{S_p}{P} PSp表示
- P a r a l l e l i s m Parallelism Parallelism:并行度 用比值 T 1 T ∞ \frac{T_1}{T_∞} T∞T1( W S \frac{W}{S} SW)表示,记作 P \mathcal P P
- S l a c k n e s s Slackness Slackness
著名定律
-
Work law
. cost至少是work: p T p ≥ T 1 pT_p \ge T_1 pTp≥T1 -
Span law
. 有限的 p p p个处理器不可能胜过无限个处理器,即 T p ≥ T ∞ T_p \ge T_∞ Tp≥T∞由此, i f if if p > T 1 T ∞ p > \frac{T_1}{T_∞} p>T∞T1我们可以得到Speedup的上界 ⇒ \Rightarrow ⇒
∵ T p ≥ T ∞ ∴ T 1 T p ≤ T 1 T ∞ < p \because T_p \ge T_∞ \therefore \frac{T_1}{T_p} \leq \frac{T_1}{T_∞}<p ∵Tp≥T∞∴TpT1≤T∞T1<p
-
Brent's law
.记 n k n_k nk为每个time step的primitive operations,其中 k = 1 , 2... N k=1,2...N k=1,2...N
T p ≤ T 1 − T N p + T N ( 其 中 p ≤ max k n k ) T_p \leq \frac{T_1-T_N}{p}+T_N(其中p\leq \max_kn_k) Tp≤pT1−TN+TN(其中p≤maxknk)
推论: T p ≤ T 1 p + T N T_p \leq \frac{T_1}{p}+T_N Tp≤pT1+TN ( T p ≤ W P + S ) (T_p \leq \frac{W}{P}+S) (Tp≤PW+S)
证明:
注意到两点,由1,2即可得证
1. T p ≤ ∑ k = 1 N ⌈ n k p ⌉ T_p \leq \sum_{k=1}^N\left \lceil \frac{n_k}{p} \right \rceil Tp≤∑k=1N⌈pnk⌉
2. 对 ∀ k , m ∈ Z + ⌈ k m ⌉ ≤ k + m − 1 m \forall k,m \in Z^+\left \lceil \frac{k}{m} \right \rceil \leq \frac{k+m-1}{m} ∀k,m∈Z+⌈mk⌉≤mk+m−1 -
Amdahl’s law
-
Gustafson’s law