ADaptable IO System (ADIOS) initially developed at ORNL by Jay Lofstead and Scott Klasky, Summer 2007

This was built on work previously done by

The major goals of the API are threefold:

  1. Provide a simplified, easy to use API for scientists to write their IO operations
  2. Deliver enhanced I/O and code performance through both asynchronous techniques and best practices implementations of IO routines
  3. Provide a stable interface platform for experimentation in the IO space for existing scientific codes at scale without requiring any changes to the scientific codes

The API consists of two main parts:

  1. The programmatic interface for Fortran and also usable for C and other C-linkable languages.
  2. An XML configuration file for defining the IO types and methods.

Programmatic Interface:

XML file format and elements: format: <element-name attr1 attr2 ...> with descriptions to follow. Formatted like an XML document.

<adios-config> - root element for the entire file

<adios-group name coordination-communicator coordination-var> - a grouping element for a datatype used for a write operation (such as a restart or diagnostics data set)

<global-bounds dimensions offsets> - [optional] enclosing var element(s) within a global-bounds specifies how those var(s) map into a global space. Use the coordination-* attributes of the adios-group to collate the vars into a single whole.

<var name path type dimensions write copy-on-write/> - non-vector data types

</global-bounds>

<attribute name path type var value/>

Either var or value must be provided, but not both.

<mesh type time-varying>

“uniform” <dimensions value/>

<origin value/>

<spacing value/>

“rectilinear” <dimensions value/>

<coordinate-single-var value/>

<coordinate-multi-var value/>

“structured” <nspace value/>

<dimensions value/>

<points-single-var value/>

<points-multi-var value/>

“unstructured” <points components number-of-points value/>

<uniform-cells count data type/>

<mixed-cells count data types/>

</mesh>

</adios-group>

<method type method priority iterations>parameters</method> - mapping a writing method to a data type including any initialization. One or more of these should be provided for each data-group. If more than one is provided, all will be used.

</method>

<buffer size-MB free-memory-percentage allocate-time/> - internal buffer sizing and creation time

</adios-config>

NOTES:

  1. Name elements in the XML file are just strings. The only restrictions are that if the item is to be used in a dataset dimension, it must not contain a comma and must contain at least one non-numeric character. This is useful for putting expressions as various dimensions.
  2. It is critical that the first item in your XML file be the standard <?xml version=”1.0”?> in order for it to be parsed properly.
  3. There is a mailing list for those interested in developments about this API available at http://caip.rutgers.edu/mailman/listinfo/aio
  4. The format for the .bp files is the Tagged Binary Format
  5. A semi-public SVN repository of the code will be hosted at UNM and will be available soon.