Software Composition for Extreme Scale Computational Science and Engineering: COMPOSE-HPC investigated solutions to the software composition challenge in modern computational science.
Developing modern applications for computational science and engineering involves teams of people who develop individual modules that may be written in different languages, with varying levels of verification and validation, for different types of processors and meant to be run on different arrangements of threads and processes.
Consequently, these varying modules need to be assembled, often with additional third-party libraries, to produce the desired application. This process poses a range of significant technical challenges for application developers, which the DOE funded COMPOSE-HPC project addressed as we push computers and applications to exaflop performance levels.
Specifically, software composition poses real, practical challenges for computational scientists, for whom the software is not the end product, but rather a tool for pursuing their scientific research. In some cases, the challenges are sufficiently intimidating or time consuming to solve that they can stymie scientifically interesting lines of research.
The goal of the COMPOSE-HPC project was to provide users with the practical, high-performance tools and supporting infrastructure that they can use to address software composition challenges rather than having to continually reinvent ad hoc solutions. These include language interoperability, contract enforcement for code verification, automatic insertion of performance or other instrumentation, and data marshaling for accelerators. These tools were designed to be extensible to facilitate the addition of new capabilities when the need arises.