The P processes of an abstract
parallel computer are often represented
as a one-dimensional linear array of
processes labeled .
For reasons described below, it is often
more convenient to map this one-dimensional
array of processes into a two-dimensional
rectangular grid, or process grid.
(A process grid is also referred to as a
process mesh.)
This grid will have
process rows
and
process columns, where
. A process can now be
referenced by its row and column coordinates,
(
), within the grid, where
,
and
). An example of
such a mapping is shown in figure 4.1,
where
and
.
Figure 4.1: Eight processes mapped to a process grid
In figure 4.1, the processes are mapped to the process grid by using row-major order ; in other words, the numbering of the processes increases sequentially across each row. Similarly, the processes can be mapped in a column-major order whereby the numbering of the processes proceeds down each column of the process grid. The BLACS routine BLACS_GRIDINIT performs this task of mapping the processes to the process grid. By default, BLACS_GRIDINIT assumes a row-major ordering, although a column-major ordering can also be specified. The companion routine BLACS_GRIDMAP is a more general form of BLACS_GRIDINIT and allows the user to define the mapping of the processes . Refer to the Appendix D.3 for further details.
All ScaLAPACK routines, with the exception of the band linear system routines, allow the processes to be viewed as a one-dimensional or two-dimensional process grid. The band routines support only one-dimensional process grids.