PEXSI
 All Classes Namespaces Files Functions Variables Typedefs Pages
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.

For more information on the examples, see Tutorial.

Tests

After driver_pselinv_complex is compiled,

examples$ mpirun -n 1 ./driver_pselinv_complex

should return the diagonal of the matrix

\[ (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.