Search code examples
assemblyparallelism-amdahl

Number of processors needed to achieve a certain speedup?


In simple terms, a program has 15% running on a sequential portion and 85% is its parallel portion.

How could I figure out the maximum speedup with an infinite amount of processors?

And also, how could I figure out, let's say, how many processors are needed to speed up the program to 80% of its maximum speed?

Using Amdahl's laws. I've tried looking around the internet, google, etc. Haven't found anything that could help me out with this simple problem!


Solution

  • Logically, if you assume infinite processors will speed up the 85% infinitely, that is the run time for that portion is going to be near zero, what you are left with is the 15%. Thus the maximum speedup is ~6.6 times.

    How many cpus to speed up to 80% of maximum? Assuming that means you want execution time of 15%/80%=18.75%. Since 15% is needed for the sequential part, the 3.75% must be covering the 85% parallelized. Thus you need 85/3.75 ~23 cpus.