All Classes Namespaces Files Functions Variables Typedefs Pages

PEXSI requires an external parallel \(LU\) factorization or \(LDL^T\) factorization routine, and an external parallel matrix reordering routine to reduce the fill-in of the factorization routine.

Currently we use SuperLU_DIST for the parallel \(LU\) factorization, and ParMETIS for the parallel fill-in reducing reordering. It is also possible to use PT-Scotch for the reordering. But we recommend to first download ParMETIS.

Build ParMETIS

Download ParMETIS (latest version 4.0.2) from

Follow the installation step to install ParMETIS.

After untar the ParMETIS package, in Install.txt
Edit the file metis/include/metis.h and specify the width (32 or
64 bits) of the elementary data type used in ParMetis (and
METIS). This is controled by the IDXTYPEWIDTH constant.

For now, on a 32 bit architecture you can only specify a width
of 32, whereas for a 64 bit architecture you can specify a width
of either 32 or 64 bits.
In our experience for most cases, the following setup work fine.

Build SuperLU_DIST

Download SuperLU_DIST (latest version 3.3) from

Follow the installation step to install SuperLU_DIST.

Our experience shows that on some machines it may be better to build SuperLU_DIST with -O2 option than the more aggresive optimization options provided by vendors.

(Optional) Build PT-Scotch

On some machines, ParMETIS may only allow to use a relatively small number of processors for the matrix permutation. In such circumstance, a workaround can be to use PT-Scotch, which can be downloaded from (latest version 6.0.0)

Follow the installation step to install PT-Scotch.

In INSTALL.TXT, pay special attention to the following sections in order to compile PT-Scotch correctly.
2.3) Integer size issues
2.5) Threads issues

PT-Scotch is also METIS-Compatible. See the following section in INSTALL.TXT for more information.

2.9) MeTiS compatibility library