Skip to content

Next generation of ADIOS developed in the Exascale Computing Program

License

Notifications You must be signed in to change notification settings

HaochengLIU/ADIOS2

 
 

Repository files navigation

GitHub (pre-)release GitHub license

Circle CI Travis CI AppVeyor CI

Adaptable Input / Output System (ADIOS) v2.0

This is v2.0 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.

Directory layout

  • cmake - Project specific CMake modules
  • examples - ADIOS2 Examples
  • scripts - Project maintenance and development scripts
  • source - Main ADIOS2 source
  • bindings - Additional language bindings (currently only Python is available)
  • testing - Tests

Documentation

Please find ADIOS2 software documentation online under the project GitHub wiki: https://github.com/ornladios/ADIOS2/wiki

To generate Doxygen application programming interface (API) documentation see instructions under: doc/ReadMe.md

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).

To build ADIOS2:

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

ADIOS2 build configuration:
  ADIOS Version: 2.0.0
  C++ Compiler : GNU 6.3.1
    /usr/bin/c++

  Installation prefix: /opt/adios2/2.0.0/gnu/openmpi
  Features:
    Library Type: shared
    Build Type:   Debug
    Testing: ON
    Build Options:
      BZip2    : ON
      ZFP      : OFF
      MPI      : ON
      DataMan  : ON
      ZeroMQ   : ON
      HDF5     : ON
      ADIOS1   : OFF
      Python   : ON
      C        : 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.
ADIOS2_USE_C AUTO/ON/OFF Enable the C bindings library libadios2_c.so or libadios2_c.a

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
ADIOS2_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
      Start  1: ADIOSInterfaceWriteTest.DefineVarChar1x10
 1/31 Test  #1: ADIOSInterfaceWriteTest.DefineVarChar1x10 ..............   Passed    0.00 sec
      Start  2: ADIOSInterfaceWriteTest.DefineVarShort1x10
 2/31 Test  #2: ADIOSInterfaceWriteTest.DefineVarShort1x10 .............   Passed    0.00 sec
...
      Start 21: HDF5WriteReadTest.ADIOS2HDF5WriteHDF5Read1D8
21/31 Test #21: HDF5WriteReadTest.ADIOS2HDF5WriteHDF5Read1D8 ...........   Passed    0.01 sec
      Start 22: HDF5WriteReadTest.ADIOS2HDF5WriteADIOS2HDF5Read1D8
22/31 Test #22: HDF5WriteReadTest.ADIOS2HDF5WriteADIOS2HDF5Read1D8 .....***Not Run (Disabled)   0.00 sec
      Start 23: HDF5WriteReadTest.HDF5WriteADIOS2HDF5Read1D8
23/31 Test #23: HDF5WriteReadTest.HDF5WriteADIOS2HDF5Read1D8 ...........***Not Run (Disabled)   0.00 sec
...
      Start 30: PythonBPWrite
30/31 Test #30: PythonBPWrite ..........................................   Passed    0.12 sec
      Start 31: XMLConfigTest.TwoIOs
31/31 Test #31: XMLConfigTest.TwoIOs ...................................   Passed    0.01 sec

100% tests passed, 0 tests failed out of 25

Total Test time (real) =   0.29 sec

The following tests did not run:
	 22 - HDF5WriteReadTest.ADIOS2HDF5WriteADIOS2HDF5Read1D8 (Disabled)
	 23 - HDF5WriteReadTest.HDF5WriteADIOS2HDF5Read1D8 (Disabled)
	 25 - HDF5WriteReadTest.ADIOS2HDF5WriteADIOS2HDF5Read2D2x4 (Disabled)
	 26 - HDF5WriteReadTest.HDF5WriteADIOS2HDF5Read2D2x4 (Disabled)
	 28 - HDF5WriteReadTest.ADIOS2HDF5WriteADIOS2HDF5Read2D4x2 (Disabled)
	 29 - HDF5WriteReadTest.HDF5WriteADIOS2HDF5Read2D4x2 (Disabled)
$
  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.0.0/gnu/openmpi/include/adios2/ADIOSConfig.h
...
-- Installing: /opt/adios2/2.0.0/gnu/openmpi/bin/adios2-config
...
-- Installing: /opt/adios2/2.0.0/gnu/openmpi/include/adios2.h
...
-- Installing: /opt/adios2/2.0.0/gnu/openmpi/lib/libadios2.so.2.0.0
-- Installing: /opt/adios2/2.0.0/gnu/openmpi/lib/libadios2.so.2
-- Installing: /opt/adios2/2.0.0/gnu/openmpi/lib/libadios2.so
...
$

About

Next generation of ADIOS developed in the Exascale Computing Program

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 78.0%
  • CMake 13.1%
  • Fortran 3.4%
  • Python 2.5%
  • C 2.0%
  • Shell 1.0%