Adios2

Overview

  • Adios2: ADIOS 2: The Adaptable Input Output (I/O) System version 2 is an open-source framework that addresses scientific data management challenges, e.g. scalable parallel I/O, as we approach the exascale era in high-performance computing (HPC).

Using

Use the module name adios2 to discover versions available and to load the application.

The framework provides a command that will generate the compile command-line for you:

[@blog1 globalArray]$ adios2-config adios2-config [OPTION] -h, --help Display help information -v, --version Display version information -c Both compile and link flags for the C bindings --c-flags Preprocessor and compile flags for the C bindings --c-libs Linker flags for the C bindings -x, --cxx Both compile and link flags for the C++ bindings --cxx-flags Preprocessor and compile flags for the C++ bindings --cxx-libs Linker flags for the C++ bindings -f, --fortran Both compile and link flags for the F90 bindings --fortran-flags Preprocessor and compile flags for the F90 bindings --fortran-libs Linker flags for the F90 bindings -s, --serial Select flags for serial applications -m, --mpi Select flags for mpi applications

For example, based on the basics globalArray cpp example, you can run the adios2-config command and then construct you compile command line:

[]$ adios2-config --cxx -DADIOS2_USE_MPI -isystem /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/include -Wl,-rpath,/apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64 /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64/libadios2_cxx11_mpi.so.2.8.3 /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64/libadios2_cxx11.so.2.8.3 -Wl,-rpath-link,/apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64 # Using the output above, create the following command-line: # Note: the library paths will be different depending on the version of adios2 being used. # Prefix with "mpicxx"since we are using MPI (openmpi), and add the name of the source "globalArray_write.cpp" at the end. [@blog1 globalArray]$ mpicxx -DADIOS2_USE_MPI -isystem /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/include -Wl,-rpath,/apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64 /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64/libadios2_cxx11_mpi.so.2.8.3 /apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64/libadios2_cxx11.so.2.8.3 -Wl,-rpath-link,/apps/u/spack/gcc/12.2.0/adios2/2.8.3-fxnyrpu/lib64 globalArray_write.cpp

To test, create an interactive sessions and use srun:

[@blog1 globalArray]$ salloc -A <project-name> -t 10:00 -N 2 [@m001 globalArray]$ srun a.out

The GitHub examples can be built with cmake (you'll need to load this module). If creting an MPI application you’ll need to set the compilers with the associated MPI compiler versions, for example:

We have noticed that within some of the example source code that there are commands that do not match the actual API commands. As a developer you will need to debug these.

Multicore

The adios2 application has been build with openmpi and can thus run across multiple nodes as demonstrated in the example above..