Title
Forge: generating a high performance DSL implementation from a declarative specification
Abstract
Domain-specific languages provide a promising path to automatically compile high-level code to parallel, heterogeneous, and distributed hardware. However, in practice high performance DSLs still require considerable software expertise to develop and force users into tool-chains that hinder prototyping and debugging. To address these problems, we present Forge, a new meta DSL for declaratively specifying high performance embedded DSLs. Forge provides DSL authors with high-level abstractions (e.g., data structures, parallel patterns, effects) for specifying their DSL in a way that permits high performance. From this high-level specification, Forge automatically generates both a naïve Scala library implementation of the DSL and a high performance version using the Delite DSL framework. Users of a Forge-generated DSL can prototype their application using the library version, and then switch to the Delite version to run on multicore CPUs, GPUs, and clusters without changing the application code. Forge-generated Delite DSLs perform within 2x of hand-optimized C++ and up to 40x better than Spark, an alternative high-level distributed programming environment. Compared to a manually implemented Delite DSL, Forge provides a factor of 3-6x reduction in lines of code and does not sacrifice any performance. Furthermore, Forge specifications can be generated from existing Scala libraries, are easy to maintain, shield DSL developers from changes in the Delite framework, and enable DSLs to be retargeted to other frameworks transparently.
Year
DOI
Venue
2013
10.1145/2517208.2517220
GPCE
Keywords
Field
DocType
forge-generated dsl,delite dsl,declarative specification,forge-generated delite dsls,new meta dsl,delite framework,delite dsl framework,high performance,dsl developer,dsl author,delite version,high performance dsl implementation,parallel programming,code generation,domain specific languages
Domain-specific language,Programming language,Scala,Computer science,Digital subscriber line,Code generation,Compiler,Multi-stage programming,Source lines of code,Debugging
Conference
Volume
Issue
ISSN
49
3
0362-1340
Citations 
PageRank 
References 
5
0.45
25
Authors
7
Name
Order
Citations
PageRank
Arvind K. Sujeeth150220.58
Austin Gibbons260.80
Kevin J. Brown344818.62
HyoukJoong Lee441417.71
Tiark Rompf574345.86
Martin Odersky62261170.39
Kunle Olukotun74532373.50