并行计算加速比

12 篇文章 4 订阅

为了定量知道并行程序的执行速度相对于串行程序的执行速度加快了多少,首先定义以下参数:令 p 是并行系统中的处理器数量;W指问题规模,或者给定问题的计算量, Ws 指程序中的串行部分,程序中的并行部分为 Wp W=Ws+Wp ; f=Ws/W 为串行部分的比例; TsTp 分别为串行、并行部分的执行时间; S 为加速比,E为效率。


Amdahl定律

特点:要求实时性,因此时间是关键因素,而计算负载是确定的。适用于固定计算负载。
对于固定的问题规模,通过增加处理器,减少平均的计算负载,来提升运算速度

S=Ws+WpWs+Wp/p

归一化之后得到,
S=p1+f(p1)

这意味着,随着处理器数目的不断增加,整个系统所能达到的最大加速比是有上界的,为 1f

如果考虑到并行计算时的通信、同步和归约的操作所花费的额外开销时间 Wo ,则

S=1f+Wo/W

Gustafson定律

特点:精度是关键因素,而计算时间不变,由此需要不断增加处理器,增大计算量。适用于可扩放问题。

S=Ws+pWpWs+Wp

归一化后,
S=pf(p1)

这意味着,加速比与处理器数量成比例线性增加,同样如果考虑到额外开销,则得到
S=pf(p1)1+Wo/W

Sun、Ni定律

特点:在存储空间允许的情况下,满足规定的时间要求,尽量增大计算量。

S=fw+(1f)G(p)Wfw+(1f)G(p)W/p

其中 G(p) 表示存储容量增加 p 倍后增加的计算量,归一化后,
S=f+(1f)G(p)f+(1f)G(p)/p

可以发现当 G(p)=1 时,它变成Amdahl定律的表达式,当 G(p)=p 时,它变成Gustafson定律的表达式,当 G(p)>p 时,表示计算负载比存储空间增加得快,此时的加速比前面两个定律得到的结论都快。

加速比的经验公式为

p/logpSp

一般作为可并行部分占比高的以及额外开销较少的,有望达到线性加速。

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nesterov加速算法是一种优化算法,可以在理论上证明有比梯度下降更快的收敛率。下面是Nesterov加速算法的详细介绍: 1. 梯度下降算法 梯度下降算法是一种常用的优化算法,用于求解无约束优化问题。其基本思想是沿着负梯度方向迭代更新参数,使目标函数值不断减小。梯度下降算法的迭代公式如下: $$ \theta_{t+1} = \theta_t - \alpha \nabla f(\theta_t) $$ 其中,$\theta_t$表示第$t$次迭代的参数,$\alpha$表示学习率,$\nabla f(\theta_t)$表示目标函数在$\theta_t$处的梯度。 2. Nesterov加速算法 Nesterov加速算法是在梯度下降算法的基础上提出的一种加速算法。其基本思想是在梯度下降算法的基础上,引入一个动量项,使得参数更新更加平滑,从而加速收敛。Nesterov加速算法的迭代公式如下: $$ \begin{aligned} v_{t+1} &= \gamma v_t + \alpha \nabla f(\theta_t - \gamma v_t) \\ \theta_{t+1} &= \theta_t - v_{t+1} \end{aligned} $$ 其中,$v_t$表示第$t$次迭代的动量,$\gamma$表示动量的衰减系数,$\alpha$表示学习率,$\nabla f(\theta_t - \gamma v_t)$表示在$\theta_t - \gamma v_t$处的梯度。 3. Nesterov加速算法的优点 相比于梯度下降算法,Nesterov加速算法有以下优点: - 收敛速度更快:Nesterov加速算法可以在理论上证明有比梯度下降更快的收敛率。 - 参数更新更加平滑:引入动量项可以使得参数更新更加平滑,从而避免了梯度下降算法中可能出现的震荡现象。 - 对于凸函数和非凸函数都适用:Nesterov加速算法不需要目标函数是凸函数,对于非凸函数也可以得到较好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值