LAMP: A Practical Loop-Aware Memory Dependence Profiler [abstract]
Yebin Chon, Ziyang Xu, Zujun Tan, and David I. August
The Fourth Young Architect Workshop (YArch), March 2022.
Profiling can overcome the inherent limits of static memory analysis, enabling
aggressive compiler optimizations, including automatic parallelization. We
propose LAMP -- a Loop-Aware Memory dependence Profiler that improves precision
and performance over prior profilers to make memory dependence profiling more
practical. The loop-aware design of LAMP allows it to reason about dependences
from function calls, making it precise to all memory dependence within any
loop. The advanced profiling recognition modules capture more dynamic
dependence information beyond the existence of the dependence. By targeting
memory dependences that are of interest to each optimization client, LAMP
dramatically reduces the runtime overhead without loss of precision. LAMP uses
modularity and parallelization to improve performance furthermore. Preliminary
results show that targeting reduces the number of instrumented instructions by
2.7x, and the additional pattern recognition modules can recognize
recursive data structure and guide speculative optimizations.