1HPL_plindx1(3)               HPL Library Functions              HPL_plindx1(3)
2
3
4

NAME

6       HPL_plindx1 - Compute local swapping index arrays.
7

SYNOPSIS

9       #include "hpl.h"
10
11       void  HPL_plindx1(  HPL_T_panel * PANEL, const int K, const int * IPID,
12       int * IPA, int * LINDXA, int * LINDXAU, int * IPLEN, int * IPMAP, int *
13       IPMAPM1, int * PERMU, int * IWORK );
14

DESCRIPTION

16       HPL_plindx1  computes two local arrays  LINDXA and  LINDXAU  containing
17       the  local  source and final destination position  resulting  from  the
18       application  of  row interchanges.  In addition, this function computes
19       three arrays IPLEN, IPMAP and IPMAPM1  that contain   the   logarithmic
20       mapping information for the spreading phase.
21

ARGUMENTS

23       PANEL   (local input/output)    HPL_T_panel *
24               On  entry,   PANEL  points to the data structure containing the
25               panel information.
26
27       K       (global input)          const int
28               On entry, K specifies the number of entries in IPID.  K  is  at
29               least 2*N, and at most 4*N.
30
31       IPID    (global input)          const int *
32               On  entry,   IPID  is an array of length K. The first K entries
33               of that array contain the src and final  destination  resulting
34               from the application of the interchanges.
35
36       IPA     (global output)         int *
37               On  exit,   IPA  specifies  the number of rows that the current
38               process row has that either belong to U  or should  be  swapped
39               with remote rows of A.
40
41       LINDXA  (global output)         int *
42               On  entry,  LINDXA  is an array of dimension 2*N. On exit, this
43               array contains the local indexes of the rows of A I  have  that
44               should be copied into U.
45
46       LINDXAU (global output)         int *
47               On  exit,  LINDXAU  is an array of dimension 2*N. On exit, this
48               array contains  the local destination  information  encoded  as
49               follows.   If  LINDXAU(k) >= 0, row  LINDXA(k)  of A  is  to be
50               copied in U at position LINDXAU(k).  Otherwise,  row  LINDXA(k)
51               of A should be locally copied into A(-LINDXAU(k),:).
52
53       IPLEN   (global output)         int *
54               On  entry,  IPLEN is an array of dimension NPROW + 1. On  exit,
55               this array is such that  IPLEN[i]  is the number of rows  of  A
56               in   the   processes  before  process  IPMAP[i]  after the sort
57               with the convention that IPLEN[nprow]  is the total  number  of
58               rows  of  the panel.  In other words IPLEN[i+1]-IPLEN[i] is the
59               local number of rows of A that should be moved to  the  process
60               IPMAP[i].  IPLEN  is such that the number of rows of the source
61               process  row can be computed as  IPLEN[1] - IPLEN[0],  and  the
62               remaining   entries   of  this  array  are  sorted  so that the
63               quantities IPLEN[i+1] - IPLEN[i] are logarithmically sorted.
64
65       IPMAP   (global output)         int *
66               On entry, IPMAP is an array of dimension NPROW. On  exit,  this
67               array  contains   the logarithmic mapping of the processes.  In
68               other words, IPMAP[myrow] is the corresponding  sorted  process
69               coordinate.
70
71       IPMAPM1 (global output)         int *
72               On  entry,  IPMAPM1  is an array of dimension NPROW.  On  exit,
73               this  array  contains  the inverse of the  logarithmic  mapping
74               contained   in   IPMAP:  IPMAPM1[ IPMAP[i] ] = i,  for all i in
75               [0.. NPROCS)
76
77       PERMU   (global output)         int *
78               On entry,  PERMU  is an array of dimension JB. On  exit,  PERMU
79               contains   a  sequence of permutations,  that should be applied
80               in increasing order to permute in place the row panel U.
81
82       IWORK   (workspace)             int *
83               On entry, IWORK is a workarray of dimension 2*JB.
84

SEE ALSO

86       HPL_pdlaswp00N (3),       HPL_pdlaswp00T (3),       HPL_pdlaswp01N (3),
87       HPL_pdlaswp01T (3).
88
89
90
91HPL 2.2                        February 24, 2016                HPL_plindx1(3)
Impressum