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.
Download ParMETIS (latest version 4.0.2) from
http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.2.tar.gz
Follow the installation step to install ParMETIS.
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.
#define IDXTYPEWIDTH 32
Download SuperLU_DIST (latest version 3.3) from
http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_3.3.tar.gz
Follow the installation step to install SuperLU_DIST.
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)
https://gforge.inria.fr/frs/download.php/31831/scotch_6.0.0.tar.gz
Follow the installation step to install PT-Scotch.
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