

 
HPL_plindx1(3) 
HPL Library Functions 
HPL_plindx1(3) 
HPL_plindx1  Compute local swapping index arrays.
#include "hpl.h"
void HPL_plindx1( HPL_T_panel * PANEL, const
int K, const int * IPID, int * IPA,
int * LINDXA, int * LINDXAU, int *
IPLEN, int * IPMAP, int * IPMAPM1, int
* PERMU, int * IWORK );
HPL_plindx1 computes two local arrays LINDXA and LINDXAU containing the
local source and final destination position resulting from the application of
row interchanges. In addition, this function 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.
 IPA (global output) int *
 On exit, IPA specifies the number of rows that the current process row has
that either belong to U or should be swapped with remote rows of A.
 LINDXA (global output) int *
 On entry, LINDXA is an array of dimension 2*N. On exit, this array
contains the local indexes of the rows of A I have that should be copied
into U.
 LINDXAU (global output) int *
 On exit, LINDXAU is an array of dimension 2*N. On exit, this array
contains the local destination information encoded as follows. If
LINDXAU(k) >= 0, row LINDXA(k) of A is to be copied in U at position
LINDXAU(k). Otherwise, row LINDXA(k) of A should be locally copied into
A(LINDXAU(k),:).
 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 IPMAP[i] after the sort with the convention that IPLEN[nprow] is
the total number of rows of the panel. In other words IPLEN[i+1]IPLEN[i]
is the local number of rows of A that should be moved to the process
IPMAP[i]. 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.. NPROCS)
 PERMU (global output) int *
 On entry, PERMU is an array of dimension JB. On exit, PERMU contains a
sequence of permutations, that should be applied in increasing order to
permute in place the row panel U.
 IWORK (workspace) int *
 On entry, IWORK is a workarray of dimension 2*JB.
HPL_pdlaswp00N (3), HPL_pdlaswp00T (3),
HPL_pdlaswp01N (3), HPL_pdlaswp01T (3).
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. 