51 for(i=0; i<extracblk->
cblknbr;i++)
86 if ( extracblk->
sizcblk == 0 ) {
101 extracblk->
sizcblk += extrasize;
156 if ( extracblk->
sizcblk > 0 ) {
157 memFree_null( extracblk->
sptcblk );
158 memFree_null( extracblk->
sptcbnb );
159 memFree_null( extracblk->
cblktab );
197 extracblk->
cblktab[ curcblk ].selevtx = selevtx;
235 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
236 Cand *oldcand = *candtab;
246 if( extracblk->
addcblk == 0 ) {
260 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
265 newcand[-1] = oldcand[-1];
285 for(i=0; i<oldsymb->
cblknbr; i++)
296 addblok += (((sptcbnbw+1) * sptcbnbw) / 2) - 1;
297 for(j=fbloknum+1; j<lbloknum; j++)
311 for(k = 0; k < sptfcbnb; k++, newfcblk++)
314 if ( frownum > newfcblk->
lcolnum ) {
319 if ( lrownum < newfcblk->fcolnum ) {
323 assert( frownum <= lrownum );
336 addblok += sptcbnbw * sptcbnbh - 1;
351 if ( nbcblk2copy > 0 ) {
353 memcpy( newsymb->
cblktab + newnum[ lastcblksplit ],
354 oldsymb->
cblktab + lastcblksplit,
357 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
358 memcpy( newcand + newnum[ lastcblksplit ],
359 oldcand + lastcblksplit,
360 nbcblk2copy *
sizeof(
Cand) );
365 assert( (sptcblk >= 0) && (sptcblk <= extracblk->curcblk) );
366 memcpy( newsymb->
cblktab + newcblknum,
371 for(j=0; j<sptcbnbw; j++, sptcblk++) {
372 extranewnum[sptcblk] = newcblknum+j;
374 assert( (extranewnum[sptcblk] >= 0) &&
375 (extranewnum[sptcblk] < newsymb->
cblknbr) );
377 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
378 memcpy( newcand + extranewnum[ sptcblk ],
379 oldcand + i,
sizeof(
Cand) );
386 newnum[i+1] += newcblknum;
391 if ( lastcblksplit < (oldsymb->
cblknbr-1) )
395 memcpy( newsymb->
cblktab + newnum[ lastcblksplit ],
396 oldsymb->
cblktab + lastcblksplit,
399 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
400 memcpy( newcand + newnum[ lastcblksplit ],
401 oldcand + lastcblksplit,
402 nbcblk2copy *
sizeof(
Cand) );
406 #if defined(PASTIX_BLEND_PROPMAP_2STEPS)
421 #if defined(PASTIX_SYMBOL_DUMP_SYMBMTX)
424 for(i=0; i<oldsymb->
cblknbr; i++)
431 for(j=0; j<sptcbnbw; j++, curcblknum++, curcblk++)
436 #if defined(PASTIX_SYMBOL_DUMP_SYMBMTX)
437 cblk->split_cblk = sptcbnbw-j-1;
442 for(k=0; k<(sptcbnbw-j); k++, curbloknum++, curblok++)
447 curblok->
fcblknm = curcblknum + k;
452 for(k=fbloknum+1; k<lbloknum; k++)
466 assert( newfcblknum != -1 );
467 assert( newfcblk != NULL );
470 for(l=0; l<sptfcbnb; l++, newfcblk++)
473 if ( frownum > newfcblk->
lcolnum ) {
478 if ( lrownum < newfcblk->fcolnum ) {
482 assert( frownum <= lrownum );
483 assert( frownum >= newfcblk->
fcolnum );
488 curblok->
fcblknm = newfcblknum + l;
489 curblok++; curbloknum++;
499 curblok->
fcblknm = newnum[fcblknum];
500 curblok++; curbloknum++;
506 assert(curcblknum == newsymb->
cblknbr);
507 assert(curbloknum == newsymb->
bloknbr);
513 memFree_null(oldsymb);
514 memFree_null(newnum);
515 memFree_null(extranewnum);
520 curcblk[0].
bloknum = curbloknum;
BEGIN_C_DECLS typedef int pastix_int_t
Cand * candInit(pastix_int_t cblknbr)
Initialize the candtab array with default values.
void candExit(Cand *candtab)
Exit and free the candtab structure given.
Processor candidate group to own a column blok.
void extraCblkAdd(ExtraCblk_t *extracblk, pastix_int_t fcolnum, pastix_int_t lcolnum, int8_t selevtx)
Add a new additional cblk defined by its first and last columns.
static pastix_int_t extraCblkInc(ExtraCblk_t *extracblk)
Increment the number of extra cblk that can be stored.
void extraCblkExit(ExtraCblk_t *extracblk)
Free the extracblk structure.
void extraCblkMerge(const ExtraCblk_t *extracblk, symbol_matrix_t *newsymb, Cand **candtab)
Merge the existing symbol structure with the additional information from the extracblk structure.
void extraCblkInit(pastix_int_t cblknbr, ExtraCblk_t *extracblk)
Initialize the extracblk structure.
static void extraCblkAlloc(ExtraCblk_t *extracblk)
Allocate the extracblk structure.
void pastixSymbolBuildRowtab(symbol_matrix_t *symbptr)
Construct the browtab array that stores the blocks in a CSR way.
void pastixSymbolExit(symbol_matrix_t *symbptr)
Free the content of symbolic matrix.
Symbol column block structure.