SuperLU Distributed 8.2.1
Distributed memory sparse direct solver
scatter.h
Go to the documentation of this file.
1#ifndef _SCATTER_H_
2#define _SCATTER_H_
3
4#ifdef CLEAN_SCATTER
5#define SCATTER_L_CPU scatter_l
6#define SCATTER_U_CPU scatter_u
7#else
8#define SCATTER_L_CPU scatter_l
9#define SCATTER_U_CPU scatter_u
10
11#endif
12
13void
15 int_t ljb,
16 int_t nsupc,
17 int_t iukp,
18 int_t *xsup,
19 int_t klst,
20 int_t nbrow,
21 int_t lptr,
22 int_t temp_nbrow,
23 int_t *usub,
24 int_t *lsub,
25 double *tempv,
26 int_t *indirect_thread, int_t *indirect2,
27 int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr, gridinfo_t *grid);
28
29void
31 int_t jb,
32 int_t nsupc,
33 int_t iukp,
34 int_t *xsup,
35 int_t klst,
36 int_t nbrow,
37 int_t lptr,
38 int_t temp_nbrow,
39 int_t *lsub,
40 int_t *usub,
41 double *tempv,
42 int_t *indirect,
43 int_t **Ufstnz_br_ptr, double **Unzval_br_ptr, gridinfo_t *grid);
44
45void
46arrive_at_ublock (int_t j, //block number
47 int_t *iukp, // output
48 int_t *rukp, int_t *jb, /* Global block number of block U(k,j). */
49 int_t *ljb, /* Local block number of U(k,j). */
50 int_t *nsupc, /*supernode size of destination block */
51 int_t iukp0, //input
52 int_t rukp0, int_t *usub, /*usub scripts */
53 int_t *perm_u, /*permutation matrix */
54 int_t *xsup, /*for SuperSize and LBj */
55 gridinfo_t *grid);
56
57
58void
60 Ublock_info_t *Ublock_info,
61 Remain_info_t *Remain_info,
62 double *L_mat, int_t ldl,
63 double *U_mat, int_t ldu,
64 double *bigV,
65 // int_t jj0,
66 int_t knsupc, int_t klst,
67 int_t *lsub, int_t *usub, int_t ldt,
68 int_t thread_id,
69 int_t *indirect,
70 int_t *indirect2,
71 int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr,
72 int_t **Ufstnz_br_ptr, double **Unzval_br_ptr,
73 int_t *xsup, gridinfo_t *grid,
74 SuperLUStat_t *stat
75#ifdef SCATTER_PROFILE
76 , double *Host_TheadScatterMOP, double *Host_TheadScatterTimer
77#endif
78 );
79
80
81/*this version uses a lock to prevent multiple thread updating the same block*/
82void
84 omp_lock_t* lock,
85 Ublock_info_t *Ublock_info,
86 Remain_info_t *Remain_info,
87 double *L_mat, int_t ldl,
88 double *U_mat, int_t ldu,
89 double *bigV,
90 // int_t jj0,
91 int_t knsupc, int_t klst,
92 int_t *lsub, int_t *usub, int_t ldt,
93 int_t thread_id,
94 int_t *indirect,
95 int_t *indirect2,
96 int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr,
97 int_t **Ufstnz_br_ptr, double **Unzval_br_ptr,
98 int_t *xsup, gridinfo_t *grid
99#ifdef SCATTER_PROFILE
100 , double *Host_TheadScatterMOP, double *Host_TheadScatterTimer
101#endif
102 );
103
105 double* bigV, int_t knsupc, int_t klst, int_t* lsub,
106 int_t * usub, int_t ldt, int_t* indirect, int_t* indirect2,
107 HyP_t* HyP,
108 LUstruct_t *LUstruct,
109 gridinfo_t* grid,
110 SCT_t*SCT, SuperLUStat_t *stat
111 );
113 double* bigV, int_t knsupc, int_t klst, int_t* lsub,
114 int_t * usub, int_t ldt, int_t* indirect, int_t* indirect2,
115 HyP_t* HyP,
116 LUstruct_t *LUstruct,
117 gridinfo_t* grid,
118 SCT_t*SCT, SuperLUStat_t *stat
119 );
121 double* bigV, int_t knsupc, int_t klst, int_t* lsub,
122 int_t * usub, int_t ldt, int_t* indirect, int_t* indirect2,
123 HyP_t* HyP,
124 LUstruct_t *LUstruct,
125 gridinfo_t* grid,
126 SCT_t*SCT, SuperLUStat_t *stat
127 );
129 double* bigV, int_t knsupc, int_t klst, int_t* lsub,
130 int_t * usub, int_t ldt, int_t* indirect, int_t* indirect2,
131 HyP_t* HyP,
132 LUstruct_t *LUstruct,
133 gridinfo_t* grid,
134 SCT_t*SCT, SuperLUStat_t *stat
135 );
136
137void gather_u(int_t num_u_blks,
138 Ublock_info_t *Ublock_info, int_t * usub,
139 double *uval, double *bigU, int_t ldu,
140 int_t *xsup, int_t klst /* for SuperSize */
141 );
142
143void gather_l( int_t num_LBlk, int_t knsupc,
144 Remain_info_t *L_info,
145 double * lval, int_t LD_lval,
146 double * L_buff );
147#endif
int j
Definition: dutil_dist.c:248
int_t block_gemm_scatterBottomLeft(int_t lb, int_t j, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t *indirect, int_t *indirect2, HyP_t *HyP, LUstruct_t *LUstruct, gridinfo_t *grid, SCT_t *SCT, SuperLUStat_t *stat)
Definition: scatter.c:371
void block_gemm_scatter_lock(int_t lb, int_t j, omp_lock_t *lock, Ublock_info_t *Ublock_info, Remain_info_t *Remain_info, double *L_mat, int_t ldl, double *U_mat, int_t ldu, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t thread_id, int_t *indirect, int_t *indirect2, int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr, int_t **Ufstnz_br_ptr, double **Unzval_br_ptr, int_t *xsup, gridinfo_t *grid)
Definition: scatter.c:173
int_t block_gemm_scatterBottomRight(int_t lb, int_t j, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t *indirect, int_t *indirect2, HyP_t *HyP, LUstruct_t *LUstruct, gridinfo_t *grid, SCT_t *SCT, SuperLUStat_t *stat)
Definition: scatter.c:404
int_t block_gemm_scatterTopLeft(int_t lb, int_t j, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t *indirect, int_t *indirect2, HyP_t *HyP, LUstruct_t *LUstruct, gridinfo_t *grid, SCT_t *SCT, SuperLUStat_t *stat)
Definition: scatter.c:302
void arrive_at_ublock(int_t j, int_t *iukp, int_t *rukp, int_t *jb, int_t *ljb, int_t *nsupc, int_t iukp0, int_t rukp0, int_t *usub, int_t *perm_u, int_t *xsup, gridinfo_t *grid)
Definition: util.c:890
int_t block_gemm_scatterTopRight(int_t lb, int_t j, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t *indirect, int_t *indirect2, HyP_t *HyP, LUstruct_t *LUstruct, gridinfo_t *grid, SCT_t *SCT, SuperLUStat_t *stat)
Definition: scatter.c:339
void scatter_u(int_t ib, int_t jb, int_t nsupc, int_t iukp, int_t *xsup, int_t klst, int_t nbrow, int_t lptr, int_t temp_nbrow, int_t *lsub, int_t *usub, double *tempv, int_t *indirect, int_t **Ufstnz_br_ptr, double **Unzval_br_ptr, gridinfo_t *grid)
Definition: scatter.c:518
void gather_l(int_t num_LBlk, int_t knsupc, Remain_info_t *L_info, double *lval, int_t LD_lval, double *L_buff)
void scatter_l(int_t ib, int_t ljb, int_t nsupc, int_t iukp, int_t *xsup, int_t klst, int_t nbrow, int_t lptr, int_t temp_nbrow, int_t *usub, int_t *lsub, double *tempv, int_t *indirect_thread, int_t *indirect2, int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr, gridinfo_t *grid)
Definition: scatter.c:443
void gather_u(int_t num_u_blks, Ublock_info_t *Ublock_info, int_t *usub, double *uval, double *bigU, int_t ldu, int_t *xsup, int_t klst)
void block_gemm_scatter(int_t lb, int_t j, Ublock_info_t *Ublock_info, Remain_info_t *Remain_info, double *L_mat, int_t ldl, double *U_mat, int_t ldu, double *bigV, int_t knsupc, int_t klst, int_t *lsub, int_t *usub, int_t ldt, int_t thread_id, int_t *indirect, int_t *indirect2, int_t **Lrowind_bc_ptr, double **Lnzval_bc_ptr, int_t **Ufstnz_br_ptr, double **Unzval_br_ptr, int_t *xsup, gridinfo_t *grid, SuperLUStat_t *stat)
Definition: scatter.c:49
int int_t
Definition: superlu_defs.h:114
integer, parameter, public lsub
Definition: superlupara.f90:35
integer, parameter, public usub
Definition: superlupara.f90:35
Definition: superlu_ddefs.h:329
Definition: superlu_defs.h:770
Definition: util_dist.h:172
Definition: util_dist.h:95
Definition: superlu_defs.h:760
Definition: superlu_defs.h:388