000180642 001__ 180642
000180642 005__ 20190316235448.0
000180642 0247_ $$2doi$$a10.5075/epfl-thesis-5456
000180642 02470 $$2urn$$aurn:nbn:ch:bel-epfl-thesis5456-2
000180642 02471 $$2nebis$$a7334938
000180642 037__ $$aTHESIS
000180642 041__ $$aeng
000180642 088__ $$a5456
000180642 245__ $$aLightweight Modular Staging and Embedded Compilers$$bAbstraction without Regret for High-Level High-Performance Programming
000180642 269__ $$a2012
000180642 260__ $$aLausanne$$bEPFL$$c2012
000180642 336__ $$aTheses
000180642 520__ $$aPrograms expressed in a high-level programming language need to be translated to a low-level machine dialect for execution. This translation is usually accomplished by a compiler, which is able to translate any legal program to equivalent low-level code. But for individual source programs, automatic translation does not always deliver good results: 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 tomodern hardware platforms in a way that makes best use of the available resources. Explicit program generation is a promising alternative to fully automatic translation. Instead of writing down the program and relying on a compiler for translation, developers write a program generator, which produces a specialized, efficient, low-level program as its output. However, developing high-quality program generators requires a very large effort that is often hard to amortize. In this thesis, we propose a hybrid design: Integrate compilers into programs so that programs can take control of the translation process, but rely on libraries of common compiler functionality for help. We present Lightweight Modular Staging (LMS), a generative programming approach that lowers the development effort significantly. LMS 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. Compared to previous work on programgeneration, a key aspect of our design is the use of staging not only as a front-end, but also as a way to implement internal compiler passes and optimizations, many of which can be combined into powerful joint simplification passes. 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.
000180642 6531_ $$aProgramming Languages
000180642 6531_ $$aCompilers
000180642 6531_ $$aStaging
000180642 6531_ $$aPerformance
000180642 6531_ $$aParallelism
000180642 700__ $$0243345$$aRompf, Tiark$$g185682
000180642 720_2 $$0241835$$aOdersky, Martin$$edir.$$g126003
000180642 8564_ $$s2589643$$uhttps://infoscience.epfl.ch/record/180642/files/EPFL_TH5456.pdf$$yn/a$$zn/a
000180642 909C0 $$0252187$$pLAMP$$xU10409
000180642 909CO $$ooai:infoscience.tind.io:180642$$pthesis-bn2018$$pDOI$$pIC$$pthesis$$qDOI2$$qGLOBAL_SET
000180642 917Z8 $$x108898
000180642 918__ $$aIC$$cIIF$$dEDIC2005-2015
000180642 919__ $$aLAMP1
000180642 920__ $$b2012
000180642 970__ $$a5456/THESES
000180642 973__ $$aEPFL$$sPUBLISHED
000180642 980__ $$aTHESIS