PaStiX Handbook
6.4.0
|
#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 n-by-n 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 n-by-n 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 n-by-n 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 n-by-n 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().