如何为并行代码定义可伸缩性?

ast*_*rog 5 parallel-processing scalability

我有兴趣了解是否有关于并行代码是否可扩展的正式定义,或者它是否只是一个时髦的词?如果我将串行墙时间测量为t_S并将平行墙时间测量为t(P),那么我可以将效率定义为E(P)= t_S /(t(P)*P),是否有一个标准如何效率必须随P(和问题大小)而变化才能使代码具有可扩展性?

Rob*_*evy 6

可扩展意味着使用额外的机器或CPU核心(向上扩展与向外扩展)性能(处理越来越大的工作负载的能力)得到改善.因此,串行代码不可扩展.并行代码可以.Amdahl定律限制了系统的可扩展性.

可伸缩性通常比效率更重要.可扩展但低效的系统只需添加硬件即可处理更多负载.一个高效但不可扩展的系统需要重大代码返工才能处理更大的负载.


小智 2

有关某些可扩展性指标的正式定义,请参阅阿姆达尔定律古斯塔夫森定律。