并行分布式计算 并行计算性能评测

并行分布式计算 并行计算性能评测

基本性能指标

参数

请添加图片描述

  • 工作负载 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+Wppf1

特点

  • 适用于实时应用问题。当问题的计算负载或者规模固定时,必须通过增加处理器数目来降低计算时间;

  • 加速比受到算法中串行工作量的限制;

  • 扩展:若并行实现时还有额外开销,则:

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+Wppf+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(1f)
考虑并行开销 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(1f)
特点:随着处理器数目的增加,串行执行部分 f f f 不再是并行算法的瓶颈。

Sun 和 Ni 定律

前提:充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解,是 Amdahl 定律和 Gustafson 定律的推广。

推导:设单机存储容量为 M M M ,其工作负载 W = f W + ( 1 − f ) W W=fW+(1-f)W W=fW+(1f)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+(1f)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+(1f)G(p)W/pfW+(1f)G(p)W=f+(1f)G(p)/pf+(1f)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+(1f)G(p)W/p+WofW+(1f)G(p)W=f+(1f)G(p)/p+Wo/Wf+(1f)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 logppSp

  • 线性加速比:很少通信开销的矩阵相加、内积运算等;

  • 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=0p1teiT0=i=0p1toi
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)=pWpW
Ψ ( 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)=WpW=TpT1=解决工作量为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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Air浩瀚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值