Glossary of metric terms

Execution units

  • \(P\) is the total number of processes
  • \(p\) is a process intance; so \(p \in \{1..P\}\)
  • \(t_{p}\) is the number of threads of process \(p\)
  • \([p,]t\) is a thread instance of process \(p\); so \([p,]t \in \{1..t_{p}\}\)
  • \(T = \sum_{1}^{P}{(t_{p})}\) is the total number of threads

Execution time

  • \(Runtime\) is the total execution time
  • \(inOpenMP_{p,1}\) is the time spent in an OpenMP parallel region
  • \(inMPI_{p,t}\) is the time spent in MPI
  • \(Useful_{p,t}\) is useful computation time on thread \(t\) of process \(p\)
  • \(Total Useful\) is the total useful computation; i.e., \(Total Useful = \sum_{p}(\sum_{t}(Useful_{p,t}))\)
  • \(Serial MPI\) is MPI outside of OpenMP
  • \(Serial Useful_{p,1}\) is useful computation outside of OpenMP
  • \(OpenMP Useful_{p,t}\) is the useful computation inside of OpenMP

Aggregation, averages

  • \(Avg(Useful) = \frac{Total Useful}{T}\) is the average useful computation time
  • \(Avg(Serial Useful) = \frac{\sum_{p}(t_{p} \times Serial Useful_{p,1})}{T}\) is the average useful computation time (outside OpenMP)
  • \(Avg(OpenMP Useful) = \frac{\sum_{p}(\sum_{t}(OpenMP Useful_{p,t}))}{T}\) is the average useful computation time (inside OpenMP)
  • \(Avg(OpenMP) = \frac{\sum_{p}(t_{p} \times inOpenMP_{p,1})}{T}\) is the average time within a parallel region (having master as the reference)

Additive metrics: efficiency vs. inefficiency

  • \(Efficiency = \frac{Ideal Runtime}{Actual Runtime}\);
  • \(Inefficiency = 1 - Efficiency = \frac{Time Spent In Inefficiency}{Actual Runtime}\);
  • \(Parent Inefficiency = \sum Child Inefficiencies\);

The \(Ideal Runtime\) is context-speciffic. It is the runtime that would be measured if the source(s) of inefficiency being considered were removed.