DROPS (Schloss Dagstuhl – Leibniz Center for Informatics) · 2017 · 11 citations · 0 references
ComputingComputer ScienceHigh-performance ComputingCompilersProgramming LanguagesScientific ComputingDomain-specific LanguagesParallel ArchitecturesParallel ComputationParallel Computing SystemsParallel Programming ModelsCompiler SupportDomain-specific Language EngineeringEmbedded Domain-specific LanguagesHigh-performance Computing OptimizationHigh-performance Computing SystemsProgramming Model Design
Computational scientists often prototype software using productivity \nlanguages that offer high-level programming abstractions. When higher \nperformance is needed, they are obliged to rewrite their code in a \nlower-level efficiency language. Different solutions have been \nproposed to address this trade-off between productivity and \nefficiency. One promising approach is to create embedded \ndomain-specific languages that sacrifice generality for productivity \nand performance, but practical experience with DSLs points to some \nroad blocks preventing widespread adoption. This paper proposes a \nnon-invasive domain-specific language that makes as few visible \nchanges to the host programming model as possible. We present ParallelAccelerator, \na library and compiler for high-level, high-performance scientific \ncomputing in Julia. ParallelAccelerator's programming model is aligned with existing \nJulia programming idioms. Our compiler exposes the implicit \nparallelism in high-level array-style programs and compiles them to \nfast, parallel native code. Programs can also run in "library-only" \nmode, letting users benefit from the full Julia environment and \nlibraries. Our results show encouraging performance improvements with very few changes to source code required. In particular, few to no additional type annotations are necessary.