Knowing a loop’s footprint — the unique data items it accesses — enables important locality and capacity analysis. Unfortunately, current methods for computing footprint cause integer factors of slowdown and are therefore difficult to use with realistic inputs. Current methods are slow because they are based on software tracing of load instructions and data addresses. We present an approach that combines lightweight measurements and static binary analysis. We use static analysis to reason about each load’s expected reuse. We then calculate the footprint for each loop using inference rules informed by measurements from common performance counters. We validate our method on benchmarks that vary access patterns (strided vs. unpredictable), reuse (varying and repeated accesses per element), and sparsity (all words in a cache line vs. some). For strided patterns, errors are within 1%; for unpredictable ones, errors are 5–10%. Our overheads are under 10%. A tool based on software tracing has an error of less than 1%, but either introduces at least 130× overhead or hangs.
Revised: December 11, 2019 |
Published: November 7, 2019
Citation
Kilic O.O., N.R. Tallent, and R.D. Friese. 2019.Rapidly Measuring Loop Footprints. In IEEE International Conference on Cluster Computing (CLUSTER 2019), September 23-26, 2019, Albuquerque, NM. Piscataway, New Jersey:IEEE.PNNL-SA-146801.doi:10.1109/CLUSTER.2019.8891025