21 #include "common/common.h"
76 const pastix_complex64_t *A,
78 pastix_complex64_t *work,
90 assert( !(cblkA->
cblktype & CBLK_COMPRESSED) );
91 assert( cblkB->
cblktype & CBLK_COMPRESSED );
92 assert( cblkA->
cblktype & CBLK_LAYOUT_2D );
100 params.
alpha = alpha;
105 params.
lwork = lwork;
117 for (; blokA < lblokA; blokA++) {
126 lrA.
u = (pastix_complex64_t*)A + blokA->
coefind;
190 pastix_complex64_t *work,
201 assert( (cblkA->
cblktype & CBLK_COMPRESSED) );
202 assert( (cblkB->
cblktype & CBLK_COMPRESSED) );
208 params.
alpha = alpha;
213 params.
lwork = lwork;
222 for (; blokA < lblokA; blokA++, lrA++) {
282 const pastix_complex64_t *A,
283 pastix_complex64_t *B )
289 assert( !(cblkA->
cblktype & CBLK_COMPRESSED) );
290 assert( !(cblkB->
cblktype & CBLK_COMPRESSED) );
292 assert( (A != NULL) && (B != NULL) );
298 pastix_cblk_lock( cblkB );
302 pastix_cblk_unlock( cblkB );
305 const pastix_complex64_t *bA;
306 pastix_complex64_t *bB;
314 assert( cblkA->
cblktype & CBLK_LAYOUT_2D );
315 assert( cblkB->
cblktype & CBLK_LAYOUT_2D );
317 for (; blokA < lblokA; blokA++) {
334 pastix_cblk_lock( cblkB );
338 pastix_cblk_unlock( cblkB );
396 pastix_complex64_t *work,
405 if ( cblkB->
cblktype & CBLK_COMPRESSED ) {
406 if ( cblkA->
cblktype & CBLK_COMPRESSED ) {
410 A, B, work, lwork, lowrank );
416 A, B, work, lwork, lowrank );
420 if ( cblkA->
cblktype & CBLK_COMPRESSED ) {
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.
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.
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.
BEGIN_C_DECLS typedef int pastix_int_t
enum pastix_ktype_e pastix_ktype_t
List of the Level 1 events that may be traced in PaStiX.
static void kernel_trace_stop(int8_t inlast, pastix_ktype_t ktype, int m, int n, int k, double flops, double starttime)
Stop the trace of a single kernel.
static double kernel_trace_start(pastix_ktype_t ktype)
Start the trace of a single kernel.
@ PastixKernelGEADDCblkFRFR
@ PastixKernelGEADDCblkLRLR
@ PastixKernelGEADDCblkFRLR
int core_zgeadd(pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex64_t alpha, const pastix_complex64_t *A, pastix_int_t LDA, pastix_complex64_t beta, pastix_complex64_t *B, pastix_int_t LDB)
Add two matrices together.
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.
const pastix_lrblock_t * A
pastix_atomic_lock_t * lock
const pastix_lrblock_t * B
const pastix_lr_t * lowrank
pastix_complex64_t * work
pastix_fixdbl_t core_zlradd(core_zlrmm_t *params, const pastix_lrblock_t *A, pastix_trans_t transV, int infomask)
Perform the addition of two low-rank matrices.
Structure to store all the parameters of the core_zlrmm family functions.
#define PASTIX_LRM3_ORTHOU
Macro to specify if the U part of a low-rank matrix is orthogonal or not (Used in LRMM functions).
Structure to define the type of function to use for the low-rank kernels and their parameters.
The block low-rank structure to hold a matrix in low-rank form.
static pastix_int_t blok_rownbr(const SolverBlok *blok)
Compute the number of rows of a block.
static pastix_int_t cblk_colnbr(const SolverCblk *cblk)
Compute the number of columns in a column block.
static int is_block_inside_fblock(const SolverBlok *blok, const SolverBlok *fblok)
Check if a block is included inside another one.
pastix_atomic_lock_t lock
Solver column block structure.