I'm profiling the performance of PETSc's linear solvers. As I understand it,
$$\text{speedup}=\frac{\text{Sequential Time}}{\text{Parallel Time}}.$$
I know that running the parallel code on one processor can be used as a proxy for the sequential performance. However, I don't think it is a good measure of an equivalent sequential code due to the parallel overhead incurred. Often, the performance of a sequential code is faster than the parallel performance on a single processor. I suppose that I could search for numerical libraries that implement the same solver, but there is no guarantee that the algorithm is really equivalent.
As I understand it,
$\text{Parallel performance on one processor} = \text{Sequential Time} + \text{Parallel Overhead}$
Thus, if there is a way to quantify the parallel overhead, we could subtract it from the parallel time on one processor to get a better measure of the sequential time.
So, my questions then would be:
- Is there a way to compute the parallel overhead of a parallel code run on a single processor when no sequential code is available?
- Is it really necessary? Is the parallel performance on one processor good enough to approximate the sequential performance, in general?