Erbium: A Deterministic, Concurrent Intermediate Representation for Portable and Scalable Performance (2009)
BibTeX
@MISC{Mir09erbium:a,
author = {Cupertino Mir and Albert Cohen and Marc Duranton and Antoniu Pop},
title = {Erbium: A Deterministic, Concurrent Intermediate Representation for Portable and Scalable Performance},
year = {2009}
}
OpenURL
Abstract
Tuning applications for multi-core systems involve subtle concepts and target-dependent optimizations. New 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. An intermediate representation is also essential to library and other baseline computing infrastructure developers who cannot afford the abstraction penalty of higher-level languages. But efficiency is nothing if it ruins productivity of the few available experts. Efficiency programmers need an alternative to fragile, ad-hoc optimizations built upon non-deterministic primitives. This paper introduces Erbium, an intermediate representation for compilers, a low-level language for efficiency programmers, and a lightweight runtime implementation. It is built upon a new data structure for scalable and deterministic concurrency, called Event Recording (Er). Our work is inspired by the semantics of data-flow and synchronous languages, motivated by advanced optimizations relying on non-blocking concurrency. We provide experimental evidence of the productivity, scalability and efficiency advantages of Erbium, relying on a prototype implementation in GCC 4.3. 1







