TL;DR
This paper introduces a method to transform C programs into a parametric dataflow model, enabling automatic optimization for heterogeneous architectures and outperforming traditional parallelization techniques.
Contribution
It presents a novel lifting of C semantics into a dataflow representation that facilitates static analysis and automatic code generation for diverse hardware.
Findings
Identifies parallelism beyond existing compiler capabilities.
Achieves up to 21% performance improvement over hand-optimized code.
Enables portable and efficient code generation for heterogeneous systems.
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%.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
