强扩展性和弱扩展性

弱扩展和强扩展都是高性能计算里的名词,也就是并行计算相关方面的。对于超级计算机而言,有成千上万的服务器节点,而如何充分的利用到这些服务器,我们需要设计合适的算法来利用好这些服务器,而强扩展性和弱扩展性是描述对应算法的指标。

 强扩展性(Strong Scalability)

表示问题规模不变,变化处理器的数量,看性能的提升,用加速比来衡量。加速比(强可扩展性),P个处理器的加速比=单个处理器时间/P个处理器时间

例如,一个算法原来使用单个处理器需要的时间是2000s,而后面用了P个处理器后只需要1000s,那么加速比便为2倍,即speedup=\frac{2000}{1000}=2,同理如果变成了20s的话,那么加速比便是100倍。

但由于机器传输以及其他因素的影响,并不是使用5台机器,加速比就为5倍,这时候我们就需要一个良好的算法,来实现好的强扩展性,使的强扩展性尽量呈现线性趋势。也就是如下图,其意义便是在处理器数量增加的同时,使得运行时间尽可能的减少。

而在强扩展性中,还会收到Amdahl法则的影响,Amdahl法则是由美国的一位科学家提出来的。指的是在一个算法中,有多少是并行计算的部分,有多少是必须串行的部分。

按照以下公式计算:

Speedup(P) = Time(1)/Time(P) <= 1/(s + (1-s)/P) <= 1/s

Speedup(P)=\frac{Time(1)}{Time(P)}<=\frac{1}{(s+\frac{1-s}{P})}<=\frac{1}{s}

s = 必须串行做的工作比例, 所以(1-s)是可以并行计算的比例

P = 处理器数目

比如S是30%,不管投入多少处理器,加速比一定小于1÷0.3即3.33倍。而清楚了这个问题后,我们就能够决定需要使用多少处理器。这在计算机科学研究中也非常重要的。

弱扩展性(Weak Scalability)

而弱扩展性描述的是并行效率,指处理器个数与每个处理器效率(也就是每个处理器的利用的程度)的关系。也就是在增加处理器数量的同时,保证每个处理器的任务量不变,处理器并行效率的变化。和之前的强扩展性做对比,强扩展性强调的是问题规模不变,增加处理器的数量,系统的扩展性如何。弱扩展性强调并行效率,也就是我增加了处理器的数量,变化后的处理器是否还能够充分的利用。

假设阿里巴巴刚创建的时候,10万用户,用10台机器,处理运算用2分钟,后来有20万用户,还需要2分钟运算,机器增加到20台,当30万用户,如果机器增加到30台,能否还保持2分钟的运算。在这一过程中,好的算法也是尤为重要的。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值