# Communication Efficiency

The Communication Efficiency (CommE) is the maximum, across all processes, of the ratio between Useful Computation Time and Total Runtime.

$CommE = \frac{Maximum Useful Computation Time}{Total Runtime}$

CommE identifies when code is inefficient because it spends a large amount of time communicating rather than performing useful computations. CommE is composed of two additional metrics that reflect two causes of excessive time within communication: 1) processes waiting at communication points due to the temporal imbalance (i.e. serialisation); and 2) processes transferring large amounts of data relative to the network capacity (limited to the network transfer speed) or with high-frequent communication (limited by the network latency).

We investigate these two causes by analysing the Serialization Efficiency (SerE), and the Transfer Efficiency (TE). And we also compute the Communication Efficiency as the product of these two metrics:

$CommE = SerE \times TE$

In order to fully understand the formulas, you may also visit the glossary of the metrics terms.

Related patterns: Sequence of fine grain parallel loops · Very fine-grained tasks/chunks ·