PEXSI is written in C++, and the subroutines cannot directly interface with other programming languages such as C or FORTRAN. To solve this problem, the PEXSI internal data structure is handled using a datatype PPEXSIPlan. The idea and the usage of PPEXSIPlan is similar to fftw_plan
in the FFTW package.
In PEXSI, a matrix is generally referred to as a "pole". The factorization and selected inversion procedure for a pole is computed in parallel using numProcRow * numProcCol
processors.
When only selected inversion (PSelInv) is used, it is recommended to set the mpisize of the communicator comm
to be just numProcRow * numProcCol
.
When PEXSI is used to evaluate a large number of inverse matrices such as in the electronic structure calculation, mpisize should be numPole*numProcRow*numProcCol
, where numPole
inverse matrices can be processed in parallel.