version 0.6.0
Loading...
Searching...
No Matches
How to build Notus third-party libraries

Notus relies on the ADIOS and HYPRE libraries. Optionally, Notus relies on MUMPS, LIS, ADIOS2, HDF5, T3PIO libraries

Some libraries may depend to other libraries:

  • ADIOS: parallel I/O (website)
    • Mini-XML: xml parser used by ADIOS (website)
  • HYPRE: high-performance iterative solvers (website)
    • BLAS: Basic Linear Algebra Subprograms (website)
    • LAPACK: Linear Algebra PACKage (website)
  • MUMPS: high-performance direct solver (website)
    • METIS: Serial Graph Partitioning and Fill-reducing Matrix Ordering (website)
    • ScaLAPACK: Scalable Linear Algebra PACKage (website)

All these libraries (except BLAS and LAPACK that have to be installed on the system) can be downloaded and built thanks to the third-party libraries bundle that we advise to use.

Remark: Third-party are already installed on the curta cluster of Mésocentre de Calcul Intensif Aquitain (MCIA) website. You can skip this section and switch to the next one. To load pre-installed third-party with gcc or intel oneapi:

  ```
  module load notus_third_party/0.6.0/gcc/11.2.0
  module load notus_third_party/0.6.0/intel/oneapi/2024.1.0
  ```

The third-party libraries bundle

We provide a git repository that you can clone (or download). It contains a third-party library installation script and an src directory that contains all the third-party libraries tarballs required by Notus.

To clone the bundle into the notus_third_party directory (no space in the directory path):

git clone https://git.notus-cfd.org/notus/notus_third_party.git notus_third_party

Automatic third-party libraries installation

Default installation

By default the script installs the third-party libraries in the $HOME/usr directory. You can modify the installation directory with the --install-dir option.

To build and install all third-party libraries on different kind of Linux systems, see the Readme page of the script.

Installing all the third party libraries may not be useful since some of them are very specific. We advice to install the minimum required (-m option) first. MUMPS solver may be useful (for 2D problem) and be installed in a second step with options --metis --scalapack --mumps (or scalapack-patched if --scalapack failed).

Script usage

The script build_notus_third_party_lib.sh can be executed with the following options:

Usage : build_notus_third_party_lib.sh [OPTIONS]

 -a                             build and install all third-party libraries (except REFPROP)
 -m                             build and install minimum required third-party libraries (ADIOS, HYPRE)
 -c                             clean directories before building
 -j                             number of threads used to compile (default 4)
 -h, --help                     print usage

 --install-dir DIRECTORY        installation directory (defaut /gpfs/home/jjansen/usr)

 --use-mkl                      use MKL for BLAS, LAPACK and FFTW
 --use-openmp                   use OpenMP when available

 --adios                        build and install ADIOS (1.13.2)
 --adios2                       build and install ADIOS2 (2.10.1)
 --hdf5                         build and install HDF5 (1.14.4-2)
 --hypre                        build and install HYPRE (2.18.2)
 --hypre-debug                  build and install HYPRE (2.18.2) enabling debug compiler options
 --hypre-longint                build and install HYPRE (2.18.2) enabling long integers option
 --metis                        build and install METIS (5.1.0)
 --scalapack                    build and install ScaLAPACK (2.2.0)
 --mumps                        build and install MUMPS (5.7.2)
 --lis                          build and install LIS (2.1.4)
 --t3pio                        build and install T3PIO (2.4)
 --fftw                         build and install FFTW (3.3.10)
 --coolprop                     build and install COOLPROP (6.8.0)
 --refprop                      build and install REFPROP. Warning: sources are not provided!

Use these alternative versions if it fails with non-patched versions
 --lis-patched                  build and install patched LIS (2.1.4)

To download and install a different version, use the following options:
 --adios-version      VERSION   select the ADIOS version
 --hdf5-version       VERSION   select the HDF5 version
 --hypre-version      VERSION   select the HYPRE version
 --metis-version      VERSION   select the METIS version
 --scalapack-version  VERSION   select the ScaLAPACK version
 --mumps-version      VERSION   select the MUMPS version
 --lis-version        VERSION   select the LIS version
 --t3pio-version      VERSION   select the T3PIO version
 --fftw-version       VERSION   select the FFTW version

 --intel                        set CC, CXX, etc. for Intel compilers (icc, ifort, etc.)
 --intel-oneapi                 set CC, CXX, etc. for Intel OneAPI compilers (icx, ifx, etc.)

 --cc    c compiler             select the C compiler (default gcc)
 --cxx   c++ compiler           select the C++ compiler (default g++)
 --fc    fortran compiler       select the Fortran compiler (default gfortran)
 --mpicc  MPI c wrapper         select the C compiler (default mpicc)
 --mpicxx MPI c++ wrapper       select the C++ compiler (default mpic++)
 --mpifc  MPI fortran wrapper   select the Fortran compiler (default mpif90)
 --with-MPI-include DIR         MPI include directory (user specifies that mpi.h is in DIR)
 --with-blas-lib-dir DIR        BLAS directory (default /usr/lib)
 --with-lapack-lib-dir DIR      LAPACK directory (default /usr/lib)
  • Compilation and installation on Ubuntu 22.04:
    ./build_notus_third_party_lib.sh -c -j 16 -a --with-MPI-include "/usr/lib/x86_64-linux-gnu/openmpi/include/"
  • Compilation and installation of all third party on Curta supercomputer (with gcc/11.2.0, cmake/3.27.6, openmpi/4.1.1/gcc/11.2.0):
    module load gcc/11.2.0 autoconf/2.71 lapack/3.12.0 cmake/3.27.6 openmpi/4.1.1 python/3.12
    ./build_notus_third_party_lib.sh -c -j 32 -a --cc gcc --cxx g++ --fc gfortran --mpicc mpicc --mpicxx mpic++ --mpifc mpif90 --with-MPI-include "/gpfs/softs/contrib/apps/openmpi/4.1.1/gcc/11.2.0/include/"
  • Compilation and installation of only hypre adios with openMP on Curta supercomputer (with gcc/11.2.0, cmake/3.27.6, openmpi/4.1.1/gcc/11.2.0):
    module load gcc/11.2.0 autoconf/2.71 lapack/3.12.0 cmake/3.27.6 openmpi/4.1.1 python/3.12
    ./build_notus_third_party_lib.sh -c -j 32 --use-openmp --adios --hypre --cc gcc --cxx g++ --fc gfortran --mpicc mpicc --mpicxx mpic++ --mpifc mpif90 --with-MPI-include "/gpfs/softs/contrib/apps/openmpi/4.1.1/gcc/11.2.0/include/"
  • Compilation and installation of only hypre-longint adios with openMP on Curta supercomputer (with gcc/11.2.0, cmake/3.27.6, openmpi/4.1.1/gcc/11.2.0):
    module load gcc/11.2.0 autoconf/2.71 lapack/3.12.0 cmake/3.27.6 openmpi/4.1.1 python/3.12
    ./build_notus_third_party_lib.sh -c -j 32 --use-openmp --adios --hypre-longint --cc gcc --cxx g++ --fc gfortran --mpicc mpicc --mpicxx mpic++ --mpifc mpif90 --with-MPI-include "/gpfs/softs/contrib/apps/openmpi/4.1.1/gcc/11.2.0/include/"
  • Compilation and installation of hypre-longint adios hdf5 t3pio with openMP on TGCC Irene-rome supercomputer (autoconf/2.71, cmake/3.26.4, mpi/openmpi/4.1.4):
    module load autoconf/2.71 cmake/3.26.4 mpi/openmpi/4.1.4
    ./build_notus_third_party_lib.sh -c -j 32 --use-openmp --use-mkl --adios --hypre-longint --t3pio --hdf5 --cc gcc --cxx g++ --fc gfortran --mpicc mpicc --mpicxx mpic++ --mpifc mpif90 --with-MPI-include "/gpfs/softs/contrib/apps/openmpi/4.1.1/gcc/11.2.0/include/"