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

Go to the source code of this file.

Functions

size_t cpublok_zcompute_size_lr (pastix_coefside_t side, pastix_int_t N, const SolverBlok *blok)
 Compute the size of a block to send in LR. More...
 
pastix_uint_t cpucblk_zcompute_size_lr (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of a column block to send in LR. More...
 
size_t cpucblk_zcompute_size (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of the buffer to send. More...
 
char * cpublok_zpack_lr (pastix_coefside_t side, pastix_uint_t N, const SolverBlok *blok, char *buffer)
 Pack low-rank data for a block. More...
 
void * cpucblk_zpack_lr (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack low-rank data for column block. More...
 
char * cpublok_zunpack_lr (pastix_coefside_t side, pastix_int_t N, SolverBlok *blok, char *buffer)
 Unpack low rank data and fill the block concerned by the computation. More...
 
void cpucblk_zunpack_lr (pastix_coefside_t side, SolverCblk *cblk, void *buffer)
 Unpack low rank data and fill the column block concerned by the computation. More...
 
void * cpucblk_zpack_fr (pastix_coefside_t side, const SolverCblk *cblk)
 Pack data in full rank. More...
 
void cpucblk_zunpack_fr (pastix_coefside_t side, SolverCblk *cblk, pastix_complex64_t *buffer)
 Unpack data in full rank and fill the column block concerned by the computation. More...
 
void * cpucblk_zpack (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack a column block (Full rank or low rank). More...
 
void cpucblk_zunpack (pastix_coefside_t side, SolverCblk *cblk, void *buffer)
 Unpack data and fill the column block concerned by the computation. More...
 

Detailed Description

Precision dependent routines to pack and unpack cblks.

Version
6.3.2
Author
Nolan Bredel
Date
2023-07-21
Generated arithmetic file
from /builds/solverstack/pastix/kernels/cpucblk_zpack.c, normal z -> z, Wed Dec 13 12:09:18 2023

Definition in file cpucblk_zpack.c.

Function Documentation

◆ cpublok_zcompute_size_lr()

size_t cpublok_zcompute_size_lr ( pastix_coefside_t  side,
pastix_int_t  N,
const SolverBlok blok 
)

Compute the size of a block to send in LR.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]NThe number of columns of the block.
[in]blokThe block for which the size is computed.
Returns
size of the LR block to send in bytes

Definition at line 48 of file cpucblk_zpack.c.

References blok_rownbr(), core_zlrgetsize(), solver_blok_s::LRblock, pastix_int_t, PastixLCoef, and PastixUCoef.

Referenced by cpucblk_zcompute_size_lr().

◆ cpucblk_zcompute_size_lr()

pastix_uint_t cpucblk_zcompute_size_lr ( pastix_coefside_t  side,
const SolverCblk cblk 
)

Compute the size of a column block to send in LR.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe low-rank column block for which the size is computed.
Returns
size of the LR column block to send in bytes.

Definition at line 94 of file cpucblk_zpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_zcompute_size_lr(), and solver_cblk_s::fblokptr.

Referenced by cpucblk_zcompute_size().

◆ cpucblk_zcompute_size()

size_t cpucblk_zcompute_size ( pastix_coefside_t  side,
const SolverCblk cblk 
)

Compute the size of the buffer to send.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe column block for which the size is computed.
Returns
Size of the buffer to send.

Definition at line 134 of file cpucblk_zpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpucblk_zcompute_size_lr(), PastixLUCoef, and solver_cblk_s::stride.

◆ cpublok_zpack_lr()

char* cpublok_zpack_lr ( pastix_coefside_t  side,
pastix_uint_t  N,
const SolverBlok blok,
char *  buffer 
)

Pack low-rank data for a block.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]NNumber of columns of the block.
[in]blokThe solver block to pack.
[in,out]bufferPointer to the buffer where to pack the data.
Returns
Pointer to the end of the packed data.

Definition at line 177 of file cpucblk_zpack.c.

References blok_rownbr(), core_zlrpack(), solver_blok_s::LRblock, pastix_int_t, PastixLCoef, and PastixUCoef.

Referenced by cpucblk_zpack_lr().

◆ cpucblk_zpack_lr()

void* cpucblk_zpack_lr ( pastix_coefside_t  side,
SolverCblk cblk,
size_t  size 
)

Pack low-rank data for column block.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe column block to pack.
[in]sizeSize to allocate the buffer.
Returns
Pointer to the packed data.

Definition at line 220 of file cpucblk_zpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_zpack_lr(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, pastix_int_t, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.

Referenced by cpucblk_zpack().

◆ cpublok_zunpack_lr()

char* cpublok_zunpack_lr ( pastix_coefside_t  side,
pastix_int_t  N,
SolverBlok blok,
char *  buffer 
)

Unpack low rank data and fill the block concerned by the computation.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]NNumber of columns of the block.
[in,out]blokThe block concerned by the computation.
[in,out]bufferPointer on the packed data.
Returns
Pointer to the next block to unpack.

Definition at line 272 of file cpucblk_zpack.c.

References blok_rownbr(), core_zlrunpack(), solver_blok_s::LRblock, pastix_int_t, PastixLCoef, and PastixUCoef.

Referenced by cpucblk_zunpack_lr().

◆ cpucblk_zunpack_lr()

void cpucblk_zunpack_lr ( pastix_coefside_t  side,
SolverCblk cblk,
void *  buffer 
)

Unpack low rank data and fill the column block concerned by the computation.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in,out]cblkThe column block to fill.
[in,out]bufferPointer on packed data.

Definition at line 311 of file cpucblk_zpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_zunpack_lr(), cpucblk_zalloc_lr(), solver_cblk_s::fblokptr, and pastix_int_t.

Referenced by cpucblk_zunpack().

◆ cpucblk_zpack_fr()

void* cpucblk_zpack_fr ( pastix_coefside_t  side,
const SolverCblk cblk 
)

Pack data in full rank.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe column block that will be sent.
Returns
Pointer to the data buffer. Note that in full-rank, the data pointer is directly returned without data copy.

Definition at line 351 of file cpucblk_zpack.c.

References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixUCoef, and solver_cblk_s::ucoeftab.

Referenced by cpucblk_zpack().

◆ cpucblk_zunpack_fr()

void cpucblk_zunpack_fr ( pastix_coefside_t  side,
SolverCblk cblk,
pastix_complex64_t *  buffer 
)

Unpack data in full rank and fill the column block concerned by the computation.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe column block to unpack.
[in]bufferPointer on packed data.

Definition at line 380 of file cpucblk_zpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.

Referenced by cpucblk_zunpack().

◆ cpucblk_zpack()

void* cpucblk_zpack ( pastix_coefside_t  side,
SolverCblk cblk,
size_t  size 
)

Pack a column block (Full rank or low rank).

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in]cblkThe column block that will be sent.
[in]sizeTODO
Returns
Pointer to the data buffer.

Definition at line 417 of file cpucblk_zpack.c.

References solver_cblk_s::cblktype, cpucblk_zpack_fr(), and cpucblk_zpack_lr().

◆ cpucblk_zunpack()

void cpucblk_zunpack ( pastix_coefside_t  side,
SolverCblk cblk,
void *  buffer 
)

Unpack data and fill the column block concerned by the computation.

Parameters
[in]sideDefine which side of the cblk must be tested.
  • PastixLCoef if lower part only
  • PastixUCoef if upper part only
  • PastixLUCoef if both sides.
[in,out]cblkThe cblk to unpack.
[in]bufferPointer on packed data.

Definition at line 450 of file cpucblk_zpack.c.

References solver_cblk_s::cblktype, cpucblk_zunpack_fr(), and cpucblk_zunpack_lr().