Lifting C Semantics for Dataflow Optimization
Abstract
C is the lingua franca of programming and almost any device can be programmed using C. However, programming mod-ern heterogeneous architectures such as multi-core CPUs and GPUs requires explicitly expressing parallelism as well as device-specific properties such as memory hierarchies. The resulting code is often hard to understand, debug, and modify for different architectures. We propose to lift C programs to a parametric dataflow representation that lends itself to static data-centric analysis and enables automatic high-performance code generation. We separate writing code from optimizing for different hardware: simple, portable C source code is used to generate efficient specialized versions with a click of a button. Our approach can identify parallelism when no other compiler can, and outperforms a bespoke parallelized version of a scientific proxy application by up to 21%.
- Publication:
-
arXiv e-prints
- Pub Date:
- December 2021
- DOI:
- 10.48550/arXiv.2112.11879
- arXiv:
- arXiv:2112.11879
- Bibcode:
- 2021arXiv211211879C
- Keywords:
-
- Computer Science - Programming Languages;
- Computer Science - Distributed;
- Parallel;
- and Cluster Computing;
- Computer Science - Performance
- E-Print:
- doi:10.1145/3524059.3532389