90 pastix_graph_t *graph;
96#if defined( PASTIX_DISTRIBUTED )
108 if ( pastix_data == NULL ) {
109 pastix_print_error(
"pastix_subtask_symbfact: wrong pastix_data parameter" );
112 iparm = pastix_data->
iparm;
113 dparm = pastix_data->
dparm;
115 if ( !( pastix_data->
steps & STEP_ORDERING ) ) {
116 pastix_print_error(
"pastix_subtask_symbfact: pastix_subtask_order() has to be called before "
117 "calling this function" );
121 procnum = pastix_data->
procnum;
122 graph = pastix_data->
graph;
125 if ( graph == NULL ) {
126 pastix_print_error(
"pastix_subtask_symbfact: the pastix_data->graph field has not been "
127 "initialized, pastix_subtask_order should be called first" );
130 if ( ordemesh == NULL ) {
131 pastix_print_error(
"pastix_subtask_symbfact: the pastix_data->ordemesh field has not been "
132 "initialized, pastix_subtask_order should be called first" );
144 pastix_print( procnum, 0, OUT_STEP_FAX );
148 if ( pastix_data->
symbmtx == NULL ) {
170#if defined( COMPACT_SMX )
172 pastix_print_warning(
"COMPACT_SMX only works with incomplete factorization, force ILU(%d) "
183#if defined( PASTIX_DISTRIBUTED )
184 if ( graph->loc2glob != NULL ) {
185 cscd2csc_int( graph->n,
219 pastix_print( procnum, 0, OUT_FAX_METHOD,
"Fax Direct" );
228 pastix_print( procnum, 0, OUT_FAX_METHOD,
"Fax ILU(k)" );
249 if ( ordemesh->
selevtx != NULL ) {
252 int8_t *selevtx = ordemesh->
selevtx;
255 for(i=0; i<symbmtx->
cblknbr; i++, cblk++, selevtx++ ) {
256 cblk->selevtx = *selevtx;
260#if !defined( NDEBUG )
262 pastix_print_error(
"pastix_subtask_symbfact: pastixOrderCheck on final ordering after symbolic "
263 "factorization failed !!!" );
267 pastix_print_error(
"pastix_subtask_symbfact: symbolCheck on final symbol matrix failed !!!" );
277 if ( procnum == 0 ) {
290#if defined( PASTIX_SYMBOL_DUMP_SYMBMTX )
293 if ( procnum == 0 ) {
319 if ( procnum == 0 ) {
325 (double)( nnz ) / (double)( ( pastix_data->
csc )->gnnz );
327 pastix_print( procnum, 0, OUT_FAX_SUMMARY,
328 nnz, fillin, clockVal(timer) );
334 pastix_data->
steps &= ~( STEP_ANALYSE |
340 pastix_data->
steps |= STEP_SYMBFACT;
BEGIN_C_DECLS typedef int pastix_int_t
int pastix_subtask_symbfact(pastix_data_t *pastix_data)
Computes the symbolic factorization step.
FILE * pastix_fopenw(const char *dirname, const char *filename, const char *mode)
Open a file in the unique directory of the pastix instance.
void pastix_gendirectories(pastix_data_t *pastix_data)
Generate a unique temporary directory to store output files.
FILE * pastix_fopen(const char *filename)
Open a file in the current directory in read only mode.
@ PASTIX_ERR_BADPARAMETER
int graphGatherInPlace(pastix_graph_t *graph)
This routine gather a distributed graph on each node in place.
void graphBase(pastix_graph_t *graph, pastix_int_t baseval)
Rebase the graph to the given value.
void pastixOrderBase(pastix_order_t *ordeptr, pastix_int_t baseval)
This routine sets the base of the given ordering structure to the given base value.
int pastixOrderCheck(const pastix_order_t *ordeptr)
This routine checks the correctness of the ordering structure.
void pastixSymbolRealloc(symbol_matrix_t *symbptr)
Reallocate the data structure to optimize the memory alignment.
void pastixSymbolInit(const pastix_graph_t *graph, const pastix_order_t *order, symbol_matrix_t *symbptr)
Initialize the symbol structure.
void pastixSymbolBase(symbol_matrix_t *symbptr, const pastix_int_t baseval)
Sets the base of the given symbol matrix structure to the given base value.
void pastixSymbolPrintStats(const symbol_matrix_t *symbptr)
Print statistical information about the symbolic matrix structure.
int pastixSymbolDraw(const symbol_matrix_t *symbptr, FILE *stream)
Export the symbol structure in a PostScript format.
void pastixSymbolBuildRowtab(symbol_matrix_t *symbptr)
Construct the browtab array that stores the blocks in a CSR way.
size_t pastixSymbolGetNNZ(const symbol_matrix_t *symbptr)
Computes the number of non-zero elements in L.
int pastixSymbolSave(const symbol_matrix_t *symbptr, FILE *stream)
Save the given block matrix structure to the given stream.
int pastixSymbolLoad(symbol_matrix_t *symbptr, FILE *stream)
Load the given block matrix structure from the given stream.
void pastixSymbolGetFlops(const symbol_matrix_t *symbmtx, pastix_coeftype_t flttype, pastix_factotype_t factotype, double *thflops, double *rlflops)
Computes the number of theoretical and real flops.
int pastixSymbolFaxDirect(symbol_matrix_t *symbptr, const pastix_graph_t *graphA, const pastix_order_t *ordeptr)
Compute the block symbolic factorization of the given matrix graph according to the given vertex orde...
void pastixSymbolExit(symbol_matrix_t *symbptr)
Free the content of symbolic matrix.
int pastixSymbolCheck(const symbol_matrix_t *symbptr)
Checks the consistency of the given symbolic block matrix.
int pastixSymbolFaxILUk(symbol_matrix_t *symbptr, pastix_int_t levelk, const pastix_graph_t *graphA, const pastix_order_t *ordeptr)
Create the symbol matrix from the graph of the non zero pattern of the factorized matrix and the supe...
Symbol column block structure.
pastix_order_t * ordemesh
symbol_matrix_t * symbmtx
Main PaStiX data structure.