Abstract
Many modern applications (such as multimedia processing, machine learning, and big data analytics) exhibit a natural tradeoff between the accuracy of the results they produce and the application’s execution time or energy consumption. These applications allow us to investigate new, more aggressive program optimization approaches. This chapter outlines the foundation of program optimization systems that expose and profitably exploit tradeoffs between the accuracy of the results that the program produces and the time and energy required to produce those results. These systems apply accuracy-aware program transformations that intentionally change the semantics of optimized programs. We discuss program analysis techniques that quantify the loss of accuracy introduced by program transformations. We will present the fundamental techniques for the accuracy-aware compilation that help us discover and characterize the accuracy-performance tradeoffs in sequential programs. Through two case studies, we will describe two main directions in developing accuracy-aware compilers: (1) sensitivity profiling-based techniques speculatively execute candidate transformed programs and use dynamic program analysis to reason about their accuracy, while (2) analysis-based techniques use static analysis to derive formulas that characterize acceptable results and use mathematical optimization to find the best performing program versions, without executing them.
Original language | English (US) |
---|---|
Title of host publication | Approximate Computing Techniques |
Subtitle of host publication | From Component- to Application-Level |
Publisher | Springer |
Pages | 177-214 |
Number of pages | 38 |
ISBN (Electronic) | 9783030947057 |
ISBN (Print) | 9783030947040 |
DOIs | |
State | Published - Jan 1 2022 |
Keywords
- Accuracy-aware program transformations
- Approximate computing
- Compilation
- Energy model
- Error and accuracy metrics
- High performance
- Loop perforation
- Low energy
- Low power
- Sensitivity profiling
- Static analysis
ASJC Scopus subject areas
- General Engineering
- General Computer Science