Statistiques
| Révision :

root / include / hpl_pgesv.h

Historique | Voir | Annoter | Télécharger (9,96 ko)

1 1 equemene
/*
2 1 equemene
 * -- High Performance Computing Linpack Benchmark (HPL)
3 1 equemene
 *    HPL - 2.0 - September 10, 2008
4 1 equemene
 *    Antoine P. Petitet
5 1 equemene
 *    University of Tennessee, Knoxville
6 1 equemene
 *    Innovative Computing Laboratory
7 1 equemene
 *    (C) Copyright 2000-2008 All Rights Reserved
8 1 equemene
 *
9 1 equemene
 * -- Copyright notice and Licensing terms:
10 1 equemene
 *
11 1 equemene
 * Redistribution  and  use in  source and binary forms, with or without
12 1 equemene
 * modification, are  permitted provided  that the following  conditions
13 1 equemene
 * are met:
14 1 equemene
 *
15 1 equemene
 * 1. Redistributions  of  source  code  must retain the above copyright
16 1 equemene
 * notice, this list of conditions and the following disclaimer.
17 1 equemene
 *
18 1 equemene
 * 2. Redistributions in binary form must reproduce  the above copyright
19 1 equemene
 * notice, this list of conditions,  and the following disclaimer in the
20 1 equemene
 * documentation and/or other materials provided with the distribution.
21 1 equemene
 *
22 1 equemene
 * 3. All  advertising  materials  mentioning  features  or  use of this
23 1 equemene
 * software must display the following acknowledgement:
24 1 equemene
 * This  product  includes  software  developed  at  the  University  of
25 1 equemene
 * Tennessee, Knoxville, Innovative Computing Laboratory.
26 1 equemene
 *
27 1 equemene
 * 4. The name of the  University,  the name of the  Laboratory,  or the
28 1 equemene
 * names  of  its  contributors  may  not  be used to endorse or promote
29 1 equemene
 * products  derived   from   this  software  without  specific  written
30 1 equemene
 * permission.
31 1 equemene
 *
32 1 equemene
 * -- Disclaimer:
33 1 equemene
 *
34 1 equemene
 * THIS  SOFTWARE  IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35 1 equemene
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,  INCLUDING,  BUT NOT
36 1 equemene
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
37 1 equemene
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY
38 1 equemene
 * OR  CONTRIBUTORS  BE  LIABLE FOR ANY  DIRECT,  INDIRECT,  INCIDENTAL,
39 1 equemene
 * SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL DAMAGES  (INCLUDING,  BUT NOT
40 1 equemene
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
41 1 equemene
 * DATA OR PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER CAUSED AND ON ANY
42 1 equemene
 * THEORY OF LIABILITY, WHETHER IN CONTRACT,  STRICT LIABILITY,  OR TORT
43 1 equemene
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44 1 equemene
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 1 equemene
 */
46 1 equemene
#ifndef HPL_PGESV_H
47 1 equemene
#define HPL_PGESV_H
48 1 equemene
/*
49 1 equemene
 * ---------------------------------------------------------------------
50 1 equemene
 * Include files
51 1 equemene
 * ---------------------------------------------------------------------
52 1 equemene
 */
53 1 equemene
#include "hpl_misc.h"
54 1 equemene
#include "hpl_blas.h"
55 1 equemene
#include "hpl_auxil.h"
56 1 equemene
57 1 equemene
#include "hpl_pmisc.h"
58 1 equemene
#include "hpl_grid.h"
59 1 equemene
#include "hpl_comm.h"
60 1 equemene
#include "hpl_pauxil.h"
61 1 equemene
#include "hpl_panel.h"
62 1 equemene
#include "hpl_pfact.h"
63 1 equemene
/*
64 1 equemene
 * ---------------------------------------------------------------------
65 1 equemene
 * #typedefs and data structures
66 1 equemene
 * ---------------------------------------------------------------------
67 1 equemene
 */
68 1 equemene
typedef enum
69 1 equemene
{
70 1 equemene
   HPL_SWAP00        = 451,                      /* Use HPL_pdlaswp00 */
71 1 equemene
   HPL_SWAP01        = 452,                      /* Use HPL_pdlaswp01 */
72 1 equemene
   HPL_SW_MIX        = 453, /* Use HPL_pdlaswp00_ for small number of */
73 1 equemene
                            /* columns, and HPL_pdlaswp01_ otherwise. */
74 1 equemene
   HPL_NO_SWP        = 499
75 1 equemene
} HPL_T_SWAP;
76 1 equemene
77 1 equemene
typedef struct HPL_S_palg
78 1 equemene
{
79 1 equemene
   HPL_T_TOP           btopo;               /* row broadcast topology */
80 1 equemene
   int                 depth;                     /* look-ahead depth */
81 1 equemene
   int                 nbdiv;            /* recursive division factor */
82 1 equemene
   int                 nbmin;         /* recursion stopping criterium */
83 1 equemene
   HPL_T_FACT          pfact;                   /* panel fact variant */
84 1 equemene
   HPL_T_FACT          rfact;               /* recursive fact variant */
85 1 equemene
   HPL_T_PFA_FUN       pffun;              /* panel fact function ptr */
86 1 equemene
   HPL_T_RFA_FUN       rffun;          /* recursive fact function ptr */
87 1 equemene
   HPL_T_UPD_FUN       upfun;                      /* update function */
88 1 equemene
   HPL_T_SWAP          fswap;                   /* Swapping algorithm */
89 1 equemene
   int                 fsthr;                   /* Swapping threshold */
90 1 equemene
   int                 equil;                        /* Equilibration */
91 1 equemene
   int                 align;              /* data alignment constant */
92 1 equemene
} HPL_T_palg;
93 1 equemene
94 1 equemene
typedef struct HPL_S_pmat
95 1 equemene
{
96 1 equemene
#ifdef HPL_CALL_VSIPL
97 1 equemene
   vsip_block_d        * block;
98 1 equemene
#endif
99 1 equemene
   double              * A;            /* pointer to local piece of A */
100 1 equemene
   double              * X;             /* pointer to solution vector */
101 1 equemene
   int                 n;                      /* global problem size */
102 1 equemene
   int                 nb;                         /* blocking factor */
103 1 equemene
   int                 ld;                 /* local leading dimension */
104 1 equemene
   int                 mp;                    /* local number of rows */
105 1 equemene
   int                 nq;                 /* local number of columns */
106 1 equemene
   int                 info;                    /* computational flag */
107 1 equemene
} HPL_T_pmat;
108 1 equemene
/*
109 1 equemene
 * ---------------------------------------------------------------------
110 1 equemene
 * #define macro constants
111 1 equemene
 * ---------------------------------------------------------------------
112 1 equemene
 */
113 1 equemene
#define    MSGID_BEGIN_PFACT   1001              /* message id ranges */
114 1 equemene
#define    MSGID_END_PFACT     2000
115 1 equemene
#define    MSGID_BEGIN_FACT    2001
116 1 equemene
#define    MSGID_END_FACT      3000
117 1 equemene
#define    MSGID_BEGIN_PTRSV   3001
118 1 equemene
#define    MSGID_END_PTRSV     4000
119 1 equemene
120 1 equemene
#define    MSGID_BEGIN_COLL    9001
121 1 equemene
#define    MSGID_END_COLL     10000
122 1 equemene
/*
123 1 equemene
 * ---------------------------------------------------------------------
124 1 equemene
 * #define macros definitions
125 1 equemene
 * ---------------------------------------------------------------------
126 1 equemene
 */
127 1 equemene
#define    MNxtMgid( id_, beg_, end_ ) \
128 1 equemene
                             (( (id_)+1 > (end_) ?  (beg_) : (id_)+1 ))
129 1 equemene
/*
130 1 equemene
 * ---------------------------------------------------------------------
131 1 equemene
 * Function prototypes
132 1 equemene
 * ---------------------------------------------------------------------
133 1 equemene
 */
134 1 equemene
void                             HPL_pipid
135 1 equemene
STDC_ARGS( (
136 1 equemene
   HPL_T_panel *,
137 1 equemene
   int *,
138 1 equemene
   int *
139 1 equemene
) );
140 1 equemene
void                             HPL_plindx0
141 1 equemene
STDC_ARGS( (
142 1 equemene
   HPL_T_panel *,
143 1 equemene
   const int,
144 1 equemene
   int *,
145 1 equemene
   int *,
146 1 equemene
   int *,
147 1 equemene
   int *
148 1 equemene
) );
149 1 equemene
void                             HPL_pdlaswp00N
150 1 equemene
STDC_ARGS( (
151 1 equemene
   HPL_T_panel *,
152 1 equemene
   int *,
153 1 equemene
   HPL_T_panel *,
154 1 equemene
   const int
155 1 equemene
) );
156 1 equemene
void                             HPL_pdlaswp00T
157 1 equemene
STDC_ARGS( (
158 1 equemene
   HPL_T_panel *,
159 1 equemene
   int *,
160 1 equemene
   HPL_T_panel *,
161 1 equemene
   const int
162 1 equemene
) );
163 1 equemene
164 1 equemene
void                             HPL_perm
165 1 equemene
STDC_ARGS( (
166 1 equemene
   const int,
167 1 equemene
   int *,
168 1 equemene
   int *,
169 1 equemene
   int *
170 1 equemene
) );
171 1 equemene
void                             HPL_logsort
172 1 equemene
STDC_ARGS( (
173 1 equemene
   const int,
174 1 equemene
   const int,
175 1 equemene
   int *,
176 1 equemene
   int *,
177 1 equemene
   int *
178 1 equemene
) );
179 1 equemene
void                             HPL_plindx10
180 1 equemene
STDC_ARGS( (
181 1 equemene
   HPL_T_panel *,
182 1 equemene
   const int,
183 1 equemene
   const int *,
184 1 equemene
   int *,
185 1 equemene
   int *,
186 1 equemene
   int *
187 1 equemene
) );
188 1 equemene
void                             HPL_plindx1
189 1 equemene
STDC_ARGS( (
190 1 equemene
   HPL_T_panel *,
191 1 equemene
   const int,
192 1 equemene
   const int *,
193 1 equemene
   int *,
194 1 equemene
   int *,
195 1 equemene
   int *,
196 1 equemene
   int *,
197 1 equemene
   int *,
198 1 equemene
   int *,
199 1 equemene
   int *,
200 1 equemene
   int *
201 1 equemene
) );
202 1 equemene
void                             HPL_spreadN
203 1 equemene
STDC_ARGS( (
204 1 equemene
   HPL_T_panel *,
205 1 equemene
   int *,
206 1 equemene
   HPL_T_panel *,
207 1 equemene
   const enum HPL_SIDE,
208 1 equemene
   const int,
209 1 equemene
   double *,
210 1 equemene
   const int,
211 1 equemene
   const int,
212 1 equemene
   const int *,
213 1 equemene
   const int *,
214 1 equemene
   const int *
215 1 equemene
) );
216 1 equemene
void                             HPL_spreadT
217 1 equemene
STDC_ARGS( (
218 1 equemene
   HPL_T_panel *,
219 1 equemene
   int *,
220 1 equemene
   HPL_T_panel *,
221 1 equemene
   const enum HPL_SIDE,
222 1 equemene
   const int,
223 1 equemene
   double *,
224 1 equemene
   const int,
225 1 equemene
   const int,
226 1 equemene
   const int *,
227 1 equemene
   const int *,
228 1 equemene
   const int *
229 1 equemene
) );
230 1 equemene
void                             HPL_equil
231 1 equemene
STDC_ARGS( (
232 1 equemene
   HPL_T_panel *,
233 1 equemene
   int *,
234 1 equemene
   HPL_T_panel *,
235 1 equemene
   const enum HPL_TRANS,
236 1 equemene
   const int,
237 1 equemene
   double *,
238 1 equemene
   const int,
239 1 equemene
   int *,
240 1 equemene
   const int *,
241 1 equemene
   const int *,
242 1 equemene
   int *
243 1 equemene
) );
244 1 equemene
void                             HPL_rollN
245 1 equemene
STDC_ARGS( (
246 1 equemene
   HPL_T_panel *,
247 1 equemene
   int *,
248 1 equemene
   HPL_T_panel *,
249 1 equemene
   const int,
250 1 equemene
   double *,
251 1 equemene
   const int,
252 1 equemene
   const int *,
253 1 equemene
   const int *,
254 1 equemene
   const int *
255 1 equemene
) );
256 1 equemene
void                             HPL_rollT
257 1 equemene
STDC_ARGS( (
258 1 equemene
   HPL_T_panel *,
259 1 equemene
   int *,
260 1 equemene
   HPL_T_panel *,
261 1 equemene
   const int,
262 1 equemene
   double *,
263 1 equemene
   const int,
264 1 equemene
   const int *,
265 1 equemene
   const int *,
266 1 equemene
   const int *
267 1 equemene
) );
268 1 equemene
void                             HPL_pdlaswp01N
269 1 equemene
STDC_ARGS( (
270 1 equemene
   HPL_T_panel *,
271 1 equemene
   int *,
272 1 equemene
   HPL_T_panel *,
273 1 equemene
   const int
274 1 equemene
) );
275 1 equemene
void                             HPL_pdlaswp01T
276 1 equemene
STDC_ARGS( (
277 1 equemene
   HPL_T_panel *,
278 1 equemene
   int *,
279 1 equemene
   HPL_T_panel *,
280 1 equemene
   const int
281 1 equemene
) );
282 1 equemene
283 1 equemene
void                             HPL_pdupdateNN
284 1 equemene
STDC_ARGS( (
285 1 equemene
   HPL_T_panel *,
286 1 equemene
   int *,
287 1 equemene
   HPL_T_panel *,
288 1 equemene
   const int
289 1 equemene
) );
290 1 equemene
void                             HPL_pdupdateNT
291 1 equemene
STDC_ARGS( (
292 1 equemene
   HPL_T_panel *,
293 1 equemene
   int *,
294 1 equemene
   HPL_T_panel *,
295 1 equemene
   const int
296 1 equemene
) );
297 1 equemene
void                             HPL_pdupdateTN
298 1 equemene
STDC_ARGS( (
299 1 equemene
   HPL_T_panel *,
300 1 equemene
   int *,
301 1 equemene
   HPL_T_panel *,
302 1 equemene
   const int
303 1 equemene
) );
304 1 equemene
void                             HPL_pdupdateTT
305 1 equemene
STDC_ARGS( (
306 1 equemene
   HPL_T_panel *,
307 1 equemene
   int *,
308 1 equemene
   HPL_T_panel *,
309 1 equemene
   const int
310 1 equemene
) );
311 1 equemene
312 1 equemene
void                             HPL_pdgesv0
313 1 equemene
STDC_ARGS( (
314 1 equemene
   HPL_T_grid *,
315 1 equemene
   HPL_T_palg *,
316 1 equemene
   HPL_T_pmat *
317 1 equemene
) );
318 1 equemene
void                             HPL_pdgesvK1
319 1 equemene
STDC_ARGS( (
320 1 equemene
   HPL_T_grid *,
321 1 equemene
   HPL_T_palg *,
322 1 equemene
   HPL_T_pmat *
323 1 equemene
) );
324 1 equemene
void                             HPL_pdgesvK2
325 1 equemene
STDC_ARGS( (
326 1 equemene
   HPL_T_grid *,
327 1 equemene
   HPL_T_palg *,
328 1 equemene
   HPL_T_pmat *
329 1 equemene
) );
330 1 equemene
void                             HPL_pdgesv
331 1 equemene
STDC_ARGS( (
332 1 equemene
   HPL_T_grid *,
333 1 equemene
   HPL_T_palg *,
334 1 equemene
   HPL_T_pmat *
335 1 equemene
) );
336 1 equemene
337 1 equemene
void                             HPL_pdtrsv
338 1 equemene
STDC_ARGS( (
339 1 equemene
   HPL_T_grid *,
340 1 equemene
   HPL_T_pmat *
341 1 equemene
) );
342 1 equemene
343 1 equemene
#endif
344 1 equemene
/*
345 1 equemene
 * End of hpl_pgesv.h
346 1 equemene
 */