HPL_plindx10 - Compute the logarithmic maps for the spreading.
#include "hpl.h"
void HPL_plindx10( HPL_T_panel *
PANEL, const int K, const int * IPID,
int * IPLEN, int * IPMAP, int *
IPMAPM1 );
HPL_plindx10 computes three arrays IPLEN, IPMAP and IPMAPM1 that contain
the logarithmic mapping information for the spreading phase.
- PANEL (local input/output) HPL_T_panel *
- On entry, PANEL points to the data structure containing the panel
information.
- K (global input) const int
- On entry, K specifies the number of entries in IPID. K is at least 2*N,
and at most 4*N.
- IPID (global input) const int *
- On entry, IPID is an array of length K. The first K entries of that array
contain the src and final destination resulting from the application of
the interchanges.
- IPLEN (global output) int *
- On entry, IPLEN is an array of dimension NPROW + 1. On exit, this array is
such that IPLEN[i] is the number of rows of A in the processes before
process IMAP[i] after the sort, with the convention that IPLEN[nprow] is
the total number of rows. In other words, IPLEN[i+1] - IPLEN[i] is the
local number of rows of A that should be moved for each process. IPLEN is
such that the number of rows of the source process row can be computed as
IPLEN[1] - IPLEN[0], and the remaining entries of this array are sorted so
that the quantities IPLEN[i+1] - IPLEN[i] are logarithmically sorted.
- IPMAP (global output) int *
- On entry, IPMAP is an array of dimension NPROW. On exit, this array
contains the logarithmic mapping of the processes. In other words,
IPMAP[myrow] is the corresponding sorted process coordinate.
- IPMAPM1 (global output) int *
- On entry, IPMAPM1 is an array of dimension NPROW. On exit, this array
contains the inverse of the logarithmic mapping contained in IPMAP:
IPMAPM1[ IPMAP[i] ] = i, for all i in [0.. NPROW)
HPL_pdlaswp00N (3), HPL_pdlaswp00T (3),
HPL_pdlaswp01N (3), HPL_pdlaswp01T (3).