PEXSI
Using plans

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.

...
{
PPEXSIPlan plan;
comm,
numProcRow,
numProcCol,
outputFileIndex,
&info );
/* ... Computation using plan ...
PPEXSIPlanFinalize(
plan,
&info );
}