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, a CRAY X30 machine). ${PEXSI_DIR}
stands for the main directory of PEXSI.
cd ${PEXSI_DIR} cp config/make.inc.CRAY_XC30.intel make.inc
Edit the variables in make.inc.
PEXSI_DIR = Main directory for PEXSI DSUPERLU_DIR = Main directory for SuperLU_DIST PARMETIS_DIR = Main directory for ParMETIS PTSCOTCH_DIR = Main directory for PT-Scotch
Edit the compiler options, for instance
CC = cc CXX = CC FC = ftn LOADER = CC
-std=c++11
is required in CXXFLAGS
.-std=c99
is required to be compatible with SuperLU_DIST v4.3.CPP_LIB=-lstdc++ -lmpi -lmpi_cxx
is often needed. Check this if there is link error.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.USE_PROFILE
options is for internal test purpose. Usually set this to 0.If make.inc is configured correctly,
make make install
Should build the PEXSI library under the build
directory ready to be used in an external package. If examples are needed (not necessary if you use PEXSI in an external package), type
make all
which will generate C examples in examples/
directory and FORTRAN examples in fortran/
directory, respectively.
For more information on the examples, see Tutorial.
After example files are compiled, go to the examples/
directory, and
examples$ mpirun -n 1 ./driver_pselinv_complex_(suffix)
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. For more examples see Tutorial.