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

Go to the source code of this file.

Functions

static pastix_fixdbl_t cpucblk_zadd_frlr (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_complex64_t *A, pastix_lrblock_t *lrB, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Add a column blok in full rank format to a column blok in low rank format. More...
 
static pastix_fixdbl_t cpucblk_zadd_lrlr (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrB, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Add two column bloks in low rank format. More...
 
static pastix_fixdbl_t cpucblk_zadd_frfr (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_complex64_t *A, pastix_complex64_t *B)
 Add two column bloks in full rank format. More...
 
pastix_fixdbl_t cpucblk_zadd (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Add two column bloks in full rank format. More...
 

Detailed Description

Precision dependent routines to add different cblks.

Version
6.3.2
Author
Pierre Ramet
Mathieu Faverge
Tony Delarue
Alycia Lisito
Nolan Bredel
Date
2023-12-01
Generated arithmetic file
from /builds/solverstack/pastix/kernels/cpucblk_zadd.c, normal z -> z, Wed Dec 13 12:09:17 2023

Definition in file cpucblk_zadd.c.

Function Documentation

◆ cpucblk_zadd_frlr()

static pastix_fixdbl_t cpucblk_zadd_frlr ( pastix_complex64_t  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const pastix_complex64_t *  A,
pastix_lrblock_t lrB,
pastix_complex64_t *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Add a column blok in full rank format to a column blok in low rank format.

The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B

Parameters
[in]alphaThe scalar alpha
[in]cblkAThe column block of the A matrix.
[in,out]cblkBThe column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B.
[in,out]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrBPointer to the low-rank representation of the column block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops of the operation.

Definition at line 73 of file cpucblk_zadd.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlradd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.

Referenced by cpucblk_zadd().

◆ cpucblk_zadd_lrlr()

static pastix_fixdbl_t cpucblk_zadd_lrlr ( pastix_complex64_t  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrB,
pastix_complex64_t *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Add two column bloks in low rank format.

The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B

Parameters
[in]alphaThe scalar alpha
[in]cblkAThe column block of the A matrix.
[in,out]cblkBThe column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B.
[in]lrAPointer to the low-rank representation of the column block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the column block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops of the operation.

Definition at line 185 of file cpucblk_zadd.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, core_zlradd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, PASTIX_LRM3_ORTHOU, PastixNoTrans, core_zlrmm_s::transA, core_zlrmm_s::transB, and core_zlrmm_s::work.

Referenced by cpucblk_zadd().

◆ cpucblk_zadd_frfr()

static pastix_fixdbl_t cpucblk_zadd_frfr ( pastix_complex64_t  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const pastix_complex64_t *  A,
pastix_complex64_t *  B 
)
inlinestatic

Add two column bloks in full rank format.

The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B

Parameters
[in]alphaThe scalar alpha
[in]cblkAThe column block of the A matrix.
[in,out]cblkBThe column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B.
[in,out]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
Returns
The number of flops of the operation.

Definition at line 279 of file cpucblk_zadd.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zgeadd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixNoTrans, and solver_cblk_s::stride.

Referenced by cpucblk_zadd().