The following paper was presented at ASPLOS 2012:
London, United Kingdom
March 3-7, 2012
Green-Marl: A DSL for Easy and Efficient Graph AnalysisSungpack Hong, Hassan Chafi, Eric Sedlar, and Kunle Olukotun
The increasing importance of graph-data based applications is fueling the need for highly efficient and parallel implementations of graph analysis software. In this paper we describe Green-Marl, a domain-specific language (DSL) whose high level language constructs allow developers to describe their graph analysis algorithms intuitively, but expose the data-level parallelism inherent in the algorithms. We also present our Green-Marl compiler which translates high-level algorithmic description written in Green-Marl into an efficient C++ implementation by exploiting this exposed data-level parallelism. Furthermore, our Green-Marl compiler applies a set of optimizations that take advantage of the high-level semantic knowledge encoded in the Green-Marl DSL. We demonstrate that graph analysis algorithms can be written very intuitively with Green-Marl through some examples, and our experimental results show that the compiler-generated implementation out of such descriptions performs as well as or better than highly-tuned handcoded implementations.
Paper PDF | Slides
Tutorial on DSLs and Delite at CGO 2012:
|International Symposium on Code Generation and Optimization
San Jose, California, USA
March 31 - April 4, 2012
High-Performance Domain-Specific Languages using DeliteKunle Olukotun, Hassan Chafi, Arvind Sujeeth, Zach Devito, Sungpack Hong, Kevin Brown, HyoukJoong Lee
This tutorial is an introduction to developing domain specific languages (DSLs) for productivity and performance using Delite. Delite is a Scala infrastructure that simplifies the process of implementing DSLs for parallel computation. The goal of this tutorial is to equip attendees with the knowledge and tools to develop DSLs that can dramatically improve the experience of using high performance computation in important scientific and engineering domains. In the first half of the day we will focus on example DSLs that provide both high-productivity and performance. In the second half of the day we will focus on understanding the infrastructure for implementing DSLs in Scala and developing techniques for defining good DSLs.