An introduction to the xSDK, a community of diverse numerical HPC software packages
Extreme-scale computational science increasingly demands multiscale and multiphysics formulations, which in turn require many high-quality, robust, portable high-performance math libraries. However, without coordination, many libraries cannot be easily composed. The Extreme-scale Scientiﬁc Software Development Kit (xSDK) provides infrastructure for a collection of related and complementary software elements—developed by diverse, independent teams throughout the HPC community—that provide the building blocks, tools, models, processes, and related artifacts for rapid and efficient development of high-quality applications.
This tutorial describes the development of the xSDK, while at the same time providing motivation and process for the general development of a software development kit. We discuss community policies that were defined to achieve improved code quality and compatibility across independently developed packages. We describe how to be included into the xSDK and the release process. Each software package is integrated into the xSDK using the Spack package manager. We describe the integration process together with common packaging workflows. We also provide some lessons learned by member package software developers on how to achieve xSDK compatibility as well as on the use of the xSDK in applications. Finally, we provide information on capabilities and usage of some of these libraries.