# 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.