PaStiX Handbook  6.2.1
pastix_zcores.h
Go to the documentation of this file.
1 /**
2  * @file pastix_zcores.h
3  *
4  * PaStiX kernel header.
5  *
6  * @copyright 2011-2021 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
7  * Univ. Bordeaux. All rights reserved.
8  *
9  * @version 6.2.0
10  * @author Mathieu Faverge
11  * @author Pierre Ramet
12  * @author Xavier Lacoste
13  * @author Esragul Korkmaz
14  * @author Gregoire Pichon
15  * @author Tony Delarue
16  * @date 2021-03-30
17  * @generated from /builds/solverstack/pastix/kernels/pastix_zcores.h, normal z -> z, Tue Apr 12 09:38:26 2022
18  *
19  */
20 #ifndef _pastix_zcores_h_
21 #define _pastix_zcores_h_
22 
23 #ifndef DOXYGEN_SHOULD_SKIP_THIS
24 #define pastix_cblk_lock( cblk_ ) pastix_atomic_lock( &((cblk_)->lock) )
25 #define pastix_cblk_unlock( cblk_ ) pastix_atomic_unlock( &((cblk_)->lock) )
26 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
27 
28 /**
29  * @addtogroup kernel_blas_lapack
30  * @{
31  * This module contains all the BLAS and LAPACK-like kernels that are working
32  * on lapack layout matrices.
33  *
34  * @name PastixComplex64 BLAS kernels
35  * @{
36  */
37 void core_zplrnt( int m, int n, pastix_complex64_t *A, int lda,
38  int gM, int m0, int n0, unsigned long long int seed );
39 void core_zgetmo( int m, int n,
40  const pastix_complex64_t *A, int lda,
41  pastix_complex64_t *B, int ldb );
42 int core_zgeadd( pastix_trans_t trans, pastix_int_t M, pastix_int_t N,
43  pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t LDA,
44  pastix_complex64_t beta, pastix_complex64_t *B, pastix_int_t LDB );
45 int core_zgemdm( pastix_trans_t transA, pastix_trans_t transB, int M, int N, int K,
46  pastix_complex64_t alpha, const pastix_complex64_t *A, int LDA,
47  const pastix_complex64_t *B, int LDB,
48  pastix_complex64_t beta, pastix_complex64_t *C, int LDC,
49  const pastix_complex64_t *D, int incD,
50  pastix_complex64_t *WORK, int LWORK );
51 int core_zpqrcp( double tol, pastix_int_t maxrank, int full_update, pastix_int_t nb,
52  pastix_int_t m, pastix_int_t n,
53  pastix_complex64_t *A, pastix_int_t lda,
54  pastix_int_t *jpvt, pastix_complex64_t *tau,
55  pastix_complex64_t *work, pastix_int_t lwork, double *rwork );
56 int core_zrqrcp( double tol, pastix_int_t maxrank, int refine, pastix_int_t nb,
57  pastix_int_t m, pastix_int_t n,
58  pastix_complex64_t *A, pastix_int_t lda,
59  pastix_int_t *jpvt, pastix_complex64_t *tau,
60  pastix_complex64_t *work, pastix_int_t lwork, double *rwork );
61 int core_zrqrrt( double tol, pastix_int_t maxrank, pastix_int_t nb,
62  pastix_int_t m, pastix_int_t n,
63  pastix_complex64_t *A, pastix_int_t lda, pastix_complex64_t *tau,
64  pastix_complex64_t *B, pastix_int_t ldb, pastix_complex64_t *tau_b,
65  pastix_complex64_t *work, pastix_int_t lwork, double normA );
66 int core_ztqrcp( double tol, pastix_int_t maxrank, int unused, pastix_int_t nb,
67  pastix_int_t m, pastix_int_t n,
68  pastix_complex64_t *A, pastix_int_t lda,
69  pastix_int_t *jpvt, pastix_complex64_t *tau,
70  pastix_complex64_t *work, pastix_int_t lwork, double *rwork );
71 int core_ztradd( pastix_uplo_t uplo, pastix_trans_t trans, pastix_int_t M, pastix_int_t N,
72  pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t LDA,
73  pastix_complex64_t beta, pastix_complex64_t *B, pastix_int_t LDB);
74 int core_zscalo( pastix_trans_t trans, pastix_int_t M, pastix_int_t N,
75  const pastix_complex64_t *A, pastix_int_t lda,
76  const pastix_complex64_t *D, pastix_int_t ldd,
77  pastix_complex64_t *B, pastix_int_t ldb );
78 
79 /**
80  * @}
81  * @name PastixComplex64 Othogonalization kernels for low-rank updates
82  * @{
83  */
84 pastix_fixdbl_t
85 core_zlrorthu_fullqr( pastix_int_t M, pastix_int_t N, pastix_int_t rank,
86  pastix_complex64_t *U, pastix_int_t ldu,
87  pastix_complex64_t *V, pastix_int_t ldv );
88 pastix_fixdbl_t
89 core_zlrorthu_partialqr( pastix_int_t M, pastix_int_t N,
90  pastix_int_t r1, pastix_int_t *r2ptr,
91  pastix_int_t offx, pastix_int_t offy,
92  pastix_complex64_t *U, pastix_int_t ldu,
93  pastix_complex64_t *V, pastix_int_t ldv );
94 pastix_fixdbl_t
95 core_zlrorthu_cgs( pastix_int_t M1, pastix_int_t N1,
96  pastix_int_t M2, pastix_int_t N2,
97  pastix_int_t r1, pastix_int_t *r2ptr,
98  pastix_int_t offx, pastix_int_t offy,
99  pastix_complex64_t *U, pastix_int_t ldu,
100  pastix_complex64_t *V, pastix_int_t ldv );
101 
102 /**
103  * @}
104  * @name PastixComplex64 LAPACK kernels
105  * @{
106  */
107 void core_zpotrfsp( pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda,
108  pastix_int_t *nbpivot, double criterion );
109 void core_zpxtrfsp( pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda,
110  pastix_int_t *nbpivot, double criterion );
111 void core_zgetrfsp( pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda,
112  pastix_int_t *nbpivot, double criterion );
113 void core_zhetrfsp( pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda,
114  pastix_int_t *nbpivot, double criterion );
115 void core_zsytrfsp( pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda,
116  pastix_int_t *nbpivot, double criterion );
117 
118 /**
119  * @}
120  * @}
121  *
122  * @addtogroup kernel_fact
123  * @{
124  * This module contains all the kernel working at the solver matrix structure
125  * level for the numerical factorization step.
126  *
127  * @name PastixComplex64 cblk-BLAS CPU kernels
128  * @{
129  */
130 
131 int cpucblk_zgeaddsp1d( const SolverCblk *cblk1, SolverCblk *cblk2,
132  const pastix_complex64_t *L1, pastix_complex64_t *L2,
133  const pastix_complex64_t *U1, pastix_complex64_t *U2 );
134 
135 pastix_fixdbl_t cpucblk_zgemmsp( pastix_coefside_t sideA, pastix_trans_t trans,
136  const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk,
137  const void *A, const void *B, void *C,
138  pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank );
140  pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk,
141  const void *A, void *C, const pastix_lr_t *lowrank );
142 void cpucblk_zscalo ( pastix_trans_t trans, SolverCblk *cblk, void* dataL, void* dataLD );
143 
144 pastix_fixdbl_t cpublok_zgemmsp( pastix_trans_t trans,
145  const SolverCblk *cblk, SolverCblk *fcblk,
146  pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn,
147  const void *A, const void *B, void *C,
148  const pastix_lr_t *lowrank );
149 pastix_fixdbl_t cpublok_ztrsmsp( pastix_side_t side, pastix_uplo_t uplo,
150  pastix_trans_t trans, pastix_diag_t diag,
151  const SolverCblk *cblk, pastix_int_t blok_m,
152  const void *A, void *C,
153  const pastix_lr_t *lowrank );
154 void cpublok_zscalo ( pastix_trans_t trans,
155  SolverCblk *cblk, pastix_int_t blok_m,
156  const void *A, const void *dataD, void *dataB );
157 
158 /**
159  * @}
160  * @name PastixComplex64 cblk LU kernels
161  * @{
162  */
163 int cpucblk_zgetrfsp1d_getrf( SolverMatrix *solvmtx, SolverCblk *cblk,
164  void *L, void *U );
165 int cpucblk_zgetrfsp1d_panel( SolverMatrix *solvmtx, SolverCblk *cblk,
166  void *L, void *U );
167 int cpucblk_zgetrfsp1d ( SolverMatrix *solvmtx, SolverCblk *cblk,
168  pastix_complex64_t *work, pastix_int_t lwork );
169 
170 /**
171  * @}
172  * @name PastixComplex64 cblk Cholesky kernels
173  * @{
174  */
175 int cpucblk_zpotrfsp1d_potrf( SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL );
176 int cpucblk_zpotrfsp1d_panel( SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL );
177 int cpucblk_zpotrfsp1d ( SolverMatrix *solvmtx, SolverCblk *cblk,
178  pastix_complex64_t *work, pastix_int_t lwork );
179 
180 /**
181  * @}
182  * @name PastixComplex64 cblk LDL^h kernels
183  * @{
184  */
185 int cpucblk_zhetrfsp1d_hetrf( SolverMatrix *solvmtx, SolverCblk *cblk, void *L );
186 int cpucblk_zhetrfsp1d_panel( SolverMatrix *solvmtx, SolverCblk *cblk,
187  void *L, void *DLh );
188 int cpucblk_zhetrfsp1d ( SolverMatrix *solvmtx, SolverCblk *cblk,
189  pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork );
190 
191 /**
192  * @}
193  * @name PastixComplex64 cblk LL^t kernels
194  * @{
195  */
196 int cpucblk_zpxtrfsp1d_pxtrf( SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL );
197 int cpucblk_zpxtrfsp1d_panel( SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL );
198 int cpucblk_zpxtrfsp1d ( SolverMatrix *solvmtx, SolverCblk *cblk,
199  pastix_complex64_t *work, pastix_int_t lwork );
200 
201 /**
202  * @}
203  * @name PastixComplex64 cblk LDL^t kernels
204  * @{
205  */
206 int cpucblk_zsytrfsp1d_sytrf( SolverMatrix *solvmtx, SolverCblk *cblk, void *L );
207 int cpucblk_zsytrfsp1d_panel( SolverMatrix *solvmtx, SolverCblk *cblk,
208  void *L, void *DLt );
209 int cpucblk_zsytrfsp1d ( SolverMatrix *solvmtx, SolverCblk *cblk,
210  pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork );
211 
212 /**
213  * @}
214  * @name PastixComplex64 initialization and additionnal routines
215  * @{
216  */
217 void cpucblk_zalloc_lrws( const SolverCblk *cblk,
218  pastix_lrblock_t *lrblok,
219  pastix_complex64_t *ws );
221  SolverCblk *cblk,
222  int rkmax );
224  SolverCblk *cblk );
226  SolverCblk *cblk );
227 void cpucblk_zfree ( pastix_coefside_t side,
228  SolverCblk *cblk );
230  const SolverMatrix *solvmtx,
231  const pastix_bcsc_t *bcsc,
232  pastix_int_t itercblk );
233 void cpucblk_zinit ( pastix_coefside_t side,
234  const SolverMatrix *solvmtx,
235  const pastix_bcsc_t *bcsc,
236  pastix_int_t itercblk,
237  const char *directory );
238 void cpucblk_zgetschur( const SolverCblk *cblk,
239  int upper_part,
240  pastix_complex64_t *S,
241  pastix_int_t lds );
242 void cpucblk_zdump ( pastix_coefside_t side,
243  const SolverCblk *cblk,
244  FILE *stream );
246  const SolverCblk *cblkA,
247  SolverCblk *cblkB );
248 void cpucblk_zadd ( pastix_coefside_t side,
249  double alpha,
250  const SolverCblk *cblkA,
251  SolverCblk *cblkB,
252  const pastix_lr_t *lowrank );
253 void cpucblk_zadd_recv( pastix_coefside_t side,
254  double alpha,
255  SolverCblk *cblk );
256 /**
257  * @}
258  * @name PastixComplex64 MPI routines
259  * @{
260  */
261 int cpucblk_zincoming_deps( int mt_flag,
262  pastix_coefside_t side,
263  SolverMatrix *solvmtx,
264  SolverCblk *cblk );
266  SolverMatrix *solvmtx,
267  const SolverCblk *cblk,
268  SolverCblk *fcbk );
270  pastix_int_t sched,
271  SolverMatrix *solvmtx );
272 
273 void cpucblk_zmpi_progress( pastix_coefside_t side,
274  SolverMatrix *solvmtx,
275  int threadid );
276 
277 void cpucblk_zsend_rhs_forward( const SolverMatrix *solvmtx,
278  SolverCblk *cblk,
279  pastix_complex64_t *b );
280 void cpucblk_zrecv_rhs_forward( const SolverMatrix *solvmtx,
281  SolverCblk *cblk,
282  pastix_complex64_t *work,
283  pastix_int_t nrhs,
284  pastix_complex64_t *b,
285  pastix_int_t ldb );
286 void cpucblk_zsend_rhs_backward( const SolverMatrix *solvmtx,
287  SolverCblk *cblk,
288  pastix_complex64_t *b );
289 void cpucblk_zrecv_rhs_backward( const SolverMatrix *solvmtx,
290  SolverCblk *cblk,
291  pastix_complex64_t *b );
292 
293 /**
294  * @}
295  * @name PastixComplex64 compression/uncompression routines
296  * @{
297  */
298 pastix_fixdbl_t cpublok_zcompress( const pastix_lr_t *lowrank,
299  pastix_int_t M, pastix_int_t N,
300  pastix_lrblock_t *blok );
301 pastix_int_t cpucblk_zcompress( const SolverMatrix *solvmtx,
302  pastix_coefside_t side,
303  int max_ilulvl,
304  SolverCblk *cblk );
306  SolverCblk *cblk );
308  SolverMatrix *solvmtx,
309  SolverCblk *cblk,
310  pastix_int_t *orig,
311  pastix_int_t *gain );
312 
313 /**
314  * @}
315  * @}
316  *
317  * @addtogroup kernel_solve
318  * @{
319  * This module contains all the kernel working on the solver matrix structure
320  * for the solve step.
321  */
322 
324  pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk,
325  int nrhs, const void* dataA, pastix_complex64_t *b, int ldb );
327  pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok,
328  SolverCblk *fcbk, const void* dataA, const pastix_complex64_t *B, pastix_int_t ldb,
329  pastix_complex64_t *C, pastix_int_t ldc );
330 
332  pastix_trans_t trans, pastix_diag_t diag,
333  const SolverMatrix *datacode, const SolverCblk *cblk,
334  int nrhs, pastix_complex64_t *b, int ldb );
336  pastix_trans_t trans, pastix_diag_t diag,
337  const SolverMatrix *datacode, SolverCblk *cblk,
338  int nrhs, pastix_complex64_t *b, int ldb );
339 
340 void solve_cblk_zdiag( const SolverCblk *cblk,
341  int nrhs,
342  pastix_complex64_t *b,
343  int ldb,
344  pastix_complex64_t *work );
345 /**
346  * @}
347  */
348 
349 
350 /**
351  * @addtogroup kernel_fact_null
352  * @{
353  * This module contains the three terms update functions for the LDL^t and
354  * LDL^h factorizations.
355  */
356 void core_zhetrfsp1d_gemm( const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk,
357  const pastix_complex64_t *L, pastix_complex64_t *C,
358  pastix_complex64_t *work );
359 void core_zsytrfsp1d_gemm( const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk,
360  const pastix_complex64_t *L, pastix_complex64_t *C,
361  pastix_complex64_t *work );
362 
363 /**
364  * @}
365  */
366 
367 #endif /* _pastix_zcores_h_ */
cpucblk_zhetrfsp1d_panel
int cpucblk_zhetrfsp1d_panel(SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh)
Compute the LDL^h factorization of one panel.
Definition: core_zhetrfsp.c:437
core_zsytrfsp1d_gemm
void core_zsytrfsp1d_gemm(const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *L, pastix_complex64_t *C, pastix_complex64_t *work)
Definition: core_zsytrfsp.c:319
core_zpxtrfsp
void core_zpxtrfsp(pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivot, double criterion)
Compute the block static pivoting LL^t factorization of the matrix n-by-n A = L * L^t .
Definition: core_zpxtrfsp.c:136
solve_blok_ztrsm
void solve_blok_ztrsm(pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex64_t *b, int ldb)
Apply a solve trsm update related to a diagonal block of the matrix A.
Definition: solve_ztrsmsp.c:70
cpucblk_zgetrfsp1d_panel
int cpucblk_zgetrfsp1d_panel(SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U)
Compute the LU factorization of one panel.
Definition: core_zgetrfsp.c:305
cpublok_zscalo
void cpublok_zscalo(pastix_trans_t trans, SolverCblk *cblk, pastix_int_t blok_m, const void *A, const void *dataD, void *dataB)
Copy the lower terms of the block with scaling for the two-terms algorithm.
Definition: core_zscalo.c:315
pastix_uplo_t
enum pastix_uplo_e pastix_uplo_t
Upper/Lower part.
cpucblk_zfillin
void cpucblk_zfillin(pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk)
Initialize the coeftab structure from the internal bcsc.
Definition: cpucblk_zinit.c:604
pastix_lr_s
Structure to define the type of function to use for the low-rank kernels and their parameters.
Definition: pastix_lowrank.h:147
core_zgetrfsp
void core_zgetrfsp(pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivot, double criterion)
Compute the block static pivoting LU factorization of the matrix m-by-n A = L * U.
Definition: core_zgetrfsp.c:138
cpucblk_zinit
void cpucblk_zinit(pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk, const char *directory)
Fully initialize a single cblk.
Definition: coeftab_zinit.c:251
pastix_bcsc_s
Internal column block distributed CSC matrix.
Definition: bcsc.h:37
pastix_solv_mode_t
enum pastix_solv_mode_e pastix_solv_mode_t
Solve Schur modes.
cpucblk_zmemory
void cpucblk_zmemory(pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain)
Return the memory gain of the low-rank form over the full-rank form for a single column-block.
Definition: cpucblk_zcompress.c:277
cpucblk_zgeaddsp1d
int cpucblk_zgeaddsp1d(const SolverCblk *cblk1, SolverCblk *cblk2, const pastix_complex64_t *L1, pastix_complex64_t *L2, const pastix_complex64_t *U1, pastix_complex64_t *U2)
Add two column blocks together.
Definition: core_zgeadd.c:245
cpucblk_zalloc_lr
void cpucblk_zalloc_lr(pastix_coefside_t side, SolverCblk *cblk, int rkmax)
Allocate the cblk structure to store the coefficient.
Definition: cpucblk_zinit.c:143
solver_cblk_s
Solver column block structure.
Definition: solver.h:127
core_zrqrcp
int core_zrqrcp(double tol, pastix_int_t maxrank, int refine, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex64_t *tau, pastix_complex64_t *work, pastix_int_t lwork, double *rwork)
Compute a randomized QR factorization.
Definition: core_zrqrcp.c:114
pastix_coefside_t
enum pastix_coefside_e pastix_coefside_t
Data blocks used in the kernel.
cpucblk_zadd
void cpucblk_zadd(pastix_coefside_t side, double alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lr_t *lowrank)
Add two column bloks in full rank format.
Definition: cpucblk_zadd.c:358
cpucblk_zsend_rhs_backward
void cpucblk_zsend_rhs_backward(const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b)
Send the rhs associated to a cblk->lcolidx to the remote node.
Definition: cpucblk_zmpi_rhs.c:89
core_zhetrfsp1d_gemm
void core_zhetrfsp1d_gemm(const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *L, pastix_complex64_t *C, pastix_complex64_t *work)
Definition: core_zhetrfsp.c:321
pastix_trans_t
enum pastix_trans_e pastix_trans_t
Transpostion.
solver_blok_s
Solver block structure.
Definition: solver.h:107
cpucblk_zhetrfsp1d_hetrf
int cpucblk_zhetrfsp1d_hetrf(SolverMatrix *solvmtx, SolverCblk *cblk, void *L)
Computes the LDL^h factorization of the diagonal block in a panel.
Definition: core_zhetrfsp.c:234
cpucblk_zalloc_lrws
void cpucblk_zalloc_lrws(const SolverCblk *cblk, pastix_lrblock_t *lrblok, pastix_complex64_t *ws)
Initialize lrblock structure from a workspace from all blocks of the cblk associated.
Definition: cpucblk_zinit.c:96
core_zsytrfsp
void core_zsytrfsp(pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivot, double criterion)
Compute the block static pivoting factorization of the symmetric matrix n-by-n A such that A = L * D ...
Definition: core_zsytrfsp.c:141
cpucblk_zsytrfsp1d
int cpucblk_zsytrfsp1d(SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork)
Perform the LDL^t factorization of a given panel and apply all its updates.
Definition: core_zsytrfsp.c:487
cpucblk_zsytrfsp1d_sytrf
int cpucblk_zsytrfsp1d_sytrf(SolverMatrix *solvmtx, SolverCblk *cblk, void *L)
Computes the LDL^t factorization of the diagonal block in a panel.
Definition: core_zsytrfsp.c:232
pastix_lrblock_s
The block low-rank structure to hold a matrix in low-rank form.
Definition: pastix_lowrank.h:112
cpublok_zgemmsp
pastix_fixdbl_t cpublok_zgemmsp(pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank)
Compute the CPU gemm associated to a couple of off-diagonal blocks.
Definition: core_zgemmsp.c:1655
cpucblk_zpxtrfsp1d_pxtrf
int cpucblk_zpxtrfsp1d_pxtrf(SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
Compute the LL^t factorization of the diagonal block in a panel.
Definition: core_zpxtrfsp.c:212
cpucblk_zsend_rhs_forward
void cpucblk_zsend_rhs_forward(const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b)
Send the rhs associated to a cblk->lcolidx to the remote node.
Definition: cpucblk_zmpi_rhs.c:42
cpucblk_zpxtrfsp1d_panel
int cpucblk_zpxtrfsp1d_panel(SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
Compute the LL^t factorization of one panel.
Definition: core_zpxtrfsp.c:284
core_zlrorthu_partialqr
pastix_fixdbl_t core_zlrorthu_partialqr(pastix_int_t M, pastix_int_t N, pastix_int_t r1, pastix_int_t *r2ptr, pastix_int_t offx, pastix_int_t offy, pastix_complex64_t *U, pastix_int_t ldu, pastix_complex64_t *V, pastix_int_t ldv)
Try to orthognalize the U part of the low-rank form, and update the V part accordingly using partial ...
Definition: core_zlrothu.c:193
solve_cblk_zdiag
void solve_cblk_zdiag(const SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb, pastix_complex64_t *work)
Apply the diagonal solve related to one cblk to all the right hand side.
Definition: solve_ztrsmsp.c:616
core_zgeadd
int core_zgeadd(pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t LDA, pastix_complex64_t beta, pastix_complex64_t *B, pastix_int_t LDB)
Add two matrices together.
Definition: core_zgeadd.c:78
cpucblk_zgemmsp
pastix_fixdbl_t cpucblk_zgemmsp(pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
Compute the updates associated to one off-diagonal block.
Definition: core_zgemmsp.c:1512
cpucblk_zrecv_rhs_backward
void cpucblk_zrecv_rhs_backward(const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b)
Receive the rhs associated to a cblk->lcolidx to the remote node.
Definition: cpucblk_zmpi_rhs.c:136
core_zscalo
int core_zscalo(pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_complex64_t *A, pastix_int_t lda, const pastix_complex64_t *D, pastix_int_t ldd, pastix_complex64_t *B, pastix_int_t ldb)
Scale a matrix by a diagonal out of place.
Definition: core_zscalo.c:73
solve_cblk_ztrsmsp_forward
void solve_cblk_ztrsmsp_forward(pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, const SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb)
Apply a forward solve related to one cblk to all the right hand side.
Definition: solve_ztrsmsp.c:323
core_zgetmo
void core_zgetmo(int m, int n, const pastix_complex64_t *A, int lda, pastix_complex64_t *B, int ldb)
Transposes a m-by-n matrix out of place using an extra workspace of size m-by-n.
Definition: core_zgetmo.c:49
cpucblk_zrequest_cleanup
void cpucblk_zrequest_cleanup(pastix_coefside_t side, pastix_int_t sched, SolverMatrix *solvmtx)
Waitall routine for current cblk request.
Definition: cpucblk_zmpi_coeftab.c:609
cpucblk_zdump
void cpucblk_zdump(pastix_coefside_t side, const SolverCblk *cblk, FILE *stream)
Dump a single column block into a FILE in a human readale format.
Definition: coeftab_zinit.c:51
cpucblk_zgetschur
void cpucblk_zgetschur(const SolverCblk *cblk, int upper_part, pastix_complex64_t *S, pastix_int_t lds)
Extract a cblk panel of the Schur complement to a dense lapack form.
Definition: cpucblk_zschur.c:178
core_zplrnt
void core_zplrnt(int m, int n, pastix_complex64_t *A, int lda, int gM, int m0, int n0, unsigned long long int seed)
Generate a random tile.
Definition: core_zplrnt.c:91
cpucblk_zrecv_rhs_forward
void cpucblk_zrecv_rhs_forward(const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t nrhs, pastix_complex64_t *b, pastix_int_t ldb)
Receive the rhs associated to a cblk->lcolidx to the remote node.
Definition: cpucblk_zmpi_rhs.c:195
cpucblk_zincoming_deps
int cpucblk_zincoming_deps(int mt_flag, pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk)
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0.
Definition: cpucblk_zmpi_coeftab.c:499
cpucblk_zalloc_fr
void cpucblk_zalloc_fr(pastix_coefside_t side, SolverCblk *cblk)
Allocate the cblk structure to store the coefficient.
Definition: cpucblk_zinit.c:217
cpucblk_zscalo
void cpucblk_zscalo(pastix_trans_t trans, SolverCblk *cblk, void *dataL, void *dataLD)
Copy the L term with scaling for the two-terms algorithm.
Definition: core_zscalo.c:170
cpucblk_zpotrfsp1d_potrf
int cpucblk_zpotrfsp1d_potrf(SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
Compute the Cholesky factorization of the diagonal block in a panel.
Definition: core_zpotrfsp.c:220
cpucblk_zhetrfsp1d
int cpucblk_zhetrfsp1d(SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork)
Perform the LDL^h factorization of a given panel and apply all its updates.
Definition: core_zhetrfsp.c:492
core_zlrorthu_fullqr
pastix_fixdbl_t core_zlrorthu_fullqr(pastix_int_t M, pastix_int_t N, pastix_int_t rank, pastix_complex64_t *U, pastix_int_t ldu, pastix_complex64_t *V, pastix_int_t ldv)
Try to orthognalize the u part of the low-rank form, and update the v part accordingly using full QR.
Definition: core_zlrothu.c:83
cpucblk_zdiff
int cpucblk_zdiff(pastix_coefside_t side, const SolverCblk *cblkA, SolverCblk *cblkB)
Compare two column blocks in full-rank format.
Definition: cpucblk_zdiff.c:63
solve_cblk_ztrsmsp_backward
void solve_cblk_ztrsmsp_backward(pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb)
Apply a backward solve related to one cblk to all the right hand side.
Definition: solve_ztrsmsp.c:471
cpucblk_zsytrfsp1d_panel
int cpucblk_zsytrfsp1d_panel(SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLt)
Compute the LDL^t factorization of one panel.
Definition: core_zsytrfsp.c:432
core_zpqrcp
int core_zpqrcp(double tol, pastix_int_t maxrank, int full_update, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex64_t *tau, pastix_complex64_t *work, pastix_int_t lwork, double *rwork)
Compute a rank-reavealing QR factorization.
Definition: core_zpqrcp.c:105
core_zhetrfsp
void core_zhetrfsp(pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivot, double criterion)
Compute the block static pivoting factorization of the hermitian matrix n-by-n A such that A = L * D ...
Definition: core_zhetrfsp.c:142
cpublok_zcompress
pastix_fixdbl_t cpublok_zcompress(const pastix_lr_t *lowrank, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *blok)
Compress a single block from full-rank to low-rank format.
Definition: cpucblk_zcompress.c:57
cpucblk_zalloc
void cpucblk_zalloc(pastix_coefside_t side, SolverCblk *cblk)
Allocate the cblk structure to store the coefficient.
Definition: cpucblk_zinit.c:264
cpucblk_zpxtrfsp1d
int cpucblk_zpxtrfsp1d(SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork)
Perform the LL^t factorization of a given panel and apply all its updates.
Definition: core_zpxtrfsp.c:326
core_ztqrcp
int core_ztqrcp(double tol, pastix_int_t maxrank, int unused, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex64_t *tau, pastix_complex64_t *work, pastix_int_t lwork, double *rwork)
Compute a randomized QR factorization with truncated updates.
Definition: core_ztqrcp.c:99
core_zgemdm
int core_zgemdm(pastix_trans_t transA, pastix_trans_t transB, int M, int N, int K, pastix_complex64_t alpha, const pastix_complex64_t *A, int LDA, const pastix_complex64_t *B, int LDB, pastix_complex64_t beta, pastix_complex64_t *C, int LDC, const pastix_complex64_t *D, int incD, pastix_complex64_t *WORK, int LWORK)
Perform one of the following matrix-matrix operations.
Definition: core_zgemdm.c:139
cpucblk_zpotrfsp1d_panel
int cpucblk_zpotrfsp1d_panel(SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
Compute the Cholesky factorization of one panel.
Definition: core_zpotrfsp.c:292
pastix_diag_t
enum pastix_diag_e pastix_diag_t
Diagonal.
cpucblk_zgetrfsp1d
int cpucblk_zgetrfsp1d(SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork)
Perform the LU factorization of a given panel and apply all its updates.
Definition: core_zgetrfsp.c:355
cpucblk_zgetrfsp1d_getrf
int cpucblk_zgetrfsp1d_getrf(SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U)
Compute the LU factorization of the diagonal block in a panel.
Definition: core_zgetrfsp.c:217
cpucblk_zrelease_deps
void cpucblk_zrelease_deps(pastix_coefside_t side, SolverMatrix *solvmtx, const SolverCblk *cblk, SolverCblk *fcbk)
Release the dependencies of the given cblk after an update.
Definition: cpucblk_zmpi_coeftab.c:558
cpucblk_ztrsmsp
void cpucblk_ztrsmsp(pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank)
Compute the updates associated to a column of off-diagonal blocks.
Definition: core_ztrsmsp.c:356
cpucblk_zcompress
pastix_int_t cpucblk_zcompress(const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk)
Compress a single column block from full-rank to low-rank format.
Definition: cpucblk_zcompress.c:110
core_zrqrrt
int core_zrqrrt(double tol, pastix_int_t maxrank, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_complex64_t *tau, pastix_complex64_t *B, pastix_int_t ldb, pastix_complex64_t *tau_b, pastix_complex64_t *work, pastix_int_t lwork, double normA)
Compute a randomized QR factorization with rotation technique.
Definition: core_zrqrrt.c:126
core_ztradd
int core_ztradd(pastix_uplo_t uplo, pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t LDA, pastix_complex64_t beta, pastix_complex64_t *B, pastix_int_t LDB)
Add two triangular matrices together as in PBLAS pztradd.
Definition: core_ztradd.c:79
core_zlrorthu_cgs
pastix_fixdbl_t core_zlrorthu_cgs(pastix_int_t M1, pastix_int_t N1, pastix_int_t M2, pastix_int_t N2, pastix_int_t r1, pastix_int_t *r2ptr, pastix_int_t offx, pastix_int_t offy, pastix_complex64_t *U, pastix_int_t ldu, pastix_complex64_t *V, pastix_int_t ldv)
Try to orthognalize the U part of the low-rank form, and update the V part accordingly using CGS.
Definition: core_zlrothu.c:419
core_zpotrfsp
void core_zpotrfsp(pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivot, double criterion)
Compute the block static pivoting Cholesky factorization of the matrix n-by-n A = L * L^t .
Definition: core_zpotrfsp.c:144
cpucblk_zfree
void cpucblk_zfree(pastix_coefside_t side, SolverCblk *cblk)
Free the cblk structure that store the coefficient.
Definition: cpucblk_zinit.c:317
cpucblk_zpotrfsp1d
int cpucblk_zpotrfsp1d(SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork)
Perform the Cholesky factorization of a given panel and apply all its updates.
Definition: core_zpotrfsp.c:334
cpucblk_zuncompress
void cpucblk_zuncompress(pastix_coefside_t side, SolverCblk *cblk)
Uncompress a single column block from low-rank format to full-rank format.
Definition: cpucblk_zcompress.c:197
pastix_side_t
enum pastix_side_e pastix_side_t
Side of the operation.
solve_blok_zgemm
void solve_blok_zgemm(pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex64_t *B, pastix_int_t ldb, pastix_complex64_t *C, pastix_int_t ldc)
Apply a solve gemm update related to a single block of the matrix A.
Definition: solve_ztrsmsp.c:158
cpublok_ztrsmsp
pastix_fixdbl_t cpublok_ztrsmsp(pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const void *A, void *C, const pastix_lr_t *lowrank)
Compute the updates associated to one off-diagonal block.
Definition: core_ztrsmsp.c:678