文章目录
- 并行分布式计算 并行计算性能评测
- 基本性能指标
- 参数
- CPU 基本性能指标
- 存储器性能
- 并行与存储开销
- 加速比性能定律
- Amdahl 定律
- Gustafson 定律
- Sun 和 Ni 定律
- 加速比讨论
- 可括放性评测标准
- 等效率度量标准
- 等速度度量标准
- 平均延迟度量标准
- 基准评测程序(Benchmark)
并行分布式计算 并行计算性能评测
基本性能指标
参数
- 工作负载 W:是指某个算法的计算量;
- 加速:就是加速比;
- 峰值速度:是速度的理论上限;
CPU 基本性能指标
① 工作负载:
- 执行时间:不仅包括 CPU 时间,还包括访问存储器、磁盘时间、 I/O 时间和 OS 开销等;执行时间是不稳定的,波动较大;
- 浮点运算数(Flops):其他类型的运算可以通过经验折算成浮点运算速度;只能衡量计算任务,不能用于衡量数据传输、IO密集型的操作(虽然并行计算前期只是用于计算密集型的任务)
- 指令数目(MIPS)通常以 百万条/秒 作为单位(单条指令的执行时间差别很大)
② 无重叠的假定下并行执行时间 T n T_n Tn :
- 计算时间 T c o m p u t T_{comput} Tcomput ;并行开销时间 T p a r o T_{paro} Tparo ;相互通信时间 T c o m m T_{comm} Tcomm :
T n = T c o m p u t + T p a r o + T c o m m T_n=T_{comput}+T_{paro}+T_{comm} Tn=Tcomput+Tparo+Tcomm
- T c o m p u t T_{comput} Tcomput :与串行的时间是一致的(无重叠的假定);
- T p a r o T_{paro} Tparo :与进程管理、组操作、进程查询等相关;
- T c o m m T_{comm} Tcomm :同步(路障、锁、临界区、事件)、通信、聚合操作(规约、前缀运算),一般来说 T c o m m T_{comm} Tcomm 比 T p a r o T_{paro} Tparo 要大得多;
存储器性能
估计存储器的带宽:例如 RISC 的加法可以在单拍内完成(取出两个数相加再送回寄存器);假定字长为 8B,时钟频率 100MHZ,则带宽:
B
=
3
×
8
×
100
×
1
0
6
B
/
s
=
2.4
G
B
/
s
B=3\times8\times100\times10^6 B/s=2.4GB/s
B=3×8×100×106B/s=2.4GB/s
并行与存储开销
并行和通信的开销相对于计算来说很大。
开销的测量:
- 乒乓方法(Ping-Pong Scheme):节点 - 发送 m 个字节给节点 1,节点 1 收到以后立即将消息发回节点 0,总时间除以 2;
- 热土豆法(Hot-Potato)/救火队法(Fire-Brigade):再乒乓方法的基础上,节点 1 收到以后立即发送给节点 2,直到发送给节点 n-1 后,最后发送回 0,总的时间除以 n;
点到点通信开销表达式:
t
(
m
)
=
t
0
+
m
/
r
∞
t(m)=t_0+m/r_{\infty}
t(m)=t0+m/r∞
-
m m m :消息长度(字节数);
-
t 0 t_0 t0 :通信启动时间;
-
r ∞ r_{\infty} r∞ :渐进带宽,传送无限长消息时的通信频率;查利芳等网络结构就是为了增大渐进带宽;
-
半峰值长度 m 1 2 m_{\frac{1}{2}} m21 :达到一半渐进带宽所需要的消息长度;
-
特定性能 π 0 \pi_0 π0 :表示短消息带宽;
-
t 0 = m 1 2 / r ∞ = 1 / π 0 t_0=m_{\frac{1}{2}}/r_{\infty}=1/\pi_0 t0=m21/r∞=1/π0 ; t 0 t_0 t0 就好像是发送一个很小的包时所需要花费的时间;
典型整体通信:
- 广播(Broadcasting):处理器 0 发送 m 个字节给所有的 n 个处理器;
- 收集(Gather):处理器 0 接收所有 n 个处理器发送来的消息,最终接收 mn 个字节;尽量不要出现收集的情况,否则带宽会被 n 个处理器瓜分;
- 散射(Scatter):处理器 0 发送了 m 个字节的不同消息给所有 n 个处理器;
- 全交换(Total Exchange):每个处理器均彼此相互发送 m 个字节的不同消息给对方,总通信量为 m n 2 mn^2 mn2 个字节;很多算法需要全交换,所以通行效率或者带宽会随着处理器数量上升而快速下降;
- 循环位移(Circular-shift):处理器 i 发送 m 个字节给处理器 (i + 1) % n,总通信量为 mn 个字节;
机器的成本与价格:
- 机器的性价比(Performance/Cost Ratio):单位代价(通常为百万美元)所获取的性能(通常用 MIPS 或 MFLOPS 表示)
- 利用率:可达到的速度与峰值速度之比;
要想提高利用率,就要提高通讯量级;要想保持通讯硬件不变而提高通讯量级,就要优化算法。
加速比性能定律
Amdahl 定律
前提:
- 固定不变的计算机负载;
- 固定的计算负载分布在多个处理器上;
- 增加处理器加快执行速度,从而达到了加快处理速度的目的;
(总的计算量不变,并且被固定地、平均地分配给 p 个处理器)
参数:
-
P P P:处理器数;
-
W W W:问题规模(计算负载、问题的总计算量)
W = W s + W p W=W_s+W_p W=Ws+Wp- W s W_s Ws :应用程序中的串行分量, f f f 是串行分量比例( f = W s / W f=W_s/W f=Ws/W);
- W p W_p Wp :应用程序中可并行化部分;
-
T s = T 1 T_s=T_1 Ts=T1 :串行执行时间;
-
T p T_p Tp :并行执行时间;
-
S S S :加速比;
-
E E E :效率;
S = W s + W p W s + W p / p → p → ∞ 1 f S=\frac{W_s+W_p}{W_s+W_p/p} \stackrel{p\to\infty}{\to} \frac{1}{f} S=Ws+Wp/pWs+Wp→p→∞f1
特点:
-
适用于实时应用问题。当问题的计算负载或者规模固定时,必须通过增加处理器数目来降低计算时间;
-
加速比受到算法中串行工作量的限制;
-
扩展:若并行实现时还有额外开销,则:
S = W s + W p W s + W p / p + W o → p → ∞ 1 f + W o / W S=\frac{W_s+W_p}{W_s+W_p/p+W_o} \stackrel{p\to\infty}{\to} \frac{1}{f+W_o/W} S=Ws+Wp/p+WoWs+Wp→p→∞f+Wo/W1
Gustafson 定律
前提:对于很多大型计算,精度要求很高,而计算时间时固定不变的。此时为了提高精度,必须加大计算量,相应地必须增多处理器数才能维持时间不变。
(增大精度的同时
W
s
W_s
Ws 几乎是不变的)
S
′
=
W
s
+
p
W
p
W
s
+
p
W
p
/
p
=
W
s
+
p
W
p
W
s
+
W
p
=
f
+
p
(
1
−
f
)
S'=\frac{W_s+pW_p}{W_s+pW_p/p}=\frac{W_s+pW_p}{W_s+W_p}={f+p(1-f)}
S′=Ws+pWp/pWs+pWp=Ws+WpWs+pWp=f+p(1−f)
考虑并行开销
W
o
W_o
Wo :
S
′
=
W
s
+
p
W
p
W
s
+
p
W
p
/
p
+
W
o
=
f
+
p
(
1
−
f
)
1
+
W
o
/
W
S'=\frac{W_s+pW_p}{W_s+pW_p/p+W_o}= \frac{f+p(1-f)}{1+W_o/W}
S′=Ws+pWp/p+WoWs+pWp=1+Wo/Wf+p(1−f)
特点:随着处理器数目的增加,串行执行部分
f
f
f 不再是并行算法的瓶颈。
Sun 和 Ni 定律
前提:充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解,是 Amdahl 定律和 Gustafson 定律的推广。
推导:设单机存储容量为 M M M ,其工作负载 W = f W + ( 1 − f ) W W=fW+(1-f)W W=fW+(1−f)W ;
当并行系统有
p
p
p 个节点时,存储容量变为
p
M
pM
pM ,用
G
(
p
)
G(p)
G(p) 表示系统的存储容量增大
p
p
p 倍时工作负载的增加量,即存储容量扩大后的工作负载为
W
=
f
W
+
(
1
−
f
)
G
(
p
)
W
W=fW+(1-f)G(p)W
W=fW+(1−f)G(p)W ,加速比为:
S
′
′
=
f
W
+
(
1
−
f
)
G
(
p
)
W
f
W
+
(
1
−
f
)
G
(
p
)
W
/
p
=
f
+
(
1
−
f
)
G
(
p
)
f
+
(
1
−
f
)
G
(
p
)
/
p
S''=\frac{fW+(1-f)G(p)W}{fW+(1-f)G(p)W/p}=\frac{f+(1-f)G(p)}{f+(1-f)G(p)/p}
S′′=fW+(1−f)G(p)W/pfW+(1−f)G(p)W=f+(1−f)G(p)/pf+(1−f)G(p)
考虑并行计算的开销
W
o
W_o
Wo :
S
′
′
=
f
W
+
(
1
−
f
)
G
(
p
)
W
f
W
+
(
1
−
f
)
G
(
p
)
W
/
p
+
W
o
=
f
+
(
1
−
f
)
G
(
p
)
f
+
(
1
−
f
)
G
(
p
)
/
p
+
W
o
/
W
S''=\frac{fW+(1-f)G(p)W}{fW+(1-f)G(p)W/p+W_o}=\frac{f+(1-f)G(p)}{f+(1-f)G(p)/p+W_o/W}
S′′=fW+(1−f)G(p)W/p+WofW+(1−f)G(p)W=f+(1−f)G(p)/p+Wo/Wf+(1−f)G(p)
- 当 G ( p ) = 1 G(p)=1 G(p)=1 时,就是 Amdahl 定律,意味着节点的扩展不会带来额外开销;
- 当 G ( p ) = p G(p)=p G(p)=p 时,就是 Gustafson 定律;
- 当 G ( p ) > p G(p)>p G(p)>p 时,加速比比前面两个定律得到的加速比更大;
加速比讨论
加速比经验公式:
p
log
p
≤
S
≤
p
\frac{p}{\log p}\leq S \leq p
logpp≤S≤p
-
线性加速比:很少通信开销的矩阵相加、内积运算等;
-
p / log p p/\log p p/logp 的加速比:分治类的应用问题;
-
通信密集类的应用问题: S = 1 C ( p ) S=\frac{1}{C(p)} S=C(p)1 ,这里 C ( p ) C(p) C(p) 时 p p p 个处理器的某一通信函数;
超线性加速:特殊情况下出现,例如在不同分支上进行搜索,某个处理器搜索发现结果后结束整个任务;
绝对加速:最佳串行算法与并行算法所用时间之比;(有些算法是没法直接并行化的,因此绝对加速更合理)
相对加速:同一算法在单机和并行机的运行时间。
可括放性评测标准
可括放性(Scalability):性能随处理器数的增加而按比例提高的能力。
- 影响因素:处理器数和问题规模;串行分量;并行处理的额外开销;处理器数是否超过了算法中的并发程度;
- 增加问题规模的好处:提供较高的并发机会;overhead 增加可能慢于有效计算的增加;串行分量比例随着问题规模增大而缩小;
- 增加处理器数量会增大 overhead 并降低处理器利用率,对于一个特定的并行系统(算法或程序),它们能否有效利用不断增加的处理器的能力应是受限的,而度量这种能力就是可括放性这一指标。
等效率度量标准
参数:令
t
e
i
t^i_e
tei 和
t
o
i
t^i_o
toi 分别是并行系统上第
i
i
i 个处理器的有用计算时间和额外开销时间(包括通信、同步和空闲的等待时间等)
T
s
=
T
e
=
∑
i
=
0
p
−
1
t
e
i
T
0
=
∑
i
=
0
p
−
1
t
o
i
T_s=T_e=\sum\limits_{i=0}^{p-1}t_e^i \quad\quad T_0=\sum\limits_{i=0}^{p-1}t_o^i
Ts=Te=i=0∑p−1teiT0=i=0∑p−1toi
T
p
T_p
Tp 是
p
p
p 个处理器系统上并行算法的运行时间,对于任意
i
i
i 显然有:
T
p
=
t
e
i
+
t
o
i
p
T
p
=
T
e
+
T
o
T_p=t^i_e+t_o^i \quad\quad pT_p=T_e+T_o
Tp=tei+toipTp=Te+To
问题的规模
W
W
W 定义为最佳串行算法所完成的计算量,则
W
=
T
e
W=T_e
W=Te ,因此有:
S
=
T
e
T
p
=
T
e
(
T
e
+
T
o
)
/
p
=
p
1
+
T
o
/
W
E
=
S
p
=
1
1
+
T
o
/
W
S=\frac{T_e}{T_p}=\frac{T_e}{(T_e+T_o)/p}=\frac{p}{1+T_o/W}\quad\quad E=\frac{S}{p}=\frac{1}{1+T_o/W}
S=TpTe=(Te+To)/pTe=1+To/WpE=pS=1+To/W1
为了维持一定的效率,处理器数
p
p
p 增大时,开销
T
o
T_o
To 增大,问题规模
W
W
W 也需要相应增大。由此定义函数
f
E
(
p
)
fE(p)
fE(p) 为问题规模
W
W
W 随处理器数
p
p
p 变化的函数,为等效率函数。
优点:简单可定量计算的、少量参数计算等效率函数
缺点:如果 T o T_o To 无法计算出的话就不能用这个方法(比如在共享存储并行机中)
如图,3 到 1 可括放性越来越好,2 以上的表示不可扩放:
等速度度量标准
前提:在共享存储并行机中 T o T_o To 难以计算;换一种方法,如果速度能以处理器数的增加而线性增加,则说明系统具有很好的扩放性。
参数: p p p 和 W W W 前面一样, T T T 为并行执行时间,并行计算的速度 v = W / T v=W/T v=W/T ;
p
p
p 个处理器的并行系统的平均速度定义为并行速度除以处理器个数:
v
ˉ
=
v
p
=
W
p
T
\bar{v}=\frac{v}{p}=\frac{W}{pT}
vˉ=pv=pTW
令
W
′
W'
W′ 表示当处理器数从
p
p
p 增大到
p
′
p'
p′ 时,为了保持整个系统的平均速度不变所需执行的工作量,则可得到处理器数从
p
p
p 到
p
′
p'
p′ 时平均速度可扩放度量标准公式:
Ψ
(
p
,
p
′
)
=
p
′
W
p
W
′
\Psi(p,\,p')=\frac{p'W}{pW'}
Ψ(p,p′)=pW′p′W
Ψ
(
p
,
p
′
)
\Psi(p,\,p')
Ψ(p,p′) 介于 0 到 1 之间,越靠近 1 越好;
优点:直观使用易测量的机器性能速度指标来度量;
缺点:某些非浮点运算可能造成性能的变化没有考虑;
当
p
=
1
p=1
p=1 时,有:
Ψ
(
p
′
)
=
Ψ
(
1
,
p
′
)
=
p
′
W
W
′
=
T
1
T
p
′
=
解决工作量为
W
的问题所需串行时间
解决工作量为
W
′
的问题所需并行时间
\Psi(p')=\Psi(1,\,p')=\frac{p'W}{W'}=\frac{T_1}{T_{p'}}=\frac{\text{解决工作量为$W$的问题所需串行时间}}{\text{解决工作量为$W'$的问题所需并行时间}}
Ψ(p′)=Ψ(1,p′)=W′p′W=Tp′T1=解决工作量为W′的问题所需并行时间解决工作量为W的问题所需串行时间
区别:
- 加速比的定义是保持问题规模不变,标志对于串行系统的性能增加;
- 扩放性定义时保持平均速度不变,标志对于小系统到大规模系统所引起的性能变化;
平均延迟度量标准
一个并行系统执行的时间图谱
- T p a r a T_{para} Tpara 是最大的,作为总的并行时间
基准评测程序(Benchmark)
不同程序会涉及到硬件、体系结构、编译优化、编程环境、测试条件、解题算法等众多因素;根据侧重点不同,分为:
综合型:Dhrystone、Whetstone
- 缺点:对编译器比较敏感
核心型:Livermore Fortran Kernels、NASA 之 NAS
数学型:Linpack、FFT
- 常见的线性代数运算
应用型:SPEC、Perfect、Splash
并行型:NAS 之 NPB、PARKBENCH