superlu_ddefs.h
Go to the documentation of this file.
1 
2 
13 #ifndef __SUPERLU_dDEFS /* allow multiple inclusions */
14 #define __SUPERLU_dDEFS
15 
16 /*
17  * File name: superlu_ddefs.h
18  * Purpose: Distributed SuperLU data types and function prototypes
19  * History:
20  */
21 
22 #include "superlu_defs.h"
23 
24 /*-- Auxiliary data type used in PxGSTRS/PxGSTRS1. */
25 typedef struct {
26  int_t lbnum; /* Row block number (local). */
27  int_t indpos; /* Starting position in Uindex[]. */
28 } Ucb_indptr_t;
29 
30 /*
31  * On each processor, the blocks in L are stored in compressed block
32  * column format, the blocks in U are stored in compressed block row format.
33  */
34 #define MAX_LOOKAHEADS 50
35 typedef struct {
36  int_t **Lrowind_bc_ptr; /* size ceil(NSUPERS/Pc) */
37  double **Lnzval_bc_ptr; /* size ceil(NSUPERS/Pc) */
38  int_t **Ufstnz_br_ptr; /* size ceil(NSUPERS/Pr) */
39  double **Unzval_br_ptr; /* size ceil(NSUPERS/Pr) */
40 #if 0
41  int_t *Lsub_buf; /* Buffer for the remote subscripts of L */
42  double *Lval_buf; /* Buffer for the remote nonzeros of L */
43 #endif
44  int_t *Lsub_buf_2[MAX_LOOKAHEADS]; /* Buffers for the remote subscripts of L*/
45  double *Lval_buf_2[MAX_LOOKAHEADS]; /* Buffers for the remote nonzeros of L */
46  int_t *Usub_buf_2[MAX_LOOKAHEADS]; /* Buffer for the remote subscripts of U */
47  double *Uval_buf_2[MAX_LOOKAHEADS]; /* Buffer for the remote nonzeros of U */
48  int_t *Usub_buf; /* Buffer for the remote subscripts of U */
49  double *Uval_buf; /* Buffer for the remote nonzeros of U */
50  double *ujrow; /* used in panel factorization. */
51  int_t bufmax[NBUFFERS]; /* Buffer size; 5 entries
52  * 0 : size of Lsub_buf[]
53  * 1 : size of Lval_buf[]
54  * 2 : size of Usub_buf[]
55  * 3 : size of Uval_buf[]
56  * 4 : size of tempv[LDA]
57  */
58 
59  /*-- Record communication schedule for factorization. --*/
60  int_t *ToRecv; /* Recv from no one (0), left (1), and up (2).*/
61  int_t *ToSendD; /* Whether need to send down block row. */
62  int_t **ToSendR; /* List of processes to send right block col. */
63 
64  /*-- Record communication schedule for forward/back solves. --*/
65  int_t *fmod; /* Modification count for L-solve */
66  int_t **fsendx_plist; /* Column process list to send down Xk */
67  int_t *frecv; /* Modifications to be recv'd in proc row */
68  int_t nfrecvx; /* Number of Xk I will receive in L-solve */
69  int_t nfsendx; /* Number of Xk I will send in L-solve */
70  int_t *bmod; /* Modification count for U-solve */
71  int_t **bsendx_plist; /* Column process list to send down Xk */
72  int_t *brecv; /* Modifications to be recv'd in proc row */
73  int_t nbrecvx; /* Number of Xk I will receive in U-solve */
74  int_t nbsendx; /* Number of Xk I will send in U-solve */
75  int_t *mod_bit; /* Flag contribution from each row blocks */
76 
77  /*-- Auxiliary arrays used for forward/back solves. --*/
78  int_t *ilsum; /* Starting position of each supernode in lsum
79  (local) */
80  int_t ldalsum; /* LDA of lsum (local) */
81  int_t SolveMsgSent; /* Number of actual messages sent in LU-solve */
82  int_t SolveMsgVol; /* Volume of messages sent in the solve phase */
83 
84 
85  /*********************/
86  /* The following variables are used in the hybrid solver */
87 
88  /*-- Counts to be used in U^{-T} triangular solve. -- */
92  int_t ut_ldalsum; /* LDA of lsum (local) */
93  int_t *ut_ilsum; /* ilsum in column-wise */
94  int_t *utmod; /* Modification count for Ut-solve. */
95  int_t **ut_sendx_plist; /* Row process list to send down Xk */
96  int_t *utrecv; /* Modifications to be recev'd in proc column. */
97  int_t n_utsendx; /* Number of Xk I will receive */
98  int_t n_utrecvx; /* Number of Xk I will send */
103  Ucb_indptr_t **Ucb_indptr;/* Vertical linked list pointing to Uindex[] */
104  int_t **Ucb_valptr; /* Vertical linked list pointing to Unzval[] */
105 
106  /* some additional counters for L solve */
110 } LocalLU_t;
111 
112 
113 typedef struct {
117 } LUstruct_t;
118 
119 
120 /*-- Data structure for communication during matrix-vector multiplication. */
121 typedef struct {
123  int_t *ind_tosend; /* X indeices to be sent to other processes */
124  int_t *ind_torecv; /* X indeices to be received from other processes */
125  int_t *ptr_ind_tosend;/* Printers to ind_tosend[] (Size procs)
126  (also point to val_torecv) */
127  int_t *ptr_ind_torecv;/* Printers to ind_torecv[] (Size procs)
128  (also point to val_tosend) */
129  int *SendCounts; /* Numbers of X indices to be sent
130  (also numbers of X values to be received) */
131  int *RecvCounts; /* Numbers of X indices to be received
132  (also numbers of X values to be sent) */
133  double *val_tosend; /* X values to be sent to other processes */
134  double *val_torecv; /* X values to be received from other processes */
135  int_t TotalIndSend; /* Total number of indices to be sent
136  (also total number of values to be received) */
137  int_t TotalValSend; /* Total number of values to be sent.
138  (also total number of indices to be received) */
139 } pdgsmv_comm_t;
140 
141 /*-- Data structure for redistribution of B and X --*/
142 typedef struct {
145  int *ptr_to_ibuf, *ptr_to_dbuf;
146 
147  /* the following are needed in the hybrid solver */
150  int *disp_ibuf;
152  void *send_dbuf;
153 
154  int_t x2b, b2x;
157  void *send_dbuf2;
158  void *recv_dbuf2;
160 
161 /*-- Data structure holding the information for the solution phase --*/
162 typedef struct {
165  int_t num_diag_procs, *diag_procs, *diag_len;
168  int_t *A_colind_gsmv; /* After pdgsmv_init(), the global column
169  indices of A are translated into the relative
170  positions in the gathered x-vector.
171  This is re-used in repeated calls to pdgsmv() */
173 } SOLVEstruct_t;
174 
175 
176 /***********************************************************************
177  * Function prototypes
178  ***********************************************************************/
179 
180 #ifdef __cplusplus
181 extern "C" {
182 #endif
183 
184 
185 /* Supernodal LU factor related */
186 extern void
188  int_t *, int_t *, Stype_t, Dtype_t, Mtype_t);
189 extern void
191  int_t, double *, int_t *, int_t *,
193 extern void
195  double **, int_t **, int_t **);
196 extern int
198  SuperMatrix *);
199 extern void
201 extern void
204 extern void
206  int_t *, int_t *, int_t *, int_t *, int_t *,
208 extern void
210  double *, int_t);
211 
212 extern void dallocateA_dist (int_t, int_t, double **, int_t **, int_t **);
213 extern void dGenXtrue_dist (int_t, int_t, double *, int_t);
214 extern void dFillRHS_dist (char *, int_t, double *, int_t,
215  SuperMatrix *, double *, int_t);
216 extern int dcreate_matrix(SuperMatrix *, int, double **, int *,
217  double **, int *, FILE *, gridinfo_t *);
218 
219 /* Driver related */
220 extern void dgsequ_dist (SuperMatrix *, double *, double *, double *,
221  double *, double *, int_t *);
222 extern double dlangs_dist (char *, SuperMatrix *);
223 extern void dlaqgs_dist (SuperMatrix *, double *, double *, double,
224  double, double, char *);
225 extern void pdgsequ (SuperMatrix *, double *, double *, double *,
226  double *, double *, int_t *, gridinfo_t *);
227 extern double pdlangs (char *, SuperMatrix *, gridinfo_t *);
228 extern void pdlaqgs (SuperMatrix *, double *, double *, double,
229  double, double, char *);
231  double [], int, double [], int, int,
232  gridinfo_t *);
233 
234 extern int sp_dtrsv_dist (char *, char *, char *, SuperMatrix *,
235  SuperMatrix *, double *, int *);
236 extern int sp_dgemv_dist (char *, double, SuperMatrix *, double *,
237  int, double, double *, int);
238 extern int sp_dgemm_dist (char *, char *, int, int, int, double,
239  SuperMatrix *, double *, int, double,
240  double *, int);
241 
243  LUstruct_t *, gridinfo_t *);
245  ScalePermstruct_t *, double *,
246  int, int, gridinfo_t *, LUstruct_t *, double *,
247  SuperLUStat_t *, int *);
250  LUstruct_t *, gridinfo_t *);
252  ScalePermstruct_t *, double *,
253  int, int, gridinfo_t *, LUstruct_t *,
254  SOLVEstruct_t *, double *, SuperLUStat_t *, int *);
258  int_t [], int_t [], gridinfo_t *grid,
262 extern void dldperm(int_t, int_t, int_t, int_t [], int_t [],
263  double [], int_t *, double [], double []);
264 extern int_t pdgstrf(superlu_options_t *, int, int, double,
265  LUstruct_t*, gridinfo_t*, SuperLUStat_t*, int*);
267  double *, int_t, int, SuperLUStat_t *, int *);
269  double *, int_t, int_t, int_t, int, SOLVEstruct_t *,
270  SuperLUStat_t *, int *);
271 extern void dlsum_fmod(double *, double *, double *, double *,
272  int, int, int_t , int_t *, int_t, int_t, int_t,
273  int_t *, gridinfo_t *, LocalLU_t *,
274  MPI_Request [], SuperLUStat_t *);
275 extern void dlsum_bmod(double *, double *, double *,
276  int, int_t, int_t *, int_t *, Ucb_indptr_t **,
277  int_t **, int_t *, gridinfo_t *, LocalLU_t *,
278  MPI_Request [], SuperLUStat_t *);
279 extern void pdgsrfs(int_t, SuperMatrix *, double, LUstruct_t *,
281  double [], int_t, double [], int_t, int,
282  SOLVEstruct_t *, double *, SuperLUStat_t *, int *);
283 extern void pdgsrfs_ABXglobal(int_t, SuperMatrix *, double, LUstruct_t *,
284  gridinfo_t *, double *, int_t, double *, int_t,
285  int, double *, SuperLUStat_t *, int *);
287  gridinfo_t *, int_t *, int_t *[],
288  double *[], int_t *[], int_t []);
289 extern int pdgsmv_AXglobal(int_t, int_t [], double [], int_t [],
290  double [], double []);
291 extern int pdgsmv_AXglobal_abs(int_t, int_t [], double [], int_t [],
292  double [], double []);
294  pdgsmv_comm_t *);
296  double x[], double ax[]);
298 
299 /* Memory-related */
300 extern double *doubleMalloc_dist(int_t);
301 extern double *doubleCalloc_dist(int_t);
302 extern void *duser_malloc_dist (int_t, int_t);
303 extern void duser_free_dist (int_t, int_t);
306 extern void LUstructInit(const int_t, const int_t, LUstruct_t *);
307 extern void LUstructFree(LUstruct_t *);
308 
309 /* Auxiliary routines */
310 extern void dfill_dist (double *, int_t, double);
311 extern void dinf_norm_error_dist (int_t, int_t, double*, int_t,
312  double*, int_t, gridinfo_t*);
313 extern void pdinf_norm_error(int, int_t, int_t, double [], int_t,
314  double [], int_t , gridinfo_t *);
315 extern void dreadhb_dist (int, FILE *, int_t *, int_t *, int_t *,
316  double **, int_t **, int_t **);
317 
318 /* Distribute the data for numerical factorization */
321  LUstruct_t *, gridinfo_t *);
322 
323 /* Routines for debugging */
325  LocalLU_t *);
327  LocalLU_t *);
331 extern int file_PrintDouble5(FILE *, char *, int_t, double *);
332 
333 /* BLAS */
334 
335 #ifdef USE_VENDOR_BLAS
336 extern int dgemm_(char*, char*, int*, int*, int*, double*,
337  double*, int*, double*, int*, double*,
338  double*, int*, int, int);
339 extern int dtrsv_(char*, char*, char*, int*, double*, int*,
340  double*, int*, int, int, int);
341 #else
342 extern int dgemm_(char*, char*, int*, int*, int*, double*,
343  double*, int*, double*, int*, double*,
344  double*, int*);
345 extern int dtrsv_(char*, char*, char*, int*, double*, int*,
346  double*, int*);
347 #endif
348 
349 extern int dger_(int*, int*, double*, double*, int*,
350  double*, int*, double*, int*);
351 
352 
353 #ifdef __cplusplus
354  }
355 #endif
356 
357 #endif /* __SUPERLU_dDEFS */
358 
ax
Definition: plotDoE.py:39
list x
Definition: plotDoE.py:28
fact_t
Definition: oomph_superlu_4.3/superlu_enum_consts.h:17
Mtype_t
Definition: oomph_superlu_4.3/supermatrix.h:31
Dtype_t
Definition: oomph_superlu_4.3/supermatrix.h:24
Stype_t
Definition: oomph_superlu_4.3/supermatrix.h:11
int int_t
Definition: slu_cdefs.h:78
Definition: superlu_defs.h:294
Definition: superlu_defs.h:239
Definition: superlu_ddefs.h:113
Glu_persist_t * Glu_persist
Definition: superlu_ddefs.h:115
int_t * etree
Definition: superlu_ddefs.h:114
LocalLU_t * Llu
Definition: superlu_ddefs.h:116
Definition: superlu_ddefs.h:35
int_t nfsendx
Definition: superlu_ddefs.h:69
int_t n
Definition: superlu_ddefs.h:107
int_t ldalsum
Definition: superlu_ddefs.h:80
int_t ** bsendx_plist
Definition: superlu_ddefs.h:71
int_t ** Ucb_valptr
Definition: superlu_ddefs.h:104
int_t ** ut_sendx_plist
Definition: superlu_ddefs.h:95
int_t * utmod
Definition: superlu_ddefs.h:94
int_t * ilsum
Definition: superlu_ddefs.h:78
int_t * ToRecv
Definition: superlu_ddefs.h:60
int_t * ut_modbit
Definition: superlu_ddefs.h:101
int_t ut_ldalsum
Definition: superlu_ddefs.h:92
Ucb_indptr_t ** Ucb_indptr
Definition: superlu_ddefs.h:103
int_t ** fsendx_plist
Definition: superlu_ddefs.h:66
double * ujrow
Definition: superlu_ddefs.h:50
int_t nfrecvmod
Definition: superlu_ddefs.h:109
int_t FRECV
Definition: superlu_ddefs.h:91
int_t SolveMsgVol
Definition: superlu_ddefs.h:82
int_t ** Ufstnz_br_ptr
Definition: superlu_ddefs.h:38
int_t SolveMsgSent
Definition: superlu_ddefs.h:81
int_t * frecv
Definition: superlu_ddefs.h:67
double ** Unzval_br_ptr
Definition: superlu_ddefs.h:39
int_t * ToSendD
Definition: superlu_ddefs.h:61
double ** Lnzval_bc_ptr
Definition: superlu_ddefs.h:37
int_t * Usub_buf
Definition: superlu_ddefs.h:48
int_t * ut_ilsum
Definition: superlu_ddefs.h:93
int_t * mod_bit
Definition: superlu_ddefs.h:75
int_t nroot
Definition: superlu_ddefs.h:100
int_t n_utrecvmod
Definition: superlu_ddefs.h:99
int_t * utrecv
Definition: superlu_ddefs.h:96
int_t UT_SOLVE
Definition: superlu_ddefs.h:89
int_t nbsendx
Definition: superlu_ddefs.h:74
int_t * fmod
Definition: superlu_ddefs.h:65
int_t nbrecvx
Definition: superlu_ddefs.h:73
int_t n_utsendx
Definition: superlu_ddefs.h:97
int_t n_utrecvx
Definition: superlu_ddefs.h:98
int_t * brecv
Definition: superlu_ddefs.h:72
int_t nfrecvx
Definition: superlu_ddefs.h:68
int_t nleaf
Definition: superlu_ddefs.h:108
int_t ** ToSendR
Definition: superlu_ddefs.h:62
int_t ** Lrowind_bc_ptr
Definition: superlu_ddefs.h:36
int_t * bmod
Definition: superlu_ddefs.h:70
int_t L_SOLVE
Definition: superlu_ddefs.h:90
double * Uval_buf
Definition: superlu_ddefs.h:49
int_t * Urbs
Definition: superlu_ddefs.h:102
Definition: psymbfact.h:47
Definition: superlu_ddefs.h:162
int_t * A_colind_gsmv
Definition: superlu_ddefs.h:168
int_t * row_to_proc
Definition: superlu_ddefs.h:163
int_t * diag_len
Definition: superlu_ddefs.h:165
pxgstrs_comm_t * gstrs_comm
Definition: superlu_ddefs.h:167
pdgsmv_comm_t * gsmv_comm
Definition: superlu_ddefs.h:166
int_t * xrow_to_proc
Definition: superlu_ddefs.h:172
int_t * inv_perm_c
Definition: superlu_ddefs.h:164
Definition: superlu_defs.h:344
Definition: slu_util.h:290
Definition: oomph_superlu_4.3/supermatrix.h:43
Definition: superlu_ddefs.h:25
int_t lbnum
Definition: superlu_ddefs.h:26
int_t indpos
Definition: superlu_ddefs.h:27
Definition: superlu_defs.h:216
Definition: slu_util.h:299
Definition: superlu_ddefs.h:121
int_t TotalIndSend
Definition: superlu_ddefs.h:135
int * RecvCounts
Definition: superlu_ddefs.h:131
double * val_torecv
Definition: superlu_ddefs.h:134
double * val_tosend
Definition: superlu_ddefs.h:133
int_t * ind_torecv
Definition: superlu_ddefs.h:124
int_t * ptr_ind_tosend
Definition: superlu_ddefs.h:125
int_t TotalValSend
Definition: superlu_ddefs.h:137
int_t * ind_tosend
Definition: superlu_ddefs.h:123
int_t * extern_start
Definition: superlu_ddefs.h:122
int * SendCounts
Definition: superlu_ddefs.h:129
int_t * ptr_ind_torecv
Definition: superlu_ddefs.h:127
Definition: superlu_ddefs.h:142
int * disp_ibuf
Definition: superlu_ddefs.h:150
int_t * recv_ibuf2
Definition: superlu_ddefs.h:156
int_t b2x
Definition: superlu_ddefs.h:154
void * send_dbuf
Definition: superlu_ddefs.h:152
int * ptr_to_dbuf
Definition: superlu_ddefs.h:145
int_t * send_ibuf2
Definition: superlu_ddefs.h:155
void * recv_dbuf2
Definition: superlu_ddefs.h:158
int * B_to_X_SendCnt
Definition: superlu_ddefs.h:143
int * X_to_B_vSendCnt
Definition: superlu_ddefs.h:149
int_t * send_ibuf
Definition: superlu_ddefs.h:151
int * X_to_B_SendCnt
Definition: superlu_ddefs.h:144
int * X_to_B_iSendCnt
Definition: superlu_ddefs.h:148
void * send_dbuf2
Definition: superlu_ddefs.h:157
Definition: slu_util.h:246
float ddistribute(fact_t, int_t, SuperMatrix *, Glu_freeable_t *, LUstruct_t *, gridinfo_t *)
void pdgssvx(superlu_options_t *, SuperMatrix *, ScalePermstruct_t *, double *, int, int, gridinfo_t *, LUstruct_t *, SOLVEstruct_t *, double *, SuperLUStat_t *, int *)
int_t pxgstrs_init(int_t, int_t, int_t, int_t, int_t[], int_t[], gridinfo_t *grid, Glu_persist_t *, SOLVEstruct_t *)
int dcreate_matrix(SuperMatrix *, int, double **, int *, double **, int *, FILE *, gridinfo_t *)
void pdgsmv_init(SuperMatrix *, int_t *, gridinfo_t *, pdgsmv_comm_t *)
void pdgsmv(int_t, SuperMatrix *, gridinfo_t *, pdgsmv_comm_t *, double x[], double ax[])
int dgemm_(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *)
int pdgsmv_AXglobal_abs(int_t, int_t[], double[], int_t[], double[], double[])
void Destroy_LU(int_t, gridinfo_t *, LUstruct_t *)
void pdgstrs(int_t, LUstruct_t *, ScalePermstruct_t *, gridinfo_t *, double *, int_t, int_t, int_t, int, SOLVEstruct_t *, SuperLUStat_t *, int *)
void pdgsequ(SuperMatrix *, double *, double *, double *, double *, double *, int_t *, gridinfo_t *)
void dGenXtrue_dist(int_t, int_t, double *, int_t)
double * doubleMalloc_dist(int_t)
int sp_dgemv_dist(char *, double, SuperMatrix *, double *, int, double, double *, int)
float ddist_psymbtonum(fact_t, int_t, SuperMatrix *, ScalePermstruct_t *, Pslu_freeable_t *, LUstruct_t *, gridinfo_t *)
void LUstructFree(LUstruct_t *)
double pdlangs(char *, SuperMatrix *, gridinfo_t *)
void dCreate_CompRowLoc_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, int_t, int_t, double *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
int pdPermute_Dense_Matrix(int_t, int_t, int_t[], int_t[], double[], int, double[], int, int, gridinfo_t *)
int file_PrintDouble5(FILE *, char *, int_t, double *)
void LUstructInit(const int_t, const int_t, LUstruct_t *)
int pdgsmv_AXglobal(int_t, int_t[], double[], int_t[], double[], double[])
void pdgsrfs(int_t, SuperMatrix *, double, LUstruct_t *, ScalePermstruct_t *, gridinfo_t *, double[], int_t, double[], int_t, int, SOLVEstruct_t *, double *, SuperLUStat_t *, int *)
void dPrintLblocks(int_t, int_t, gridinfo_t *, Glu_persist_t *, LocalLU_t *)
void dinf_norm_error_dist(int_t, int_t, double *, int_t, double *, int_t, gridinfo_t *)
int pdgsmv_AXglobal_setup(SuperMatrix *, Glu_persist_t *, gridinfo_t *, int_t *, int_t *[], double *[], int_t *[], int_t[])
int sp_dgemm_dist(char *, char *, int, int, int, double, SuperMatrix *, double *, int, double, double *, int)
void dCreate_CompCol_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, double *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
void pdgsrfs_ABXglobal(int_t, SuperMatrix *, double, LUstruct_t *, gridinfo_t *, double *, int_t, double *, int_t, int, double *, SuperLUStat_t *, int *)
void dPrint_Dense_Matrix_dist(SuperMatrix *)
float pddistribute(fact_t, int_t, SuperMatrix *, ScalePermstruct_t *, Glu_freeable_t *, LUstruct_t *, gridinfo_t *)
void pdinf_norm_error(int, int_t, int_t, double[], int_t, double[], int_t, gridinfo_t *)
void dSolveFinalize(superlu_options_t *, SOLVEstruct_t *)
int sp_dtrsv_dist(char *, char *, char *, SuperMatrix *, SuperMatrix *, double *, int *)
#define MAX_LOOKAHEADS
Definition: superlu_ddefs.h:34
int dPrint_CompRowLoc_Matrix_dist(SuperMatrix *)
void dCreate_SuperNode_Matrix_dist(SuperMatrix *, int_t, int_t, int_t, double *, int_t *, int_t *, int_t *, int_t *, int_t *, Stype_t, Dtype_t, Mtype_t)
void dPrint_CompCol_Matrix_dist(SuperMatrix *)
int dtrsv_(char *, char *, char *, int *, double *, int *, double *, int *)
void dldperm(int_t, int_t, int_t, int_t[], int_t[], double[], int_t *, double[], double[])
void dreadhb_dist(int, FILE *, int_t *, int_t *, int_t *, double **, int_t **, int_t **)
void dCompRow_to_CompCol_dist(int_t, int_t, int_t, double *, int_t *, int_t *, double **, int_t **, int_t **)
void dgsequ_dist(SuperMatrix *, double *, double *, double *, double *, double *, int_t *)
double * doubleCalloc_dist(int_t)
void dCreate_Dense_Matrix_dist(SuperMatrix *, int_t, int_t, double *, int_t, Stype_t, Dtype_t, Mtype_t)
void dallocateA_dist(int_t, int_t, double **, int_t **, int_t **)
void pxgstrs_finalize(pxgstrs_comm_t *)
void * duser_malloc_dist(int_t, int_t)
int pdCompRow_loc_to_CompCol_global(int_t, SuperMatrix *, gridinfo_t *, SuperMatrix *)
void dlsum_fmod(double *, double *, double *, double *, int, int, int_t, int_t *, int_t, int_t, int_t, int_t *, gridinfo_t *, LocalLU_t *, MPI_Request[], SuperLUStat_t *)
double dlangs_dist(char *, SuperMatrix *)
void pdgsmv_finalize(pdgsmv_comm_t *)
void dlsum_bmod(double *, double *, double *, int, int_t, int_t *, int_t *, Ucb_indptr_t **, int_t **, int_t *, gridinfo_t *, LocalLU_t *, MPI_Request[], SuperLUStat_t *)
void dlaqgs_dist(SuperMatrix *, double *, double *, double, double, double, char *)
void dCopy_Dense_Matrix_dist(int_t, int_t, double *, int_t, double *, int_t)
int_t pdgstrf(superlu_options_t *, int, int, double, LUstruct_t *, gridinfo_t *, SuperLUStat_t *, int *)
void duser_free_dist(int_t, int_t)
void dPrintUblocks(int_t, int_t, gridinfo_t *, Glu_persist_t *, LocalLU_t *)
void pdgstrs_Bglobal(int_t, LUstruct_t *, gridinfo_t *, double *, int_t, int, SuperLUStat_t *, int *)
void dFillRHS_dist(char *, int_t, double *, int_t, SuperMatrix *, double *, int_t)
int dger_(int *, int *, double *, double *, int *, double *, int *, double *, int *)
int dSolveInit(superlu_options_t *, SuperMatrix *, int_t[], int_t[], int_t, LUstruct_t *, gridinfo_t *, SOLVEstruct_t *)
void pdlaqgs(SuperMatrix *, double *, double *, double, double, double, char *)
void pdgssvx_ABglobal(superlu_options_t *, SuperMatrix *, ScalePermstruct_t *, double *, int, int, gridinfo_t *, LUstruct_t *, double *, SuperLUStat_t *, int *)
void dCopy_CompCol_Matrix_dist(SuperMatrix *, SuperMatrix *)
int_t dQuerySpace_dist(int_t, LUstruct_t *, gridinfo_t *, mem_usage_t *)
void dfill_dist(double *, int_t, double)
Definitions which are precision-neutral.
#define NBUFFERS
Definition: superlu_defs.h:100