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
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)

See Also

HPL_pdlaswp00N, HPL_pdlaswp00T, HPL_pdlaswp01N, HPL_pdlaswp01T.