DOI: 10.1145/3861336 ISSN: 1544-3566

Inductive Loop Analysis for Practical HPC Application Optimization

Philipp Schaad, Tal Ben-Nun, Patrick Iff, Torsten Hoefler

Scientific computing applications heavily rely on multi-level loop nests operating on multidimensional arrays. This presents multiple optimization opportunities, from exploiting parallelism to hiding memory latency through prefetching and reducing data movement through improved register usage. HPC frameworks often delegate fine-grained data movement optimization to compilers, but their low-level representations hamper analysis of common patterns, such as strided data accesses and loop-carried dependencies. In this paper, we introduce symbolic, inductive loop optimization (SILO), a novel technique that models data accesses and dependencies as functions of loop nest strides. This abstraction enables the automatic parallelization of sequentially-dependent loops, as well as data movement optimizations including software prefetching and pointer incrementation to reduce register spills. We demonstrate SILO on fundamental kernels from scientific applications with a focus on atmospheric models and numerical solvers, achieving up to 12 × speedup over the state of the art.

More from our Archive