FNLMath : Utilities : ScaLAPACK_MAP
ScaLAPACK_MAP
For a detailed description of MPI Requirements see “Using ScaLAPACK Enhanced Routines” in the Introduction of this manual.
This routine maps array data from a global array to local arrays in the two-dimensional block-cyclic form required by ScaLAPACK routines.
All processors in the BLACS context call the routine.
Required Arguments
A Global rank-1 or rank-2 array which is to be mapped to the processor grid. The data type for A is any of five Fortran intrinsic types: integer; single precision, real; double precision, real; single precision, complex; double precision, complex. Normally, the user defines A to be valid only on the MP_RANK = 0 processor. (Input)
DESC_A An integer vector containing the nine parameters associated with the ScaLAPACK matrix descriptor for array A. See “Usage Notes for ScaLAPACK Utilities” for a description of the nine parameters. (Input)
A0 This is a local rank-1 or rank-2 array that will contain this processor’s piece of the block-cyclic array. The data type for A0 is any of five Fortran intrinsic types: integer; single precision, real; double precision, real; single precision, complex; double precision, complex. (Output)
Optional Arguments
LDA Leading dimension of A as specified in the calling program. If this argument is not present, SIZE(A,1) is used. (Input)
COLMAP Input logical which indicates whether the global array should be mapped in column major form or row major form. COLMAP set to .TRUE. will result in the array being mapped in column- major form while setting COLMAP to .FALSE. will result in the array being mapped in row major form. The default value of COLMAP is .TRUE.. (Input)
FORTRAN 90 Interface
Generic: CALL ScaLAPACK_MAP (A, DESC_A, A0 [])
Description
Subroutine ScaLAPACK_MAP maps columns or rows of a global array on MP_RANK = 0 to local distributed arrays so that the problem array is usable by a ScaLAPACK routine. It uses the two-dimensional block-cyclic array descriptor for the matrix to place the data in the desired assumed-size arrays on the processors. The block sizes, contained in the array descriptor, determine the data set size for each blocking send and receive pair. The number of these synchronization points is proportional to . A temporary local buffer is allocated for staging the array data. It is of size M by NB, when mapping by columns, or N by MB, when mapping by rows.
Example