  Data movement is becoming the dominant contributor to the time and energy
costs of computation across a wide range of application domains. However, time
complexity is inadequate to analyze data movement. This work expands upon Data
Movement Distance, a recently proposed framework for memory-aware algorithm
analysis, by 1) demonstrating that its assumptions conform with
microarchitectural trends, 2) applying it to six variants of matrix
multiplication, and 3) showing it to be capable of asymptotically
differentiating algorithms with the same time complexity but different memory
behavior, as well as locality optimized vs. non-optimized versions of the same
algorithm. In doing so, we attempt to bridge theory and practice by combining
the operation count analysis used by asymptotic time complexity with
per-operation data movement cost resulting from hierarchical memory structure.
Additionally, this paper derives the first fully precise, fully analytical form
of recursive matrix multiplication's miss ratio curve on LRU caching systems.
Our results indicate that the Data Movement Distance framework is a powerful
tool going forward for engineers and algorithm designers to understand the
algorithmic implications of hierarchical memory.
