Summary
This is a major release with a wide variety of features in all areas including staging, file I/O, build system, and many others.
Features
Build System
- When enabling MPI the build system now generates both serial and parallel libraries. One installation of ADIOS is needed only for building both parallel and serial applications
- CMake targets now support components for each supported language, i.e. instead of just
adios2
there are nowadios2::cxx11
andadios2::cxx11_mpi
- All third party dependencies can now be provided externally rather than use internal copies
Engines
- BP4 Engine: Burst buffer support for writing. File on the final target file system can still be read step-by-step in situ by other apps. Appending to an existing file, however, is NOT supported.
- New engine SSC: MPI-based engine for code coupling and in situ processing
- DataMan engine: new reliable mode, that guarantees that every step arrives at the reader
- Inline engine: is now being elevated from experimental to beta.
- SST engine:
- With the non-RDMA transport, IP Port range now defaults to "any", rather than "26000-26100". (The desired range can be specified with the ADIOS2_PORT_RANGE environment variable, see sst_conn_tool documentation for more information.)
- SST now has a "push mode" where written data is pro-actively sent to readers without waiting for specific requests. This "push mode" is either speculative (based on an assumption that data will be used) or learned (based on actual usage).
- Speculative push mode is enabled automatically in certain circumstances, managed by SST engine parameters SpeculativePreloadMode and SpecAutoNodeThreshold.
- Learned preload mode is triggered when the reader and writer indicate that their data consumption/production patterns are static by calling LockReaderSelections and LockWriterDefinitions, respectively.
API Changes (do not break compilation)
DebugMode
now deprecated from the public constructor and factory interfaces. In previous releases this flag controlled enabling or disabling additional error checking. Through extensive bench-marking of API calls it was determined that the savings was negligible so the appropriate error checking (null pointer, bounds, etc.) is now always performed within API calls and throwing exceptions (in C++) or returning error codes (C and Fortran) where appropriate.- Python
available_variables()
now has a filter list argument:available_variables(['type'])
will return faster but only provides names and types of variables. For backward compatibility,available_variables()
without arguments is identical to a call with the full listavailable_variables(['Type', 'Min', 'Max', 'SingleValue','Shape','AvailableStepsCount'])
. The filter names are case-insensitive. - YAML configuration file.
adios2::ADIOS
constructor can now accept a configuration file using the YAML format and it must have the*.yaml
or*.yml
extension. See section in docs.