All Classes Namespaces Files Functions Variables Typedefs Pages


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

Find 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.

cp config/

Edit the variables in

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
PEXSI can be compiled using debug or release mode in by the variable COMPILE_MODE in 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 is configured correctly,

cd src

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 examples
make driver_pselinv_complex

should produce driver_pselinv_complex, which can be executed with MPI.

For more information on the examples, see Tutorial.


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.