The many software technologies being delivered to the Exascale Computing Project (ECP) application developers pose challenges, especially if the application uses several software technology products. The software development kit (SDK) efforts identify meaningful aggregations of products within the programming models and runtimes, development tools, math libraries, and data and visualization technical areas. They also leverage composable scientific workflow technologies with the goal of increasing the interoperability, availability, quality, and sustainability of the software technologies being developed in the ECP while improving developer productivity for the software and application development teams. The SDKs are packaged and delivered through the Extreme-Scale Scientific Software Stack (E4S).
The forthcoming exascale systems require a sustainable, high-quality software ecosystem, and the ECP is chartered with delivering such an ecosystem that will continuously be improved by a robust research and development effort, deployed on advanced computing platforms, and broadly adopted by application teams and software developers to accelerate their science. The E4S and SDK efforts support a variety of activities, including establishing community policies aimed at increasing the interoperability between and sustainability of software technologies developed by the ECP and coordinating the delivery of those products through the E4S.
The Programming Models and Runtimes SDK effort identifies meaningful aggregations of products in this technical area. It provides the software infrastructure needed to enable and accelerate the development of exascale applications that perform well and are correct and robust while reducing the cost of initial development, ongoing porting, and maintenance.
The Development Tools SDK is a collection of independent projects specifically targeted to address performance analysis at scale. The team actively works to leverage techniques for common and identified problem patterns and creates new techniques for software quality assurance related to performance analysis tools while also supporting advanced techniques, such as autotuning and compiler integration, for upcoming heterogeneous architectures.
The Data and Visualization SDK focuses on the delivery of efficient data management and storage libraries; services such as checkpoint/restart, monitoring, code coupling, and compression; and an efficient in situ visualization and analysis pipeline. The goal is to improve the deployment and usage of I/O and analysis capabilities.
The Scientific Workflows SDK is a new effort to create a rigorously tested community-curated collection of composable workflow technologies. The goal of this SDK is to ensure the exascale readiness of many scientific and other relevant ECP simulation workflows and improve their long-term sustainability. Toward this goal, the team is applying a community approach to design the SDK, integrate libraries and components, and define component interfaces.
The Software Ecosystem SDK effort coordinates activities between the various SDK projects, manages the release and testing of the E4S, and ensures that the software technologies within E4S can be built from source via the Spack package manager or used via prebuilt container images. Application developers can build the subset of the software technologies needed for their specific application. This effort fosters collaboration between software technologies and interacts heavily with the Hardware and Integration (HI) focus area to facilitate software product installation at the facilities.