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