PaStiX Handbook  6.3.2
core_zpxtrfsp.c File Reference
#include "common.h"
#include "cblas.h"
#include "blend/solver.h"
#include "pastix_zcores.h"
#include "kernels_trace.h"

Go to the source code of this file.

Functions

static void core_zpxtf2sp (pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion)
 Compute the sequential static pivoting LL^t factorization of the matrix n-by-n A = L * L^t . More...
 
void core_zpxtrfsp (pastix_int_t n, pastix_complex64_t *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion)
 Compute the block static pivoting LL^t factorization of the matrix n-by-n A = L * L^t . More...
 
int cpucblk_zpxtrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
 Compute the LL^t factorization of the diagonal block in a panel. More...
 
int cpucblk_zpxtrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L)
 Compute the LL^t factorization of one panel. More...
 
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. More...
 
int cpucblk_zpxtrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LL^t factorization of a given panel. More...
 
void cpucblk_zpxtrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_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 -> z, Wed Dec 13 12:09:16 2023

Definition in file core_zpxtrfsp.c.

Function Documentation

◆ core_zpxtf2sp()

static void core_zpxtf2sp ( pastix_int_t  n,
pastix_complex64_t *  A,
pastix_int_t  lda,
pastix_int_t nbpivots,
double  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_zpxtrfsp.c.

References pastix_int_t.

Referenced by core_zpxtrfsp().

◆ 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.

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_zpxtrfsp.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_zpxtrfsp1d_panel(), and fct_blok_zpxtrfsp_cpu().

◆ cpucblk_zpxtrfsp1d_panel()

int cpucblk_zpxtrfsp1d_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_zpxtrfsp.c.

References cpucblk_zpxtrfsp1d_pxtrf(), cpucblk_ztrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixLower, PastixNonUnit, PastixRight, and PastixTrans.

Referenced by cpucblk_zpxtrfsp1d(), and cpucblk_zpxtrfsp1dplus().

◆ 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.

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_zpxtrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zpxtrfsp1d_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_zpxtrf(), thread_zpxtrf_dynamic(), and thread_zpxtrf_static().

◆ cpucblk_zpxtrfsp1dplus()

int cpucblk_zpxtrfsp1dplus ( 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_zpxtrfsp.c.

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

◆ cpucblk_zpxtrfsp1dplus_update()

void cpucblk_zpxtrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex64_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_zpxtrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.

Referenced by thread_zpxtrf_dynamic().