Serial and MPI Builds
=====================

There are separate C, C++ and Fortran development packages, as well as
Python, for building applications that use ADIOS2.

Separate builds of the Adios2 library are made, as a serial process or
as an MPI client.

Hence to build applications that use Adios3, you will need to install

libadios2-serial-c-dev
libadios2-serial-c++11-dev
libadios2-serial-fortran-dev
or python3-adios2-serial

or 

libadios2-mpi-c-dev
libadios2-mpi-c++11-dev
libadios2-mpi-fortran-dev
or python3-adios2-mpi

Because ADIOSConfig.h has different content in the serial and MPI
builds, it has been moved from /usr/include/adios2/common/ to
/usr/include/adios2/build/{mpi,serial}/adios2/common/ in order to
allow simultaneous installation of both serial and mpi development
files.

You will need to choose either the serial build or the MPI build when
building applications. This can be easily done in cmake using
find_package with PATH_SUFFIXES,
  find_package(adios2 PATH_SUFFIXES mpi)
or
  find_package(adios2 PATH_SUFFIXES serial)

Alternatively you could set CMAKE_PREFIX_PATH to point at the specific
build flavor you need,
/usr/lib/${DEB_HOST_MULTIARCH}/cmake/adios2/mpi or
/usr/lib/${DEB_HOST_MULTIARCH}/cmake/adios2/serial


Adios2 Plugins
==============

The libEncryptionOperator.so provided with a standard Adios2 build is
provided by libadios2-serial-core-2 or libadios2-mpi-core-2.

To avoid overload the standard library directory, the plugin has been
placed in a separate plugin dir, 
  /usr/lib/${DEB_HOST_MULTIARCH}/adios2/serial/plugins
or 
  /usr/lib/${DEB_HOST_MULTIARCH}/adios2/mpi/plugins

You can access the plugin by pointing environment variable
ADIOS2_PLUGIN_PATH at the required path.


Adios2 Python Module
====================

The python2-adios2 package is a dependency package that depends on
python3-adios2-serial (default) or python3-adios2-mpi.

If python3 is run as a serial process, then the module assumes the
serial build is wanted.

If python3 is run as an MPI process (launched by mpirun or mpiexec)
then the module assumes the mpi build is wanted, even if running
on 1 process.

If you need to access the mpi build even from a normal serial process,
this can be achieved by setting the environment variable
ADIOS2_ALWAYS_USE_MPI to 1.

Regardless, the serial python module is always loaded if the
mpi python module is not installed.
