PaStiX Handbook  6.3.2
cpucblk_sadd.c File Reference
#include "common/common.h"
#include "blend/solver.h"
#include "kernels_trace.h"
#include "pastix_scores.h"
#include "pastix_slrcores.h"

Go to the source code of this file.

Functions

static pastix_fixdbl_t cpucblk_sadd_frlr (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const float *A, pastix_lrblock_t *lrB, float *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_sadd_lrlr (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrB, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Add two column bloks in low rank format. More...
 
static pastix_fixdbl_t cpucblk_sadd_frfr (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const float *A, float *B)
 Add two column bloks in full rank format. More...
 
pastix_fixdbl_t cpucblk_sadd (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, float *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 -> s, Wed Dec 13 12:09:17 2023

Definition in file cpucblk_sadd.c.

Function Documentation

◆ cpucblk_sadd_frlr()

static pastix_fixdbl_t cpucblk_sadd_frlr ( float  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const float *  A,
pastix_lrblock_t lrB,
float *  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_sadd.c.

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

Referenced by cpucblk_sadd().

◆ cpucblk_sadd_lrlr()

static pastix_fixdbl_t cpucblk_sadd_lrlr ( float  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrB,
float *  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_sadd.c.

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

Referenced by cpucblk_sadd().

◆ cpucblk_sadd_frfr()

static pastix_fixdbl_t cpucblk_sadd_frfr ( float  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const float *  A,
float *  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/Symmetric 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_sadd.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sgeadd(), 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_sadd().