Abstract

Presburger arithmetic provides the mathematical core for the polyhedral compilation techniques that drive analytical cache models, loop optimization for ML and HPC, formal verification, and even hardware design. Polyhedral compilation is widely regarded as being slow due to the potentially high computational cost of the underlying Presburger libraries. Researchers typically use these libraries as powerful black-box tools, but the perceived internal complexity of these libraries, caused by the use of C as the implementation language and a focus on end-user-facing documentation, holds back broader performance-optimization efforts. With FPL, we introduce a new library for Presburger arithmetic built from the ground up in modern C++. We carefully document its internal algorithmic foundations, use lightweight C++ data structures to minimize memory management costs, and deploy transprecision computing across the entire library to effectively exploit machine integers and vector instructions. On a newly-developed comprehensive benchmark suite for Presburger arithmetic, we show a 5.4x speedup in total runtime over the state-of-the-art library isl in its default configuration and 3.6x over a variant of isl optimized with element-wise transprecision computing. We expect that the availability of a well-documented and fast Presburger library will accelerate the adoption of polyhedral compilation techniques in production compilers.

Highlights

  • Polyhedral compilation [Verdoolaege 2016] based on Presburger arithmetic [Haase 2018] is widely used for performance optimization in high-performance computing and machine learning [Baghdadi et al 2019; Chen et al 2018; Grosser and Hoefler 2016; Vasilache et al 2018], formal verification [Namjoshi and Singhania 2016], cache modeling [Gysi et al 2019], the derivation of data movement bounds [Olivry et al 2020], and configurable computing [Pouchet et al 2013]

  • 6.1 Presburger Set Benchmarks Our benchmark suite characterizes the usage of Presburger arithmetic in polyhedral compilers and provides a comprehensive set of runtime benchmarks suitable for performance evaluating a library for Presburger set arithmetic

  • We presented FPL, a new library for Presburger arithmetic built from the ground up with support for transprecision computing at the library level

Read more

Summary

Introduction

Polyhedral compilation [Verdoolaege 2016] based on Presburger arithmetic [Haase 2018] is widely used for performance optimization in high-performance computing and machine learning [Baghdadi et al 2019; Chen et al 2018; Grosser and Hoefler 2016; Vasilache et al 2018], formal verification [Namjoshi and Singhania 2016], cache modeling [Gysi et al 2019], the derivation of data movement bounds [Olivry et al 2020], and configurable computing [Pouchet et al 2013]. Grosser et al [2020] ran the Polly polyhedral loop optimizer [Grosser et al 2012] on computational kernels in Polybench [Pouchet 2012] and found that 71% of Polly’s runtime was spent in the underlying math library for Presburger arithmetic. Polyhedral analyses, such as cache modeling, consist almost entirely of sequences of Presburger arithmetic operations

Objectives
Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call