It's also important to understand what it is you're trying to accomplish
by parallelizing the code.
Say you have a serial program that solves a certain problem size P in time T.
Maybe you're simulating how a certain protein molecule folds,
and that simulation takes an hour to run.
Weak scaling is what we refer to when we're talking about using parallel computing
to run a larger problem or perhaps to run more problems.
So if you wanted to run a bigger protein,
if you wanted to fold a bigger protein in your simulation and still take an hour,
or if you wanted to fold many small proteins in the same hour,
then that would be an example of weak scaling.
Strong scaling means using parallel computing to run a problem faster, a single problem size.
So if you wanted to fold that same protein that you were folding in an hour
and you wanted to fold it in a minute, then that would be an example of strong scaling.
More formally, we could say that weak scaling describes how the solution size
varies with a fixed problem size per processor as you add processors.
We would say that strong scaling describes how the solution size varies
as you add processors to tackle a fixed total problem size.