Facile: Fast, Accurate, and Interpretable Basic-Block Throughput Prediction
arXiv:2310.13212 · doi:10.1109/IISWC59245.2023.00023
Abstract
Basic-block throughput models such as uiCA, IACA, GRANITE, Ithemal, llvm-mca, OSACA, or CQA guide optimizing compilers and help performance engineers identify and eliminate bottlenecks. For this purpose, basic-block throughput models should ideally be fast, accurate, and interpretable. Recent advances have significantly improved accuracy: uiCA, the state-of-the-art model, achieves an error of about 1% relative to measurements across a wide range of microarchitectures. The computational efficiency of throughput models, which is equally important for widespread adoption, especially in compilers, has so far received little attention. In this paper, we introduce Facile, an analytical throughput model that is fast, accurate, and interpretable. Facile analyzes different potential bottlenecks independently and analytically. Due to its compositional nature, Facile's predictions directly pinpoint the bottlenecks. We evaluate Facile on a wide range of microarchitectures and show that it is almost two orders of magnitude faster than existing models while achieving state-of-the-art accuracy.
References in corpus (11)
- uops.info: Characterizing Latency, Throughput, and Port Usage of Instructions on Intel Microarchitectures
- Ithemal: Accurate, Portable and Fast Basic Block Throughput Estimation using Deep Neural Networks
- Souper: A Synthesizing Superoptimizer
- Automated Instruction Stream Throughput Prediction for Intel and AMD Microarchitectures
- MLGO: a Machine Learning Guided Compiler Optimizations Framework
- goSLP: Globally Optimized Superword Level Parallelism Framework
- uiCA: Accurate Throughput Prediction of Basic Blocks on Recent Intel Microarchitectures
- Automatic Throughput and Critical Path Analysis of x86 and ARM Assembly Kernels
- GRANITE: A Graph Neural Network Model for Basic Block Throughput Estimation
- COMET: Neural Cost Model Explanation Framework
- Minotaur: A SIMD-Oriented Synthesizing Superoptimizer