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.
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.