Erbium: A Deterministic, Concurrent Intermediate Representation for Portable and Scalable Performance
Abstract
Optimizing compilers and runtime libraries do not shield programmers from the complexity of multi-core hardware; as a result the need for manual, target-specific optimizations increases with every processor generation. High-level languages are being designed to express concurrency and locality without reference to a particular architecture. But compiling such abstractions into efficient code requires a portable, intermediate representation: this is essential for modular composition (separate compilation), for optimization frameworks independent of the source language, and for just-in-time compilation of bytecode languages. This paper introduces Erbium, an intermediate representation for compilers, a low-level language for efficiency programmers, and a lightweight runtime implementation. It relies on a data structure for scalable and deterministic concurrency, called Event Record, exposing the data-level, task and pipeline parallelism suitable to a given target. We provide experimental evidence of the productivity, scalability and efficiency advantages of Erbium, relying on a prototype implementation in GCC 4.3.
Domains
Programming Languages [cs.PL]
Fichier principal
cf154-miranda.pdf (94.43 Ko)
Télécharger le fichier
poster_final.pdf (1.21 Mo)
Télécharger le fichier
Origin : Files produced by the author(s)
Format : Other