File: nutshell.rst

package info (click to toggle)
adios2 2.10.2%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 33,764 kB
  • sloc: cpp: 175,964; ansic: 160,510; f90: 14,630; yacc: 12,668; python: 7,275; perl: 7,126; sh: 2,825; lisp: 1,106; xml: 1,049; makefile: 579; lex: 557
file content (64 lines) | stat: -rw-r--r-- 3,535 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
**ADIOS2** is the latest implementation of the `Adaptable Input Output System <https://csmd.ornl.gov/software/adios2>`_.
This brand new architecture continues the performance legacy of ADIOS1, and extends its capabilities to address the extreme challenges of scientific data IO.

The `ADIOS2 repo is hosted at GitHub <https://github.com/ornladios/ADIOS2>`_.

The ADIOS2 infrastructure is developed as a multi-institutional collaboration
between

  * `Oak Ridge National Laboratory <https://www.ornl.gov>`_
  * `Kitware Inc. <https://www.kitware.com>`_
  * `Lawrence Berkeley National Laboratory <http://www.lbl.gov>`_
  * `Georgia Institute of Technology <http://www.gatech.edu>`_
  * `Rutgers University <http://www.rutgers.edu>`_

The key aspects ADIOS2 are

#. **Modular architecture:** ADIOS2 takes advantage of the major features
   of C++11. The architecture utilizes a balanced combination of runtime
   polymorphism and template meta-programming to expose intuitive abstractions for a broad range of IO applications.


#. **Community:** By maintaining coding standards, collaborative
   workflows, and understandable documentation, ADIOS2 lowers the barriers to entry for scientists to meaningfully interact with the code.


#. **Sustainability:** Continuous integration and unit testing ensure that ADIOS2 evolves responsibly.
   Bug reports are triaged and fixed in a timely manner and can be reported on `GitHub <https://github.com/ornladios/ADIOS2/issues>`_.


#. **Language Support:** In addition to the native C++, bindings for Python, C, Fortran and Matlab are provided.


#. **Commitment:** ADIOS2 is committed to the HPC community, releasing a new version every 6 months.

*ADIOS2 is funded by the Department of Energy as part of the* `Exascale Computing Project <https://www.exascaleproject.org>`_.

************************
What ADIOS2 is and isn't
************************

**ADIOS2 is:**

- **A Unified High-performance I/O Framework**: using the same abstraction API ADIOS2 can transport and transform groups of self-describing data variables and attributes across different media (file, wide-area-network, in-memory staging, etc.) with performance an ease of use as the main goals.

- **MPI-based**: parallel MPI applications as well as serial codes can use it

- **Streaming-oriented**: ADIOS2 favors codes transferring a group of variables asynchronously wherever possible. Moving one variable at a time, in synchronous fashion, is the special case rather than normal.

- **Step-based**: to resemble actual production of data in "steps" of variable groups, for either streaming or random-access (file) media

- **Free and open-source**: ADIOS2 is permissibly licensed under the OSI-approved Apache 2 license.

- **Extreme scale I/O**: ADIOS2 is being used in supercomputer applications that write and read up to several petabytes in a single simulation run. ADIOS2 is designed to provide scalable I/O on the largest supercomputers in the world.


**ADIOS2 is not**:

- **A file-only I/O library**: Code coupling and in situ analyis is possible through files but special engines are available to achieve the same thing faster through TCP, RDMA and MPI communication. High performance write/read using a file system is a primary goal of ADIOS2 though.

- **MPI-only**

- **A Hierarchical Model**: Data hierarchies can be built on top of the ADIOS2 according to the application, but ADIOS2 sits a layer of abstraction beneath this.

- **A Memory Manager Library**: we don't own or manage the application's memory