PaStiX Handbook  6.3.0
core_cpxtrfsp.c File Reference
#include "common.h"
#include "cblas.h"
#include "blend/solver.h"
#include "pastix_ccores.h"
#include "kernels_trace.h"

Go to the source code of this file.

Functions

static void core_cpxtf2sp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the sequential static pivoting LL^t factorization of the matrix n-by-n A = L * L^t . More...
 
void core_cpxtrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting LL^t factorization of the matrix n-by-n A = L * L^t . More...
 
int cpucblk_cpxtrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
 Compute the LL^t factorization of the diagonal block in a panel. More...
 
int cpucblk_cpxtrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L)
 Compute the LL^t factorization of one panel. More...
 
int cpucblk_cpxtrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t lwork)
 Perform the LL^t factorization of a given panel and apply all its updates. More...
 

Detailed Description

PaStiX kernel routines for LL^t factorization.

Version
6.3.0
Author
Mathieu Faverge
Pierre Ramet
Xavier Lacoste
Date
2023-01-13
Generated arithmetic file
from /builds/solverstack/pastix/kernels/core_zpxtrfsp.c, normal z -> c, Mon Aug 28 13:40:32 2023

Definition in file core_cpxtrfsp.c.

Function Documentation

◆ core_cpxtf2sp()

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

Compute the sequential static pivoting LL^t factorization of the matrix n-by-n A = L * L^t .

Parameters
[in]nThe number of rows and columns of the matrix A.
[in,out]AThe matrix A to factorize with LL^t 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.
Warning
This routine will fail if it discovers a null or negative value on the diagonal during factorization.

Definition at line 66 of file core_cpxtrfsp.c.

Referenced by core_cpxtrfsp().

◆ cpucblk_cpxtrfsp1d_pxtrf()

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

Compute the LL^t factorization of the diagonal block in a panel.

Warning
This routine will fail if it discovers a null or negative value on the diagonal during factorization.
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 the lower part 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 212 of file core_cpxtrfsp.c.

References solver_cblk_s::cblktype, core_cpxtrfsp(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.

Referenced by cpucblk_cpxtrfsp1d_panel(), and fct_blok_cpxtrfsp_cpu().

◆ cpucblk_cpxtrfsp1d_panel()

int cpucblk_cpxtrfsp1d_panel ( SolverMatrix *  solvmtx,
SolverCblk cblk,
void *  L 
)

Compute the LL^t 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 the lower part 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 during factorization of the diagonal block.

Definition at line 284 of file core_cpxtrfsp.c.

References cpucblk_cpxtrfsp1d_pxtrf(), cpucblk_ctrsmsp(), PastixLower, PastixNonUnit, PastixRight, and PastixTrans.

Referenced by cpucblk_cpxtrfsp1d().

◆ cpucblk_cpxtrfsp1d()

int cpucblk_cpxtrfsp1d ( SolverMatrix *  solvmtx,
SolverCblk cblk,
pastix_complex32_t *  work,
pastix_int_t  lwork 
)

Perform the LL^t 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]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 326 of file core_cpxtrfsp.c.

References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_cpxtrfsp1d_panel(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, PastixLCoef, and PastixTrans.

Referenced by sequential_cpxtrf(), thread_cpxtrf_dynamic(), and thread_cpxtrf_static().