000178274 001__ 178274
000178274 005__ 20190316235417.0
000178274 0247_ $$2doi$$a10.1145/2184319.2184345
000178274 02470 $$2ISI$$a000304442000032
000178274 037__ $$aARTICLE
000178274 245__ $$aLightweight Modular Staging: A Pragmatic Approach to Runtime Code Generation and Compiled DSLs
000178274 269__ $$a2012
000178274 260__ $$c2012
000178274 336__ $$aJournal Articles
000178274 520__ $$aGood software engineering practice demands generalization and abstraction, whereas high performance demands specialization and concretization. These goals are at odds, and compilers can only rarely translate expressive high-level programs to modern hardware platforms in a way that makes best use of the available resources. Generative programming is a promising alternative to fully automatic translation. Instead of writing down the target program directly, developers write a program generator, which produces the target program as its output. The generator can be written in a high-level, generic style and still produce efficient, specialized target programs. In practice, however, developing high-quality program generators requires a very large effort that is often hard to amortize. We present Lightweight Modular Staging (LMS), a generative programming approach that lowers this effort significantly. LMS seamlessly combines program generator logic with the generated code in a single program, using only types to distinguish the two stages of execution. Through extensive use of component technology, LMS makes a reusable and extensible compiler framework available at the library level, allowing programmers to tightly integrate domain-specific abstractions and optimizations into the generation process, with common generic optimizations provided by the framework. LMS is well suited to develop embedded domain specific languages (DSLs) and has been used to develop powerful performance-oriented DSLs for demanding domains such as machine learning, with code generation for heterogeneous platforms including GPUs. LMS has also been used to generate SQL for embedded database queries and JavaScript for web applications.
000178274 6531_ $$aLanguages
000178274 6531_ $$aLibraries
000178274 700__ $$0243345$$g185682$$aRompf, Tiark
000178274 700__ $$aOdersky, Martin$$g126003$$0241835
000178274 773__ $$j55$$tCommunications Of The Acm$$q121-130
000178274 8564_ $$uhttps://infoscience.epfl.ch/record/178274/files/lms-cacm2012.pdf$$zPreprint$$s398644$$yPreprint
000178274 909C0 $$xU10409$$0252187$$pLAMP
000178274 909CO $$ooai:infoscience.tind.io:178274$$qGLOBAL_SET$$pIC$$particle
000178274 917Z8 $$x185682
000178274 917Z8 $$x185682
000178274 937__ $$aEPFL-ARTICLE-178274
000178274 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000178274 980__ $$aARTICLE