REVIEW 3 cited by
RISE & Shine: Language-Oriented Compiler Design
Not yet reviewed by Pith; the record is open.
This paper has not been read by Pith yet. Machine review is queued; the pith claim, tier, and objections will appear here once it completes.
SPECIMEN: schema-true, not a live event
T0 review · schema-true
One-sentence machine reading of the paper's core claim.
pith:XXXXXXXX · record.json · timestamp
Signed reviews
read the original abstract
The trend towards specialization of software and hardware - fuelled by the end of Moore's law and the still accelerating interest in domain-specific computing, such as machine learning - forces us to radically rethink our compiler designs. The era of a universal compiler framework built around a single one-size-fits-all intermediate representation (IR) is over. This realization has sparked the creation of the MLIR compiler framework that empowers compiler engineers to design and integrate IRs capturing specific abstractions. MLIR provides a generic framework for SSA-based IRs, but it doesn't help us to decide how we should design IRs that are easy to develop, to work with and to combine into working compilers. To address the challenge of IR design, we advocate for a language-oriented compiler design that understands IRs as formal programming languages and enforces their correct use via an accompanying type system. We argue that programming language techniques directly guide extensible IR designs and provide a formal framework to reason about transforming between multiple IRs. In this paper, we discuss the design of the Shine compiler that compiles the high-level functional pattern-based data-parallel language RISE via a hybrid functional-imperative intermediate language to C, OpenCL, and OpenMP. We compare our work directly with the closely related pattern-based Lift IR and compiler. We demonstrate that our language-oriented compiler design results in a more robust and predictable compiler that is extensible at various abstraction levels. Our experimental evaluation shows that this compiler design is able to generate high-performance GPU code.
Forward citations
Cited by 3 Pith papers
-
Verifying Properties of Index Arrays in a Purely-Functional Data-Parallel Language
A Futhark compiler pass verifies array properties (range, monotonicity, injectivity, bijectivity, filtering/partitioning) on non-linear index computations, enabling static elimination of dynamic checks.
-
High-Level Big Integer Arithmetic in Futhark for GPUs
High-level Futhark code for GPU big-integer arithmetic can approach hand-written CUDA performance once arrays are automatically placed in registers.
-
Comparing Parallel Functional Array Languages: Programming and Performance
A five-language benchmark study finds that on 70% of 36 measured baseline instances the best functional array language reaches at least 80% of hand-optimized baseline performance, though only Futhark and DaCe are cons...
Discussion (0). Continue with ORCID to comment.