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.3) from
http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.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
SuperLU_DIST v4.3 starting from PEXSI v0.9.2
Download SuperLU_DIST (latest version 4.3) from
http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.3.tar.gz
Follow the installation step to install SuperLU_DIST.
-Wl,--allow-multiple-definition
in the linking option.printf(".. dQuery_Space
in dmemory_dist.c. Do the same thing for the line starting with printf(".. zQuery_Space
in zmemory_dist.c.SuperLU_DIST v3.3 for PEXSI v0.9.0 and before
Download SuperLU_DIST (latest version 3.3) from
http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_3.3.tar.gz
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