root / www / HPL_plindx1.html
Historique | Voir | Annoter | Télécharger (4,48 ko)
1 |
<HTML>
|
---|---|
2 |
<HEAD>
|
3 |
<TITLE>HPL_plindx1 HPL 2.0 Library Functions September 10, 2008</TITLE> |
4 |
</HEAD>
|
5 |
|
6 |
<BODY BGCOLOR="WHITE" TEXT = "#000000" LINK = "#0000ff" VLINK = "#000099" |
7 |
ALINK = "#ffff00"> |
8 |
|
9 |
<H1>Name</H1> |
10 |
<B>HPL_plindx1</B> Compute local swapping index arrays. |
11 |
|
12 |
<H1>Synopsis</H1> |
13 |
<CODE>#include "hpl.h"</CODE><BR><BR> |
14 |
<CODE>void</CODE> |
15 |
<CODE>HPL_plindx1(</CODE> |
16 |
<CODE>HPL_T_panel *</CODE> |
17 |
<CODE>PANEL</CODE>, |
18 |
<CODE>const int</CODE> |
19 |
<CODE>K</CODE>, |
20 |
<CODE>const int *</CODE> |
21 |
<CODE>IPID</CODE>, |
22 |
<CODE>int *</CODE> |
23 |
<CODE>IPA</CODE>, |
24 |
<CODE>int *</CODE> |
25 |
<CODE>LINDXA</CODE>, |
26 |
<CODE>int *</CODE> |
27 |
<CODE>LINDXAU</CODE>, |
28 |
<CODE>int *</CODE> |
29 |
<CODE>IPLEN</CODE>, |
30 |
<CODE>int *</CODE> |
31 |
<CODE>IPMAP</CODE>, |
32 |
<CODE>int *</CODE> |
33 |
<CODE>IPMAPM1</CODE>, |
34 |
<CODE>int *</CODE> |
35 |
<CODE>PERMU</CODE>, |
36 |
<CODE>int *</CODE> |
37 |
<CODE>IWORK</CODE> |
38 |
<CODE>);</CODE> |
39 |
|
40 |
<H1>Description</H1> |
41 |
<B>HPL_plindx1</B> |
42 |
computes two local arrays LINDXA and LINDXAU containing |
43 |
the local source and final destination position resulting from the |
44 |
application of row interchanges. In addition, this function computes |
45 |
three arrays IPLEN, IPMAP and IPMAPM1 that contain the logarithmic |
46 |
mapping information for the spreading phase. |
47 |
|
48 |
<H1>Arguments</H1> |
49 |
<PRE>
|
50 |
PANEL (local input/output) HPL_T_panel * |
51 |
On entry, PANEL points to the data structure containing the |
52 |
panel information. |
53 |
</PRE>
|
54 |
<PRE>
|
55 |
K (global input) const int |
56 |
On entry, K specifies the number of entries in IPID. K is at |
57 |
least 2*N, and at most 4*N. |
58 |
</PRE>
|
59 |
<PRE>
|
60 |
IPID (global input) const int * |
61 |
On entry, IPID is an array of length K. The first K entries |
62 |
of that array contain the src and final destination resulting |
63 |
from the application of the interchanges. |
64 |
</PRE>
|
65 |
<PRE>
|
66 |
IPA (global output) int * |
67 |
On exit, IPA specifies the number of rows that the current |
68 |
process row has that either belong to U or should be swapped |
69 |
with remote rows of A. |
70 |
</PRE>
|
71 |
<PRE>
|
72 |
LINDXA (global output) int * |
73 |
On entry, LINDXA is an array of dimension 2*N. On exit, this |
74 |
array contains the local indexes of the rows of A I have that |
75 |
should be copied into U. |
76 |
</PRE>
|
77 |
<PRE>
|
78 |
LINDXAU (global output) int * |
79 |
On exit, LINDXAU is an array of dimension 2*N. On exit, this |
80 |
array contains the local destination information encoded as |
81 |
follows. If LINDXAU(k) >= 0, row LINDXA(k) of A is to be
|
82 |
copied in U at position LINDXAU(k). Otherwise, row LINDXA(k) |
83 |
of A should be locally copied into A(-LINDXAU(k),:). |
84 |
</PRE>
|
85 |
<PRE>
|
86 |
IPLEN (global output) int * |
87 |
On entry, IPLEN is an array of dimension NPROW + 1. On exit, |
88 |
this array is such that IPLEN[i] is the number of rows of A |
89 |
in the processes before process IPMAP[i] after the sort |
90 |
with the convention that IPLEN[nprow] is the total number of |
91 |
rows of the panel. In other words IPLEN[i+1]-IPLEN[i] is the |
92 |
local number of rows of A that should be moved to the process |
93 |
IPMAP[i]. IPLEN is such that the number of rows of the source |
94 |
process row can be computed as IPLEN[1] - IPLEN[0], and the |
95 |
remaining entries of this array are sorted so that the |
96 |
quantities IPLEN[i+1] - IPLEN[i] are logarithmically sorted. |
97 |
</PRE>
|
98 |
<PRE>
|
99 |
IPMAP (global output) int * |
100 |
On entry, IPMAP is an array of dimension NPROW. On exit, this |
101 |
array contains the logarithmic mapping of the processes. In |
102 |
other words, IPMAP[myrow] is the corresponding sorted process |
103 |
coordinate. |
104 |
</PRE>
|
105 |
<PRE>
|
106 |
IPMAPM1 (global output) int * |
107 |
On entry, IPMAPM1 is an array of dimension NPROW. On exit, |
108 |
this array contains the inverse of the logarithmic mapping |
109 |
contained in IPMAP: IPMAPM1[ IPMAP[i] ] = i, for all i in |
110 |
[0.. NPROCS) |
111 |
</PRE>
|
112 |
<PRE>
|
113 |
PERMU (global output) int * |
114 |
On entry, PERMU is an array of dimension JB. On exit, PERMU |
115 |
contains a sequence of permutations, that should be applied |
116 |
in increasing order to permute in place the row panel U. |
117 |
</PRE>
|
118 |
<PRE>
|
119 |
IWORK (workspace) int * |
120 |
On entry, IWORK is a workarray of dimension 2*JB. |
121 |
</PRE>
|
122 |
|
123 |
<H1>See Also</H1> |
124 |
<A HREF="HPL_pdlaswp00N.html">HPL_pdlaswp00N</A>, |
125 |
<A HREF="HPL_pdlaswp00T.html">HPL_pdlaswp00T</A>, |
126 |
<A HREF="HPL_pdlaswp01N.html">HPL_pdlaswp01N</A>, |
127 |
<A HREF="HPL_pdlaswp01T.html">HPL_pdlaswp01T</A>. |
128 |
|
129 |
</BODY>
|
130 |
</HTML>
|