The Exascale Computing Project has concluded. This site is retained for historical references.

xSDK4ECP

The large number of software technologies being delivered to application developers poses challenges, especially if the application needs to use more than one technology simultaneously, such as using a linear solver from the PETSc/TAO mathematics library in conjunction with a time integrator from the SUNDIALS library. The Extreme-Scale Scientific Software Development Kit (xSDK) project is an effort to create a value-added aggregation of mathematics and scientific libraries and increase the combined usability, standardization, and interoperability of these libraries.

Summary

The Exascale Computing Project (ECP) has delivered a very large number of impactful software technologies. But many scientific applications don’t rely on only one set of software capabilities, and it is important for these software products to behave as an ecosystem instead of in isolation. The new challenge in high performance computing (HPC) is to ensure different software products can effectively interoperate to maintain a sustainable future.

Achieving this interoperability requires software to be tested together and be built in common ways. ECP offers two solutions: the Extreme-scale Science Software Stack (E4S) and the software development kits (SDKs).

E4S encompasses the full suite of ECP’s software technology products, and provides HPC users with improved access to these products with preinstalled versions, the Spack build cache—Spack being ECP’s software deployment tool that handles software dependencies—and Spack recipes that can be customized to specific needs. Since the majority of users will likely only require a subset of ECP software, E4S offers the option to pick what they need and turn off anything else. E4S also coordinates with HPC facilities to help deploy the software on various machines.

SDKs, meanwhile, offer specific categories of individual software products with common use cases. These groups of software are specifically tailored to be able to work together. For example, the programming models and runtimes SDK focuses on enabling robust, low-cost exascale applications, while the development tools SDK addresses common problem patterns at scale. Other SDKs include the math libraries SDK, the data and visualization SDK, and the scientific workflows SDK. Each SDK relies on its developer community to identify their own specific needs, and the SDK teams find and test ways to use related software together and deliver them through E4S.

Both E4S and SDKs provide important solutions to government agencies—including the National Oceanic and Atmospheric Administration and NASA—as well as to industry users. By increasing the interoperability between ECP’s software technologies and coordinating their delivery, E4S and SDKs have helped increase the availability, quality, and long-term sustainability of HPC software.

Technical Discussion

As architectures become more complex and applications become reliant on multiple libraries to supply performant capabilities on those architectures to achieve their exascale performance and science goals, the ability to incorporate multiple libraries into one executable is necessary. The xSDK project is an effort to provide the turnkey installation and use of popular scientific packages needed for next-generation scientific applications. The xSDK project is working to (1) enable the seamless combined use of diverse, independently developed numerical libraries as needed by exascale applications; (2) develop interoperability layers among numerical libraries to improve code quality, access, usability, interoperability, and sustainability; and (3) provide an aggregate build and install capability for the numerical libraries that supports hierarchical, modular installation. It also focuses on integrated execution (control inversion and adaptive execution strategies.The xSDK project focuses on community development and a commitment to combined success via quality improvement policies, better build infrastructure, and the ability to use numerical libraries in combination to solve large-scale multiphysics and multiscale problems. The project represents a different approach to coordinating library development and deployment. Previously the xSDK, scientific software packages were cohesive with one team effort but not across these efforts. The xSDK goes a step further by developing community policies followed by each independent library included in the xSDK. This policy-driven, coordinated approach enables independent development that still results in compatible and composable capabilities. Moreover, the xSDK provides a forum for collaborative numerical library development, helping independent teams accelerate the adoption of best practices, enabling the interoperability of independently developed libraries, and improving developer productivity and library sustainability.

The xSDK project also entails a coordinated effort to investigate and deploy multiprecision functionality in the Exascale Computing Project (ECP) software technology (ST) ecosystem to enable the use of low-precision hardware function units, reduce the pressure on memory and communication interfaces, and achieve improved performance. After conducting a comprehensive analysis of existing theory and multiprecision functionalities, the project focuses on developing multiprecision capabilities in xSDK member libraries, acknowledging the cross-library interoperability as a first-class design consideration. After a thorough investigation of the numerical robustness and performance potential, the project has started integrating multiprecision functionality into ECP application projects.

Other efforts of the project include the development of autotuning software for the parameter optimization of high-performance computing codes and the inclusion of batched sparse linear algebra in xSDK libraries for improved GPU performance. The team is collaborating with ECP industry partners to design interfaces for batched sparse linear algebra operations for various GPUs. This set of new APIs supports development of batched sparse linear solvers and preconditioners on GPUs as well as new interoperability layers for integration across applications, solvers and lower-level libraries.

Principal Investigator(s)

Ulrike Yang, Lawrence Livermore National Laboratory

Collaborators

Lawrence Livermore National Laboratory; Argonne National Laboratory; Sandia National Laboratories; Lawrence Berkeley National Laboratory; Oak Ridge National Laboratory; University of California, Berkeley; University of Tennessee, Knoxville; University of Oregon; Karlsruhe Institute of Technology; University of Manchester; Charles University at Prague

National Nuclear Security Administration logo Exascale Computing Project logo small U.S. Department of Energy Office of Science logo