I am trying to calculate the eigenspectrum for a number of large matrices using Scalapack, but rather than distribute each matrix across all 32 processes. I'd rather distribute each matrix across 4 processes and calculate 8 matrices in parallel. I know how to subdivide an MPI Grid using MPI_Comm_split, but I it seems Scalapack doesn't take custom communicators. Instead it seems to use a BLACS grid rooted in PVM.
How can I implement this subdivision in Scalapack?
This is done by
BLACS
and grid setup.The reference functions are
The documentation for these routines states:
Which means that you can create 8 different grids and pass each
ICONTXT
to scalapack routines for each matrix.Both of them get an IN/OUT argument
You can use these contexts recursively on the same manner.