HPC I/O

ADIOS provides HPC I/O through two different engines: the BP engine and HDF5 engine.

The BP Engine writes and reads files in ADIOS native binary-pack (bp version 5) format. This format and its corresponding engine are designed for concurrent access in an HPC environment. A new revision of the format BP5 was introduced in ADIOS 2.8, improving on the metadata operations and the memory consumption of the older BP4/BP3 formats. BP5 is the default and recommended file format as of ADIOS 2.9 because it provides three main advantages:

  1. Lower memory consumption. Deferred Puts will use a user buffer for I/O wherever possible thus saving on a memory copy. Aggregation uses a fixed-size shared-memory segment on each compute node instead of using MPI to send data from one process to another. Memory consumption can get close to half of BP4 in some cases.
  2. Faster metadata management. This improves write/read performance where hundreds or more variables are added to the output.
  3. Improved functionality for appending multiple output steps into the same file. Restart can append to an existing series by truncating unwanted steps. Readers can filter out unwanted steps to only see and process a limited set of steps and existing steps cannot be corrupted by appending new steps. This results in better performance.

The HDF5 engine allows ADIOS to concurrently process HDF5 files. Hierarchical Data Format (HDF) is a set of file formats (HDF4, HDF5) designed to store and organize large amounts of data. They are considered the de facto standard in HPC I/O. Conversely, HDF clients can also open ADIOS files by using the ADIOS H5VOL plugin which is included in the ADIOS source code.

Staging

In ADIOS, the Sustainable Staging Transport (SST) is an engine that allows direct connection of data producers and consumers via the ADIOS write/read APIs. This is a classic streaming data architecture where the data passed to ADIOS on the write side (via Put() deferred and sync, and similar calls) is made directly available to a reader (via Get(), deferred and sync, and similar calls).

SST is designed for use in HPC environments and can take advantage of RDMA network interconnects to speed the transfer of data between communicating HPC applications; however, it is also capable of operating in a Wide Area Networking environment over standard sockets. SST supports full MxN data distribution, where the number of reader ranks can differ from the number of writer ranks. SST also allows multiple reader cohorts to get access to a writer’s data simultaneously.

In Situ Visualization

Simulations running on supercomputers are producing ever larger datasets, increasing the costs of data movement and access. In situ visualization is used to visualize the data while it is still in memory. With ADIOS, in situ visualization can be performed using ADIOS’s Inline engine and ParaView Catalyst. The Inline engine requires a writer and reader to be set up in the same process and shares data pointers between the two. ParaView Catalyst is an in situ visualization API. To process ADIOS data, ParaView Catalyst uses the Fides data model library to set up an Inline Reader that can be connected to the simulation’s Inline Writer. To simplify the process of using both the Inline Writer and connecting it to ParaView Catalyst, ADIOS provides an engine plugin called ParaViewADIOSInSituEngine. This engine sets up the Inline Writer, initializes ParaView Catalyst (which sets up the Inline Reader), and makes the calls to the Catalyst API to perform the in situ visualization. Normally a simulation would need to be directly instrumented with the Catalyst API call, but with ADIOS, the user does not need to change the simulation code. They need only specify they want to use the in situ engine plugin as well as a Python script containing the ParaView pipeline to be performed.

ADIOS Resources

Whether you are just getting started or are already part of the ADIOS community, check out our helpful resources page.