PaStiX Handbook
6.3.2

#include "common.h"
#include "cblas.h"
#include "blend/solver.h"
#include "pastix_zcores.h"
#include "kernels_trace.h"
#include <lapacke.h>
Go to the source code of this file.
Functions  
static void  core_zhetf2sp (pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion) 
Compute the sequential static pivoting factorization of the hermitian matrix nbyn A such that A = L * D * conj(L^t). More...  
void  core_zhetrfsp (pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion) 
Compute the block static pivoting factorization of the hermitian matrix nbyn A such that A = L * D * conj(L^t). More...  
int  cpucblk_zhetrfsp1d_hetrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) 
Computes the LDL^h factorization of the diagonal block in a panel. More...  
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) 
int  cpucblk_zhetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh) 
Compute the LDL^h factorization of one panel. More...  
int  cpucblk_zhetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *DLh, pastix_complex64_t *work, pastix_int_t lwork) 
Perform the LDL^h factorization of a given panel and apply all its updates. More...  
int  cpucblk_zhetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) 
Perform the LDL^h factorization of a given panel and submit tasks for the subsequent updates. More...  
void  cpucblk_zhetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work) 
Apply the updates of the LDL^h factorisation of a given panel. More...  
PaStiX kernel routines for LDL^h factorization.
Definition in file core_zhetrfsp.c.

inlinestatic 
Compute the sequential static pivoting factorization of the hermitian matrix nbyn A such that A = L * D * conj(L^t).
[in]  n  The number of rows and columns of the matrix A. 
[in,out]  A  The matrix A to factorize with LDL^h factorization. The matrix is of size lda by n. 
[in]  lda  The leading dimension of the matrix A. 
[in,out]  nbpivots  Pointer to the number of piovting operations made during factorization. It is updated during this call 
[in]  criterion  Threshold use for static pivoting. If diagonal value is under this threshold, its value is replaced by the threshold and the number of pivots is incremented. 
Definition at line 66 of file core_zhetrfsp.c.
References pastix_int_t.
Referenced by core_zhetrfsp().
void core_zhetrfsp  (  pastix_int_t  n, 
pastix_complex64_t *  A,  
pastix_int_t  lda,  
pastix_int_t *  nbpivots,  
double  criterion  
) 
Compute the block static pivoting factorization of the hermitian matrix nbyn A such that A = L * D * conj(L^t).
[in]  n  The number of rows and columns of the matrix A. 
[in,out]  A  The matrix A to factorize with LDL^h factorization. The matrix is of size lda by n. 
[in]  lda  The leading dimension of the matrix A. 
[in,out]  nbpivots  Pointer to the number of piovting operations made during factorization. It is updated during this call 
[in]  criterion  Threshold use for static pivoting. If diagonal value is under this threshold, its value is replaced by the threshold and the nu,ber of pivots is incremented. 
Definition at line 147 of file core_zhetrfsp.c.
References core_zhetf2sp(), and pastix_int_t.
int cpucblk_zhetrfsp1d_hetrf  (  SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
void *  dataL  
) 
Computes the LDL^h factorization of the diagonal block in a panel.
[in]  solvmtx  Solver Matrix structure of the problem 
[in]  cblk  Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. 
[in,out]  dataL  The pointer to the correct representation of lower part of the data.

Definition at line 241 of file core_zhetrfsp.c.
References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelHETRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_zhetrfsp1d_panel(), and fct_blok_zhetrfsp_cpu().
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  
) 
core_zhetrfsp1d_gemm  Computes the LDL^h factorization of one panel and apply all the trsm updates to this panel.
[in]  cblk  The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1]. 
[in]  blok  The pointer to the data structure that describes the blok from which we compute the contributions. 
[in]  fcblk  The pointer to the data structure that describes the panel on which we compute the contributions. Next column blok must be accessible through fcblk[1]. 
[in,out]  L  The pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride by cblk.width 
[in,out]  C  The pointer to the matrix storing the coefficients of the target. 
[in,out]  work  Temporary buffer used in core_zgemdm(). 
Definition at line 323 of file core_zhetrfsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixConjTrans, PastixNoTrans, and solver_cblk_s::stride.
Referenced by cpucblk_zhetrfsp1d(), and cpucblk_zhetrfsp1dplus_update().
int cpucblk_zhetrfsp1d_panel  (  SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
void *  L,  
void *  DLh  
) 
Compute the LDL^h factorization of one panel.
[in]  solvmtx  Solver Matrix structure of the problem 
[in]  cblk  Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. 
[in,out]  L  The pointer to the correct representation of lower part of the data.

[in,out]  DLh  The pointer to the correct representation of DLh matrix (stored in the upper part by default).

Definition at line 439 of file core_zhetrfsp.c.
References solver_cblk_s::cblktype, cpucblk_zhetrfsp1d_hetrf(), cpucblk_zscalo(), cpucblk_ztrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
Referenced by cpucblk_zhetrfsp1d(), and cpucblk_zhetrfsp1dplus().
int cpucblk_zhetrfsp1d  (  SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_complex64_t *  DLh,  
pastix_complex64_t *  work,  
pastix_int_t  lwork  
) 
Perform the LDL^h factorization of a given panel and apply all its updates.
[in]  solvmtx  Solver Matrix structure of the problem 
[in]  cblk  Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. 
[in]  DLh  Temporary memory buffer to store the conjugate transpose of DLh. 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
Definition at line 494 of file core_zhetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_zhetrfsp1d_gemm(), cpucblk_zalloc(), cpucblk_zalloc_lrws(), cpucblk_zgemmsp(), cpucblk_zhetrfsp1d_panel(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_zhetrf(), thread_zhetrf_dynamic(), and thread_zhetrf_static().
int cpucblk_zhetrfsp1dplus  (  SolverMatrix *  solvmtx, 
SolverCblk *  cblk  
) 
Perform the LDL^h factorization of a given panel and submit tasks for the subsequent updates.
[in]  solvmtx  Solver Matrix structure of the problem 
[in]  cblk  Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. 
Definition at line 573 of file core_zhetrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zhetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_zhetrf_dynamic().
void cpucblk_zhetrfsp1dplus_update  (  SolverMatrix *  solvmtx, 
SolverBlok *  blok,  
pastix_complex64_t *  work  
) 
Apply the updates of the LDL^h factorisation of a given panel.
[in]  solvmtx  Solver Matrix structure of the problem 
[in]  blok  Pointer to the blok where the update start. 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
Definition at line 626 of file core_zhetrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_zhetrfsp1d_gemm(), cpucblk_zalloc(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.
Referenced by thread_zhetrf_dynamic().