ADIOS2 : The Adaptable Input Output System version 2

June 2, 2026 ยท View on GitHub

License Documentation GitHub release latest packaged version(s) OpenSSF Scorecard OpenSSF Best Practices

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

PlatformPackage
Summarylatest packaged version(s)
CondaConda Version
SpackSpack package
HomebrewHomebrew package
Ubuntu 24.04Ubuntu 24.04 package
Ubuntu 26.04Ubuntu 26.04 package
Debian UnstableDebian Unstable package
ArchArch Linux package
OpenSUSE TumbleWeedopenSUSE Tumbleweed package
Nix unstablenixpkgs unstable package
vcpkgVcpkg package
DockerhubDocker Image Version

Resources

Community

ADIOS2 is an open source project: questions, discussion, and contributions are welcome.

Institutions

ADIOS2 is developed as a multi-institutional collaboration between:

License

ADIOS2 is licensed under the Apache License v2.0. See the accompanying Copyright.txt for more details.