This repository contains the recipe for building multithreaded MUMPS for MATLAB on Linux, Mac, and
Windows. The multithreading relies on the OpenMP version of OpenBLAS as well as some
additional OpenMP features in MUMPS.
The easiest way for MATLAB users is to download the MEX files prebuilt for your system.
| double precision real | double precision complex | |
|---|---|---|
| Linux(1) | dmumpsmex.mexa64 | zmumpsmex.mexa64 |
| Windows(2) | dmumpsmex.mexw64 | zmumpsmex.mexw64 |
| Mac(3) | dmumpsmex.mexmaci64 | zmumpsmex.mexmaci64 |
These MEX files were built with MUMPS v5.3.4, OpenBLAS v0.3.21, METIS 5.1.0, and MATLAB R2022a. They
work with MUMPS's MATLAB interface, which is included in the MATLAB directory in this repository.
Simply download these prebuilt MEX files in the MATLAB folder.
Notes:
- The MEX files should work out of the box on Linux systems in both desktop and command-line mode.
However, when running in command-line mode, you should start
matlabwith-nojvmoption instead of simply-nodesktopor-nodisplay, or JAVA is prone to throwing errors during the shutdown process. - For Windows users, you must also install MinGW-w64 C/C++ compiler, which comes with provides libgfortran and libgomp required by OpenBLAS and MUMPS.
- For Mac users, you need to create a soft link
/Applications/MATLAB_<MATLAB_VERSION>.app/sys/os/maci64/libomp.dylibpointing tolibiomp5.dylibin the same directory. In addition, you need to add threegfortranlibraries to MATLAB'ssys/os/maci64folder, namelylibgfortran.5.dylib,libquadmath.0.dylib,libgcc_s.1.1.dylib. If you already installedgfortranusinganaconda,miniconda, orhomebrew, you could create soft links to these files in the/Applications/MATLAB_R2022a.app/sys/os/maci64folder. Otherwise, you can simply run the following command:
curl -Ls https://github.com/xmjiao/mumps4m-openmp/releases/download/v5.3.4/libgfortran_dylibs.tgz | tar zxv - -C /Applications/MATLAB_R2022a.app/sys/os/maci64Of course, you need to replace R2022a with the version of your MATLAB installation.
If you want to link MUMPS into your own MEX files for MATLAB, for example, to
support single-precision arithmetic, you can download the following prebuilt
static libraries of MUMPS, OpenBLAS, and METIS.
See https://github.com/xmjiao/mumps4m-openmp/tree/main/recipe/MATLAB to see how these files can be used in the mex command.
| Static libraries | |
|---|---|
| Linux | libmumps_5.3.4_Linux-x86_64.tar.gz |
| Windows | libmumps_5.3.4_MINGW64-x86_64.tar.gz |
| Mac | libmumps_5.3.4_Darwin-x86_64.tar.gz |
mumps4m-openmp was developed and maintained by Xiangmin (Jim) Jiao (xiangmin.jiao@stonybrook.edu) mainly for comparative research. If you need robust and efficient linear solvers for large-scale problems, please also consider the software
hifir. For comparisons between HIFIR and MUMPS, please see the following papers:
@Article{chen2021hilucsi,
author = {Chen, Qiao and Ghai, Aditi and Jiao, Xiangmin},
title = {{HILUCSI}: Simple, robust, and fast multilevel {ILU} for
large-scale saddle-point problems from {PDE}s},
journal = {Numer. Linear Algebra Appl.},
year = {2021},
number = {6},
pages = {e2400},
volume = {28},
doi = {10.1002/nla.2400}
}@Article{chen2022hifir,
author = {Chen, Qiao and Jiao, Xiangmin},
title = {{HIFIR}: Hybrid incomplete factorization with iterative refinement
for preconditioning ill-conditioned and singular systems},
journal = {ACM Trans. Math. Softw.},
year = {2022},
doi = {10.1145/3536165}
}