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

NAME

6       HPL_spreadN - Spread row panel U and forward current column panel.
7

SYNOPSIS

9       #include "hpl.h"
10
11       void  HPL_spreadN(  HPL_T_panel  *  PBCST,  int  * IFLAG, HPL_T_panel *
12       PANEL, const enum HPL_SIDE SIDE, const int N, double  *  U,  const  int
13       LDU, const int SRCDIST, const int * IPLEN, const int * IPMAP, const int
14       * IPMAPM1 );
15

DESCRIPTION

17       HPL_spreadN spreads the local array containing local pieces  of  U,  so
18       that  on  exit  to this function,  a piece of  U  is contained in every
19       process row. The array IPLEN contains the number of rows  of  U,   that
20       should  be  spread  on any given process row. This function also probes
21       for the presence of the column panel PBCST. In case  of  success,  this
22       panel  will  be  forwarded.  If  PBCST  is NULL on input,  this probing
23       mechanism will be disabled.
24

ARGUMENTS

26       PBCST   (local input/output)    HPL_T_panel *
27               On entry,  PBCST  points to the data structure  containing  the
28               panel (to be broadcast) information.
29
30       IFLAG   (local input/output)    int *
31               On  entry,  IFLAG  indicates  whether or not  the broadcast has
32               already been completed.  If not,  probing will occur,  and  the
33               outcome will be contained in IFLAG on exit.
34
35       PANEL   (local input/output)    HPL_T_panel *
36               On  entry,   PANEL  points to the data structure containing the
37               panel (to be spread) information.
38
39       SIDE    (global input)          const enum HPL_SIDE
40               On entry, SIDE specifies whether the local piece of  U  located
41               in  process  IPMAP[SRCDIST] should be spread to the right or to
42               the left. This feature is used by the equilibration process.
43
44       N       (global input)          const int
45               On entry,  N  specifies  the  local number of columns of  U.  N
46               must be at least zero.
47
48       U       (local input/output)    double *
49               On  entry,   U  is an array of dimension (LDU,*) containing the
50               local pieces of U.
51
52       LDU     (local input)           const int
53               On entry, LDU specifies the local leading dimension of  U.  LDU
54               should be at least MAX(1,IPLEN[nprow]).
55
56       SRCDIST (local input)           const int
57               On  entry,   SRCDIST  specifies the source process that spreads
58               its piece of U.
59
60       IPLEN   (global input)          const int *
61               On entry, IPLEN is an array of dimension NPROW+1.   This  array
62               is  such  that IPLEN[i+1] - IPLEN[i] is the number of rows of U
63               in each process before process IPMAP[i], with  the   convention
64               that  IPLEN[nprow]  is the total number of rows. In other words
65               IPLEN[i+1] - IPLEN[i]  is  the local number of rows of  U  that
66               should be moved to process IPMAP[i].
67
68       IPMAP   (global input)          const int *
69               On  entry,  IPMAP is an array of dimension  NPROW.  This  array
70               contains  the  logarithmic mapping of the processes.  In  other
71               words,  IPMAP[myrow]   is the absolute coordinate of the sorted
72               process.
73
74       IPMAPM1 (global input)          const int *
75               On entry,  IPMAPM1 is an array of dimension NPROW.  This  array
76               contains   the  inverse of the logarithmic mapping contained in
77               IPMAP: For i in [0.. NPROW) IPMAPM1[IPMAP[i]] = i.
78

SEE ALSO

80       HPL_pdlaswp01N (3).
81
82
83
84HPL 2.2                        February 24, 2016                HPL_spreadN(3)
Impressum