coin-or-tools / ThirdParty-Mumps

COIN-OR autotools harness to build Mumps
Eclipse Public License 1.0
18 stars 13 forks source link

ThirdParty-Mumps

This is an autotools-based build system to build and install MUltifrontal Massively Parallel sparse direct Solver (MUMPS). This installation of MUMPS is used by some other COIN-OR projects.

This version of ThirdParty-Mumps retrieves and builds MUMPS 5.7.2.

Dependencies

Installation steps

  1. Obtain the MUMPS source code.


    Note: It is YOUR RESPONSIBILITY to ensure that you are entitled to download and use this third party package.


    The shell script get.Mumps can be used to automatically download and extract the correct version of the MUMPS source code. The script will first try to download from from https://coin-or-tools.github.io/ThirdParty-Mumps. If this fails, it will attempt to download from the MUMPS website: http://mumps-solver.org

    The script requires wget, curl, or fetch to be available on the system and in the shells search path ($PATH).

  2. Run ./configure. Use ./configure --help to see available options.

  3. Run make to build the MUMPS library.

  4. Run make install to install the MUMPS library and header files.

NOTE for GFortran users

MUMPS source does not compile out of the box when using GFortran 10 or higher, probably due to some incompatibilities between assumed Fortran language standards, see also issue #4.

As a workaround, configure adds -std=legacy to the Fortran compiler flags if $FC matches *gfortran*.

Single-precision codes

This buildsystem can also build a single-precision version of MUMPS. To do so, use the configure option --with-precision=single.

It is also possible to build both single- and double-precision variants of MUMPS into the same library by using --with-precision=all.

64-bit integers

This buildsystem can be instructed to change the integer type of MUMPS to have a size of 64-bit by using the configure option --with-intsize=64. This defines MUMPS_INTSIZE64 instead of MUMPS_INTSIZE32 in mumps_int_def.h and instructs the Fortran compiler to use 8-byte integers. The latter requires that the Fortran compiler is either GNU Fortran or Intel Fortran.

When MUMPS uses 64-bit integers, also Lapack and METIS need to use 64-bit integers. For METIS, this means that IDXTYPEWIDTH needs to be set to 8 instead of 4.