1HPL_spreadT(3) HPL Library Functions HPL_spreadT(3)
2
3
4
6 HPL_spreadT - Spread row panel U and forward current column panel.
7
9 #include "hpl.h"
10
11 void HPL_spreadT( 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
17 HPL_spreadT 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 columns of U,
20 that should be spread on any given process row. This function also
21 probes for the presence of the column panel PBCST. If available,
22 this panel will be forwarded. If PBCST is NULL on input, this
23 probing mechanism will be disabled.
24
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 rows of U. N must
46 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,N).
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
80 HPL_pdlaswp01T (3).
81
82
83
84HPL 2.2 February 24, 2016 HPL_spreadT(3)