37 #ifndef __SUPERLU_dSP_DEFS 38 #define __SUPERLU_dSP_DEFS 43 #if defined ( _SOLARIS ) 50 #elif defined ( _PTHREAD ) 52 #elif defined ( _CRAY ) 59 #include "supermatrix.h" 61 #include "pxgstrf_synch.h" 63 #if ( MACH==DEC || MACH==PTHREAD ) 64 typedef pthread_mutex_t mutex_t;
65 #elif ( MACH==SGI || MACH==ORIGIN ) 67 #elif ( MACH==CRAY_PVP ) 74 typedef enum {NO, YES} yes_no_t;
75 typedef enum {NOTRANS, TRANS, CONJ} trans_t;
76 typedef enum {FACTORED, DOFACT, EQUILIBRATE} fact_t;
77 typedef enum {NOEQUIL, ROW, COL, BOTH} equed_t;
78 typedef enum {LUSUP, UCOL, LSUB, USUB} MemType;
214 int dynamic_snode_bound;
337 double diag_pivot_thresh;
367 volatile int tasks_remain;
371 volatile int *spin_locks;
372 pan_status_t *pan_status;
417 #define SUPER_REP(s) ( xsup_end[s]-1 ) 418 #define SUPER_FSUPC(s) ( xsup[s] ) 419 #define SINGLETON(s) ( (xsup_end[s] - xsup[s]) == 1 ) 420 #define ISPRUNED(j) ( ispruned[j] ) 421 #define STATE(j) ( pxgstrf_shared->pan_status[j].state ) 422 #define DADPANEL(j) ( etree[j + pxgstrf_shared->pan_status[j].size-1] ) 425 #define TIC(t) t = SuperLU_timer_() 426 #define TOC(t2, t1) t2 = SuperLU_timer_() - t1 446 pdgssv(
int, SuperMatrix *,
int *,
int *, SuperMatrix *, SuperMatrix *,
447 SuperMatrix *,
int *);
450 equed_t *,
double *,
double *, SuperMatrix *, SuperMatrix *,
451 SuperMatrix *, SuperMatrix *,
457 extern void dgsequ (SuperMatrix *,
double *,
double *,
double *,
458 double *,
double *,
int *);
459 extern void dlaqgs (SuperMatrix *,
double *,
double *,
double,
460 double,
double, equed_t *);
461 extern void dgscon (
char *, SuperMatrix *, SuperMatrix *,
462 double,
double *,
int *);
463 extern double dPivotGrowth(
int, SuperMatrix *,
int *,
464 SuperMatrix *, SuperMatrix *);
465 extern void dgsrfs (trans_t, SuperMatrix *, SuperMatrix *, SuperMatrix *,
466 int *,
int *, equed_t,
double *,
double *, SuperMatrix *,
467 SuperMatrix *,
double *,
double *,
Gstat_t *,
int *);
468 extern int sp_dtrsv (
char *,
char *,
char *, SuperMatrix *, SuperMatrix *,
470 extern int sp_dgemv (
char *,
double, SuperMatrix *,
double *,
471 int,
double,
double *,
int);
472 extern int sp_dgemm (
char *,
int,
int,
int,
double, SuperMatrix *,
473 double *,
int,
double,
double *,
int);
478 extern void pxgstrf_scheduler (
const int,
const int,
const int *,
482 extern int ParallelFinalize ();
483 extern int queue_init (queue_t *,
int);
484 extern int queue_destroy (queue_t *);
488 extern int Enqueue (queue_t *, qitem_t);
489 extern int Dequeue (queue_t *, qitem_t *);
490 extern int NewNsuper (
const int, mutex_t *,
int *);
491 extern int lockon(
int *);
492 extern void PartDomains(
const int,
const float, SuperMatrix *,
int *,
int *);
495 dCreate_CompCol_Matrix(SuperMatrix *,
int,
int,
int,
double *,
496 int *,
int *, Stype_t, Dtype_t, Mtype_t);
498 dCreate_CompCol_Permuted(SuperMatrix *,
int,
int,
int,
double *,
int *,
499 int *,
int *, Stype_t, Dtype_t, Mtype_t);
501 dCopy_CompCol_Matrix(SuperMatrix *, SuperMatrix *);
503 dCreate_Dense_Matrix(SuperMatrix *,
int,
int,
double *,
int,
504 Stype_t, Dtype_t, Mtype_t);
506 dCreate_SuperNode_Matrix(SuperMatrix *,
int,
int,
int,
double *,
int *,
int *,
507 int *,
int *,
int *, Stype_t, Dtype_t, Mtype_t);
509 dCreate_SuperNode_Permuted(SuperMatrix *,
int,
int,
int,
double *,
510 int *,
int *,
int *,
int *,
int *,
int *,
511 int *,
int *, Stype_t, Dtype_t, Mtype_t);
513 dCopy_Dense_Matrix(
int,
int,
double *,
int,
double *,
int);
515 extern void Destroy_SuperMatrix_Store(SuperMatrix *);
516 extern void Destroy_CompCol_Matrix(SuperMatrix *);
517 extern void Destroy_CompCol_Permuted(SuperMatrix *);
518 extern void Destroy_CompCol_NCP(SuperMatrix *);
519 extern void Destroy_SuperNode_Matrix(SuperMatrix *);
520 extern void Destroy_SuperNode_SCP(SuperMatrix *);
522 extern void dallocateA (
int,
int,
double **,
int **,
int **);
523 extern void StatAlloc (
const int,
const int,
const int,
const int,
Gstat_t*);
524 extern void StatInit (
const int,
const int,
Gstat_t*);
525 extern void StatFree (
Gstat_t*);
526 extern void get_perm_c(
int, SuperMatrix *,
int *);
529 extern int sp_coletree (
int *,
int *,
int *,
int,
int,
int *);
532 extern int qrnzcnt (
int,
int,
int *,
int *,
int *,
int *,
int *,
int *,
533 int *,
int *,
int *,
int *);
534 extern int DynamicSetMap(
const int,
const int,
const int,
pxgstrf_shared_t*);
536 SuperMatrix *, SuperMatrix *,
Gstat_t *,
int *);
537 extern void pdgstrf_init (
int, yes_no_t,
int,
int,
double, yes_no_t,
double,
538 int *,
int *,
void *,
int, SuperMatrix *,
541 pdgstrf_thread_init (SuperMatrix *, SuperMatrix *, SuperMatrix *,
545 SuperMatrix *,
int *, SuperMatrix *, SuperMatrix *);
550 pdgstrf_factor_snode (
const int,
const int, SuperMatrix *,
const double,
551 yes_no_t *,
int *,
int *,
int*,
int*,
int*,
int*,
554 pxgstrf_mark_busy_descends (
int,
int,
int *,
pxgstrf_shared_t *,
int *,
int *);
555 extern int pdgstrf_snode_dfs (
const int,
const int,
const int,
const int *,
556 const int *,
const int *,
int*,
int *,
int *,
558 extern int pdgstrf_snode_bmod (
const int,
const int,
const int,
const int,
560 extern void pdgstrf_panel_dfs (
const int,
const int,
const int,
const int,
561 SuperMatrix *,
int*,
int*,
int*,
int*,
int*,
562 int*,
int*,
int*,
int*,
int*,
int*,
int*,
int*,
564 extern void pdgstrf_panel_bmod (
const int,
const int,
const int,
const int,
565 const int,
int*,
int*,
int*,
int*,
int*,
int*,
566 int*,
int*,
double*,
double*,
568 extern void pdgstrf_bmod1D (
const int,
const int,
const int,
const int,
569 const int,
const int,
const int,
int,
int,
570 int *,
int *,
int *,
int *,
double *,
double *,
572 extern void pdgstrf_bmod2D (
const int,
const int,
const int,
const int,
573 const int,
const int,
const int,
int,
int,
574 int *,
int *,
int *,
int *,
double *,
double *,
576 extern void pdgstrf_bmod1D_mv2 (
const int,
const int,
const int,
const int,
577 const int,
const int,
const int,
int,
int,
578 int *,
int *,
int *,
int *,
double *,
580 extern void pdgstrf_bmod2D_mv2 (
const int,
const int,
const int,
const int,
581 const int,
const int,
const int,
int,
int,
582 int *,
int *,
int *,
int *,
double *,
double *,
584 extern void pxgstrf_super_bnd_dfs (
const int,
const int,
const int,
585 const int,
const int, SuperMatrix*,
586 int*,
int*,
int*,
int *,
int *,
int *,
588 extern int pdgstrf_column_dfs(
const int,
const int,
const int,
const int,
589 int*,
int*,
int*,
int,
int*,
int*,
int*,
int*,
591 extern int pdgstrf_column_bmod(
const int,
const int,
const int,
const int,
592 int*,
int*,
double*,
double*,
594 extern int pdgstrf_pivotL (
const int,
const int,
const double, yes_no_t*,
596 extern int pdgstrf_copy_to_ucol (
const int,
const int,
const int,
const int *,
597 const int *,
const int *,
double*,
599 extern void pxgstrf_pruneL (
const int,
const int *,
const int,
const int,
600 const int *,
const int *,
int*,
int *,
602 extern void pxgstrf_resetrep_col (
const int,
const int *,
int *);
603 extern void countnz (
const int,
int*,
int *,
int *,
GlobalLU_t *);
604 extern void fixupL (
const int,
const int *,
GlobalLU_t *);
605 extern void compressSUP (
const int,
GlobalLU_t *);
606 extern int spcoletree (
int *,
int *,
int *,
int,
int,
int *);
607 extern int *TreePostorder (
int,
int *);
608 extern void dreadmt (
int *,
int *,
int *,
double **,
int **,
int **);
609 extern void dreadhb (
int *,
int *,
int *,
double **,
int **,
int **);
610 extern void dGenXtrue (
int,
int,
double *,
int);
611 extern void dFillRHS (trans_t,
int,
double *,
int,
612 SuperMatrix *, SuperMatrix *);
613 extern void dgstrs (trans_t, SuperMatrix *, SuperMatrix*,
614 int*,
int*, SuperMatrix*,
Gstat_t *,
int *);
622 extern int pdgstrf_memory_use(
const int,
const int,
const int);
623 extern int pdgstrf_WorkInit (
int,
int,
int **,
double **);
624 extern void pxgstrf_SetIWork (
int,
int,
int *,
int **,
int **,
int **,
625 int **,
int **,
int **,
int **);
626 extern void pdgstrf_SetRWork (
int,
int,
double *,
double **,
double **);
627 extern void pdgstrf_WorkFree (
int *,
double *,
GlobalLU_t *);
628 extern int pdgstrf_MemXpand (
int,
int, MemType,
int *,
GlobalLU_t *);
630 extern int *intMalloc (
int);
631 extern int *intCalloc (
int);
632 extern double *doubleMalloc(
int);
633 extern double *doubleCalloc(
int);
634 extern int memory_usage ();
635 extern int superlu_QuerySpace (
int, SuperMatrix *, SuperMatrix *,
int,
637 extern int Glu_alloc (
const int,
const int,
const int,
const MemType,
643 extern double SuperLU_timer_();
644 extern int sp_ienv(
int);
645 extern double dlamch_();
646 extern int lsame_(
char *,
char *);
647 extern int xerbla_(
char *,
int *);
648 extern void superlu_abort_and_exit(
char *);
649 extern void ifill(
int *,
int,
int);
650 extern void dfill(
double *,
int,
double);
651 extern void inf_norm_error(
int, SuperMatrix *,
double *);
652 extern void dstat_allocate(
int);
653 extern void snode_profile(
int,
int *);
654 extern void super_stats(
int,
int *,
int *);
655 extern void panel_stats(
int,
int,
int *,
Gstat_t *);
656 extern void PrintSumm(
char *,
int,
int,
int);
658 double,
double,
double *,
double *,
char *);
663 extern void print_lu_col(
int,
char *,
int,
int,
int,
int *,
GlobalLU_t *);
664 extern void print_panel_seg(
int,
int,
int,
int,
int *,
int *);
665 extern void dcheck_zero_vec(
int,
char *,
int,
double *);
666 extern void check_repfnz(
int,
int,
int,
int *);
Definition: pdsp_defs.h:330
Definition: pdsp_defs.h:394
Definition: SuperLU_MT_util.h:189
Definition: pdsp_defs.h:406
Definition: pdsp_defs.h:400
Definition: SuperLU_MT_util.h:210
Definition: pdsp_defs.h:386
Definition: pdsp_defs.h:181
Definition: pdsp_defs.h:363