The Sparse Polyhedral Framework: Composing Compiler-Generated Inspector–Executor Code
Irregular applications such as big graph analysis, material simulations, molecular dynamics simulations, and finite element analysis have performance problems due to their use of sparse data structures. Inspector–executor strategies improve sparse computation performance through parallelization and data locality optimizations. An inspector reschedules and reorders data at runtime, and an executor is a transformed version of the original computation that uses the newly reorganized schedules and data structures. Inspector–executor transformations are commonly written in a domain-specific or even application-specific fashion. Significant progress has been made in incorporating such inspector–executor transformations into existing compiler transformation frameworks, thus enabling their use with compile-time transformations. However, composing inspector– executor transformations in a general way has only been done in the context of the Sparse Polyhedral Framework (SPF). Though SPF enables the general composition of such transformations, the resulting inspector and executor performance suffers due to missed specialization opportunities. This paper reviews the history and current state of the art for inspector– executor strategies and reviews how the SPF enables the composition of inspector–executor transformations. Further, it describes a research vision to combine this generality in SPF with specialization to achieve composable and high performance inspectors and executors, producing a powerful compiler framework for sparse matrix computations.
Mills Strout, Michelle; Hall, Mary; and Olschanowsky, Catherine. (2018). "The Sparse Polyhedral Framework: Composing Compiler-Generated Inspector–Executor Code". Proceedings of the IEEE, 106(11), 1921-1934.