SuperLU Distributed 8.2.1
Distributed memory sparse direct solver
superlu_zdefs.h
Go to the documentation of this file.
1
27#ifndef __SUPERLU_ZDEFS /* allow multiple inclusions */
28#define __SUPERLU_ZDEFS
29
30/*
31 * File name: superlu_zdefs.h
32 * Purpose: Distributed SuperLU data types and function prototypes
33 * History:
34 */
35
36#include "superlu_defs.h"
37#include "dcomplex.h"
38
39/*
40 *-- The structure used to store matrix A of the linear system and
41 * several vectors describing the transformations done to matrix A.
42 *
43 * A (SuperMatrix*)
44 * Matrix A in A*X=B, of dimension (A->nrow, A->ncol).
45 * The number of linear equations is A->nrow. The type of A can be:
46 * Stype = SLU_NC; Dtype = SLU_D; Mtype = SLU_GE.
47 *
48 * DiagScale (DiagScale_t)
49 * Specifies the form of equilibration that was done.
50 * = NOEQUIL: No equilibration.
51 * = ROW: Row equilibration, i.e., A was premultiplied by diag(R).
52 * = COL: Column equilibration, i.e., A was postmultiplied by diag(C).
53 * = BOTH: Both row and column equilibration, i.e., A was replaced
54 * by diag(R)*A*diag(C).
55 *
56 * R double*, dimension (A->nrow)
57 * The row scale factors for A.
58 * If DiagScale = ROW or BOTH, A is multiplied on the left by diag(R).
59 * If DiagScale = NOEQUIL or COL, R is not defined.
60 *
61 * C double*, dimension (A->ncol)
62 * The column scale factors for A.
63 * If DiagScale = COL or BOTH, A is multiplied on the right by diag(C).
64 * If DiagScale = NOEQUIL or ROW, C is not defined.
65 *
66 * perm_r (int*) dimension (A->nrow)
67 * Row permutation vector which defines the permutation matrix Pr,
68 * perm_r[i] = j means row i of A is in position j in Pr*A.
69 *
70 * perm_c (int*) dimension (A->ncol)
71 * Column permutation vector, which defines the
72 * permutation matrix Pc; perm_c[i] = j means column i of A is
73 * in position j in A*Pc.
74 *
75 */
76typedef struct {
78 double *R;
79 double *C;
83
84#if 0 // Sherry: move to superlu_defs.h
85/*-- Auxiliary data type used in PxGSTRS/PxGSTRS1. */
86typedef struct {
87 int_t lbnum; /* Row block number (local). */
88 int_t indpos; /* Starting position in Uindex[]. */
90#endif
91
92/*
93 * On each processor, the blocks in L are stored in compressed block
94 * column format, the blocks in U are stored in compressed block row format.
95 */
96#define MAX_LOOKAHEADS 50
97typedef struct {
98 int_t **Lrowind_bc_ptr; /* size ceil(NSUPERS/Pc) */
99 int_t *Lrowind_bc_dat; /* size sum of sizes of Lrowind_bc_ptr[lk]) */
100 long int *Lrowind_bc_offset; /* size ceil(NSUPERS/Pc) */
102
103 doublecomplex **Lnzval_bc_ptr; /* size ceil(NSUPERS/Pc) */
104 doublecomplex *Lnzval_bc_dat; /* size sum of sizes of Lnzval_bc_ptr[lk]) */
105 long int *Lnzval_bc_offset; /* size ceil(NSUPERS/Pc) */
107
108 doublecomplex **Linv_bc_ptr; /* size ceil(NSUPERS/Pc) */
109 doublecomplex *Linv_bc_dat; /* size sum of sizes of Linv_bc_ptr[lk]) */
110 long int *Linv_bc_offset; /* size ceil(NSUPERS/Pc) */
111 long int Linv_bc_cnt;
112
113 int_t **Lindval_loc_bc_ptr; /* size ceil(NSUPERS/Pc) pointers to locations in Lrowind_bc_ptr and Lnzval_bc_ptr */
114 int_t *Lindval_loc_bc_dat; /* size sum of sizes of Lindval_loc_bc_ptr[lk]) */
115 long int *Lindval_loc_bc_offset; /* size ceil(NSUPERS/Pc) */
117 int_t *Unnz; /* number of nonzeros per block column in U*/
118 int_t **Lrowind_bc_2_lsum; /* size ceil(NSUPERS/Pc) map indices of Lrowind_bc_ptr to indices of lsum */
119 doublecomplex **Uinv_bc_ptr; /* size ceil(NSUPERS/Pc) */
120 doublecomplex *Uinv_bc_dat; /* size sum of sizes of Linv_bc_ptr[lk]) */
121 long int *Uinv_bc_offset; /* size ceil(NSUPERS/Pc) */
122 long int Uinv_bc_cnt;
123
124 int_t **Ufstnz_br_ptr; /* size ceil(NSUPERS/Pr) */
125 int_t *Ufstnz_br_dat; /* size sum of sizes of Ufstnz_br_ptr[lk]) */
126 long int *Ufstnz_br_offset; /* size ceil(NSUPERS/Pr) */
128
129 doublecomplex **Unzval_br_ptr; /* size ceil(NSUPERS/Pr) */
130 doublecomplex *Unzval_br_dat; /* size sum of sizes of Unzval_br_ptr[lk]) */
131 long int *Unzval_br_offset; /* size ceil(NSUPERS/Pr) */
133
134 /*-- Data structures used for broadcast and reduction trees. --*/
135 C_Tree *LBtree_ptr; /* size ceil(NSUPERS/Pc) */
136 C_Tree *LRtree_ptr; /* size ceil(NSUPERS/Pr) */
137 C_Tree *UBtree_ptr; /* size ceil(NSUPERS/Pc) */
138 C_Tree *URtree_ptr; /* size ceil(NSUPERS/Pr) */
139#if 0
140 int_t *Lsub_buf; /* Buffer for the remote subscripts of L */
141 doublecomplex *Lval_buf; /* Buffer for the remote nonzeros of L */
142 int_t *Usub_buf; /* Buffer for the remote subscripts of U */
143 doublecomplex *Uval_buf; /* Buffer for the remote nonzeros of U */
144#endif
145 int_t *Lsub_buf_2[MAX_LOOKAHEADS]; /* Buffers for the remote subscripts of L*/
146 doublecomplex *Lval_buf_2[MAX_LOOKAHEADS]; /* Buffers for the remote nonzeros of L */
147 int_t *Usub_buf_2[MAX_LOOKAHEADS]; /* Buffer for the remote subscripts of U */
148 doublecomplex *Uval_buf_2[MAX_LOOKAHEADS]; /* Buffer for the remote nonzeros of U */
149 doublecomplex *ujrow; /* used in panel factorization. */
150 int_t bufmax[NBUFFERS]; /* Maximum buffer size across all MPI ranks:
151 * 0 : maximum size of Lsub_buf[]
152 * 1 : maximum size of Lval_buf[]
153 * 2 : maximum size of Usub_buf[]
154 * 3 : maximum size of Uval_buf[]
155 * 4 : maximum size of tempv[LDA]
156 */
157
158 /*-- Record communication schedule for factorization. --*/
159 int *ToRecv; /* Recv from no one (0), left (1), and up (2).*/
160 int *ToSendD; /* Whether need to send down block row. */
161 int **ToSendR; /* List of processes to send right block col. */
162
163 /*-- Record communication schedule for forward/back solves. --*/
164 /* 1/15/22 Sherry: changed int_t to int type */
165 int *fmod; /* Modification count for L-solve */
166 int **fsendx_plist; /* Column process list to send down Xk */
167 int *frecv; /* Modifications to be recv'd in proc row */
168 int nfrecvx; /* Number of Xk I will receive in L-solve */
169 int nfsendx; /* Number of Xk I will send in L-solve */
170 int *bmod; /* Modification count for U-solve */
171 int **bsendx_plist; /* Column process list to send down Xk */
172 int *brecv; /* Modifications to be recv'd in proc row */
173 int nbrecvx; /* Number of Xk I will receive in U-solve */
174 int nbsendx; /* Number of Xk I will send in U-solve */
175 int *mod_bit; /* Flag contribution from each row blocks */
176
177 /*-- Auxiliary arrays used for forward/back solves. --*/
178 int_t *ilsum; /* Starting position of each supernode in lsum
179 (local) */
180 int_t ldalsum; /* LDA of lsum (local) */
181 int_t SolveMsgSent; /* Number of actual messages sent in LU-solve */
182 int_t SolveMsgVol; /* Volume of messages sent in the solve phase */
183
184
185 /*********************/
186 /* The following variables are used in the hybrid solver */
187
188 /*-- Counts to be used in U^{-T} triangular solve. -- */
192 int_t ut_ldalsum; /* LDA of lsum (local) */
193 int_t *ut_ilsum; /* ilsum in column-wise */
194 int_t *utmod; /* Modification count for Ut-solve. */
195 int_t **ut_sendx_plist; /* Row process list to send down Xk */
196 int_t *utrecv; /* Modifications to be recev'd in proc column. */
197 int_t n_utsendx; /* Number of Xk I will receive */
198 int_t n_utrecvx; /* Number of Xk I will send */
203 Ucb_indptr_t **Ucb_indptr;/* Vertical linked list pointing to Uindex[] */
205 long int *Ucb_indoffset;
206 long int Ucb_indcnt;
207
208 int_t **Ucb_valptr; /* Vertical linked list pointing to Unzval[] */
210 long int *Ucb_valoffset;
211 long int Ucb_valcnt;
212
213 /* some additional counters for L solve */
217 int_t inv; /* whether the diagonal block is inverted*/
218
219 /* The following variables are used in GPU trisolve*/
220#ifdef GPU_ACC
221 int_t *d_Lrowind_bc_dat;
222 long int *d_Lrowind_bc_offset;
223 doublecomplex *d_Lnzval_bc_dat;
224 long int *d_Lnzval_bc_offset;
225 doublecomplex *d_Linv_bc_dat ;
226 doublecomplex *d_Uinv_bc_dat ;
227 long int *d_Linv_bc_offset ;
228 long int *d_Uinv_bc_offset ;
229 int_t *d_Lindval_loc_bc_dat ;
230 long int *d_Lindval_loc_bc_offset ;
231
232 int_t *d_Urbs;
233 int_t *d_Ufstnz_br_dat;
234 long int *d_Ufstnz_br_offset;
235 doublecomplex *d_Unzval_br_dat;
236 long int *d_Unzval_br_offset;
237
238 int_t *d_Ucb_valdat;
239 long int *d_Ucb_valoffset;
240 Ucb_indptr_t *d_Ucb_inddat;
241 long int *d_Ucb_indoffset;
242
243 int_t *d_ilsum ;
244 int_t *d_xsup ;
245 C_Tree *d_LBtree_ptr ;
246 C_Tree *d_LRtree_ptr ;
247 C_Tree *d_UBtree_ptr ;
248 C_Tree *d_URtree_ptr ;
249#endif
250
251} zLocalLU_t;
252
253
254typedef struct {
258 char dt;
260
261
262/*-- Data structure for communication during matrix-vector multiplication. */
263typedef struct {
265 int_t *ind_tosend; /* X indeices to be sent to other processes */
266 int_t *ind_torecv; /* X indeices to be received from other processes */
267 int_t *ptr_ind_tosend;/* Printers to ind_tosend[] (Size procs)
268 (also point to val_torecv) */
269 int_t *ptr_ind_torecv;/* Printers to ind_torecv[] (Size procs)
270 (also point to val_tosend) */
271 int *SendCounts; /* Numbers of X indices to be sent
272 (also numbers of X values to be received) */
273 int *RecvCounts; /* Numbers of X indices to be received
274 (also numbers of X values to be sent) */
275 doublecomplex *val_tosend; /* X values to be sent to other processes */
276 doublecomplex *val_torecv; /* X values to be received from other processes */
277 int_t TotalIndSend; /* Total number of indices to be sent
278 (also total number of values to be received) */
279 int_t TotalValSend; /* Total number of values to be sent.
280 (also total number of indices to be received) */
282
283/*-- Data structure holding the information for the solution phase --*/
284typedef struct {
287 int_t num_diag_procs, *diag_procs, *diag_len;
288 pzgsmv_comm_t *gsmv_comm; /* communication metadata for SpMV,
289 required by IterRefine. */
290 pxgstrs_comm_t *gstrs_comm; /* communication metadata for SpTRSV. */
291 int_t *A_colind_gsmv; /* After pzgsmv_init(), the global column
292 indices of A are translated into the relative
293 positions in the gathered x-vector.
294 This is re-used in repeated calls to pzgsmv() */
295 int_t *xrow_to_proc; /* used by PDSLin */
296 NRformat_loc3d* A3d; /* Point to 3D {A, B} gathered on 2D layer 0.
297 This needs to be peresistent between
298 3D factorization and solve. */
300
301
302
303/*==== For 3D code ====*/
304
305// new structures for pdgstrf_4_8
306
307typedef struct
308{
309 int_t nub;
310 int_t klst;
311 int_t ldu;
312 int_t* usub;
315
316typedef struct
317{
318 int_t *lsub;
320 int_t luptr0;
321 int_t nlb; //number of l blocks
322 int_t nsupr;
324
325
326
327/* HyP_t is the data structure to assist HALO offload of Schur-complement. */
328typedef struct
329{
330 Remain_info_t *lookAhead_info, *Remain_info;
331 Ublock_info_t *Ublock_info, *Ublock_info_Phi;
332
333 int_t first_l_block_acc , first_u_block_acc;
334 int_t last_offload ;
335 int_t *Lblock_dirty_bit, * Ublock_dirty_bit;
337 int_t lookAheadBlk; /* number of blocks in look-ahead window */
338 int_t RemainBlk ; /* number of blocks outside look-ahead window */
339 int_t num_look_aheads, nsupers;
340 int_t ldu, ldu_Phi;
341 int_t num_u_blks, num_u_blks_Phi;
342
343 int_t jj_cpu;
346 int_t Lnbrow;
347 int_t Rnbrow;
348
349 int_t buffer_size;
350 int_t bigu_size;
351 int_t offloadCondition;
352 int_t superlu_acc_offload;
353 int_t nGPUStreams;
354} HyP_t;
355
356typedef struct
357{
363
365 int_t knsupc,
366 HyP_t* HyP,
367 SCT_t* SCT,
368 SuperLUStat_t *stat
369 );
370
371typedef struct
372{
373 gEtreeInfo_t gEtreeInfo;
374 int_t* iperm_c_supno;
375 int_t* myNodeCount;
376 int_t* myTreeIdxs;
377 int_t* myZeroTrIdxs;
378 int_t** treePerm;
379 sForest_t** sForests;
380 int_t* supernode2treeMap;
383
384typedef struct
385{
388} zscuBufs_t;
389
390typedef struct
391{
395
396typedef struct
397{
398 Ublock_info_t* Ublock_info;
399 Remain_info_t* Remain_info;
400 uPanelInfo_t* uPanelInfo;
401 lPanelInfo_t* lPanelInfo;
403
404//#endif
405/*=====================*/
406
407/***********************************************************************
408 * Function prototypes
409 ***********************************************************************/
410
411#ifdef __cplusplus
412extern "C" {
413#endif
414
415
416/* Supernodal LU factor related */
417extern void
420extern void
424extern void
426 doublecomplex **, int_t **, int_t **);
427extern int
429 SuperMatrix *);
430extern void
432extern void
435extern void
437 int_t *, int_t *, int_t *, int_t *, int_t *,
439extern void
442
443extern void zallocateA_dist (int_t, int_t, doublecomplex **, int_t **, int_t **);
444extern void zGenXtrue_dist (int_t, int_t, doublecomplex *, int_t);
445extern void zFillRHS_dist (char *, int_t, doublecomplex *, int_t,
447extern int zcreate_matrix(SuperMatrix *, int, doublecomplex **, int *,
448 doublecomplex **, int *, FILE *, gridinfo_t *);
449extern int zcreate_matrix_rb(SuperMatrix *, int, doublecomplex **, int *,
450 doublecomplex **, int *, FILE *, gridinfo_t *);
451extern int zcreate_matrix_dat(SuperMatrix *, int, doublecomplex **, int *,
452 doublecomplex **, int *, FILE *, gridinfo_t *);
453extern int zcreate_matrix_postfix(SuperMatrix *, int, doublecomplex **, int *,
454 doublecomplex **, int *, FILE *, char *, gridinfo_t *);
455
456extern void zScalePermstructInit(const int_t, const int_t,
459
460/* Driver related */
461extern void zgsequ_dist (SuperMatrix *, double *, double *, double *,
462 double *, double *, int_t *);
463extern double zlangs_dist (char *, SuperMatrix *);
464extern void zlaqgs_dist (SuperMatrix *, double *, double *, double,
465 double, double, char *);
466extern void pzgsequ (SuperMatrix *, double *, double *, double *,
467 double *, double *, int_t *, gridinfo_t *);
468extern double pzlangs (char *, SuperMatrix *, gridinfo_t *);
469extern void pzlaqgs (SuperMatrix *, double *, double *, double,
470 double, double, char *);
471extern int pzPermute_Dense_Matrix(int_t, int_t, int_t [], int_t[],
472 doublecomplex [], int, doublecomplex [], int, int,
473 gridinfo_t *);
474
475extern int sp_ztrsv_dist (char *, char *, char *, SuperMatrix *,
476 SuperMatrix *, doublecomplex *, int *);
477extern int sp_zgemv_dist (char *, doublecomplex, SuperMatrix *, doublecomplex *,
478 int, doublecomplex, doublecomplex *, int);
479extern int sp_zgemm_dist (char *, int, doublecomplex, SuperMatrix *,
481
486 int, int, gridinfo_t *, zLUstruct_t *, double *,
487 SuperLUStat_t *, int *);
488extern float pzdistribute(fact_t, int_t, SuperMatrix *,
493 int, int, gridinfo_t *, zLUstruct_t *,
494 zSOLVEstruct_t *, double *, SuperLUStat_t *, int *);
501 int_t [], int_t [], gridinfo_t *grid,
503extern void pxgstrs_finalize(pxgstrs_comm_t *);
504extern int zldperm_dist(int, int, int_t, int_t [], int_t [],
505 doublecomplex [], int_t *, double [], double []);
506extern int zstatic_schedule(superlu_dist_options_t *, int, int,
508 int_t *, int_t *, int *);
509extern void zLUstructInit(const int_t, zLUstruct_t *);
510extern void zLUstructFree(zLUstruct_t *);
511extern void zDestroy_LU(int_t, gridinfo_t *, zLUstruct_t *);
512extern void zDestroy_Tree(int_t, gridinfo_t *, zLUstruct_t *);
513extern void zscatter_l (int ib, int ljb, int nsupc, int_t iukp, int_t* xsup,
514 int klst, int nbrow, int_t lptr, int temp_nbrow,
515 int_t* usub, int_t* lsub, doublecomplex *tempv,
516 int* indirect_thread, int* indirect2,
517 int_t ** Lrowind_bc_ptr, doublecomplex **Lnzval_bc_ptr,
518 gridinfo_t * grid);
519extern void zscatter_u (int ib, int jb, int nsupc, int_t iukp, int_t * xsup,
520 int klst, int nbrow, int_t lptr, int temp_nbrow,
521 int_t* lsub, int_t* usub, doublecomplex* tempv,
522 int_t ** Ufstnz_br_ptr, doublecomplex **Unzval_br_ptr,
523 gridinfo_t * grid);
524extern int_t pzgstrf(superlu_dist_options_t *, int, int, double anorm,
526
527/* #define GPU_PROF
528#define IPM_PROF */
529
530/* Solve related */
532 doublecomplex *, int_t, int, SuperLUStat_t *, int *);
535 SuperLUStat_t *, int *);
536extern void pzgstrf2_trsm(superlu_dist_options_t * options, int_t k0, int_t k,
537 double thresh, Glu_persist_t *, gridinfo_t *,
538 zLocalLU_t *, MPI_Request *, int tag_ub,
539 SuperLUStat_t *, int *info);
540extern void pzgstrs2_omp(int_t k0, int_t k, Glu_persist_t *, gridinfo_t *,
542extern int_t pzReDistribute_B_to_X(doublecomplex *B, int_t m_loc, int nrhs, int_t ldb,
543 int_t fst_row, int_t *ilsum, doublecomplex *x,
547 int, int, int_t , int *fmod, int_t, int_t, int_t,
549 MPI_Request [], SuperLUStat_t *);
551 int, int_t, int *bmod, int_t *, Ucb_indptr_t **,
552 int_t **, int_t *, gridinfo_t *, zLocalLU_t *,
553 MPI_Request [], SuperLUStat_t *);
554
556 int, int_t , int *fmod,
558 SuperLUStat_t **, int_t *, int_t *, int_t, int_t, int_t, int_t, int, int);
560 int, int, int_t , int *fmod, int_t,
562 SuperLUStat_t **, int_t, int_t, int_t, int_t, int, int);
564 int, int_t, int *bmod, int_t *, Ucb_indptr_t **,
565 int_t **, int_t *, gridinfo_t *, zLocalLU_t *,
566 SuperLUStat_t **, int_t *, int_t *, int_t, int_t, int, int);
568 int, int_t, int *bmod, int_t *, Ucb_indptr_t **,
569 int_t **, int_t *, gridinfo_t *, zLocalLU_t *,
570 SuperLUStat_t **, int_t, int_t, int, int);
571
572extern void zComputeLevelsets(int , int_t , gridinfo_t *,
574
575#ifdef GPU_ACC
576extern void zlsum_fmod_inv_gpu_wrap(int_t, int_t, int_t, int_t, doublecomplex *, doublecomplex *, int, int, int_t , int *fmod, C_Tree *, C_Tree *, int_t *, int_t *, int64_t *, doublecomplex *, int64_t *, doublecomplex *, int64_t *, int_t *, int64_t *, int_t *, gridinfo_t *, doublecomplex * , doublecomplex * , int_t );
577extern void dlsum_bmod_inv_gpu_wrap(int_t, int_t, int_t, int_t, doublecomplex *, doublecomplex *,int,int, int_t , int *bmod, C_Tree *, C_Tree *, int_t *, int_t *,int_t *, int64_t *, doublecomplex *, int64_t *, int_t *, int64_t *, Ucb_indptr_t *, int64_t *, doublecomplex *, int64_t *,int_t *,gridinfo_t *);
578#endif
579
580extern void pzgsrfs(int_t, SuperMatrix *, double, zLUstruct_t *,
583 zSOLVEstruct_t *, double *, SuperLUStat_t *, int *);
584extern void pzgsrfs_ABXglobal(int_t, SuperMatrix *, double, zLUstruct_t *,
586 int, double *, SuperLUStat_t *, int *);
588 gridinfo_t *, int_t *, int_t *[],
589 doublecomplex *[], int_t *[], int_t []);
590extern int pzgsmv_AXglobal(int_t, int_t [], doublecomplex [], int_t [],
592extern int pzgsmv_AXglobal_abs(int_t, int_t [], doublecomplex [], int_t [],
593 doublecomplex [], double []);
594extern void pzgsmv_init(SuperMatrix *, int_t *, gridinfo_t *,
595 pzgsmv_comm_t *);
596extern void pzgsmv(int_t, SuperMatrix *, gridinfo_t *, pzgsmv_comm_t *,
597 doublecomplex x[], doublecomplex ax[]);
598extern void pzgsmv_finalize(pzgsmv_comm_t *);
599
600/* Memory-related */
603extern double *doubleMalloc_dist(int_t);
604extern double *doubleCalloc_dist(int_t);
605extern void *duser_malloc_dist (int_t, int_t);
606extern void duser_free_dist (int_t, int_t);
609
610/* Auxiliary routines */
611
617extern void zZeroLblocks(int, int, gridinfo_t *, zLUstruct_t *);
618extern void zZeroUblocks(int iam, int n, gridinfo_t *, zLUstruct_t *);
622extern void pzinf_norm_error(int, int_t, int_t, doublecomplex [], int_t,
623 doublecomplex [], int_t , MPI_Comm);
624extern void zreadhb_dist (int, FILE *, int_t *, int_t *, int_t *,
625 doublecomplex **, int_t **, int_t **);
626extern void zreadtriple_dist(FILE *, int_t *, int_t *, int_t *,
627 doublecomplex **, int_t **, int_t **);
628extern void zreadtriple_noheader(FILE *, int_t *, int_t *, int_t *,
629 doublecomplex **, int_t **, int_t **);
630extern void zreadrb_dist(int, FILE *, int_t *, int_t *, int_t *,
631 doublecomplex **, int_t **, int_t **);
632extern void zreadMM_dist(FILE *, int_t *, int_t *, int_t *,
633 doublecomplex **, int_t **, int_t **);
634extern int zread_binary(FILE *, int_t *, int_t *, int_t *,
635 doublecomplex **, int_t **, int_t **);
636
637/* Distribute the data for numerical factorization */
642
644
645/* Routines for debugging */
646extern void zPrintLblocks(int, int_t, gridinfo_t *, Glu_persist_t *,
647 zLocalLU_t *);
648extern void zPrintUblocks(int, int_t, gridinfo_t *, Glu_persist_t *,
649 zLocalLU_t *);
654extern void PrintDoublecomplex(char *, int_t, doublecomplex *);
655extern int file_PrintDoublecomplex(FILE *fp, char *, int_t, doublecomplex *);
656
657extern void zGenCOOLblocks(int, int_t, gridinfo_t*,
659extern void zGenCSCLblocks(int, int_t, gridinfo_t*,
661extern void zGenCSRLblocks(int, int_t, gridinfo_t*,
663
664
665/* BLAS */
666
667#ifdef USE_VENDOR_BLAS
668extern void zgemm_(const char*, const char*, const int*, const int*, const int*,
669 const doublecomplex*, const doublecomplex*, const int*, const doublecomplex*,
670 const int*, const doublecomplex*, doublecomplex*, const int*, int, int);
671extern void ztrsv_(char*, char*, char*, int*, doublecomplex*, int*,
672 doublecomplex*, int*, int, int, int);
673extern void ztrsm_(const char*, const char*, const char*, const char*,
674 const int*, const int*, const doublecomplex*, const doublecomplex*, const int*,
675 doublecomplex*, const int*, int, int, int, int);
676extern void zgemv_(const char *, const int *, const int *, const doublecomplex *,
677 const doublecomplex *a, const int *, const doublecomplex *, const int *,
678 const doublecomplex *, doublecomplex *, const int *, int);
679
680#else
681extern int zgemm_(const char*, const char*, const int*, const int*, const int*,
682 const doublecomplex*, const doublecomplex*, const int*, const doublecomplex*,
683 const int*, const doublecomplex*, doublecomplex*, const int*);
684extern int ztrsv_(char*, char*, char*, int*, doublecomplex*, int*,
685 doublecomplex*, int*);
686extern int ztrsm_(const char*, const char*, const char*, const char*,
687 const int*, const int*, const doublecomplex*, const doublecomplex*, const int*,
688 doublecomplex*, const int*);
689extern void zgemv_(const char *, const int *, const int *, const doublecomplex *,
690 const doublecomplex *a, const int *, const doublecomplex *, const int *,
691 const doublecomplex *, doublecomplex *, const int *);
692#endif
693
694extern void zgeru_(const int*, const int*, const doublecomplex*,
695 const doublecomplex*, const int*, const doublecomplex*, const int*,
696 doublecomplex*, const int*);
697
698extern int zscal_(const int *n, const doublecomplex *alpha, doublecomplex *dx, const int *incx);
699extern int zaxpy_(const int *n, const doublecomplex *alpha, const doublecomplex *x,
700 const int *incx, doublecomplex *y, const int *incy);
701
702/* SuperLU BLAS interface: zsuperlu_blas.c */
703extern int superlu_zgemm(const char *transa, const char *transb,
704 int m, int n, int k, doublecomplex alpha, doublecomplex *a,
705 int lda, doublecomplex *b, int ldb, doublecomplex beta, doublecomplex *c, int ldc);
706extern int superlu_ztrsm(const char *sideRL, const char *uplo,
707 const char *transa, const char *diag, const int m, const int n,
708 const doublecomplex alpha, const doublecomplex *a,
709 const int lda, doublecomplex *b, const int ldb);
710extern int superlu_zger(const int m, const int n, const doublecomplex alpha,
711 const doublecomplex *x, const int incx, const doublecomplex *y,
712 const int incy, doublecomplex *a, const int lda);
713extern int superlu_zscal(const int n, const doublecomplex alpha, doublecomplex *x, const int incx);
714extern int superlu_zaxpy(const int n, const doublecomplex alpha,
715 const doublecomplex *x, const int incx, doublecomplex *y, const int incy);
716extern int superlu_zgemv(const char *trans, const int m,
717 const int n, const doublecomplex alpha, const doublecomplex *a,
718 const int lda, const doublecomplex *x, const int incx,
719 const doublecomplex beta, doublecomplex *y, const int incy);
720extern int superlu_ztrsv(char *uplo, char *trans, char *diag,
721 int n, doublecomplex *a, int lda, doublecomplex *x, int incx);
722
723#ifdef SLU_HAVE_LAPACK
724extern void ztrtri_(char*, char*, int*, doublecomplex*, int*, int*);
725#endif
726
727/*==== For 3D code ====*/
728extern int zcreate_matrix3d(SuperMatrix *A, int nrhs, doublecomplex **rhs,
729 int *ldb, doublecomplex **x, int *ldx,
730 FILE *fp, gridinfo3d_t *grid3d);
731extern int zcreate_matrix_postfix3d(SuperMatrix *A, int nrhs, doublecomplex **rhs,
732 int *ldb, doublecomplex **x, int *ldx,
733 FILE *fp, char * postfix, gridinfo3d_t *grid3d);
734
735/* Matrix distributed in NRformat_loc in 3D process grid. It converts
736 it to a NRformat_loc distributed in 2D grid in grid-0 */
738 int ldb, int nrhs, gridinfo3d_t *grid3d,
739 NRformat_loc3d **);
740extern int zScatter_B3d(NRformat_loc3d *A3d, gridinfo3d_t *grid3d);
741
743 zScalePermstruct_t *, doublecomplex B[], int ldb, int nrhs,
745 double *berr, SuperLUStat_t *, int *info);
746extern int_t pzgstrf3d(superlu_dist_options_t *, int m, int n, double anorm,
748 gridinfo3d_t *, SuperLUStat_t *, int *);
749extern void zInit_HyP(HyP_t* HyP, zLocalLU_t *Llu, int_t mcb, int_t mrb );
750extern void Free_HyP(HyP_t* HyP);
751extern int updateDirtyBit(int_t k0, HyP_t* HyP, gridinfo_t* grid);
752
753 /* from scatter.h */
754extern void
756 Remain_info_t *Remain_info, doublecomplex *L_mat, int ldl,
757 doublecomplex *U_mat, int ldu, doublecomplex *bigV,
758 // int_t jj0,
759 int_t knsupc, int_t klst,
760 int_t *lsub, int_t *usub, int_t ldt,
761 int_t thread_id,
762 int *indirect, int *indirect2,
763 int_t **Lrowind_bc_ptr, doublecomplex **Lnzval_bc_ptr,
764 int_t **Ufstnz_br_ptr, doublecomplex **Unzval_br_ptr,
765 int_t *xsup, gridinfo_t *, SuperLUStat_t *
766#ifdef SCATTER_PROFILE
767 , double *Host_TheadScatterMOP, double *Host_TheadScatterTimer
768#endif
769 );
770
771#ifdef _OPENMP
772/*this version uses a lock to prevent multiple thread updating the same block*/
773extern void
774zblock_gemm_scatter_lock( int_t lb, int_t j, omp_lock_t* lock,
775 Ublock_info_t *Ublock_info, Remain_info_t *Remain_info,
776 doublecomplex *L_mat, int_t ldl, doublecomplex *U_mat, int_t ldu,
777 doublecomplex *bigV,
778 // int_t jj0,
779 int_t knsupc, int_t klst,
780 int_t *lsub, int_t *usub, int_t ldt,
781 int_t thread_id,
782 int *indirect, int *indirect2,
783 int_t **Lrowind_bc_ptr, doublecomplex **Lnzval_bc_ptr,
784 int_t **Ufstnz_br_ptr, doublecomplex **Unzval_br_ptr,
785 int_t *xsup, gridinfo_t *
786#ifdef SCATTER_PROFILE
787 , double *Host_TheadScatterMOP, double *Host_TheadScatterTimer
788#endif
789 );
790#endif
791
792extern int_t
794 int_t knsupc, int_t klst, int_t* lsub,
795 int_t * usub, int_t ldt,
796 int* indirect, int* indirect2,
797 HyP_t* HyP, zLUstruct_t *, gridinfo_t*,
798 SCT_t*SCT, SuperLUStat_t *
799 );
800extern int_t
802 int_t knsupc, int_t klst, int_t* lsub,
803 int_t * usub, int_t ldt,
804 int* indirect, int* indirect2,
805 HyP_t* HyP, zLUstruct_t *, gridinfo_t*,
806 SCT_t*SCT, SuperLUStat_t * );
807extern int_t
809 int_t knsupc, int_t klst, int_t* lsub,
810 int_t * usub, int_t ldt,
811 int* indirect, int* indirect2,
812 HyP_t* HyP, zLUstruct_t *, gridinfo_t*,
813 SCT_t*SCT, SuperLUStat_t * );
814extern int_t
816 int_t knsupc, int_t klst, int_t* lsub,
817 int_t * usub, int_t ldt,
818 int* indirect, int* indirect2,
819 HyP_t* HyP, zLUstruct_t *, gridinfo_t*,
820 SCT_t*SCT, SuperLUStat_t * );
821
822 /* from gather.h */
823extern void zgather_u(int_t num_u_blks,
824 Ublock_info_t *Ublock_info, int_t * usub,
825 doublecomplex *uval, doublecomplex *bigU, int_t ldu,
826 int_t *xsup, int_t klst /* for SuperSize */
827 );
828
829extern void zgather_l( int_t num_LBlk, int_t knsupc,
830 Remain_info_t *L_info,
831 doublecomplex * lval, int_t LD_lval,
832 doublecomplex * L_buff );
833
836 int_t *myIperm, int_t *iperm_c_supno );
837extern void zRgather_U(int_t k, int_t jj0, int_t *usub, doublecomplex *uval,
839 gridinfo_t *, HyP_t *, int_t *myIperm,
840 int_t *iperm_c_supno, int_t *perm_u);
841
842 /* from xtrf3Dpartition.h */
844 superlu_dist_options_t *options,
845 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d);
846extern void zDestroy_trf3Dpartition(trf3Dpartition_t *trf3Dpartition, gridinfo3d_t *grid3d);
847
848extern void z3D_printMemUse(trf3Dpartition_t* trf3Dpartition,
849 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d);
850
851//extern int* getLastDep(gridinfo_t *grid, SuperLUStat_t *stat,
852// superlu_dist_options_t *options, zLocalLU_t *Llu,
853// int_t* xsup, int_t num_look_aheads, int_t nsupers,
854// int_t * iperm_c_supno);
855
856extern void zinit3DLUstructForest( int_t* myTreeIdxs, int_t* myZeroTrIdxs,
857 sForest_t** sForests, zLUstruct_t* LUstruct,
858 gridinfo3d_t* grid3d);
859
860extern int_t zgatherAllFactoredLUFr(int_t* myZeroTrIdxs, sForest_t* sForests,
861 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d,
862 SCT_t* SCT );
863
864 /* The following are from pdgstrf2.h */
865extern int_t zLpanelUpdate(int_t off0, int_t nsupc, doublecomplex* ublk_ptr,
866 int_t ld_ujrow, doublecomplex* lusup, int_t nsupr, SCT_t*);
868 double thresh, doublecomplex *BlockUFactor, Glu_persist_t *,
870 SuperLUStat_t *, int *info, SCT_t*);
871extern int_t zTrs2_GatherU(int_t iukp, int_t rukp, int_t klst,
872 int_t nsupc, int_t ldu, int_t *usub,
873 doublecomplex* uval, doublecomplex *tempv);
874extern int_t zTrs2_ScatterU(int_t iukp, int_t rukp, int_t klst,
875 int_t nsupc, int_t ldu, int_t *usub,
876 doublecomplex* uval, doublecomplex *tempv);
877extern int_t zTrs2_GatherTrsmScatter(int_t klst, int_t iukp, int_t rukp,
878 int_t *usub, doublecomplex* uval, doublecomplex *tempv,
879 int_t knsupc, int nsupr, doublecomplex* lusup,
880 Glu_persist_t *Glu_persist) ;
881extern void pzgstrs2
882#ifdef _CRAY
883(
884 int_t m, int_t k0, int_t k, Glu_persist_t *Glu_persist, gridinfo_t *grid,
885 zLocalLU_t *Llu, SuperLUStat_t *stat, _fcd ftcs1, _fcd ftcs2, _fcd ftcs3
886);
887#else
888(
889 int_t m, int_t k0, int_t k, Glu_persist_t *Glu_persist, gridinfo_t *grid,
890 zLocalLU_t *Llu, SuperLUStat_t *stat
891);
892#endif
893
894extern void pzgstrf2(superlu_dist_options_t *, int_t nsupers, int_t k0,
895 int_t k, double thresh, Glu_persist_t *, gridinfo_t *,
896 zLocalLU_t *, MPI_Request *, int, SuperLUStat_t *, int *);
897
898 /* from p3dcomm.h */
899extern int_t zAllocLlu_3d(int_t nsupers, zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
900extern int_t zp3dScatter(int_t n, zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
902 zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
904 zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
905extern int_t zcollect3dLpanels(int_t layer, int_t nsupers, zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
906extern int_t zcollect3dUpanels(int_t layer, int_t nsupers, zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
907extern int_t zp3dCollect(int_t layer, int_t n, zLUstruct_t * LUstruct, gridinfo3d_t* grid3d);
908/*zero out LU non zero entries*/
909extern int_t zzeroSetLU(int_t nnodes, int_t* nodeList , zLUstruct_t *, gridinfo3d_t*);
910extern int zAllocGlu_3d(int_t n, int_t nsupers, zLUstruct_t *);
912extern int zDeAllocGlu_3d(zLUstruct_t *);
913
914/* Reduces L and U panels of nodes in the List nodeList (size=nnnodes)
915receiver[L(nodelist)] =sender[L(nodelist)] +receiver[L(nodelist)]
916receiver[U(nodelist)] =sender[U(nodelist)] +receiver[U(nodelist)]
917*/
919 int_t nnodes, int_t* nodeList,
920 doublecomplex* Lval_buf, doublecomplex* Uval_buf,
921 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d, SCT_t* SCT);
922/*reduces all nodelists required in a level*/
923extern int zreduceAllAncestors3d(int_t ilvl, int_t* myNodeCount,
924 int_t** treePerm,
925 zLUValSubBuf_t* LUvsb,
926 zLUstruct_t* LUstruct,
927 gridinfo3d_t* grid3d,
928 SCT_t* SCT );
929/*
930 Copies factored L and U panels from sender grid to receiver grid
931 receiver[L(nodelist)] <-- sender[L(nodelist)];
932 receiver[U(nodelist)] <-- sender[U(nodelist)];
933*/
935 int_t nnodes, int_t *nodeList, zLUValSubBuf_t* LUvsb,
936 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d,SCT_t* SCT );
937
938/*Gathers all the L and U factors to grid 0 for solve stage
939 By repeatidly calling above function*/
941 gridinfo3d_t* grid3d, SCT_t* SCT );
942
943/*Distributes data in each layer and initilizes ancestors
944 as zero in required nodes*/
945int_t zinit3DLUstruct( int_t* myTreeIdxs, int_t* myZeroTrIdxs,
946 int_t* nodeCount, int_t** nodeList,
947 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d);
948
950 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d, SCT_t* SCT);
952 doublecomplex beta, doublecomplex* Lval_buf,
953 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d, SCT_t* SCT);
955 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d, SCT_t* SCT);
957 doublecomplex beta, doublecomplex* Uval_buf,
958 zLUstruct_t* LUstruct, gridinfo3d_t* grid3d, SCT_t* SCT);
959
960 /* from communication_aux.h */
962 gridinfo_t *, int* msgcnt, MPI_Request *,
963 int **ToSendR, int_t *xsup, int );
965 gridinfo_t *, int* msgcnt, int **ToSendR,
966 int_t *xsup , SCT_t*, int);
968 gridinfo_t *, int* msgcnt, MPI_Request *,
969 int *ToSendD, int );
971 gridinfo_t *, int* msgcnt, int *ToSendD, SCT_t*, int);
972extern int_t zIrecv_LPanel (int_t k, int_t k0, int_t* Lsub_buf,
973 doublecomplex* Lval_buf, gridinfo_t *,
974 MPI_Request *, zLocalLU_t *, int);
976 zLocalLU_t *, gridinfo_t*, MPI_Request *, int);
977extern int_t zWait_URecv(MPI_Request *, int* msgcnt, SCT_t *);
978extern int_t zWait_LRecv(MPI_Request*, int* msgcnt, int* msgcntsU,
979 gridinfo_t *, SCT_t*);
981 MPI_Request *, gridinfo_t *, int);
982extern int_t zRecv_UDiagBlock(int_t k0, doublecomplex *ublk_ptr, int_t size,
983 int_t src, gridinfo_t *, SCT_t*, int);
987 MPI_Request *, gridinfo_t *, int);
989 int_t src, MPI_Request *, gridinfo_t *,
990 SCT_t*, int);
991extern int_t zIRecv_LDiagBlock(int_t k0, doublecomplex *L_blk_ptr, int_t size,
992 int_t src, MPI_Request *, gridinfo_t*, SCT_t*, int);
993extern int_t zUDiagBlockRecvWait( int_t k, int_t* IrecvPlcd_D, int_t* factored_L,
994 MPI_Request *, gridinfo_t *, zLUstruct_t *, SCT_t *);
995extern int_t LDiagBlockRecvWait( int_t k, int_t* factored_U, MPI_Request *, gridinfo_t *);
996
997#if (MPI_VERSION>2)
998extern int_t zIBcast_UDiagBlock(int_t k, doublecomplex *ublk_ptr, int_t size,
999 MPI_Request *, gridinfo_t *);
1000extern int_t zIBcast_LDiagBlock(int_t k, doublecomplex *lblk_ptr, int_t size,
1001 MPI_Request *, gridinfo_t *);
1002#endif
1003
1004 /* from trfCommWrapper.h */
1006 doublecomplex *BlockUFactor, doublecomplex *BlockLFactor,
1007 int_t* IrecvPlcd_D, MPI_Request *, MPI_Request *,
1008 MPI_Request *, MPI_Request *, gridinfo_t *,
1009 superlu_dist_options_t *, double thresh,
1010 zLUstruct_t *LUstruct, SuperLUStat_t *, int *info,
1011 SCT_t *, int tag_ub);
1012extern int_t zUPanelTrSolve( int_t k, doublecomplex* BlockLFactor, doublecomplex* bigV,
1015extern int_t zLPanelUpdate(int_t k, int_t* IrecvPlcd_D, int_t* factored_L,
1016 MPI_Request *, doublecomplex* BlockUFactor, gridinfo_t *,
1017 zLUstruct_t *, SCT_t *);
1018extern int_t zUPanelUpdate(int_t k, int_t* factored_U, MPI_Request *,
1019 doublecomplex* BlockLFactor, doublecomplex* bigV,
1022extern int_t zIBcastRecvLPanel(int_t k, int_t k0, int* msgcnt,
1023 MPI_Request *, MPI_Request *,
1024 int_t* Lsub_buf, doublecomplex* Lval_buf,
1026 SCT_t *, int tag_ub);
1027extern int_t zIBcastRecvUPanel(int_t k, int_t k0, int* msgcnt, MPI_Request *,
1028 MPI_Request *, int_t* Usub_buf, doublecomplex* Uval_buf,
1029 gridinfo_t *, zLUstruct_t *, SCT_t *, int tag_ub);
1030extern int_t zWaitL(int_t k, int* msgcnt, int* msgcntU, MPI_Request *,
1031 MPI_Request *, gridinfo_t *, zLUstruct_t *, SCT_t *);
1032extern int_t zWaitU(int_t k, int* msgcnt, MPI_Request *, MPI_Request *,
1033 gridinfo_t *, zLUstruct_t *, SCT_t *);
1034extern int_t zLPanelTrSolve(int_t k, int_t* factored_L, doublecomplex* BlockUFactor,
1035 gridinfo_t *, zLUstruct_t *);
1036
1037 /* from trfAux.h */
1038extern int getNsupers(int, Glu_persist_t *);
1039extern int_t initPackLUInfo(int_t nsupers, packLUInfo_t* packLUInfo);
1040extern int freePackLUInfo(packLUInfo_t* packLUInfo);
1043 lPanelInfo_t *, int_t*, int_t *, int_t *,
1044 doublecomplex *bigU, int_t* Lsub_buf,
1045 doublecomplex* Lval_buf, int_t* Usub_buf,
1046 doublecomplex* Uval_buf, gridinfo_t *, zLUstruct_t *);
1050 zLUValSubBuf_t* LUvsb, gridinfo_t *,
1051 zLUstruct_t *, HyP_t*);
1054// permutation from superLU default
1055
1056 /* from treeFactorization.h */
1058extern int_t zinitScuBufs(int_t ldt, int_t num_threads, int_t nsupers,
1060extern int zfreeScuBufs(zscuBufs_t* scuBufs);
1061
1062// the generic tree factoring code
1064 int_t nnnodes, // number of nodes in the tree
1065 int_t *perm_c_supno, // list of nodes in the order of factorization
1066 commRequests_t *comReqs, // lists of communication requests
1067 zscuBufs_t *scuBufs, // contains buffers for schur complement update
1068 packLUInfo_t*packLUInfo,
1069 msgs_t*msgs,
1070 zLUValSubBuf_t* LUvsb,
1071 zdiagFactBufs_t *dFBuf,
1072 factStat_t *factStat,
1073 factNodelists_t *fNlists,
1074 superlu_dist_options_t *options,
1075 int_t * gIperm_c_supno,
1076 int_t ldt,
1077 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d, SuperLUStat_t *stat,
1078 double thresh, SCT_t *SCT,
1079 int *info
1080);
1081
1083 int_t nnodes, // number of nodes in the tree
1084 int_t *perm_c_supno, // list of nodes in the order of factorization
1085 treeTopoInfo_t* treeTopoInfo,
1086 commRequests_t *comReqs, // lists of communication requests
1087 zscuBufs_t *scuBufs, // contains buffers for schur complement update
1088 packLUInfo_t*packLUInfo,
1089 msgs_t*msgs,
1090 zLUValSubBuf_t* LUvsb,
1091 zdiagFactBufs_t *dFBuf,
1092 factStat_t *factStat,
1093 factNodelists_t *fNlists,
1094 superlu_dist_options_t *options,
1095 int_t * gIperm_c_supno,
1096 int_t ldt,
1097 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d, SuperLUStat_t *stat,
1098 double thresh, SCT_t *SCT,
1099 int *info
1100);
1101
1103 int_t nnnodes, // number of nodes in the tree
1104 int_t *perm_c_supno, // list of nodes in the order of factorization
1105 commRequests_t *comReqs, // lists of communication requests
1106 zscuBufs_t *scuBufs, // contains buffers for schur complement update
1107 packLUInfo_t*packLUInfo,
1108 msgs_t*msgs,
1109 zLUValSubBuf_t* LUvsb,
1110 zdiagFactBufs_t *dFBuf,
1111 factStat_t *factStat,
1112 factNodelists_t *fNlists,
1113 superlu_dist_options_t *options,
1114 int_t * gIperm_c_supno,
1115 int_t ldt,
1116 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d, SuperLUStat_t *stat,
1117 double thresh, SCT_t *SCT, int tag_ub,
1118 int *info
1119);
1120
1122 sForest_t* sforest,
1123 commRequests_t **comReqss, // lists of communication requests // size maxEtree level
1124 zscuBufs_t *scuBufs, // contains buffers for schur complement update
1125 packLUInfo_t*packLUInfo,
1126 msgs_t**msgss, // size=num Look ahead
1127 zLUValSubBuf_t** LUvsbs, // size=num Look ahead
1128 zdiagFactBufs_t **dFBufs, // size maxEtree level
1129 factStat_t *factStat,
1130 factNodelists_t *fNlists,
1131 gEtreeInfo_t* gEtreeInfo, // global etree info
1132 superlu_dist_options_t *options,
1133 int_t * gIperm_c_supno,
1134 int_t ldt,
1135 HyP_t* HyP,
1136 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d, SuperLUStat_t *stat,
1137 double thresh, SCT_t *SCT, int tag_ub,
1138 int *info
1139);
1141extern int zLluBufFreeArr(int_t numLA, zLUValSubBuf_t **LUvsbs);
1143extern int zfreeDiagFactBufsArr(int_t mxLeafNode, zdiagFactBufs_t** dFBufs);
1145extern int_t checkRecvUDiag(int_t k, commRequests_t *comReqs,
1146 gridinfo_t *grid, SCT_t *SCT);
1147extern int_t checkRecvLDiag(int_t k, commRequests_t *comReqs, gridinfo_t *, SCT_t *);
1148
1149 /* from ancFactorization.h (not called) */
1151 int_t ilvl, // level of factorization
1152 sForest_t* sforest,
1153 commRequests_t **comReqss, // lists of communication requests // size maxEtree level
1154 zscuBufs_t *scuBufs, // contains buffers for schur complement update
1155 packLUInfo_t*packLUInfo,
1156 msgs_t**msgss, // size=num Look ahead
1157 zLUValSubBuf_t** LUvsbs, // size=num Look ahead
1158 zdiagFactBufs_t **dFBufs, // size maxEtree level
1159 factStat_t *factStat,
1160 factNodelists_t *fNlists,
1161 gEtreeInfo_t* gEtreeInfo, // global etree info
1162 superlu_dist_options_t *options,
1163 int_t * gIperm_c_supno,
1164 int_t ldt,
1165 HyP_t* HyP,
1166 zLUstruct_t *LUstruct, gridinfo3d_t * grid3d, SuperLUStat_t *stat,
1167 double thresh, SCT_t *SCT, int tag_ub, int *info
1168);
1169
1170/*== end 3D prototypes ===================*/
1171
1172
1173#ifdef __cplusplus
1174 }
1175#endif
1176
1177#endif /* __SUPERLU_dDEFS */
1178
int j
Definition: dutil_dist.c:248
#define ztrtri_
Definition: superlu_FCnames.h:163
#define NBUFFERS
Definition: superlu_defs.h:194
int int_t
Definition: superlu_defs.h:114
DiagScale_t
Definition: superlu_enum_consts.h:35
fact_t
Definition: superlu_enum_consts.h:30
int zcreate_matrix_postfix3d(SuperMatrix *A, int nrhs, doublecomplex **rhs, int *ldb, doublecomplex **x, int *ldx, FILE *fp, char *postfix, gridinfo3d_t *grid3d)
Definition: zcreate_matrix3d.c:71
int_t pzgstrs_init(int_t, int_t, int_t, int_t, int_t[], int_t[], gridinfo_t *grid, Glu_persist_t *, zSOLVEstruct_t *)
Destroy distributed L & U matrices. *‍/ void zDestroy_LU(int_t n, gridinfo_t *grid,...
Definition: pzutil.c:724
int_t initPackLUInfo(int_t nsupers, packLUInfo_t *packLUInfo)
Definition: treeFactorization.c:367
void zCreate_CompRowLoc_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, int_t, int_t, doublecomplex *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
int_t zgatherFactoredLU(int_t sender, int_t receiver, int_t nnodes, int_t *nodeList, zLUValSubBuf_t *LUvsb, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
void zlsum_bmod_inv_master(doublecomplex *, doublecomplex *, doublecomplex *, doublecomplex *, int, int_t, int *bmod, int_t *, Ucb_indptr_t **, int_t **, int_t *, gridinfo_t *, zLocalLU_t *, SuperLUStat_t **, int_t, int_t, int, int)
Definition: pzgstrs_lsum.c:1883
void zinit3DLUstructForest(int_t *myTreeIdxs, int_t *myZeroTrIdxs, sForest_t **sForests, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
void zGenCSRLblocks(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *, doublecomplex **, int_t **, int_t **, int_t *, int_t *)
void pzgstrs2(int_t m, int_t k0, int_t k, Glu_persist_t *Glu_persist, gridinfo_t *grid, zLocalLU_t *Llu, SuperLUStat_t *stat)
int_t zUDiagBlockRecvWait(int_t k, int_t *IrecvPlcd_D, int_t *factored_L, MPI_Request *, gridinfo_t *, zLUstruct_t *, SCT_t *)
void zFillRHS_dist(char *, int_t, doublecomplex *, int_t, SuperMatrix *, doublecomplex *, int_t)
Let rhs[i] = sum of i-th row of A, so the solution vector is all 1's.
Definition: zutil_dist.c:506
void zPrint_CompCol_Matrix_dist(SuperMatrix *)
int updateDirtyBit(int_t k0, HyP_t *HyP, gridinfo_t *grid)
Definition: sec_structs.c:618
int zreduceAllAncestors3d(int_t ilvl, int_t *myNodeCount, int_t **treePerm, zLUValSubBuf_t *LUvsb, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t zUPanelUpdate(int_t k, int_t *factored_U, MPI_Request *, doublecomplex *BlockLFactor, doublecomplex *bigV, int_t ldt, Ublock_info_t *, gridinfo_t *, zLUstruct_t *, SuperLUStat_t *, SCT_t *)
int_t zLPanelUpdate(int_t k, int_t *IrecvPlcd_D, int_t *factored_L, MPI_Request *, doublecomplex *BlockUFactor, gridinfo_t *, zLUstruct_t *, SCT_t *)
void pzgsmv_init(SuperMatrix *, int_t *, gridinfo_t *, pzgsmv_comm_t *)
Definition: pzgsmv.c:26
int zDeAllocLlu_3d(int_t n, zLUstruct_t *, gridinfo3d_t *)
Definition: zutil_dist.c:451
int_t zIRecv_UDiagBlock(int_t k0, doublecomplex *ublk_ptr, int_t size, int_t src, MPI_Request *, gridinfo_t *, SCT_t *, int)
doublecomplex * zgetBigV(int_t, int_t)
int sp_ztrsv_dist(char *, char *, char *, SuperMatrix *, SuperMatrix *, doublecomplex *, int *)
Definition: zsp_blas2_dist.c:94
int ztrsm_(const char *, const char *, const char *, const char *, const int *, const int *, const doublecomplex *, const doublecomplex *, const int *, doublecomplex *, const int *)
void zlaqgs_dist(SuperMatrix *, double *, double *, double, double, double, char *)
Definition: zlaqgs_dist.c:82
void pzgssvx_ABglobal(superlu_dist_options_t *, SuperMatrix *, zScalePermstruct_t *, doublecomplex *, int, int, gridinfo_t *, zLUstruct_t *, double *, SuperLUStat_t *, int *)
void pzgsequ(SuperMatrix *, double *, double *, double *, double *, double *, int_t *, gridinfo_t *)
Definition: pzgsequ.c:85
int_t ancestorFactor(int_t ilvl, sForest_t *sforest, commRequests_t **comReqss, zscuBufs_t *scuBufs, packLUInfo_t *packLUInfo, msgs_t **msgss, zLUValSubBuf_t **LUvsbs, zdiagFactBufs_t **dFBufs, factStat_t *factStat, factNodelists_t *fNlists, gEtreeInfo_t *gEtreeInfo, superlu_dist_options_t *options, int_t *gIperm_c_supno, int_t ldt, HyP_t *HyP, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SuperLUStat_t *stat, double thresh, SCT_t *SCT, int tag_ub, int *info)
void pzgsrfs(int_t, SuperMatrix *, double, zLUstruct_t *, zScalePermstruct_t *, gridinfo_t *, doublecomplex[], int_t, doublecomplex[], int_t, int, zSOLVEstruct_t *, double *, SuperLUStat_t *, int *)
void pzgsmv(int_t, SuperMatrix *, gridinfo_t *, pzgsmv_comm_t *, doublecomplex x[], doublecomplex ax[])
Definition: pzgsmv.c:234
int_t scuStatUpdate(int_t knsupc, HyP_t *HyP, SCT_t *SCT, SuperLUStat_t *stat)
Definition: sec_structs.c:635
void Local_Zgstrf2(superlu_dist_options_t *options, int_t k, double thresh, doublecomplex *BlockUFactor, Glu_persist_t *, gridinfo_t *, zLocalLU_t *, SuperLUStat_t *, int *info, SCT_t *)
int sp_zgemv_dist(char *, doublecomplex, SuperMatrix *, doublecomplex *, int, doublecomplex, doublecomplex *, int)
SpGEMV.
Definition: zsp_blas2_dist.c:395
void zreadtriple_dist(FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zreadtriple.c:34
int zcreate_matrix3d(SuperMatrix *A, int nrhs, doublecomplex **rhs, int *ldb, doublecomplex **x, int *ldx, FILE *fp, gridinfo3d_t *grid3d)
Definition: zcreate_matrix3d_Jake.c:67
void zreadMM_dist(FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zreadMM.c:37
trf3Dpartition_t * zinitTrf3Dpartition(int_t nsupers, superlu_dist_options_t *options, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int_t zIBcast_UPanel(int_t k, int_t k0, int_t *usub, doublecomplex *uval, gridinfo_t *, int *msgcnt, MPI_Request *, int *ToSendD, int)
void pzgstrf2(superlu_dist_options_t *, int_t nsupers, int_t k0, int_t k, double thresh, Glu_persist_t *, gridinfo_t *, zLocalLU_t *, MPI_Request *, int, SuperLUStat_t *, int *)
double pzlangs(char *, SuperMatrix *, gridinfo_t *)
Definition: pzlangs.c:64
int getNsupers(int, Glu_persist_t *)
Definition: trfAux.c:42
void pzinf_norm_error(int, int_t, int_t, doublecomplex[], int_t, doublecomplex[], int_t, MPI_Comm)
Check the inf-norm of the error vector.
Definition: pzutil.c:988
void pzgssvx(superlu_dist_options_t *, SuperMatrix *, zScalePermstruct_t *, doublecomplex *, int, int, gridinfo_t *, zLUstruct_t *, zSOLVEstruct_t *, double *, SuperLUStat_t *, int *)
void zCreate_CompCol_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, doublecomplex *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
void pzgstrs2_omp(int_t k0, int_t k, Glu_persist_t *, gridinfo_t *, zLocalLU_t *, Ublock_info_t *, SuperLUStat_t *)
Definition: pzgstrf2.c:762
int_t zAllocLlu_3d(int_t nsupers, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int superlu_zgemv(const char *trans, const int m, const int n, const doublecomplex alpha, const doublecomplex *a, const int lda, const doublecomplex *x, const int incx, const doublecomplex beta, doublecomplex *y, const int incy)
void zInit_HyP(HyP_t *HyP, zLocalLU_t *Llu, int_t mcb, int_t mrb)
void pzCompute_Diag_Inv(int_t, zLUstruct_t *, gridinfo_t *, SuperLUStat_t *, int *)
Definition: pzgstrs.c:650
int_t zinitDiagFactBufs(int_t ldt, zdiagFactBufs_t *dFBuf)
void zDestroy_LU(int_t, gridinfo_t *, zLUstruct_t *)
Destroy distributed L & U matrices.
Definition: pzutil.c:483
void Free_HyP(HyP_t *HyP)
Definition: sec_structs.c:594
int_t zp3dScatter(int_t n, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int_t zPackLBlock(int_t k, doublecomplex *Dest, Glu_persist_t *, gridinfo_t *, zLocalLU_t *)
float zdist_psymbtonum(fact_t, int_t, SuperMatrix *, zScalePermstruct_t *, Pslu_freeable_t *, zLUstruct_t *, gridinfo_t *)
Definition: pzsymbfact_distdata.c:1187
int zPrint_CompRowLoc_Matrix_dist(SuperMatrix *)
int zcreate_matrix_postfix(SuperMatrix *, int, doublecomplex **, int *, doublecomplex **, int *, FILE *, char *, gridinfo_t *)
Definition: zcreate_matrix.c:75
int_t zWait_LRecv(MPI_Request *, int *msgcnt, int *msgcntsU, gridinfo_t *, SCT_t *)
int_t zQuerySpace_dist(int_t, zLUstruct_t *, gridinfo_t *, SuperLUStat_t *, superlu_dist_mem_usage_t *)
Definition: zmemory_dist.c:72
void zlsum_fmod(doublecomplex *, doublecomplex *, doublecomplex *, doublecomplex *, int, int, int_t, int *fmod, int_t, int_t, int_t, int_t *, gridinfo_t *, zLocalLU_t *, MPI_Request[], SuperLUStat_t *)
Definition: pzgstrs_lsum.c:61
zdiagFactBufs_t ** zinitDiagFactBufsArr(int_t mxLeafNode, int_t ldt, gridinfo_t *grid)
int_t checkRecvUDiag(int_t k, commRequests_t *comReqs, gridinfo_t *grid, SCT_t *SCT)
Definition: treeFactorization.c:401
int_t zinitScuBufs(int_t ldt, int_t num_threads, int_t nsupers, zscuBufs_t *, zLUstruct_t *, gridinfo_t *)
int_t zzRecvLPanel(int_t k, int_t sender, doublecomplex alpha, doublecomplex beta, doublecomplex *Lval_buf, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t zscatter3dLPanels(int_t nsupers, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
float zdistribute(fact_t, int_t, SuperMatrix *, Glu_freeable_t *, zLUstruct_t *, gridinfo_t *)
Definition: zdistribute.c:62
doublecomplex * doublecomplexMalloc_dist(int_t)
Definition: zmemory_dist.c:154
int_t zgatherAllFactoredLUFr(int_t *myZeroTrIdxs, sForest_t *sForests, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t zzSendUPanel(int_t k, int_t receiver, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t zblock_gemm_scatterTopRight(int_t lb, int_t j, doublecomplex *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int *indirect, int *indirect2, HyP_t *HyP, zLUstruct_t *, gridinfo_t *, SCT_t *SCT, SuperLUStat_t *)
int_t zISend_LDiagBlock(int_t k0, doublecomplex *lblk_ptr, int_t size, MPI_Request *, gridinfo_t *, int)
void pzgstrs(int_t, zLUstruct_t *, zScalePermstruct_t *, gridinfo_t *, doublecomplex *, int_t, int_t, int_t, int, zSOLVEstruct_t *, SuperLUStat_t *, int *)
Definition: pzgstrs.c:842
void zgather_l(int_t num_LBlk, int_t knsupc, Remain_info_t *L_info, doublecomplex *lval, int_t LD_lval, doublecomplex *L_buff)
int pzPermute_Dense_Matrix(int_t, int_t, int_t[], int_t[], doublecomplex[], int, doublecomplex[], int, int, gridinfo_t *)
Permute the distributed dense matrix: B <= perm(X). perm[i] = j means the i-th row of X is in the j-t...
Definition: pzutil.c:290
void zDestroy_Tree(int_t, gridinfo_t *, zLUstruct_t *)
Destroy broadcast and reduction trees used in triangular solve.
Definition: pzutil.c:433
int zfreeScuBufs(zscuBufs_t *scuBufs)
doublecomplex * zgetBigU(int_t, gridinfo_t *, zLUstruct_t *)
void zinf_norm_error_dist(int_t, int_t, doublecomplex *, int_t, doublecomplex *, int_t, gridinfo_t *)
Check the inf-norm of the error vector.
Definition: zutil_dist.c:529
void pzgstrs_Bglobal(int_t, zLUstruct_t *, gridinfo_t *, doublecomplex *, int_t, int, SuperLUStat_t *, int *)
Definition: pzgstrs_Bglobal.c:103
int freePackLUInfo(packLUInfo_t *packLUInfo)
Definition: treeFactorization.c:376
void zZero_CompRowLoc_Matrix_dist(SuperMatrix *)
Sets all entries of a matrix to zero, A_{i,j}=0, for i,j=1,..,n.
Definition: zutil_dist.c:338
void PrintDoublecomplex(char *, int_t, doublecomplex *)
Definition: zutil_dist.c:552
void zreadrb_dist(int, FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zreadrb.c:283
int_t zTrs2_GatherTrsmScatter(int_t klst, int_t iukp, int_t rukp, int_t *usub, doublecomplex *uval, doublecomplex *tempv, int_t knsupc, int nsupr, doublecomplex *lusup, Glu_persist_t *Glu_persist)
Definition: pzgstrf2.c:716
int zScatter_B3d(NRformat_loc3d *A3d, gridinfo3d_t *grid3d)
int_t zdenseTreeFactor(int_t nnnodes, int_t *perm_c_supno, commRequests_t *comReqs, zscuBufs_t *scuBufs, packLUInfo_t *packLUInfo, msgs_t *msgs, zLUValSubBuf_t *LUvsb, zdiagFactBufs_t *dFBuf, factStat_t *factStat, factNodelists_t *fNlists, superlu_dist_options_t *options, int_t *gIperm_c_supno, int_t ldt, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SuperLUStat_t *stat, double thresh, SCT_t *SCT, int tag_ub, int *info)
void zscatter_u(int ib, int jb, int nsupc, int_t iukp, int_t *xsup, int klst, int nbrow, int_t lptr, int temp_nbrow, int_t *lsub, int_t *usub, doublecomplex *tempv, int_t **Ufstnz_br_ptr, doublecomplex **Unzval_br_ptr, gridinfo_t *grid)
int zaxpy_(const int *n, const doublecomplex *alpha, const doublecomplex *x, const int *incx, doublecomplex *y, const int *incy)
void zComputeLevelsets(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *, int_t *)
int_t zblock_gemm_scatterTopLeft(int_t lb, int_t j, doublecomplex *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int *indirect, int *indirect2, HyP_t *HyP, zLUstruct_t *, gridinfo_t *, SCT_t *SCT, SuperLUStat_t *)
int_t zTrs2_ScatterU(int_t iukp, int_t rukp, int_t klst, int_t nsupc, int_t ldu, int_t *usub, doublecomplex *uval, doublecomplex *tempv)
Definition: pzgstrf2.c:694
int_t zIBcast_LPanel(int_t k, int_t k0, int_t *lsub, doublecomplex *lusup, gridinfo_t *, int *msgcnt, MPI_Request *, int **ToSendR, int_t *xsup, int)
int_t zBcast_LPanel(int_t k, int_t k0, int_t *lsub, doublecomplex *lusup, gridinfo_t *, int *msgcnt, int **ToSendR, int_t *xsup, SCT_t *, int)
void zCompRow_to_CompCol_dist(int_t, int_t, int_t, doublecomplex *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
int zgemm_(const char *, const char *, const int *, const int *, const int *, const doublecomplex *, const doublecomplex *, const int *, const doublecomplex *, const int *, const doublecomplex *, doublecomplex *, const int *)
int_t treeFactor(int_t nnnodes, int_t *perm_c_supno, commRequests_t *comReqs, zscuBufs_t *scuBufs, packLUInfo_t *packLUInfo, msgs_t *msgs, zLUValSubBuf_t *LUvsb, zdiagFactBufs_t *dFBuf, factStat_t *factStat, factNodelists_t *fNlists, superlu_dist_options_t *options, int_t *gIperm_c_supno, int_t ldt, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SuperLUStat_t *stat, double thresh, SCT_t *SCT, int *info)
int z_c2cpp_GetHWPM(SuperMatrix *, gridinfo_t *, zScalePermstruct_t *)
Definition: z_c2cpp_GetHWPM.cpp:59
int zldperm_dist(int, int, int_t, int_t[], int_t[], doublecomplex[], int_t *, double[], double[])
Definition: zldperm_dist.c:95
void pzgssvx3d(superlu_dist_options_t *, SuperMatrix *, zScalePermstruct_t *, doublecomplex B[], int ldb, int nrhs, gridinfo3d_t *, zLUstruct_t *, zSOLVEstruct_t *, double *berr, SuperLUStat_t *, int *info)
Definition: pzgssvx3d.c:500
int_t zIBcastRecvLPanel(int_t k, int_t k0, int *msgcnt, MPI_Request *, MPI_Request *, int_t *Lsub_buf, doublecomplex *Lval_buf, int_t *factored, gridinfo_t *, zLUstruct_t *, SCT_t *, int tag_ub)
int_t zBcast_UPanel(int_t k, int_t k0, int_t *usub, doublecomplex *uval, gridinfo_t *, int *msgcnt, int *ToSendD, SCT_t *, int)
int superlu_ztrsv(char *uplo, char *trans, char *diag, int n, doublecomplex *a, int lda, doublecomplex *x, int incx)
int_t zcollect3dUpanels(int_t layer, int_t nsupers, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
#define MAX_LOOKAHEADS
Definition: superlu_zdefs.h:96
void zGenCOOLblocks(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *, int_t **, int_t **, doublecomplex **, int_t *, int_t *)
int_t zcollect3dLpanels(int_t layer, int_t nsupers, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int_t zgatherAllFactoredLU(trf3Dpartition_t *trf3Dpartition, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int superlu_zgemm(const char *transa, const char *transb, int m, int n, int k, doublecomplex alpha, doublecomplex *a, int lda, doublecomplex *b, int ldb, doublecomplex beta, doublecomplex *c, int ldc)
void zCreate_Dense_Matrix_dist(SuperMatrix *, int_t, int_t, doublecomplex *, int_t, Stype_t, Dtype_t, Mtype_t)
void zRgather_U(int_t k, int_t jj0, int_t *usub, doublecomplex *uval, doublecomplex *bigU, gEtreeInfo_t *, Glu_persist_t *, gridinfo_t *, HyP_t *, int_t *myIperm, int_t *iperm_c_supno, int_t *perm_u)
void * duser_malloc_dist(int_t, int_t)
Definition: dmemory_dist.c:30
int_t LDiagBlockRecvWait(int_t k, int_t *factored_U, MPI_Request *, gridinfo_t *)
Definition: communication_aux.c:218
int_t zsparseTreeFactor_ASYNC(sForest_t *sforest, commRequests_t **comReqss, zscuBufs_t *scuBufs, packLUInfo_t *packLUInfo, msgs_t **msgss, zLUValSubBuf_t **LUvsbs, zdiagFactBufs_t **dFBufs, factStat_t *factStat, factNodelists_t *fNlists, gEtreeInfo_t *gEtreeInfo, superlu_dist_options_t *options, int_t *gIperm_c_supno, int_t ldt, HyP_t *HyP, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SuperLUStat_t *stat, double thresh, SCT_t *SCT, int tag_ub, int *info)
void zlsum_bmod_inv(doublecomplex *, doublecomplex *, doublecomplex *, doublecomplex *, int, int_t, int *bmod, int_t *, Ucb_indptr_t **, int_t **, int_t *, gridinfo_t *, zLocalLU_t *, SuperLUStat_t **, int_t *, int_t *, int_t, int_t, int, int)
Definition: pzgstrs_lsum.c:1395
doublecomplex * doublecomplexCalloc_dist(int_t)
Definition: zmemory_dist.c:161
void zGenXtrue_dist(int_t, int_t, doublecomplex *, int_t)
Definition: zutil_dist.c:487
void zfill_dist(doublecomplex *, int_t, doublecomplex)
Fills a doublecomplex precision array with a given value.
Definition: zutil_dist.c:519
int pzgsmv_AXglobal_abs(int_t, int_t[], doublecomplex[], int_t[], doublecomplex[], double[])
Definition: pzgsmv_AXglobal.c:288
int zstatic_schedule(superlu_dist_options_t *, int, int, zLUstruct_t *, gridinfo_t *, SuperLUStat_t *, int_t *, int_t *, int *)
Definition: zstatic_schedule.c:45
int superlu_zscal(const int n, const doublecomplex alpha, doublecomplex *x, const int incx)
void zLUstructFree(zLUstruct_t *)
Deallocate LUstruct.
Definition: pzutil.c:415
void zCopy_CompRowLoc_Matrix_dist(SuperMatrix *, SuperMatrix *)
Definition: zutil_dist.c:323
int_t zscatter3dUPanels(int_t nsupers, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int zcreate_matrix(SuperMatrix *, int, doublecomplex **, int *, doublecomplex **, int *, FILE *, gridinfo_t *)
Definition: zcreate_matrix.c:347
int sp_zgemm_dist(char *, int, doublecomplex, SuperMatrix *, doublecomplex *, int, doublecomplex, doublecomplex *, int)
Definition: zsp_blas3_dist.c:124
void zallocateA_dist(int_t, int_t, doublecomplex **, int_t **, int_t **)
Definition: zmemory_dist.c:146
int_t zinit3DLUstruct(int_t *myTreeIdxs, int_t *myZeroTrIdxs, int_t *nodeCount, int_t **nodeList, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
int zSolveInit(superlu_dist_options_t *, SuperMatrix *, int_t[], int_t[], int_t, zLUstruct_t *, gridinfo_t *, zSOLVEstruct_t *)
Initialize the data structure for the solution phase.
Definition: pzutil.c:853
int_t zblock_gemm_scatterBottomRight(int_t lb, int_t j, doublecomplex *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int *indirect, int *indirect2, HyP_t *HyP, zLUstruct_t *, gridinfo_t *, SCT_t *SCT, SuperLUStat_t *)
void zLUstructInit(const int_t, zLUstruct_t *)
Allocate storage in LUstruct.
Definition: pzutil.c:401
int_t zsparseTreeFactor(int_t nnodes, int_t *perm_c_supno, treeTopoInfo_t *treeTopoInfo, commRequests_t *comReqs, zscuBufs_t *scuBufs, packLUInfo_t *packLUInfo, msgs_t *msgs, zLUValSubBuf_t *LUvsb, zdiagFactBufs_t *dFBuf, factStat_t *factStat, factNodelists_t *fNlists, superlu_dist_options_t *options, int_t *gIperm_c_supno, int_t ldt, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SuperLUStat_t *stat, double thresh, SCT_t *SCT, int *info)
void pzlaqgs(SuperMatrix *, double *, double *, double, double, double, char *)
Definition: pzlaqgs.c:84
int pzCompRow_loc_to_CompCol_global(int_t, SuperMatrix *, gridinfo_t *, SuperMatrix *)
Gather A from the distributed compressed row format to global A in compressed column format.
Definition: pzutil.c:28
int zAllocGlu_3d(int_t n, int_t nsupers, zLUstruct_t *)
Definition: zutil_dist.c:433
void zZeroUblocks(int iam, int n, gridinfo_t *, zLUstruct_t *)
Sets all entries of matrix U to zero.
Definition: zutil_dist.c:794
int_t zWait_URecv(MPI_Request *, int *msgcnt, SCT_t *)
int_t zDiagFactIBCast(int_t k, int_t k0, doublecomplex *BlockUFactor, doublecomplex *BlockLFactor, int_t *IrecvPlcd_D, MPI_Request *, MPI_Request *, MPI_Request *, MPI_Request *, gridinfo_t *, superlu_dist_options_t *, double thresh, zLUstruct_t *LUstruct, SuperLUStat_t *, int *info, SCT_t *, int tag_ub)
void zScalePermstructFree(zScalePermstruct_t *)
Deallocate ScalePermstruct.
Definition: zutil_dist.c:410
int_t zIrecv_UPanel(int_t k, int_t k0, int_t *Usub_buf, doublecomplex *, zLocalLU_t *, gridinfo_t *, MPI_Request *, int)
void zGatherNRformat_loc3d(fact_t Fact, NRformat_loc *A, doublecomplex *B, int ldb, int nrhs, gridinfo3d_t *grid3d, NRformat_loc3d **)
void pxgstrs_finalize(pxgstrs_comm_t *)
Definition: util.c:266
void zgsequ_dist(SuperMatrix *, double *, double *, double *, double *, double *, int_t *)
Definition: zgsequ_dist.c:84
void zgeru_(const int *, const int *, const doublecomplex *, const doublecomplex *, const int *, const doublecomplex *, const int *, doublecomplex *, const int *)
void zPrintLblocks(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *)
Print the blocks in the factored matrix L.
Definition: zutil_dist.c:573
int_t zTrs2_GatherU(int_t iukp, int_t rukp, int_t klst, int_t nsupc, int_t ldu, int_t *usub, doublecomplex *uval, doublecomplex *tempv)
Definition: pzgstrf2.c:669
void z3D_printMemUse(trf3Dpartition_t *trf3Dpartition, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
Definition: zmemory_dist.c:242
int_t zWaitU(int_t k, int *msgcnt, MPI_Request *, MPI_Request *, gridinfo_t *, zLUstruct_t *, SCT_t *)
double * doubleMalloc_dist(int_t)
Definition: dmemory_dist.c:155
int zscal_(const int *n, const doublecomplex *alpha, doublecomplex *dx, const int *incx)
int_t zblock_gemm_scatterBottomLeft(int_t lb, int_t j, doublecomplex *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int *indirect, int *indirect2, HyP_t *HyP, zLUstruct_t *, gridinfo_t *, SCT_t *SCT, SuperLUStat_t *)
void zscatter_l(int ib, int ljb, int nsupc, int_t iukp, int_t *xsup, int klst, int nbrow, int_t lptr, int temp_nbrow, int_t *usub, int_t *lsub, doublecomplex *tempv, int *indirect_thread, int *indirect2, int_t **Lrowind_bc_ptr, doublecomplex **Lnzval_bc_ptr, gridinfo_t *grid)
void pzGetDiagU(int_t, zLUstruct_t *, gridinfo_t *, doublecomplex *)
Definition: pzGetDiagU.c:65
int superlu_zaxpy(const int n, const doublecomplex alpha, const doublecomplex *x, const int incx, doublecomplex *y, const int incy)
int zcreate_matrix_rb(SuperMatrix *, int, doublecomplex **, int *, doublecomplex **, int *, FILE *, gridinfo_t *)
void zCopy_CompCol_Matrix_dist(SuperMatrix *, SuperMatrix *)
void zClone_CompRowLoc_Matrix_dist(SuperMatrix *, SuperMatrix *)
int_t pzgstrf(superlu_dist_options_t *, int, int, double anorm, zLUstruct_t *, gridinfo_t *, SuperLUStat_t *, int *)
Definition: pzgstrf.c:241
void zCreate_SuperNode_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, doublecomplex *, int_t *, int_t *, int_t *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
int_t zRecv_UDiagBlock(int_t k0, doublecomplex *ublk_ptr, int_t size, int_t src, gridinfo_t *, SCT_t *, int)
int_t zIrecv_LPanel(int_t k, int_t k0, int_t *Lsub_buf, doublecomplex *Lval_buf, gridinfo_t *, MPI_Request *, zLocalLU_t *, int)
int file_zPrint_CompRowLoc_Matrix_dist(FILE *fp, SuperMatrix *A)
void zPrint_Dense_Matrix_dist(SuperMatrix *)
void zblock_gemm_scatter(int_t lb, int_t j, Ublock_info_t *Ublock_info, Remain_info_t *Remain_info, doublecomplex *L_mat, int ldl, doublecomplex *U_mat, int ldu, doublecomplex *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t thread_id, int *indirect, int *indirect2, int_t **Lrowind_bc_ptr, doublecomplex **Lnzval_bc_ptr, int_t **Ufstnz_br_ptr, doublecomplex **Unzval_br_ptr, int_t *xsup, gridinfo_t *, SuperLUStat_t *)
void zPrintUblocks(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *)
Print the blocks in the factored matrix U.
Definition: zutil_dist.c:753
int_t zzSendLPanel(int_t k, int_t receiver, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t pzgstrf3d(superlu_dist_options_t *, int m, int n, double anorm, trf3Dpartition_t *, SCT_t *, zLUstruct_t *, gridinfo3d_t *, SuperLUStat_t *, int *)
Definition: pzgstrf3d.c:120
int_t zISend_UDiagBlock(int_t k0, doublecomplex *ublk_ptr, int_t size, MPI_Request *, gridinfo_t *, int)
void pzgsrfs_ABXglobal(int_t, SuperMatrix *, double, zLUstruct_t *, gridinfo_t *, doublecomplex *, int_t, doublecomplex *, int_t, int, double *, SuperLUStat_t *, int *)
Definition: pzgsrfs_ABXglobal.c:124
double zlangs_dist(char *, SuperMatrix *)
Definition: zlangs_dist.c:61
int_t zLPanelTrSolve(int_t k, int_t *factored_L, doublecomplex *BlockUFactor, gridinfo_t *, zLUstruct_t *)
void zScalePermstructInit(const int_t, const int_t, zScalePermstruct_t *)
Allocate storage in ScalePermstruct.
Definition: zutil_dist.c:399
void zScaleAddId_CompRowLoc_Matrix_dist(SuperMatrix *, doublecomplex)
Scale and add I: scales a matrix and adds an identity. A_{i,j} = c * A_{i,j} + \delta_{i,...
Definition: zutil_dist.c:355
int_t zUPanelTrSolve(int_t k, doublecomplex *BlockLFactor, doublecomplex *bigV, int_t ldt, Ublock_info_t *, gridinfo_t *, zLUstruct_t *, SuperLUStat_t *, SCT_t *)
int_t zLpanelUpdate(int_t off0, int_t nsupc, doublecomplex *ublk_ptr, int_t ld_ujrow, doublecomplex *lusup, int_t nsupr, SCT_t *)
int_t pzReDistribute_B_to_X(doublecomplex *B, int_t m_loc, int nrhs, int_t ldb, int_t fst_row, int_t *ilsum, doublecomplex *x, zScalePermstruct_t *, Glu_persist_t *, gridinfo_t *, zSOLVEstruct_t *)
Definition: pzgstrs.c:154
void zDestroy_A3d_gathered_on_2d(zSOLVEstruct_t *, gridinfo3d_t *)
Definition: pzutil.c:961
void zlsum_bmod(doublecomplex *, doublecomplex *, doublecomplex *, int, int_t, int *bmod, int_t *, Ucb_indptr_t **, int_t **, int_t *, gridinfo_t *, zLocalLU_t *, MPI_Request[], SuperLUStat_t *)
Definition: pzgstrs_lsum.c:250
int_t zIBcastRecvUPanel(int_t k, int_t k0, int *msgcnt, MPI_Request *, MPI_Request *, int_t *Usub_buf, doublecomplex *Uval_buf, gridinfo_t *, zLUstruct_t *, SCT_t *, int tag_ub)
int superlu_zger(const int m, const int n, const doublecomplex alpha, const doublecomplex *x, const int incx, const doublecomplex *y, const int incy, doublecomplex *a, const int lda)
void zreadtriple_noheader(FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zreadtriple_noheader.c:34
void zgemv_(const char *, const int *, const int *, const doublecomplex *, const doublecomplex *a, const int *, const doublecomplex *, const int *, const doublecomplex *, doublecomplex *, const int *)
int_t zzRecvUPanel(int_t k, int_t sender, doublecomplex alpha, doublecomplex beta, doublecomplex *Uval_buf, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
void zCopy_Dense_Matrix_dist(int_t, int_t, doublecomplex *, int_t, doublecomplex *, int_t)
int_t zLluBufInit(zLUValSubBuf_t *, zLUstruct_t *)
void duser_free_dist(int_t, int_t)
Definition: dmemory_dist.c:49
int pzgsmv_AXglobal_setup(SuperMatrix *, Glu_persist_t *, gridinfo_t *, int_t *, int_t *[], doublecomplex *[], int_t *[], int_t[])
int zDeAllocGlu_3d(zLUstruct_t *)
Definition: zutil_dist.c:443
void zreadhb_dist(int, FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zreadhb.c:105
int zcreate_matrix_dat(SuperMatrix *, int, doublecomplex **, int *, doublecomplex **, int *, FILE *, gridinfo_t *)
int_t zSchurComplementSetupGPU(int_t k, msgs_t *msgs, packLUInfo_t *, int_t *, int_t *, int_t *, gEtreeInfo_t *, factNodelists_t *, zscuBufs_t *, zLUValSubBuf_t *LUvsb, gridinfo_t *, zLUstruct_t *, HyP_t *)
int_t checkRecvLDiag(int_t k, commRequests_t *comReqs, gridinfo_t *, SCT_t *)
Definition: treeFactorization.c:422
int file_PrintDoublecomplex(FILE *fp, char *, int_t, doublecomplex *)
Definition: zutil_dist.c:561
int superlu_ztrsm(const char *sideRL, const char *uplo, const char *transa, const char *diag, const int m, const int n, const doublecomplex alpha, const doublecomplex *a, const int lda, doublecomplex *b, const int ldb)
int_t zp3dCollect(int_t layer, int_t n, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d)
void zSolveFinalize(superlu_dist_options_t *, zSOLVEstruct_t *)
Release the resources used for the solution phase.
Definition: pzutil.c:941
void zGenCSCLblocks(int, int_t, gridinfo_t *, Glu_persist_t *, zLocalLU_t *, doublecomplex **, int_t **, int_t **, int_t *, int_t *)
int ztrsv_(char *, char *, char *, int *, doublecomplex *, int *, doublecomplex *, int *)
double * doubleCalloc_dist(int_t)
Definition: dmemory_dist.c:162
void pzgsmv_finalize(pzgsmv_comm_t *)
Definition: pzgsmv.c:373
float pzdistribute(fact_t, int_t, SuperMatrix *, zScalePermstruct_t *, Glu_freeable_t *, zLUstruct_t *, gridinfo_t *)
Definition: pzdistribute.c:325
int zread_binary(FILE *, int_t *, int_t *, int_t *, doublecomplex **, int_t **, int_t **)
Definition: zbinary_io.c:4
void pzgstrf2_trsm(superlu_dist_options_t *options, int_t k0, int_t k, double thresh, Glu_persist_t *, gridinfo_t *, zLocalLU_t *, MPI_Request *, int tag_ub, SuperLUStat_t *, int *info)
Definition: pzgstrf2.c:142
int_t zreduceAncestors3d(int_t sender, int_t receiver, int_t nnodes, int_t *nodeList, doublecomplex *Lval_buf, doublecomplex *Uval_buf, zLUstruct_t *LUstruct, gridinfo3d_t *grid3d, SCT_t *SCT)
int_t zzeroSetLU(int_t nnodes, int_t *nodeList, zLUstruct_t *, gridinfo3d_t *)
void zDestroy_trf3Dpartition(trf3Dpartition_t *trf3Dpartition, gridinfo3d_t *grid3d)
void zlsum_fmod_inv(doublecomplex *, doublecomplex *, doublecomplex *, doublecomplex *, int, int_t, int *fmod, int_t *, gridinfo_t *, zLocalLU_t *, SuperLUStat_t **, int_t *, int_t *, int_t, int_t, int_t, int_t, int, int)
Definition: pzgstrs_lsum.c:427
zLUValSubBuf_t ** zLluBufInitArr(int_t numLA, zLUstruct_t *LUstruct)
void zZeroLblocks(int, int, gridinfo_t *, zLUstruct_t *)
Sets all entries of matrix L to zero.
Definition: zutil_dist.c:622
int zfreeDiagFactBufsArr(int_t mxLeafNode, zdiagFactBufs_t **dFBufs)
void zgather_u(int_t num_u_blks, Ublock_info_t *Ublock_info, int_t *usub, doublecomplex *uval, doublecomplex *bigU, int_t ldu, int_t *xsup, int_t klst)
int pzgsmv_AXglobal(int_t, int_t[], doublecomplex[], int_t[], doublecomplex[], doublecomplex[])
Definition: pzgsmv_AXglobal.c:258
void zRgather_L(int_t k, int_t *lsub, doublecomplex *lusup, gEtreeInfo_t *, Glu_persist_t *, gridinfo_t *, HyP_t *, int_t *myIperm, int_t *iperm_c_supno)
int_t zIRecv_LDiagBlock(int_t k0, doublecomplex *L_blk_ptr, int_t size, int_t src, MPI_Request *, gridinfo_t *, SCT_t *, int)
int_t zSchurComplementSetup(int_t k, int *msgcnt, Ublock_info_t *, Remain_info_t *, uPanelInfo_t *, lPanelInfo_t *, int_t *, int_t *, int_t *, doublecomplex *bigU, int_t *Lsub_buf, doublecomplex *Lval_buf, int_t *Usub_buf, doublecomplex *Uval_buf, gridinfo_t *, zLUstruct_t *)
void zScaleAdd_CompRowLoc_Matrix_dist(SuperMatrix *, SuperMatrix *, doublecomplex)
Scale and add: adds a scalar multiple of one matrix to another. A_{i,j} = c * A_{i,...
Definition: zutil_dist.c:381
void zlsum_fmod_inv_master(doublecomplex *, doublecomplex *, doublecomplex *, doublecomplex *, int, int, int_t, int *fmod, int_t, int_t *, gridinfo_t *, zLocalLU_t *, SuperLUStat_t **, int_t, int_t, int_t, int_t, int, int)
Definition: pzgstrs_lsum.c:985
int zLluBufFreeArr(int_t numLA, zLUValSubBuf_t **LUvsbs)
int_t zWaitL(int_t k, int *msgcnt, int *msgcntU, MPI_Request *, MPI_Request *, gridinfo_t *, zLUstruct_t *, SCT_t *)
Mtype_t
Definition: supermatrix.h:42
Dtype_t
Definition: supermatrix.h:35
Stype_t
Definition: supermatrix.h:22
Header for dcomplex.c.
integer, parameter, public lsub
Definition: superlupara.f90:35
integer, parameter, public trans
Definition: superlupara.f90:35
integer, parameter, public factored
Definition: superlupara.f90:35
integer, parameter, public lusup
Definition: superlupara.f90:35
integer, parameter, public usub
Definition: superlupara.f90:35
Definition: superlu_defs.h:1142
Definition: superlu_defs.h:490
Definition: superlu_defs.h:435
Definition: superlu_ddefs.h:329
doublecomplex * lookAhead_L_buff
Definition: superlu_zdefs.h:336
doublecomplex * bigU_host
Definition: superlu_zdefs.h:345
doublecomplex * bigU_Phi
Definition: superlu_zdefs.h:344
Definition: supermatrix.h:194
Definition: supermatrix.h:176
Definition: psymbfact.h:57
Definition: superlu_defs.h:770
Definition: util_dist.h:172
Definition: util_dist.h:95
Definition: supermatrix.h:54
Definition: superlu_defs.h:760
Definition: superlu_defs.h:752
Definition: superlu_defs.h:924
Definition: dcomplex.h:30
Definition: superlu_defs.h:937
Definition: superlu_defs.h:839
Definition: superlu_defs.h:890
Definition: superlu_defs.h:398
Definition: superlu_defs.h:388
Definition: superlu_ddefs.h:317
doublecomplex * lusup
Definition: superlu_zdefs.h:319
Definition: superlu_defs.h:947
Definition: superlu_ddefs.h:397
Definition: superlu_defs.h:551
Definition: superlu_zdefs.h:263
int_t * ptr_ind_torecv
Definition: superlu_zdefs.h:269
int * SendCounts
Definition: superlu_zdefs.h:271
doublecomplex * val_torecv
Definition: superlu_zdefs.h:276
int_t * ptr_ind_tosend
Definition: superlu_zdefs.h:267
int_t TotalValSend
Definition: superlu_zdefs.h:279
doublecomplex * val_tosend
Definition: superlu_zdefs.h:275
int_t TotalIndSend
Definition: superlu_zdefs.h:277
int_t * ind_torecv
Definition: superlu_zdefs.h:266
int_t * extern_start
Definition: superlu_zdefs.h:264
int_t * ind_tosend
Definition: superlu_zdefs.h:265
int * RecvCounts
Definition: superlu_zdefs.h:273
Definition: superlu_defs.h:901
Definition: superlu_defs.h:744
Definition: superlu_defs.h:712
Definition: superlu_defs.h:882
Definition: superlu_ddefs.h:372
zLUValSubBuf_t * LUvsb
Definition: superlu_zdefs.h:381
Definition: superlu_ddefs.h:308
doublecomplex * uval
Definition: superlu_zdefs.h:313
Definition: superlu_zdefs.h:357
doublecomplex * Uval_buf
Definition: superlu_zdefs.h:361
int_t * Lsub_buf
Definition: superlu_zdefs.h:358
doublecomplex * Lval_buf
Definition: superlu_zdefs.h:359
int_t * Usub_buf
Definition: superlu_zdefs.h:360
Definition: superlu_zdefs.h:254
zLocalLU_t * Llu
Definition: superlu_zdefs.h:257
int_t * etree
Definition: superlu_zdefs.h:255
char dt
Definition: superlu_zdefs.h:258
Glu_persist_t * Glu_persist
Definition: superlu_zdefs.h:256
Definition: superlu_zdefs.h:97
long int Uinv_bc_cnt
Definition: superlu_zdefs.h:122
int_t * Ufstnz_br_dat
Definition: superlu_zdefs.h:125
long int * Lrowind_bc_offset
Definition: superlu_zdefs.h:100
int_t n
Definition: superlu_zdefs.h:214
C_Tree * UBtree_ptr
Definition: superlu_zdefs.h:137
int ** bsendx_plist
Definition: superlu_zdefs.h:171
doublecomplex ** Uinv_bc_ptr
Definition: superlu_zdefs.h:119
long int * Uinv_bc_offset
Definition: superlu_zdefs.h:121
doublecomplex * Uinv_bc_dat
Definition: superlu_zdefs.h:120
int nbrecvx
Definition: superlu_zdefs.h:173
doublecomplex * ujrow
Definition: superlu_zdefs.h:149
int_t FRECV
Definition: superlu_zdefs.h:191
doublecomplex * Linv_bc_dat
Definition: superlu_zdefs.h:109
int_t ** ut_sendx_plist
Definition: superlu_zdefs.h:195
int_t * utrecv
Definition: superlu_zdefs.h:196
int_t SolveMsgVol
Definition: superlu_zdefs.h:182
long int * Linv_bc_offset
Definition: superlu_zdefs.h:110
int_t ut_ldalsum
Definition: superlu_zdefs.h:192
int_t ** Lrowind_bc_ptr
Definition: superlu_zdefs.h:98
int * mod_bit
Definition: superlu_zdefs.h:175
long int Linv_bc_cnt
Definition: superlu_zdefs.h:111
int_t inv
Definition: superlu_zdefs.h:217
int_t * Lindval_loc_bc_dat
Definition: superlu_zdefs.h:114
int ** fsendx_plist
Definition: superlu_zdefs.h:166
Ucb_indptr_t * Ucb_inddat
Definition: superlu_zdefs.h:204
int_t n_utrecvx
Definition: superlu_zdefs.h:198
int nbsendx
Definition: superlu_zdefs.h:174
Ucb_indptr_t ** Ucb_indptr
Definition: superlu_zdefs.h:203
int ** ToSendR
Definition: superlu_zdefs.h:161
long int Unzval_br_cnt
Definition: superlu_zdefs.h:132
int nfrecvx
Definition: superlu_zdefs.h:168
int_t nfrecvmod
Definition: superlu_zdefs.h:216
int_t ** Ufstnz_br_ptr
Definition: superlu_zdefs.h:124
int * brecv
Definition: superlu_zdefs.h:172
int_t ** Lrowind_bc_2_lsum
Definition: superlu_zdefs.h:118
long int Ucb_indcnt
Definition: superlu_zdefs.h:206
int_t * ut_ilsum
Definition: superlu_zdefs.h:193
int nfsendx
Definition: superlu_zdefs.h:169
int * fmod
Definition: superlu_zdefs.h:165
int * ToRecv
Definition: superlu_zdefs.h:159
doublecomplex * Lnzval_bc_dat
Definition: superlu_zdefs.h:104
int_t * ut_modbit
Definition: superlu_zdefs.h:201
int_t * ilsum
Definition: superlu_zdefs.h:178
long int * Lnzval_bc_offset
Definition: superlu_zdefs.h:105
long int * Unzval_br_offset
Definition: superlu_zdefs.h:131
long int * Ufstnz_br_offset
Definition: superlu_zdefs.h:126
C_Tree * LRtree_ptr
Definition: superlu_zdefs.h:136
long int Ufstnz_br_cnt
Definition: superlu_zdefs.h:127
long int * Ucb_valoffset
Definition: superlu_zdefs.h:210
int_t UT_SOLVE
Definition: superlu_zdefs.h:189
long int Lnzval_bc_cnt
Definition: superlu_zdefs.h:106
C_Tree * LBtree_ptr
Definition: superlu_zdefs.h:135
int_t n_utsendx
Definition: superlu_zdefs.h:197
long int Lrowind_bc_cnt
Definition: superlu_zdefs.h:101
int * bmod
Definition: superlu_zdefs.h:170
int_t * Ucb_valdat
Definition: superlu_zdefs.h:209
long int * Lindval_loc_bc_offset
Definition: superlu_zdefs.h:115
int_t nleaf
Definition: superlu_zdefs.h:215
int_t L_SOLVE
Definition: superlu_zdefs.h:190
int_t * Urbs
Definition: superlu_zdefs.h:202
int_t n_utrecvmod
Definition: superlu_zdefs.h:199
doublecomplex * Unzval_br_dat
Definition: superlu_zdefs.h:130
int * ToSendD
Definition: superlu_zdefs.h:160
doublecomplex ** Lnzval_bc_ptr
Definition: superlu_zdefs.h:103
long int * Ucb_indoffset
Definition: superlu_zdefs.h:205
C_Tree * URtree_ptr
Definition: superlu_zdefs.h:138
int_t nroot
Definition: superlu_zdefs.h:200
int_t SolveMsgSent
Definition: superlu_zdefs.h:181
int_t ** Ucb_valptr
Definition: superlu_zdefs.h:208
int_t * utmod
Definition: superlu_zdefs.h:194
long int Ucb_valcnt
Definition: superlu_zdefs.h:211
int * frecv
Definition: superlu_zdefs.h:167
int_t ldalsum
Definition: superlu_zdefs.h:180
doublecomplex ** Linv_bc_ptr
Definition: superlu_zdefs.h:108
long int Lindval_loc_bc_cnt
Definition: superlu_zdefs.h:116
int_t * Lrowind_bc_dat
Definition: superlu_zdefs.h:99
int_t ** Lindval_loc_bc_ptr
Definition: superlu_zdefs.h:113
doublecomplex ** Unzval_br_ptr
Definition: superlu_zdefs.h:129
int_t * Unnz
Definition: superlu_zdefs.h:117
Definition: superlu_zdefs.h:284
NRformat_loc3d * A3d
Definition: superlu_zdefs.h:296
int_t * diag_len
Definition: superlu_zdefs.h:287
int_t * row_to_proc
Definition: superlu_zdefs.h:285
int_t * inv_perm_c
Definition: superlu_zdefs.h:286
int_t * A_colind_gsmv
Definition: superlu_zdefs.h:291
pzgsmv_comm_t * gsmv_comm
Definition: superlu_zdefs.h:288
int_t * xrow_to_proc
Definition: superlu_zdefs.h:295
pxgstrs_comm_t * gstrs_comm
Definition: superlu_zdefs.h:290
Definition: superlu_zdefs.h:76
DiagScale_t DiagScale
Definition: superlu_zdefs.h:77
double * C
Definition: superlu_zdefs.h:79
int_t * perm_r
Definition: superlu_zdefs.h:80
double * R
Definition: superlu_zdefs.h:78
int_t * perm_c
Definition: superlu_zdefs.h:81
Definition: superlu_zdefs.h:391
doublecomplex * BlockLFactor
Definition: superlu_zdefs.h:392
doublecomplex * BlockUFactor
Definition: superlu_zdefs.h:393
Definition: superlu_zdefs.h:385
doublecomplex * bigV
Definition: superlu_zdefs.h:387
doublecomplex * bigU
Definition: superlu_zdefs.h:386
Definitions which are precision-neutral.