PaStiX Handbook  6.2.1
solver.h File Reference
#include "pastix_lowrank.h"

Go to the source code of this file.

Data Structures

struct  solver_blok_recv_s
 Solver recv block structure. More...
 
struct  solver_cblk_recv_s
 Solver recv column block structure. More...
 
struct  task_s
 The task structure for the numerical factorization. More...
 
struct  solver_blok_s
 Solver block structure. More...
 
struct  solver_cblk_s
 Solver column block structure. More...
 
struct  solver_matrix_s
 Solver column block structure. More...
 

Macros

#define COMP_1D   0
 
#define DIAG   1
 
#define E1   2
 
#define E2   3
 
#define DRUNK   4
 
#define GPUID_UNDEFINED   -2
 
#define GPUID_NONE   -1
 
Cblk properties

The type and structure definitions. Define the mask for the cblks in the cblktype field:

  • 1st bit: The cblk is a local fanin accumulating the contributions for a remote cblk
  • 2nd bit: The cblk is stored in a 2D layout fashion as in a tiled matrix, otherwise the standard 1D lapack layout is used
  • 3rd bit: The cblk generates 2D granularity tasks, instead of a single 1D tasks that perform factorization, solves and updates
  • 4th bit: The cblk is compressed in Low-Rank (implies CBLK_LAYOUT_2D), otherwise it is stored in dense
  • 5th bit: The cblk is part of the Schur complement if set
  • 6th bit: The cblk is a local copy of a remote fanin to be received.
#define CBLK_FANIN   (1 << 0)
 
#define CBLK_LAYOUT_2D   (1 << 1)
 
#define CBLK_TASKS_2D   (1 << 2)
 
#define CBLK_COMPRESSED   (1 << 3)
 
#define CBLK_IN_SCHUR   (1 << 4)
 
#define CBLK_IN_LAST   (1 << 5)
 
#define CBLK_RECV   (1 << 6)
 

Typedefs

typedef struct blendctrl_s BlendCtrl
 
typedef struct simuctrl_s SimuCtrl
 
typedef struct solver_blok_recv_s solver_blok_recv_t
 Solver recv block structure.
 
typedef struct solver_cblk_recv_s solver_cblk_recv_t
 Solver recv column block structure. More...
 
typedef struct task_s Task
 The task structure for the numerical factorization.
 
typedef struct solver_blok_s SolverBlok
 Solver block structure.
 
typedef struct solver_cblk_s SolverCblk
 Solver column block structure.
 
typedef struct parsec_sparse_matrix_desc_s parsec_sparse_matrix_desc_t
 
typedef struct starpu_sparse_matrix_desc_s starpu_sparse_matrix_desc_t
 
typedef struct starpu_dense_matrix_desc_s starpu_dense_matrix_desc_t
 
typedef struct SolverBackup_s SolverBackup_t
 

Functions

static pastix_int_t cblk_colnbr (const SolverCblk *cblk)
 Compute the number of columns in a column block. More...
 
static void * cblk_getdataL (const SolverCblk *cblk)
 Get the pointer to the data associated to the lower part of the cblk. More...
 
static void * cblk_getdataU (const SolverCblk *cblk)
 Get the pointer to the data associated to the upper part of the cblk. More...
 
static void * cblk_getdata (const SolverCblk *cblk, pastix_coefside_t side)
 Get the pointer to the data associated to the side part of the cblk. More...
 
static pastix_int_t cblk_bloknbr (const SolverCblk *cblk)
 Compute the number of blocks in a column block. More...
 
static pastix_int_t blok_rownbr (const SolverBlok *blok)
 Compute the number of rows of a block. More...
 
static pastix_int_t blok_rownbr_ext (const SolverBlok *blok)
 Compute the number of rows of a contiguous block in front of the same cblk. More...
 
static int blok_is_preselected (const SolverCblk *cblk, const SolverBlok *blok, const SolverCblk *fcbk)
 Return if a block is preselected as either part of the projection, or as a sub-diagonal block. More...
 
static pastix_int_t cblk_rownbr (const SolverCblk *cblk)
 Compute the number of rows of a column block. More...
 
static pastix_int_t stealQueue (SolverMatrix *solvmtx, int rank, int *dest, int nbthreads)
 Task stealing method. More...
 
static int is_block_inside_fblock (const SolverBlok *blok, const SolverBlok *fblok)
 Check if a block is included inside another one. More...
 
void solverInit (SolverMatrix *solvmtx)
 Initialize the solver structure. More...
 
void solverExit (SolverMatrix *solvmtx)
 Free the content of the solver matrix structure. More...
 
int solverMatrixGen (SolverMatrix *solvmtx, const symbol_matrix_t *symbmtx, const pastix_order_t *ordeptr, const SimuCtrl *simuctl, const BlendCtrl *ctrl, PASTIX_Comm comm, isched_t *isched)
 Initialize the solver matrix structure. More...
 
int solverMatrixGenSeq (SolverMatrix *solvmtx, const symbol_matrix_t *symbmtx, const pastix_order_t *ordeptr, const SimuCtrl *simuctl, const BlendCtrl *ctrl, PASTIX_Comm comm, isched_t *isched, pastix_int_t is_dbg)
 Initialize the solver matrix structure in sequential. More...
 
int solverLoad (SolverMatrix *solvptr, FILE *stream)
 Load a solver matrix structure from a file. More...
 
int solverSave (const SolverMatrix *solvptr, FILE *stream)
 Save a solver matrix structure into a file. More...
 
void solverRealloc (SolverMatrix *solvptr)
 Realloc in a contiguous way a given solver structure. More...
 
SolverMatrix * solverCopy (const SolverMatrix *solvptr, int flttype)
 Generate a copy of a solver matrix structure. More...
 
int solverCheck (const SolverMatrix *solvmtx)
 Checks the consistency of the given solver matrix structure. More...
 
int solverDraw (const SolverMatrix *solvptr, FILE *stream, int verbose, const char *directory)
 Writes a PostScript picture of the low-rank solver matrix. More...
 
void solverPrintStats (const SolverMatrix *solvptr)
 Print statistical information about the solver matrix structure. More...
 
void solverRequestInit (SolverMatrix *solvmtx)
 Instanciate the arrays for the requests according to the scheduler. More...
 
void solverRequestExit (SolverMatrix *solvmtx)
 Free the arrays related to the requests. More...
 
void solverRecvInit (pastix_coefside_t side, SolverMatrix *solvmtx, int flttype)
 Allocate the reception buffer, and initiate the first persistant reception. More...
 
void solverRecvExit (SolverMatrix *solvmtx)
 Free the array linked to pending reception. More...
 
SolverBackup_t * solverBackupInit (const SolverMatrix *solvmtx)
 Initialize the backup structure. More...
 
int solverBackupRestore (SolverMatrix *solvmtx, const SolverBackup_t *b)
 Restore initial values. More...
 
void solverBackupExit (SolverBackup_t *b)
 Free the solver backup data structure. More...
 

Detailed Description

PaStiX solver structure header.

Version
6.2.0
Author
David Goudin
Pascal Henon
Francois Pellegrini
Pierre Ramet
Mathieu Faverge
Xavier Lacoste
Esragul Korkmaz
Gregoire Pichon
Tony Delarue
Date
2021-03-30

Definition in file solver.h.


Data Type Documentation

◆ solver_blok_recv_s

struct solver_blok_recv_s

Solver recv block structure.

Definition at line 69 of file solver.h.

Data Fields
pastix_int_t frownum

First row contributed in the block (lrownum+1 of the original block if none)

pastix_int_t lrownum

Last row contributed in the block (frownum-1 of the original block if none)

◆ solver_cblk_recv_s

struct solver_cblk_recv_s

Solver recv column block structure.

The structure works as a list of cblk for each remote owner to compute the exact contributions.

Definition at line 79 of file solver.h.

Data Fields
struct solver_cblk_recv_s * next
pastix_int_t ownerid
pastix_int_t fcolnum

First column contributed in the block (lcolnum+1 of the original cblk if none)

pastix_int_t lcolnum

Last column contributed in the block (fcolnum-1 of the original cblk if none)

solver_blok_recv_t bloktab[1]

Array of reception blocks

◆ task_s

struct task_s

The task structure for the numerical factorization.

Definition at line 90 of file solver.h.

Data Fields
pastix_int_t taskid

COMP_1D DIAG E1 E2

pastix_int_t prionum

Priority value for the factorization

pastix_int_t cblknum

Attached column block

pastix_int_t bloknum

Attached block

pastix_int_t volatile ctrbcnt

Total number of contributions

◆ solver_blok_s

struct solver_blok_s

Solver block structure.

Definition at line 107 of file solver.h.

Data Fields
void * handler[2]

Runtime data handler

pastix_int_t lcblknm

Local column block

pastix_int_t fcblknm

Facing column block

pastix_int_t gbloknm

Index in global bloktab (UNUSED)

pastix_int_t frownum

First row index

pastix_int_t lrownum

Last row index (inclusive)

pastix_int_t coefind

Index in coeftab

pastix_int_t browind

Index in browtab

int8_t gpuid

Store on which GPU the block is computed

int8_t inlast

Index of the block among last separator (2), coupling with last separator (1) or other blocks (0)

int iluklvl

The block ILU(k) level

pastix_lrblock_t * LRblock[2]

Store the blok (L/U) in LR format. Allocated for the cblk.

◆ solver_cblk_s

struct solver_cblk_s

Solver column block structure.

Definition at line 127 of file solver.h.

Data Fields
pastix_atomic_lock_t lock

Lock to protect computation on the cblk

volatile int32_t ctrbcnt

Number of contribution to receive

int8_t cblktype

Type of cblk

int8_t gpuid

Store on which GPU the cblk is computed

pastix_int_t fcolnum

First column index (Global numbering)

pastix_int_t lcolnum

Last column index (Global numbering, inclusive)

SolverBlok * fblokptr

First block in column (diagonal)

pastix_int_t stride

Column block stride

pastix_int_t lcolidx

First column index (Local numbering), used for the rhs vectors

pastix_int_t brownum

First block in row facing the diagonal block in browtab, 0-based

pastix_int_t brown2d

First 2D-block in row facing the diagonal block in browtab, 0-based

pastix_int_t sndeidx

Global index of the original supernode the cblk belongs to

pastix_int_t gcblknum

Global column block index

pastix_int_t bcscnum

Index in the bcsctab if local cblk, -1 otherwise (FANIN | RECV)

void * lcoeftab

Coefficients access vector, lower part

void * ucoeftab

Coefficients access vector, upper part

void * handler[2]

Runtime data handler

pastix_int_t selevtx

Index to identify selected cblk for which intra-separator contributions are not compressed

int ownerid

Rank of the owner

int threadid

Rank of the accessing thread

◆ solver_matrix_s

struct solver_matrix_s

Solver column block structure.

This structure stores all the numerical information about the factorization, as well as the structure of the problem. Only local information to each process is stored in this structure.

Definition at line 167 of file solver.h.

Data Fields
int restore

Flag to indicate if it is require to restore data with solverBackupRestore: 0: No need, 1:After solve, 2:After Factorization

pastix_int_t baseval

Base value for numberings

pastix_int_t nodenbr

Number of nodes before dof extension

pastix_int_t coefnbr

Number of coefficients (node after dof extension)

pastix_int_t gcblknbr

Global number of column blocks

pastix_int_t cblknbr

Local number of column blocks

pastix_int_t faninnbr

Local number of fanin cblk (included in cblknbr)

pastix_int_t fanincnt

Number of sends to realize

pastix_int_t maxrecv

Maximum blok size for a cblk_recv

pastix_int_t recvnbr

Local number of recv cblk (included in cblknbr)

pastix_int_t recvcnt

Number of receptions to realize

pastix_int_t cblkmax1d

Rank of the last cblk not beeing enabled for 2D computations

pastix_int_t cblkmin2d

Rank of the first cblk beeing enabled for 2D computations

pastix_int_t cblkmaxblk

Maximum number of blocks per cblk

pastix_int_t cblkschur

Index of the first local cblk in Schur

pastix_int_t nb2dcblk

Number of 2D cblks

pastix_int_t nb2dblok

Number of 2D blocks

pastix_int_t bloknbr

Number of blocks

pastix_int_t brownbr

Size of the browtab array

SolverCblk *restrict cblktab

Array of solver column blocks [+1]

SolverBlok *restrict bloktab

Array of solver blocks [+1]

pastix_int_t *restrict browtab

Array of blocks

pastix_int_t * gcbl2loc

Array of local cblknum corresponding to gcblknum

pastix_lr_t lowrank

Low-rank parameters

pastix_factotype_t factotype

General or symmetric factorization?

double diagthreshold

Diagonal threshold for pivoting

volatile int32_t nbpivots

Number of pivots during the factorization

pastix_int_t offdmax
pastix_int_t gemmmax
pastix_int_t blokmax
pastix_int_t colmax
int clustnum
int clustnbr
pastix_int_t procnbr
pastix_int_t thrdnbr
pastix_int_t bublnbr
Task *restrict tasktab
pastix_int_t tasknbr
pastix_int_t ** ttsktab
pastix_int_t * ttsknbr
pastix_queue_t ** computeQueue
pastix_int_t * selevtx
MPI_Request * reqtab

Array of requests for MPI asynchronous messages

pastix_int_t * reqidx

Array of local cblknum index corresponding to reqtab

pastix_int_t reqnbr

Length of the reqtab/reqidx arrays

volatile int32_t reqnum

Current amount of active requests (packed)

pastix_atomic_lock_t reqlock

Lock to access the request arrays

void * rcoeftab

Reception buffer for the communication

size_t * com_vector

Matrix of communications between nodes.

PASTIX_Comm solv_comm

Macro Definition Documentation

◆ GPUID_UNDEFINED

#define GPUID_UNDEFINED   -2

GPU still undefined

Definition at line 101 of file solver.h.

◆ GPUID_NONE

#define GPUID_NONE   -1

Block not computed on GPU

Definition at line 102 of file solver.h.

Typedef Documentation

◆ solver_cblk_recv_t

Solver recv column block structure.

The structure works as a list of cblk for each remote owner to compute the exact contributions.

Function Documentation

◆ cblk_colnbr()

static pastix_int_t cblk_colnbr ( const SolverCblk cblk)
inlinestatic

Compute the number of columns in a column block.

Parameters
[in]cblkThe pointer to the column block.
Returns
The number of columns in the cblk.

Definition at line 247 of file solver.h.

References solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

Referenced by bvec_caxpy_seq(), bvec_ccopy_seq(), bvec_cdotu_seq(), bvec_cgemv_seq(), bvec_cnrm2_seq(), bvec_cscal_seq(), bvec_daxpy_seq(), bvec_dcopy_seq(), bvec_ddot_seq(), bvec_dgemv_seq(), bvec_dnrm2_seq(), bvec_dscal_seq(), bvec_saxpy_seq(), bvec_scopy_seq(), bvec_sdot_seq(), bvec_sgemv_seq(), bvec_snrm2_seq(), bvec_sscal_seq(), bvec_zaxpy_seq(), bvec_zcopy_seq(), bvec_zdotu_seq(), bvec_zgemv_seq(), bvec_znrm2_seq(), bvec_zscal_seq(), coeftab_cgetdiag(), coeftab_dgetdiag(), coeftab_sgetdiag(), coeftab_zgetdiag(), core_chetrfsp1d_gemm(), core_csytrfsp1d_gemm(), core_dsytrfsp1d_gemm(), core_ssytrfsp1d_gemm(), core_zhetrfsp1d_gemm(), core_zsytrfsp1d_gemm(), cpublok_calloc_lrws(), cpublok_cscalo(), cpublok_dalloc_lrws(), cpublok_dscalo(), cpublok_salloc_lrws(), cpublok_sscalo(), cpublok_zalloc_lrws(), cpublok_zscalo(), cpucblk_cadd(), cpucblk_cadd_frfr(), cpucblk_calloc_fr(), cpucblk_calloc_lr(), cpucblk_calloc_lrws(), cpucblk_ccompress(), cpucblk_cdiff(), cpucblk_cgemmsp(), cpucblk_cgetschur_fr(), cpucblk_cgetschur_lr(), cpucblk_cmemory(), cpucblk_crecv_rhs_backward(), cpucblk_crecv_rhs_forward(), cpucblk_cscalo(), cpucblk_csend_rhs_backward(), cpucblk_csend_rhs_forward(), cpucblk_ctrsmsp(), cpucblk_cuncompress(), cpucblk_dadd(), cpucblk_dadd_frfr(), cpucblk_dalloc_fr(), cpucblk_dalloc_lr(), cpucblk_dalloc_lrws(), cpucblk_dcompress(), cpucblk_ddiff(), cpucblk_dgemmsp(), cpucblk_dgetschur_fr(), cpucblk_dgetschur_lr(), cpucblk_dmemory(), cpucblk_drecv_rhs_backward(), cpucblk_drecv_rhs_forward(), cpucblk_dscalo(), cpucblk_dsend_rhs_backward(), cpucblk_dsend_rhs_forward(), cpucblk_dtrsmsp(), cpucblk_duncompress(), cpucblk_sadd(), cpucblk_sadd_frfr(), cpucblk_salloc_fr(), cpucblk_salloc_lr(), cpucblk_salloc_lrws(), cpucblk_scompress(), cpucblk_sdiff(), cpucblk_sgemmsp(), cpucblk_sgetschur_fr(), cpucblk_sgetschur_lr(), cpucblk_smemory(), cpucblk_srecv_rhs_backward(), cpucblk_srecv_rhs_forward(), cpucblk_sscalo(), cpucblk_ssend_rhs_backward(), cpucblk_ssend_rhs_forward(), cpucblk_strsmsp(), cpucblk_suncompress(), cpucblk_zadd(), cpucblk_zadd_frfr(), cpucblk_zalloc_fr(), cpucblk_zalloc_lr(), cpucblk_zalloc_lrws(), cpucblk_zcompress(), cpucblk_zdiff(), cpucblk_zgemmsp(), cpucblk_zgetschur_fr(), cpucblk_zgetschur_lr(), cpucblk_zmemory(), cpucblk_zrecv_rhs_backward(), cpucblk_zrecv_rhs_forward(), cpucblk_zscalo(), cpucblk_zsend_rhs_backward(), cpucblk_zsend_rhs_forward(), cpucblk_ztrsmsp(), cpucblk_zuncompress(), fct_blok_cgemmsp_cost(), fct_blok_cgetrfsp_cost(), fct_blok_chetrfsp_cost(), fct_blok_cpotrfsp_cost(), fct_blok_cpxtrfsp_cost(), fct_blok_csytrfsp_cost(), fct_blok_ctrsmsp_cost(), fct_blok_dgemmsp_cost(), fct_blok_dgetrfsp_cost(), fct_blok_dpotrfsp_cost(), fct_blok_dsytrfsp_cost(), fct_blok_dtrsmsp_cost(), fct_blok_sgemmsp_cost(), fct_blok_sgetrfsp_cost(), fct_blok_spotrfsp_cost(), fct_blok_ssytrfsp_cost(), fct_blok_strsmsp_cost(), fct_blok_zgemmsp_cost(), fct_blok_zgetrfsp_cost(), fct_blok_zhetrfsp_cost(), fct_blok_zpotrfsp_cost(), fct_blok_zpxtrfsp_cost(), fct_blok_zsytrfsp_cost(), fct_blok_ztrsmsp_cost(), fct_cblk_cgemmsp_cost(), fct_cblk_cgetrfsp_cost(), fct_cblk_chetrfsp_cost(), fct_cblk_cpotrfsp_cost(), fct_cblk_cpxtrfsp_cost(), fct_cblk_csytrfsp_cost(), fct_cblk_dgemmsp_cost(), fct_cblk_dgetrfsp_cost(), fct_cblk_dpotrfsp_cost(), fct_cblk_dsytrfsp_cost(), fct_cblk_sgemmsp_cost(), fct_cblk_sgetrfsp_cost(), fct_cblk_spotrfsp_cost(), fct_cblk_ssytrfsp_cost(), fct_cblk_zgemmsp_cost(), fct_cblk_zgetrfsp_cost(), fct_cblk_zhetrfsp_cost(), fct_cblk_zpotrfsp_cost(), fct_cblk_zpxtrfsp_cost(), fct_cblk_zsytrfsp_cost(), solve_blok_cgemm(), solve_blok_ctrsm(), solve_blok_dgemm(), solve_blok_dtrsm(), solve_blok_sgemm(), solve_blok_strsm(), solve_blok_zgemm(), solve_blok_ztrsm(), solverCheck(), and solvMatGen_max_buffers().

◆ cblk_getdataL()

static void* cblk_getdataL ( const SolverCblk cblk)
inlinestatic

Get the pointer to the data associated to the lower part of the cblk.

Parameters
[in]cblkThe pointer to the column block.
Returns
lcoeftab if the cblk is not compressed. fblokptr->LRblock[0] if the cblk is compressed.

Definition at line 260 of file solver.h.

References solver_cblk_s::cblktype.

Referenced by cpucblk_cgetrfsp1d(), cpucblk_chetrfsp1d(), cpucblk_cpotrfsp1d(), cpucblk_cpxtrfsp1d(), cpucblk_csytrfsp1d(), cpucblk_dgetrfsp1d(), cpucblk_dpotrfsp1d(), cpucblk_dsytrfsp1d(), cpucblk_sgetrfsp1d(), cpucblk_spotrfsp1d(), cpucblk_ssytrfsp1d(), cpucblk_zgetrfsp1d(), cpucblk_zhetrfsp1d(), cpucblk_zpotrfsp1d(), cpucblk_zpxtrfsp1d(), and cpucblk_zsytrfsp1d().

◆ cblk_getdataU()

static void* cblk_getdataU ( const SolverCblk cblk)
inlinestatic

Get the pointer to the data associated to the upper part of the cblk.

Parameters
[in]cblkThe pointer to the column block.
Returns
lcoeftab if the cblk is not compressed. fblokptr->LRblock[1] if the cblk is compressed.

Definition at line 272 of file solver.h.

References solver_cblk_s::cblktype.

Referenced by cpucblk_cgetrfsp1d(), cpucblk_chetrfsp1d(), cpucblk_csytrfsp1d(), cpucblk_dgetrfsp1d(), cpucblk_dsytrfsp1d(), cpucblk_sgetrfsp1d(), cpucblk_ssytrfsp1d(), cpucblk_zgetrfsp1d(), cpucblk_zhetrfsp1d(), and cpucblk_zsytrfsp1d().

◆ cblk_getdata()

static void* cblk_getdata ( const SolverCblk cblk,
pastix_coefside_t  side 
)
inlinestatic

Get the pointer to the data associated to the side part of the cblk.

Parameters
[in]cblkThe pointer to the column block.
[in]sideside of the data needed. PastixLCoef for the lower part PastixUCoef for the upper part.
Returns
[lu]coeftab if the cblk is not compressed. fblokptr->LRblock[side] if the cblk is compressed.

Definition at line 287 of file solver.h.

References solver_cblk_s::cblktype.

◆ cblk_bloknbr()

static pastix_int_t cblk_bloknbr ( const SolverCblk cblk)
inlinestatic

Compute the number of blocks in a column block.

Parameters
[in]cblkThe pointer to the column block.
Returns
The number of blocks in the cblk including the diagonal block.

Definition at line 301 of file solver.h.

References solver_cblk_s::fblokptr.

◆ blok_rownbr()

static pastix_int_t blok_rownbr ( const SolverBlok blok)
inlinestatic

◆ blok_rownbr_ext()

static pastix_int_t blok_rownbr_ext ( const SolverBlok blok)
inlinestatic

Compute the number of rows of a contiguous block in front of the same cblk.

Parameters
[in]blokThe pointer to the block.
Returns
The number of rows in the block.

Definition at line 325 of file solver.h.

References blok_rownbr().

Referenced by fct_blok_cgemmsp_cost(), fct_blok_ctrsmsp_cost(), fct_blok_dgemmsp_cost(), fct_blok_dtrsmsp_cost(), fct_blok_sgemmsp_cost(), fct_blok_strsmsp_cost(), fct_blok_zgemmsp_cost(), and fct_blok_ztrsmsp_cost().

◆ blok_is_preselected()

static int blok_is_preselected ( const SolverCblk cblk,
const SolverBlok blok,
const SolverCblk fcbk 
)
inlinestatic

Return if a block is preselected as either part of the projection, or as a sub-diagonal block.

Parameters
[in]cblkThe pointer to the cblk to which belong the block.
[in]blokThe pointer to the block.
[in]fcbkThe pointer to the facing cblk of the block.
Returns
True is the block is preselected, false otherwise.

Definition at line 350 of file solver.h.

References solver_cblk_s::fblokptr, solver_cblk_s::selevtx, and solver_cblk_s::sndeidx.

◆ cblk_rownbr()

static pastix_int_t cblk_rownbr ( const SolverCblk cblk)
inlinestatic

Compute the number of rows of a column block.

Parameters
[in]cblkThe pointer to the column block.
Returns
The number of rows in the column block.

Definition at line 367 of file solver.h.

References blok_rownbr(), and solver_cblk_s::fblokptr.

◆ stealQueue()

static pastix_int_t stealQueue ( SolverMatrix *  solvmtx,
int  rank,
int *  dest,
int  nbthreads 
)
inlinestatic

Task stealing method.

Parameters
[in,out]solvmtxThe pointer to the solverMatrix.
[in]rankRank of the computeQueue.
[in,out]destRank of the stolen queue.
[in]nbthreadsTotal amount of threads in the node.
Returns
The concerned cblk if it exists. -1 otherwhise.

Definition at line 391 of file solver.h.

References pqueuePop().

◆ is_block_inside_fblock()

static int is_block_inside_fblock ( const SolverBlok blok,
const SolverBlok fblok 
)
inlinestatic

Check if a block is included inside another one.

Indicate if a blok is included inside an other block. i.e. indicate if the row range of the first block is included in the one of the second.

Parameters
[in]blokThe block that is tested for inclusion.
[in]fblokThe block that is suppose to include the first one.
Return values
trueif the first block is included in the second one.
falseif the first block is not included in the second one.

Definition at line 426 of file solver.h.

References solver_blok_s::frownum, and solver_blok_s::lrownum.

Referenced by cpucblk_cgeaddsp1d(), cpucblk_dgeaddsp1d(), cpucblk_sgeaddsp1d(), and cpucblk_zgeaddsp1d().