Exascale architectures will have complex, heterogeneous memory hierarchies—ranging from node-level caches and main memory to persistent storage via the file system—that applications need to effectively achieve their science goals. At the same time, exascale applications are becoming more complex in their data flows, from multiscale and multiphysics simulations that must exchange data between separate codes to simulations that invoke data analysis and visualization services to extract information and render it to storing simulation output to the file system for later analysis. The Adaptable I/O Systems (ADIOS) project delivers a highly optimized coupling infrastructure that enables efficient synchronous and asynchronous data exchanges to move data between multiple codes running concurrently and to the different layers of the storage system.
The Adaptable I/O System (ADIOS) in the Exascale Computing Project (ECP)’s Data and Visualization portfolio, addresses data management and in situ analysis concerns for industrial, academic, and exascale applications. The ADIOS team successfully optimized I/O on exascale architectures according to modern software practices, which means the software is scalable, maintainable, sustainable, and extensible while ensuring performance.
The developers describe ADIOS as a framework that puts computation in the proper place at the proper time in a data-rich environment. The framework was designed to enable scientists and engineers to describe their data and how they would like to use it without being distracted by details of the underlying storage technology and file formats.
To provide a very simple way to realize extreme-performance I/O, the project focused on transforming the existing ADIOS 1.x software (which has been used successfully on petascale resources), into a community framework that can efficiently utilize exascale hardware. This effort required refactoring to create a generalized software ecosystem (rather than a point solution) that can be customized and shared among a variety of users, exascale applications, and hardware technologies. Software modularity, flexibility, and extensibility were all achieved by using C++ and extending, tuning, and hardening the core services such as I/O and staging to support applications, architectures, and technologies up to and including exascale systems. The result is a sustainable, maintainable, and more approachable all-scale framework that can be used by a wide community of users and developers.
The ECP team adopted a project approach that focused on doing deep dives of software needs with scientists, end users, and developers to ensure that the software development process led to specific, verifiable results that positively impact their customers. This approach meant working directly with select US Department of Energy (DOE) and other ECP application developers to understand their requirements for scalable and high-performance I/O, staging, or code coupling solutions to avoid any I/O bottlenecks in their production runs. Notable projects include the following:
The challenge of supporting hardware portability and runtime performance tuning was addressed by paying special attention to the architecture of the ADIOS code base and adopting state-of-the-art software engineering methodologies to make it easier for the DOE community to use, maintain, and extend the ADIOS framework. The new code base is governed with state-of-the-art software development practices, including a GitHub workflow of pull requests with reviews, continuous integration that enforces well-tested changes to the code only, and nightly builds to efficiently catch errors on various combinations of architectures and software stacks.
ADIOS is designed to tackle data management challenges posed by large-scale science applications that run on high-performance computers and require, for example, code-to-code coupling for multiphysics and multiscale applications and code-to-service coupling for data analysis and visualization. Notably, ADIOS provides a simple, declarative publish/subscribe I/O interface so that applications can easily describe the data that they produce or consume. ADIOS has multiple optimized solutions to transfer data between codes and to the file system.
The ADIOS team is focused on providing high-quality performant software products to address the data flow requirement of exascale applications on pre-exascale and exascale architectures. Therefore, the team is optimizing and creating new ADIOS microservices to efficiently perform the data transfers needed by applications that can use pre-exascale and exascale architecture features so that the exascale applications can meet their science and performance goals. The framework that the team delivers supports synchronous and asynchronous data exchanges and provides the capabilities necessary for in situ processing and code coupling and efficient data transfers to the file system.