PaStiX Handbook  6.3.2
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...
 
int cpucblk_cpxtrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LL^t factorization of a given panel. More...
 
void cpucblk_cpxtrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork)
 Apply the updates of the LL^t factorisation of a given panel. More...
 

Detailed Description

PaStiX kernel routines for LL^t factorization.

Version
6.3.2
Author
Mathieu Faverge
Pierre Ramet
Xavier Lacoste
Date
2023-12-11
Generated arithmetic file
from /builds/solverstack/pastix/kernels/core_zpxtrfsp.c, normal z -> c, Wed Dec 13 12:09:12 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.

References pastix_int_t.

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 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 212 of file core_cpxtrfsp.c.

References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, kernel_trace_start(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_int_t, PastixKernelPXTRF, 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 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 during factorization of the diagonal block.

Definition at line 284 of file core_cpxtrfsp.c.

References cpucblk_cpxtrfsp1d_pxtrf(), cpucblk_ctrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixLower, PastixNonUnit, PastixRight, and PastixTrans.

Referenced by cpucblk_cpxtrfsp1d(), and cpucblk_cpxtrfsp1dplus().

◆ 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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_cpxtrfsp1d_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_cpxtrf(), thread_cpxtrf_dynamic(), and thread_cpxtrf_static().

◆ cpucblk_cpxtrfsp1dplus()

int cpucblk_cpxtrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LL^t factorization of a given 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].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 382 of file core_cpxtrfsp.c.

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

◆ cpucblk_cpxtrfsp1dplus_update()

void cpucblk_cpxtrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex32_t work,
pastix_int_t  lwork 
)

Apply the updates of the LL^t 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 435 of file core_cpxtrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.

Referenced by thread_cpxtrf_dynamic().