PaStiX Handbook  6.3.2
core_chetrfsp.c File Reference
#include "common.h"
#include "cblas.h"
#include "blend/solver.h"
#include "pastix_ccores.h"
#include "kernels_trace.h"
#include <lapacke.h>

Go to the source code of this file.

Functions

static void core_chetf2sp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the sequential static pivoting factorization of the hermitian matrix n-by-n A such that A = L * D * conjf(L^t). More...
 
void core_chetrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting factorization of the hermitian matrix n-by-n A such that A = L * D * conjf(L^t). More...
 
int cpucblk_chetrfsp1d_hetrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
 Computes the LDL^h factorization of the diagonal block in a panel. More...
 
void core_chetrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *L, pastix_complex32_t *C, pastix_complex32_t *work)
 
int cpucblk_chetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh)
 Compute the LDL^h factorization of one panel. More...
 
int cpucblk_chetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *DLh, pastix_complex32_t *work, pastix_int_t lwork)
 Perform the LDL^h factorization of a given panel and apply all its updates. More...
 
int cpucblk_chetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^h factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_chetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work)
 Apply the updates of the LDL^h factorisation of a given panel. More...
 

Detailed Description

PaStiX kernel routines for LDL^h factorization.

Version
6.3.2
Author
Mathieu Faverge
Pierre Ramet
Xavier Lacoste
Gregoire Pichon
Alycia Lisito
Nolan Bredel
Date
2023-12-11
Generated arithmetic file
from /builds/solverstack/pastix/kernels/core_zhetrfsp.c, normal z -> c, Wed Dec 13 12:09:11 2023

Definition in file core_chetrfsp.c.

Function Documentation

◆ core_chetf2sp()

static void core_chetf2sp ( pastix_int_t  n,
pastix_complex32_t A,
pastix_int_t  lda,
pastix_int_t nbpivots,
float  criterion 
)
inlinestatic

Compute the sequential static pivoting factorization of the hermitian matrix n-by-n A such that A = L * D * conjf(L^t).

Parameters
[in]nThe number of rows and columns of the matrix A.
[in,out]AThe matrix A to factorize with LDL^h factorization. The matrix is of size lda -by- n.
[in]ldaThe leading dimension of the matrix A.
[in,out]nbpivotsPointer to the number of piovting operations made during factorization. It is updated during this call
[in]criterionThreshold 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_chetrfsp.c.

References pastix_int_t.

Referenced by core_chetrfsp().

◆ core_chetrfsp()

void core_chetrfsp ( pastix_int_t  n,
pastix_complex32_t A,
pastix_int_t  lda,
pastix_int_t nbpivots,
float  criterion 
)

Compute the block static pivoting factorization of the hermitian matrix n-by-n A such that A = L * D * conjf(L^t).

Parameters
[in]nThe number of rows and columns of the matrix A.
[in,out]AThe matrix A to factorize with LDL^h factorization. The matrix is of size lda -by- n.
[in]ldaThe leading dimension of the matrix A.
[in,out]nbpivotsPointer to the number of piovting operations made during factorization. It is updated during this call
[in]criterionThreshold 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_chetrfsp.c.

References core_chetf2sp(), and pastix_int_t.

◆ cpucblk_chetrfsp1d_hetrf()

int cpucblk_chetrfsp1d_hetrf ( SolverMatrix solvmtx,
SolverCblk cblk,
void *  dataL 
)

Computes the LDL^h factorization of the diagonal block in a panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
[in,out]dataLThe pointer to the correct representation of lower part of the data.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
Returns
The number of static pivoting performed during the diagonal block factorization.

Definition at line 241 of file core_chetrfsp.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_chetrfsp1d_panel(), and fct_blok_chetrfsp_cpu().

◆ core_chetrfsp1d_gemm()

void core_chetrfsp1d_gemm ( const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t L,
pastix_complex32_t C,
pastix_complex32_t work 
)

core_chetrfsp1d_gemm - Computes the LDL^h factorization of one panel and apply all the trsm updates to this panel.

Parameters
[in]cblkThe 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]blokThe pointer to the data structure that describes the blok from which we compute the contributions.
[in]fcblkThe 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]LThe pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the matrix storing the coefficients of the target.
[in,out]workTemporary buffer used in core_cgemdm().

Definition at line 323 of file core_chetrfsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cgemdm(), 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_chetrfsp1d(), and cpucblk_chetrfsp1dplus_update().

◆ cpucblk_chetrfsp1d_panel()

int cpucblk_chetrfsp1d_panel ( SolverMatrix solvmtx,
SolverCblk cblk,
void *  L,
void *  DLh 
)

Compute the LDL^h factorization of one panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
[in,out]LThe pointer to the correct representation of lower part of the data.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in,out]DLhThe pointer to the correct representation of DLh matrix (stored in the upper part by default).
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 439 of file core_chetrfsp.c.

References solver_cblk_s::cblktype, cpucblk_chetrfsp1d_hetrf(), cpucblk_cscalo(), cpucblk_ctrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.

Referenced by cpucblk_chetrfsp1d(), and cpucblk_chetrfsp1dplus().

◆ cpucblk_chetrfsp1d()

int cpucblk_chetrfsp1d ( SolverMatrix solvmtx,
SolverCblk cblk,
pastix_complex32_t DLh,
pastix_complex32_t work,
pastix_int_t  lwork 
)

Perform the LDL^h factorization of a given panel and apply all its updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
[in]DLhTemporary memory buffer to store the conjugate transpose of DLh.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 494 of file core_chetrfsp.c.

References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_chetrfsp1d_gemm(), cpucblk_calloc(), cpucblk_calloc_lrws(), cpucblk_cgemmsp(), cpucblk_chetrfsp1d_panel(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.

Referenced by sequential_chetrf(), thread_chetrf_dynamic(), and thread_chetrf_static().

◆ cpucblk_chetrfsp1dplus()

int cpucblk_chetrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LDL^h factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 573 of file core_chetrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_chetrfsp1d_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_chetrf_dynamic().

◆ cpucblk_chetrfsp1dplus_update()

void cpucblk_chetrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex32_t work 
)

Apply the updates of the LDL^h factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 626 of file core_chetrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_chetrfsp1d_gemm(), cpucblk_calloc(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.

Referenced by thread_chetrf_dynamic().