/ADIOS2

Next generation of ADIOS developed in the Exascale Computing Program

Primary LanguageC++Apache License 2.0Apache-2.0

GitHub (pre-)release GitHub license

Circle CI Travis CI AppVeyor CI

Coverity Scan Build Status Codacy Badge

Adaptable Input / Output System (ADIOS) v2.1.1

This is v2.1.1 of the ADIOS I/O system, developed as part of the U.S. Department of Energy Exascale Computing Program.

License

ADIOS >= 2.0 is licensed under the Apache License v2.0. See the accompanying Copyright.txt for more details.

Documentation

Please find ADIOS2 software documentation for:

  1. ADIOS2 User Guide at readthedocs

  2. Local user guide and api documentation generation docs/ReadMe.md

Directory layout

  • cmake - Project specific CMake modules
  • examples - ADIOS2 Examples
  • scripts - Project maintenance and development scripts
  • source - Main ADIOS2 source
    • adios2 - source directory for the ADIOS2 library to be installed under install-dir/lib/libadios2.
    • utils - source directory for the binary utilities, to be installed under install-dir/bin
  • bindings - Additional language bindings (C, Fortran and Python)
  • testing - Tests

Getting Started

ADIOS2 uses CMake for its build environment. CMake expects projects to use "out-of-source" builds, which means keeping a separate build and source directory (different from autotools, which usually uses an in-source build).

The following is a quick step-by-step build guide, find the full CMake-based install documentation here

Step-by-step build guide:

  1. Clone the repository:
$ mkdir adios2
$ cd adios2
$ git clone https://github.com/ornladios/ADIOS2.git
  1. Create a separate build directory in your work area:
$ mkdir build
  1. Configure the project with CMake:
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/adios2/2.1.1/gnu/openmpi ../ADIOS2
-- The C compiler identification is GNU 6.3.1
-- The CXX compiler identification is GNU 6.3.1
...

ADIOS2 build configuration:
  ADIOS Version: 2.1.0
  C++ Compiler : GNU 5.4.0 
    /usr/bin/c++

  Fortran Compiler : GNU 5.4.0 
    /usr/bin/gfortran

  Installation prefix: /opt/adios2
        bin: bin
        lib: lib
    include: include
      cmake: lib/cmake/adios2
     python: lib/python3.5/site-packages

  Features:
    Library Type: shared
    Build Type:   Debug
    Testing: ON
    Build Options:
      BZip2    : ON
      ZFP      : ON
      SZ       : ON
      MPI      : ON
      DataMan  : ON
      SST      : ON
      ZeroMQ   : ON
      HDF5     : ON
      ADIOS1   : ON
      Python   : ON
      Fortran  : ON
      SysVShMem: ON

-- Configuring done
-- Generating done
-- Build files have been written to: /home/chuck/Code/adios2/build
$

The following options can be specified with CMake's -DVAR=VALUE syntax to control which features get enabled or disabled:

CMake Option Values Description
ADIOS2_USE_BZip2 AUTO/ON/OFF Enable BZip2 compression (not implemented).
ADIOS2_USE_ZFP AUTO/ON/OFF Enable ZFP compression (not implemented).
ADIOS2_USE_MPI AUTO/ON/OFF Enable MPI.
ADIOS2_USE_DataMan AUTO/ON/OFF Enable the DataMan engine for WAN transports.
ADIOS2_USE_ZeroMQ AUTO/ON/OFF Enable ZeroMQ for the DataMan engine.
ADIOS2_USE_HDF5 AUTO/ON/OFF Enable the HDF5 engine.
ADIOS2_USE_ADIOS1 AUTO/ON/OFF Enable the ADIOS 1.x engine.
ADIOS2_USE_Python AUTO/ON/OFF Enable the Python >= 2.7 bindings. Need mpi4py and numpy
ADIOS2_USE_SST AUTO/ON/OFF Enable Staging Engine
ADIOS2_USE_Fortran AUTO/ON/OFF Enable Fortran bindings

Note: The ADIOS2_USE_HDF5 and ADIOS2_USE_ADIOS1 options require the use of a matching serial or parallel version depending on whether ADIOS2_USE_MPI is enabled. Similary, enabling MPI and Python bindings requires the presence of mpi4py.

In addition to the ADIOS2_USE_Feature options, the following options are also available to control how the library get's built:

CMake Options Values Description
BUILD_SHARED_LIBS ON/OFF Build shared libraries.
ADIOS2_ENABLE_PIC ON/OFF Enable Position Independent Code for static libraries.
ADIOS2_BUILD_EXAMPLES ON/OFF Build examples.
ADIOS2_BUILD_TESTING ON/OFF Build test code.
CMAKE_INSTALL_PREFIX /path/to/install (/usr/local) Install location.
CMAKE_BUILD_TYPE Debug / Release / RelWithDebInfo / MinSizeRel The level of compiler optimization to use.
  1. Compile:
$ make -j8
  1. Run tests:
$ ctest
Test project /home/chuck/Code/adios2/build
      Test project /home/wfg/workspace/build
        Start   1: ADIOSInterfaceWriteTest.DefineVar_int8_t_1x10
  1/113 Test   #1: ADIOSInterfaceWriteTest.DefineVar_int8_t_1x10 ............................   Passed    0.07 sec
        Start   2: ADIOSInterfaceWriteTest.DefineVar_int16_t_1x10
  2/113 Test   #2: ADIOSInterfaceWriteTest.DefineVar_int16_t_1x10 ...........................   Passed    0.07 sec
        Start   3: ADIOSInterfaceWriteTest.DefineVar_int32_t_1x10
  ...
  
$
  1. Install:
$ make install
[  7%] Built target adios2sys_objects
...
[ 61%] Built target adios2
[ 68%] Built target adios2py
...
Install the project...
-- Install configuration: "Debug"
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/include/adios2/ADIOSConfig.h
...
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/bin/adios2-config
...
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/include/adios2.h
...
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/lib/libadios2.so.2.0.0
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/lib/libadios2.so.2
-- Installing: /opt/adios2/2.1.1/gnu/openmpi/lib/libadios2.so
...
$