ADIOS2 : The Adaptable Input Output System version 2
June 2, 2026 ยท View on GitHub
ADIOS2 : The Adaptable Input Output System version 2
ADIOS2 is an adaptable, scalable, and unified framework for scientific data I/O. It transports self-describing variables and attributes across files, networks, and memory using a single API, and is used in production on the world's largest supercomputers.
Features
- Unified I/O API: same interface for files, wide-area networks, and in-memory staging; switch transport without changing application code
- BP format: self-describing binary-packed format (
.bp) with rapid metadata extraction and built-in compression support - MPI-native: scales from laptop to petabyte workloads on the largest HPC systems; serial use also supported
- Streaming and step-based: asynchronous, grouped variable transport with an explicit steps abstraction for in-situ and in-transit workflows
- Multiple language bindings: C++17, Python, C99, Fortran 90, and Matlab
- Compression operators: ZFP, SZ, MGARD, Blosc2, PNG, and others
- Encryption operators: symmetric (AES-256-GCM) and asymmetric encryption available for data at rest
- In-situ/in-transit engines: SST and DataMan engines for code coupling over RDMA, MPI, and TCP without touching files
- DAOS engine: writes and reads datasets through the DAOS data plane (native object API) directly, with no dfuse or POSIX interception required
- Plugin support: extend ADIOS2 with custom engines and operators via shared-library plugins at runtime
- Security-focused: committed to OpenSSF best practices; see the OpenSSF Scorecard and Best Practices badge
- Widely available: packaged for major Linux distributions, Conda, Spack, Homebrew, and vcpkg; validated on U.S. DoE supercomputers including Frontier, Summit, and Perlmutter
- HDF5 VOL: existing HDF5 applications can use ADIOS2 as a backend transparently via the HDF5 Virtual Object Layer
Example
import adios2
import numpy as np
data = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
# Write to a BP file
with adios2.Stream("data.bp", "w") as f:
f.write("data", data)
# Read it back
with adios2.Stream("data.bp", "r") as f:
for _ in f.steps():
result = f.read("data")
print(result) # [1. 2. 3. 4. 5.]
Install ADIOS2
Python (PyPI):
pip install adios2
From source: See the install documentation and scripts/runconf/runconf.sh for a CMake configuration example. Once installed, refer to Linking ADIOS2.
Packages
| Platform | Package |
|---|---|
| Summary | |
| Conda | |
| Spack | |
| Homebrew | |
| Ubuntu 24.04 | |
| Ubuntu 26.04 | |
| Debian Unstable | |
| Arch | |
| OpenSUSE TumbleWeed | |
| Nix unstable | |
| vcpkg | |
| Dockerhub |
Resources
- Documentation: adios2.readthedocs.io
- Latest release: v2.12.1
- All releases: github.com/ornladios/ADIOS2/releases
- Citing: if you find ADIOS2 useful, please cite our SoftwareX paper
Community
ADIOS2 is an open source project: questions, discussion, and contributions are welcome.
- Mailing list: adios-ecp@kitware.com
- Github Discussions: https://github.com/ornladios/ADIOS2/discussions
- Bug reports: open an issue
- Contributing: see the Contributor's Guide
Institutions
ADIOS2 is developed as a multi-institutional collaboration between:
- Oak Ridge National Laboratory
- Kitware Inc.
- Lawrence Berkeley National Laboratory
- Georgia Institute of Technology
- Rutgers University
License
ADIOS2 is licensed under the Apache License v2.0. See the accompanying Copyright.txt for more details.