PaStiX Handbook  6.3.2
cpucblk_spack.h File Reference

Go to the source code of this file.

Functions

size_t cpublok_scompute_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_scompute_size_lr (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of a column block to send in LR. More...
 
size_t cpucblk_scompute_size (pastix_coefside_t side, const SolverCblk *cblk)
 Compute the size of the buffer to send. More...
 
char * cpublok_spack_lr (pastix_coefside_t side, pastix_uint_t N, const SolverBlok *blok, char *buffer)
 Pack low-rank data for a block. More...
 
void * cpucblk_spack_lr (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack low-rank data for column block. More...
 
char * cpublok_sunpack_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_sunpack_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_spack_fr (pastix_coefside_t side, const SolverCblk *cblk)
 Pack data in full rank. More...
 
void cpucblk_sunpack_fr (pastix_coefside_t side, SolverCblk *cblk, float *buffer)
 Unpack data in full rank and fill the column block concerned by the computation. More...
 
void * cpucblk_spack (pastix_coefside_t side, SolverCblk *cblk, size_t size)
 Pack a column block (Full rank or low rank). More...
 
void cpucblk_sunpack (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.h, normal z -> s, Wed Dec 13 12:09:05 2023

Definition in file cpucblk_spack.h.

Function Documentation

◆ cpublok_scompute_size_lr()

size_t cpublok_scompute_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_spack.c.

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

Referenced by cpucblk_scompute_size_lr().

◆ cpucblk_scompute_size_lr()

pastix_uint_t cpucblk_scompute_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_spack.c.

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

Referenced by cpucblk_scompute_size().

◆ cpucblk_scompute_size()

size_t cpucblk_scompute_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_spack.c.

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

◆ cpublok_spack_lr()

char* cpublok_spack_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_spack.c.

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

Referenced by cpucblk_spack_lr().

◆ cpucblk_spack_lr()

void* cpucblk_spack_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_spack.c.

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

Referenced by cpucblk_spack().

◆ cpublok_sunpack_lr()

char* cpublok_sunpack_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_spack.c.

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

Referenced by cpucblk_sunpack_lr().

◆ cpucblk_sunpack_lr()

void cpucblk_sunpack_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_spack.c.

References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_sunpack_lr(), cpucblk_salloc_lr(), solver_cblk_s::fblokptr, and pastix_int_t.

Referenced by cpucblk_sunpack().

◆ cpucblk_spack_fr()

void* cpucblk_spack_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_spack.c.

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

Referenced by cpucblk_spack().

◆ cpucblk_sunpack_fr()

void cpucblk_sunpack_fr ( pastix_coefside_t  side,
SolverCblk cblk,
float *  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_spack.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_sunpack().

◆ cpucblk_spack()

void* cpucblk_spack ( 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_spack.c.

References solver_cblk_s::cblktype, cpucblk_spack_fr(), and cpucblk_spack_lr().

◆ cpucblk_sunpack()

void cpucblk_sunpack ( 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_spack.c.

References solver_cblk_s::cblktype, cpucblk_sunpack_fr(), and cpucblk_sunpack_lr().