Installation

Dependencies

Maia depends on:

  • Python >= 3.8

  • MPI

  • mpi4py (python package)

  • h5py with MPI (python package)

  • ParMetis (optional, for partitioning)

  • PtScotch (optional, for partitioning)

The build process requires:

  • CMake >= 3.14

  • GCC >= 8 (clang and Intel icpx should work but are not tested by CI)

  • PyBind11 >= 2.8.1

  • Cython 0.29 (needed by ParaDiGM, see below)

Note

For convenience, CMake will automatically download PyBind11 from GitHub if it does not find it in your environment.

Warning

The h5py package must use the MPI version of HDF5, and both h5py and mpi4py must use the same MPI library. Make sure to use a coherent environment with parallel versions of the libraries!

Warning

Cython >= 3 is not supported for now. You have to use the legacy branch.

Build from source with CMake

First, get the sources of Maia with Git, and retrieve the sources of its submodules (they will be downloaded from GitHub):

git clone git@gitlab.onera.net:numerics/mesh/maia.git
cd maia
git submodule update --init

If you have access to the restricted ParaDiGMA algorithms, you may want to use Maia with them. For that:

(cd external/paradigm && git submodule update --init)

Then you can configure and build using CMake:

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<your/installation/path>
make -j
make install

Here are some useful CMake flags:

  • If you want to use 32-bit integers global indexing, use PDM_ENABLE_LONG_G_NUM=OFF.

  • If you want to use ParaDiGMA features, use PDM_ENABLE_EXTENSION_PDMA=ON.

  • If your compiler is not C++20-compliant (most notably GCC 8), use CMAKE_CXX_STANDARD=17. Some functionnalities will be missing.

  • If you want to use an installation of ParaDiGM already present in your environment, use maia_BUILD_EMBEDDED_PDM=OFF. For that, you need the versions of ParaDiGM and Maia to be compatible:

    Maia

    v1.0

    v1.1 & v1.2

    v1.3

    v1.4 & v1.5

    v1.6 & v1.7

    v1.8

    ParaDiGM

    v2.2.x

    v2.3.x

    v2.4.x

    v2.5.x

    v2.6.x

    v2.7.x

    If you are using a development version of Maia, then you can’t use maia_BUILD_EMBEDDED_PDM=OFF.

Documentation and tests

Tests

Running Maia tests requires:

  • doctest (C++ library)

  • pytest > 6 (python package)

  • pyyaml (python package)

  • h5ls and h5diff (HDF5 utilities that generally come with the HDF5 library)

If doctest is not found on the environment, it will be downloaded from GitHub by CMake. This should be transparent.

Tests are built by default. You can turn them off with maia_ENABLE_TESTS=OFF.

Documentation

The documentation build requires:

  • Sphinx >= 3.00 (python package)

Configure CMake with maia_ENABLE_DOCUMENTATION=ON to enable the documentation. Then generate it with make maia_sphinx.