PEXSI
Dependencies

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

http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.2.tar.gz

Follow the installation step to install ParMETIS.

Attention
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.
#define IDXTYPEWIDTH 32


## Build SuperLU_DIST

http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_3.3.tar.gz

Follow the installation step to install SuperLU_DIST.

Attention
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)

2.3) Integer size issues

2.9) MeTiS compatibility library