I am trying to use parallel version of ?heevr (i.e., p?heevr of SCALAPACK) to get eigenvalues. To do so, it seems that I need to initialize BLACS.
There are N cores in the system, which I divided into n subgroups with m cores each (N = n x m) by using MPI_Comm_split(). The matrices assigned to each subgroup are all different.
The question is that, is it possible to initialize BLACS in each subgroup independently? I am asking this because, although MPI can manage the cores by MPI communicators (MPI_COMM_WORLD for the entire N cores and extra communicators for each subgroup), I cannot find such 'tag' in BLACS.
Thank you in advance.
There's a way in BLACS allowing to create multiple grids. Please look at blacs_gridmap(..) routine.
Here's the part related to your question:
If you are an experienced user, allows you to take advantage of your system's actual layout. That is, you can map nodes that are physically connected to be neighbors in the BLACS grid, etc. The routine also opens the way for multigridding: you can separate your nodes into arbitrary grids, join them together at some later date, and then re-split them into new grids. also provides the ability to make arbitrary grids or subgrids (for example, a "nearest neighbor" grid), which can greatly facilitate operations among processes that do not fall on a row or column of the main process grid.