Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is scalability defined for parallel code?

I'm interested in finding out whether there is a formal definition as to whether a parallel code is scalable, or whether it is just a trendy word? If I measure the serial wall time as t_S and the parallel wall time as t(P), then I can define the efficiency as E(P) = t_S / (t(P) * P), is there a criterion for how the efficiency has to change with P (and the problem size) for the code to be deemed scalable?

like image 816
astrofrog Avatar asked Mar 19 '11 19:03

astrofrog


2 Answers

Scalable means that with extra machines or cpu cores (scale up vs. scale out) performance (ability to handle increasingly large workloads) improves. Serial code is thus not scalable. Parallel code can be. Amdahl's law limits how scalable a system can be.

Scalability is often more important than efficiency. A scalable but inefficient system can handle more load by just adding hardware. An efficient but unscalable system requires major code rework in order to handle larger loads.

like image 180
Robert Levy Avatar answered Dec 03 '22 15:12

Robert Levy


see Amdahl's law and Gustafson's law for some formal definitions of some scalability metrics.

like image 23
Kasprzol Avatar answered Dec 03 '22 15:12

Kasprzol