PEXSI
Build PEXSI

## Edit make.inc

Configuration of PEXSI is controlled by a single make.inc file. Examples of the make.inc file are given under the config/ directory.

Find make.inc with the most similar architecture, and copy to the main PEXSI directory (using Edison for example, the latest Intel computer at NERSC). ${PEXSI_DIR} stands for the main directory of PEXSI. cd${PEXSI_DIR}
cp config/make.inc.edison.intel make.inc


Edit the variables in make.inc.

PEXSI_DIR     = Main directory for PEXSI
DSUPERLU_DIR  = Main directory for SuperLU_DIST
METIS_DIR     = Main directory for METIS
PARMETIS_DIR  = Main directory for ParMETIS
PTSCOTCH_DIR  = Main directory for PT-Scotch

Note
PEXSI can be compiled using debug or release mode in by the variable COMPILE_MODE in make.inc. This variable mainly controls the compiling flag -DRELEASE. The debug mode introduces tracing of call stacks at all levels of functions, and may significantly slow down the code. For production runs, use release mode.
The *.profile configuration files are for debugging purpose and can be ignored.

## Build the PEXSI library

If make.inc is configured correctly,

cd ${PEXSI_DIR} cd src make  should produce libpexsi_(suffix).a under src/. ## Build examples After libpexsi_(suffix).a is built, all driver routines are readily to be compiled. For example, the selected inversion for a complex matrix has the test routine cd${PEXSI_DIR}
cd examples
make driver_pselinv_complex


should produce driver_pselinv_complex, which can be executed with MPI.

examples\$ mpirun -n 1 ./driver_pselinv_complex

$(A + i I)^{-1}$
saved on the 0-th processor, where $$A$$ is the five-point discretization of a Laplacian operator on a 2D domain. The result can be compared with examples/driver_pselinv_complex.out to check the correctness of the result.