PaStiX Handbook  6.3.2
cpucblk_dadd.c File Reference
#include "common/common.h"
#include "blend/solver.h"
#include "kernels_trace.h"
#include "pastix_dcores.h"
#include "pastix_dlrcores.h"

Go to the source code of this file.

Functions

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

Definition in file cpucblk_dadd.c.

Function Documentation

◆ cpucblk_dadd_frlr()

static pastix_fixdbl_t cpucblk_dadd_frlr ( double  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const double *  A,
pastix_lrblock_t lrB,
double *  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_dadd.c.

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

Referenced by cpucblk_dadd().

◆ cpucblk_dadd_lrlr()

static pastix_fixdbl_t cpucblk_dadd_lrlr ( double  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrB,
double *  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_dadd.c.

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

Referenced by cpucblk_dadd().

◆ cpucblk_dadd_frfr()

static pastix_fixdbl_t cpucblk_dadd_frfr ( double  alpha,
const SolverCblk cblkA,
SolverCblk cblkB,
const double *  A,
double *  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_dadd.c.

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