PaStiX Handbook  6.4.0
cpucblk_dpack.h File Reference

Go to the source code of this file.

Functions

size_t cpublok_dcompute_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_dcompute_size_lr (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of a column block to send in LR. More...
 
size_t cpucblk_dcompute_size (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of the buffer to send. More...
 
char * cpublok_dpack_lr (pastix_coefside_t side, pastix_uint_t N, const SolverBlok *blok, char *buffer)
 Pack low-rank data for a block. More...
 
void * cpucblk_dpack_lr (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack low-rank data for column block. More...
 
char * cpublok_dunpack_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_dunpack_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_dpack_fr (pastix_coefside_t side, const SolverCblk *cblk)
 Pack data in full rank. More...
 
void cpucblk_dunpack_fr (pastix_coefside_t side, SolverCblk *cblk, double *buffer)
 Unpack data in full rank and fill the column block concerned by the computation. More...
 
void * cpucblk_dpack (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack a column block (Full rank or low rank). More...
 
void cpucblk_dunpack (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.4.0
Author
Nolan Bredel
Date
2024-07-05
Generated arithmetic file
from /builds/solverstack/pastix/kernels/cpucblk_zpack.h, normal z -> d, Tue Oct 8 14:17:11 2024

Definition in file cpucblk_dpack.h.

Function Documentation

◆ cpublok_dcompute_size_lr()

size_t cpublok_dcompute_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_dpack.c.

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

Referenced by cpucblk_dcompute_size_lr().

◆ cpucblk_dcompute_size_lr()

pastix_uint_t cpucblk_dcompute_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_dpack.c.

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

Referenced by cpucblk_dcompute_size().

◆ cpucblk_dcompute_size()

size_t cpucblk_dcompute_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_dpack.c.

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

◆ cpublok_dpack_lr()

char* cpublok_dpack_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_dpack.c.

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

Referenced by cpucblk_dpack_lr().

◆ cpucblk_dpack_lr()

void* cpucblk_dpack_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_dpack.c.

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

Referenced by cpucblk_dpack().

◆ cpublok_dunpack_lr()

char* cpublok_dunpack_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_dpack.c.

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

Referenced by cpucblk_dunpack_lr().

◆ cpucblk_dunpack_lr()

void cpucblk_dunpack_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_dpack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_dunpack_lr(), cpucblk_dalloc_lr(), solver_cblk_s::fblokptr, and pastix_int_t.

Referenced by cpucblk_dunpack().

◆ cpucblk_dpack_fr()

void* cpucblk_dpack_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_dpack.c.

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

Referenced by cpucblk_dpack().

◆ cpucblk_dunpack_fr()

void cpucblk_dunpack_fr ( pastix_coefside_t  side,
SolverCblk cblk,
double *  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_dpack.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_dunpack().

◆ cpucblk_dpack()

void* cpucblk_dpack ( 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_dpack.c.

References solver_cblk_s::cblktype, cpucblk_dpack_fr(), and cpucblk_dpack_lr().

◆ cpucblk_dunpack()

void cpucblk_dunpack ( 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_dpack.c.

References solver_cblk_s::cblktype, cpucblk_dunpack_fr(), and cpucblk_dunpack_lr().