Helping Scientists Save Time and Strengthen Software Development

Lois Curfman McInnes, Argonne National Laboratory

Lois Curfman McInnes, Argonne National Laboratory

Michael Heroux, Sandia National Laboratories

Michael Heroux, Sandia National Laboratories

A mathematical, or numerical, software library is a collection of algorithms and software that can make the development of scientific applications better, faster, and cheaper. The Exascale Computing Project (ECP) needs dependable mathematical libraries designed and developed for exascale platforms. Coordinating and enabling such libraries is the role of the Extreme-Scale Scientific Software Development Kit (xSDK) project. The xSDK is a first-of-a-kind effort that brings together distinct library development teams from several national laboratories—Argonne, Lawrence Berkeley (LBNL), Lawrence Livermore (LLNL), Los Alamos, Oak Ridge, and Sandia (SNL)—and the University of California and the University of Tennessee. The xSDK’s co-principal investigators (co-PIs) are senior scientists Michael Heroux of SNL and Lois Curfman McInnes of Argonne. Heroux and McInnes provided answers to the following questions about the main aspects of the xSDK.

How do mathematical libraries assist scientific application developers?

Mathematical software libraries—high-quality, encapsulated, documented, tested, multiuse software collections—provide widely reusable capabilities that are robust, efficient, and scalable for high-performance computing (HPC). A rich variety of HPC math libraries provides easy access to sophisticated mathematical algorithms and high-performance data structures that experts have developed. By using math libraries, ECP application developers do not need to write this complex code and can instead focus on their primary domain interests. ECP domain scientists will generally be able to employ better algorithms through ECP math libraries than they could write themselves. Moreover, HPC libraries enable advanced users to customize and extend capabilities to exploit domain-specific knowledge.

Why is the xSDK important to the ECP?

An exascale computer represents an increase of 100 to 1,000 times in potential capability for most application teams. Whereas some applications can fully exploit this potential by increasing only fidelity, coupling of scales (nano to macro) and physics provides greater value in other domains. ECP funds more than 20 application development efforts. Many include coupling of distinct codes for multiscale or multiphysics modeling and simulation. When these codes are combined, the scientific libraries upon which they depend must be compatible with each other. The xSDK efforts guarantee compatibility and, furthermore, enable better use of xSDK member packages in combination. The xSDK provides ECP with the critical capability of integrating those codes for leading-edge modeling and simulation of the real world to improve society. 

What’s an example of especially challenging research that’s benefiting from xSDK capabilities? 

ExaAM is an ambitious project focused on developing an integrated platform for additive manufacturing simulation. Next-generation additive manufacturing requires closer coupling of multiscale physical processes. ExaAM relies heavily on ECP math libraries and is benefiting from xSDK efforts that make available a broader collection of libraries.

What are some of the characteristics of the xSDK?  

The xSDK is a collection of independently developed scientific libraries with an added common look and feel, providing users with a similar experience regardless of which library is being used. The project’s policy-driven approach, which requires the use of best practices in the creation and support of the libraries, helps ensure the user experience is as consistent as possible. Furthermore, one scientific library can benefit from a capability that’s in another scientific library. In other words, the xSDK provides a uniform means of obtaining access to capabilities across a collection of libraries. That interoperability is useful to application developers because they don’t have to try to stitch libraries together themselves. Along with its policy-driven approach and interoperability, the xSDK enables easy installation. The user issues a single command through a tool called Spack that downloads and installs all the xSDK libraries.

Something else that’s very important about the xSDK is that the libraries within it perform very well and match well to computing architectures. We pay a lot of attention to technical aspects known as vectorization, threading performance, and message passing to enable portability across very distinct computing architectures—from GPUs to multicore CPUs. Users have this portability without having to change much in their software because we have already adapted our software to work on the various platforms.

How would you describe the xSDK development process?

It’s a community effort. We’re bringing library development teams that have traditionally worked independently of each other together into a bigger community. We are, as a community, deciding on policies that will make our software better and easier for application teams to use. Institutional PIs Sherry Li (LBNL), Ulrike Meier Yang and Carol Woodward (LLNL), Jim Demmel (University of California, Berkeley), and Jack Dongarra (University of Tennessee) and their colleagues provide essential project leadership and contributions.