NabLab is a open-source research project led by HPC initiative of the CEA. It aims is to provide a productive development way for exascale HPC technologies, flexible enough to be competitive in terms of performances. It is composed of:
- a numerical analysis Domain Specific Language (DSL) to improve applied mathematicians productivity throughput and enables new algorithmic developments for the construction of hierarchical and composable high-performance scientific applications.
- an full-fledged environment to edit, interpret, debug specific numerical-analysis sources and to generate optimized code for various C++ targets.
Motivation
Addressing the major challenges of software productivity and performance portability is becoming necessary to take advantage of emerging extreme-scale computing architectures. As software development costs will continuously increase to address exascale hardware issues, higher-level programming abstraction will facilitate the path to go. There is a growing demand for new programming environments in order to improve scientific productivity, to facilitate the design and implementation, and to optimize large production codes.
How it works
NabLab is based on Eclipse Modeling Framework (EMF). The NabLab DSL is realized with Xtext that allows to offer a rich textual editor with syntax coloring, code completion, quick fixes… The DSL raises the level of abstraction close to domain scientist concerns and allows them to write multi-physics applications.
The code in the editor has an internal EMF model representation. This representation, close to the language, is transformed into a numerical analysis specific Intermediate Representation (IR) also implemented as an Ecore metamodel. The transformation chain, based on the IR model, allows HPC engineers to introduce software engineering practices and performance optimization before the code generation. Currently NabLab generates multi threaded C++ for various backends: Kokkos, Open MP and STL based threads.
Consequently, NabLab provides a way for domain scientists and software engineers to work for the same project onto separate processes.