Go to the documentation of this file.
45 #define CBLK_FANIN (1 << 0)
46 #define CBLK_LAYOUT_2D (1 << 1)
47 #define CBLK_TASKS_2D (1 << 2)
48 #define CBLK_COMPRESSED (1 << 3)
49 #define CBLK_IN_SCHUR (1 << 4)
50 #define CBLK_IN_LAST (1 << 5)
51 #define CBLK_RECV (1 << 6)
96 #if defined(PASTIX_DYNSCHED)
101 #define GPUID_UNDEFINED -2
102 #define GPUID_NONE -1
200 #if defined(PASTIX_WITH_PARSEC)
203 #if defined(PASTIX_WITH_STARPU)
208 pastix_int_t offdmax;
209 pastix_int_t gemmmax;
210 pastix_int_t blokmax;
215 pastix_int_t procnbr;
216 pastix_int_t thrdnbr;
217 pastix_int_t bublnbr;
220 Task * restrict tasktab;
221 pastix_int_t tasknbr;
222 pastix_int_t ** ttsktab;
223 pastix_int_t * ttsknbr;
226 pastix_int_t *selevtx;
237 PASTIX_Comm solv_comm;
246 static inline pastix_int_t
288 return cblk->
cblktype & CBLK_COMPRESSED
300 static inline pastix_int_t
303 return (cblk+1)->fblokptr - cblk->
fblokptr + 1;
312 static inline pastix_int_t
324 static inline pastix_int_t
329 while( (blok[0].lcblknm == blok[1].lcblknm) &&
330 (blok[0].fcblknm == blok[1].fcblknm) )
354 int is_preselected = ( fcbk->
selevtx );
355 int is_firstoffd = ( blok == (cblk->
fblokptr + 1) );
357 return ( fcbk->
sndeidx == cblk->
sndeidx ) && ( is_preselected | is_firstoffd );
366 static inline pastix_int_t
369 pastix_int_t rownbr = 0;
390 static inline pastix_int_t
398 pastix_int_t cblknum = -1;
401 assert( solvmtx->computeQueue[ rk ] );
402 stoleQueue = solvmtx->computeQueue[ rk ];
403 if( (cblknum =
pqueuePop(stoleQueue)) != -1 ){
407 rk = (rk + 1)%nbthreads;
429 # if defined(NAPA_SOPALIN)
462 pastix_int_t is_dbg );
470 SolverMatrix *
solverCopy (
const SolverMatrix *solvptr,
477 const char *directory );
484 SolverMatrix *solvmtx,
491 struct SolverBackup_s;
492 typedef struct SolverBackup_s SolverBackup_t;
int solverSave(const SolverMatrix *solvptr, FILE *stream)
Save a solver matrix structure into a file.
static pastix_int_t cblk_rownbr(const SolverCblk *cblk)
Compute the number of rows of a column block.
void solverBackupExit(SolverBackup_t *b)
Free the solver backup data structure.
pastix_int_t *restrict browtab
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.
struct solver_cblk_s SolverCblk
Solver column block structure.
Structure to define the type of function to use for the low-rank kernels and their parameters.
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.
void solverRequestExit(SolverMatrix *solvmtx)
Free the arrays related to the requests.
Solver column block structure.
void solverInit(SolverMatrix *solvmtx)
Initialize the solver structure.
enum pastix_coefside_e pastix_coefside_t
Data blocks used in the kernel.
void solverRecvExit(SolverMatrix *solvmtx)
Free the array linked to pending reception.
Solver recv column block structure.
The block low-rank structure to hold a matrix in low-rank form.
SolverCblk *restrict cblktab
pastix_int_t volatile ctrbcnt
The type and structure definitions.
struct solver_cblk_recv_s solver_cblk_recv_t
Solver recv column block structure.
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.
static int is_block_inside_fblock(const SolverBlok *blok, const SolverBlok *fblok)
Check if a block is included inside another one.
volatile int32_t nbpivots
Control structure for the simulation.
StarPU descriptor for the vectors linked to a given sparse matrix.
The task structure for the numerical factorization.
void solverPrintStats(const SolverMatrix *solvptr)
Print statistical information about the solver matrix structure.
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.
static pastix_int_t cblk_bloknbr(const SolverCblk *cblk)
Compute the number of blocks in a column block.
int solverDraw(const SolverMatrix *solvptr, FILE *stream, int verbose, const char *directory)
Writes a PostScript picture of the low-rank solver matrix.
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.
enum pastix_factotype_e pastix_factotype_t
Factorization algorithms available for IPARM_FACTORIZATION parameter.
void solverRecvInit(pastix_coefside_t side, SolverMatrix *solvmtx, int flttype)
Allocate the reception buffer, and initiate the first persistant reception.
solver_blok_recv_t bloktab[1]
void solverRequestInit(SolverMatrix *solvmtx)
Instanciate the arrays for the requests according to the scheduler.
int solverCheck(const SolverMatrix *solvmtx)
Checks the consistency of the given solver matrix structure.
void solverExit(SolverMatrix *solvmtx)
Free the content of the solver matrix structure.
Solver recv block structure.
SolverBlok *restrict bloktab
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.
struct task_s Task
The task structure for the numerical factorization.
pastix_atomic_lock_t lock
SolverMatrix * solverCopy(const SolverMatrix *solvptr, int flttype)
Generate a copy of a solver matrix structure.
Solver column block structure.
pastix_lrblock_t * LRblock[2]
int solverLoad(SolverMatrix *solvptr, FILE *stream)
Load a solver matrix structure from a file.
void solverRealloc(SolverMatrix *solvptr)
Realloc in a contiguous way a given solver structure.
SolverBackup_t * solverBackupInit(const SolverMatrix *solvmtx)
Initialize the backup structure.
static pastix_int_t pqueuePop(pastix_queue_t *q)
Pop the head of the queue whithout returning the keys.
int solverBackupRestore(SolverMatrix *solvmtx, const SolverBackup_t *b)
Restore initial values.
pastix_factotype_t factotype
static void * cblk_getdataU(const SolverCblk *cblk)
Get the pointer to the data associated to the upper part of the cblk.
pastix_atomic_lock_t reqlock
StarPU descriptor stucture for the sparse matrix.
static void * cblk_getdataL(const SolverCblk *cblk)
Get the pointer to the data associated to the lower part of the cblk.
static pastix_int_t stealQueue(SolverMatrix *solvmtx, int rank, int *dest, int nbthreads)
Task stealing method.
struct solver_blok_s SolverBlok
Solver block structure.
struct solver_blok_recv_s solver_blok_recv_t
Solver recv block structure.