11153da11SBarry Smith 2af0996ceSBarry Smith #include <petsc/private/matimpl.h> 31153da11SBarry Smith 40f8fb01aSBarry Smith const char *MatOptions_Shifted[] = {"UNUSED_NONZERO_LOCATION_ERR", 592d4d306SBarry Smith "ROW_ORIENTED", 60f8fb01aSBarry Smith "NOT_A_VALID_OPTION", 74e0d8c25SBarry Smith "SYMMETRIC", 84e0d8c25SBarry Smith "STRUCTURALLY_SYMMETRIC", 98c78258cSHong Zhang "FORCE_DIAGONAL_ENTRIES", 104e0d8c25SBarry Smith "IGNORE_OFF_PROC_ENTRIES", 1192d4d306SBarry Smith "USE_HASH_TABLE", 1292d4d306SBarry Smith "KEEP_NONZERO_PATTERN", 1392d4d306SBarry Smith "IGNORE_ZERO_ENTRIES", 1492d4d306SBarry Smith "USE_INODES", 154e0d8c25SBarry Smith "HERMITIAN", 164e0d8c25SBarry Smith "SYMMETRY_ETERNAL", 170f8fb01aSBarry Smith "NEW_NONZERO_LOCATION_ERR", 1892d4d306SBarry Smith "IGNORE_LOWER_TRIANGULAR", 1992d4d306SBarry Smith "ERROR_LOWER_TRIANGULAR", 2092d4d306SBarry Smith "GETROW_UPPERTRIANGULAR", 2192d4d306SBarry Smith "SPD", 2292d4d306SBarry Smith "NO_OFF_PROC_ZERO_ROWS", 2392d4d306SBarry Smith "NO_OFF_PROC_ENTRIES", 2492d4d306SBarry Smith "NEW_NONZERO_LOCATIONS", 250f8fb01aSBarry Smith "NEW_NONZERO_ALLOCATION_ERR", 261a2c6b5cSJunchao Zhang "SUBSET_OFF_PROC_ENTRIES", 271a2c6b5cSJunchao Zhang "SUBMAT_SINGLEIS", 281a2c6b5cSJunchao Zhang "STRUCTURE_ONLY", 291a2c6b5cSJunchao Zhang "SORTED_FULL", 301a2c6b5cSJunchao Zhang "FORM_EXPLICIT_TRANSPOSE", 31f4259b30SLisandro Dalcin "MatOption","MAT_",NULL}; 320f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2; 33f4259b30SLisandro Dalcin const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",NULL}; 34d60b7d5cSBarry Smith const char *const MatStructures[] = {"different nonzero pattern","subset nonzero pattern","same nonzero pattern","unknown nonzero pattern","MatStructure","MAT_STRUCTURE_",NULL}; 355e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 36f4259b30SLisandro Dalcin const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",NULL}; 37f4259b30SLisandro Dalcin const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",NULL}; 38f4259b30SLisandro Dalcin const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",NULL}; 39f4259b30SLisandro Dalcin const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",NULL}; 40290bbb0aSBarry Smith 41607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 423ca39a21SBarry Smith extern PetscErrorCode MatSolverTypeDestroy(void); 43ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 44b022a5c1SBarry Smith /*@C 4560154eb2SBarry Smith MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is 46b022a5c1SBarry Smith called from PetscFinalize(). 47b022a5c1SBarry Smith 48b022a5c1SBarry Smith Level: developer 49b022a5c1SBarry Smith 502a350339SBarry Smith .seealso: PetscFinalize(), MatInitializePackage() 51b022a5c1SBarry Smith @*/ 527087cfbeSBarry Smith PetscErrorCode MatFinalizePackage(void) 53b022a5c1SBarry Smith { 5423bebc0bSBarry Smith MatRootName nnames,names = MatRootNameList; 5501bebe75SBarry Smith PetscErrorCode ierr; 5601bebe75SBarry Smith 57b022a5c1SBarry Smith PetscFunctionBegin; 583ca39a21SBarry Smith ierr = MatSolverTypeDestroy();CHKERRQ(ierr); 5901bebe75SBarry Smith while (names) { 6001bebe75SBarry Smith nnames = names->next; 6123bebc0bSBarry Smith ierr = PetscFree(names->rname);CHKERRQ(ierr); 6201bebe75SBarry Smith ierr = PetscFree(names->sname);CHKERRQ(ierr); 6301bebe75SBarry Smith ierr = PetscFree(names->mname);CHKERRQ(ierr); 6401bebe75SBarry Smith ierr = PetscFree(names);CHKERRQ(ierr); 6501bebe75SBarry Smith names = nnames; 6601bebe75SBarry Smith } 6737e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatList);CHKERRQ(ierr); 6837e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatOrderingList);CHKERRQ(ierr); 6937e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatColoringList);CHKERRQ(ierr); 7037e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatPartitioningList);CHKERRQ(ierr); 7137e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatCoarsenList);CHKERRQ(ierr); 7223bebc0bSBarry Smith MatRootNameList = NULL; 73b022a5c1SBarry Smith MatPackageInitialized = PETSC_FALSE; 74b022a5c1SBarry Smith MatRegisterAllCalled = PETSC_FALSE; 75b022a5c1SBarry Smith MatOrderingRegisterAllCalled = PETSC_FALSE; 76b022a5c1SBarry Smith MatColoringRegisterAllCalled = PETSC_FALSE; 77b022a5c1SBarry Smith MatPartitioningRegisterAllCalled = PETSC_FALSE; 78b43b03e9SMark F. Adams MatCoarsenRegisterAllCalled = PETSC_FALSE; 794099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 804099cc6bSBarry Smith ierr = PetscFunctionListDestroy(&MatSeqAIJList);CHKERRQ(ierr); 814099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 82b022a5c1SBarry Smith PetscFunctionReturn(0); 83b022a5c1SBarry Smith } 84e5beb14aSMatthew Knepley 8542c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 863ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void); 8742c9c57cSBarry Smith #endif 88fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 893ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void); 9042c9c57cSBarry Smith #endif 91930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 92930e68a5SMark Adams PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_KOKKOS(void); 93930e68a5SMark Adams #endif 9472367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 953ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 9672367587SKarl Rupp #endif 9742c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 983ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 9942c9c57cSBarry Smith #endif 100d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 101d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 102d24d4204SJose E. Roman #endif 10342c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 1043ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 10542c9c57cSBarry Smith #endif 106570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 1073ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 10842c9c57cSBarry Smith #endif 10942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 1103ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 11142c9c57cSBarry Smith #endif 11208f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 1133ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 11408f5efcfSPieter Ghysels #endif 11542c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1163ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 11742c9c57cSBarry Smith #endif 11842c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1193ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 12042c9c57cSBarry Smith #endif 121418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1223ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 12342c9c57cSBarry Smith #endif 12442c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1253ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 12642c9c57cSBarry Smith #endif 127d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1283ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 129d305a81bSVasiliy Kozyrev #endif 13042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1313ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 13242c9c57cSBarry Smith #endif 13342c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1343ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 13542c9c57cSBarry Smith #endif 13642c9c57cSBarry Smith 137cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 138cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 139cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 140cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 141bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 142bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat,MatFactorType,Mat*); 143bfc799aaSStefano Zampini #endif 1443423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*); 145cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 14642c9c57cSBarry Smith 1471153da11SBarry Smith /*@C 1481153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1498a690491SBarry Smith from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate() 1508a690491SBarry Smith when using shared or static libraries. 1511153da11SBarry Smith 1521153da11SBarry Smith Level: developer 1531153da11SBarry Smith 1542a350339SBarry Smith .seealso: PetscInitialize(), MatFinalizePackage() 1551153da11SBarry Smith @*/ 156607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1571153da11SBarry Smith { 1581153da11SBarry Smith char logList[256]; 1598e81d068SLisandro Dalcin PetscBool opt,pkg; 160e94e781bSJacob Faibussowitsch 1611153da11SBarry Smith PetscErrorCode ierr; 1621153da11SBarry Smith 1631153da11SBarry Smith PetscFunctionBegin; 164b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 165b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1661755e90bSJacob Faibussowitsch /* Initialize subpackage */ 167607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1681153da11SBarry Smith /* Register Classes */ 1690700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1700700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 171335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 172b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1730700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 174b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1750700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1761153da11SBarry Smith /* Register Constructors */ 177607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 178607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 179607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 180607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 181607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1824099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1831153da11SBarry Smith /* Register Events */ 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 2010700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 20507cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID,&MAT_FactorFactS);CHKERRQ(ierr); 20607cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID,&MAT_FactorInvS);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 213f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2160700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2170700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2207dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2217dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2240700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 225f3ad2dabSStefano Zampini ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr); 226b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2270700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2280700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2290700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2300700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2320df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2330700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2340700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2350700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2360700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 237eb3ef3b2SHong Zhang ierr = PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve);CHKERRQ(ierr); 2380700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2390700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2407bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2417bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2420700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2430700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 24450647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 24550647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2466fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2476fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 24875648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 24975648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 250b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate",MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 25153cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2520700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 253011ea8aeSBarry Smith ierr = PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 25400e125f8SBarry Smith ierr = PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr); 2554ebed01fSBarry Smith 2564ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 257a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 258a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 259a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 260a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 261a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 262a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 263a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 264a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2654ebed01fSBarry Smith 2660700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2670700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2680700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2694ebed01fSBarry Smith 2700700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2710700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2728693ff2aSBarry Smith ierr = PetscLogEventRegister("MatCUSPARSCopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2737e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSCopyFr",MAT_CLASSID,&MAT_CUSPARSECopyFromGPU);CHKERRQ(ierr); 274da79fbbcSStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSSolAnl",MAT_CLASSID,&MAT_CUSPARSESolveAnalysis);CHKERRQ(ierr); 27585ba7357SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSGenT",MAT_CLASSID,&MAT_CUSPARSEGenerateTranspose);CHKERRQ(ierr); 2768693ff2aSBarry Smith ierr = PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 277bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyTo",MAT_CLASSID,&MAT_DenseCopyToGPU);CHKERRQ(ierr); 278bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyFrom",MAT_CLASSID,&MAT_DenseCopyFromGPU);CHKERRQ(ierr); 27937868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 2804ebed01fSBarry Smith 281367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 282367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 283367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 284367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 285367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 286367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2874f68377dSPeter Brune 288bfcc3627SStefano Zampini ierr = PetscLogEventRegister("MatSetPreallCOO",MAT_CLASSID,&MAT_PreallCOO);CHKERRQ(ierr); 289bfcc3627SStefano Zampini ierr = PetscLogEventRegister("MatSetValuesCOO",MAT_CLASSID,&MAT_SetVCOO);CHKERRQ(ierr); 290bfcc3627SStefano Zampini 291217044c2SLisandro Dalcin /* Mark non-collective events */ 292217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 293217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr); 294217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 2951153da11SBarry Smith /* Turn off high traffic events by default */ 2961153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 297217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr); 298217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 299e94e781bSJacob Faibussowitsch /* Process Info */ 300e94e781bSJacob Faibussowitsch { 301e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 302217044c2SLisandro Dalcin 303e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 304e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 305e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 306e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 307e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 308e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 309e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 310e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("mat", 7, classids);CHKERRQ(ierr); 3111153da11SBarry Smith } 312217044c2SLisandro Dalcin 3131153da11SBarry Smith /* Process summary exclusions */ 3148e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 3151153da11SBarry Smith if (opt) { 3168e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 317fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);} 318fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 319fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 320fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 321fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 322fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 323fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 3241153da11SBarry Smith } 32542c9c57cSBarry Smith 326c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3273ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3283ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3293ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3303ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 331c1619fb6SBarry Smith 3323ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3333ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3343ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3353ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 336c1619fb6SBarry Smith 3373423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3383423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3393423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3403423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3413423f386SBarry Smith 3429779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3433ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3443ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3453ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3463ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 347b5b72c8aSIrina Sokolova 3483ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3493ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3503ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3513ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 352191b95cbSRichard Tran Mills #endif 3532251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3542251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3552251f9d6SRichard Tran Mills 3563ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3573ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3583ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3593ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 360c1619fb6SBarry Smith 3613ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3623ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3633ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3643ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 365c1619fb6SBarry Smith 3663ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 3673ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 368c1619fb6SBarry Smith 3693ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3702a350339SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3713ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3724905a7bcSToby Isaac ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_QR,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 373bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 374bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 375bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 376*bf5a80bcSToby Isaac ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_QR,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 377bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 378bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 379*bf5a80bcSToby Isaac ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_QR,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 380bfc799aaSStefano Zampini #endif 381c1619fb6SBarry Smith 3823ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 383c1619fb6SBarry Smith 38442c9c57cSBarry Smith /* 38542c9c57cSBarry Smith Register the external package factorization based solvers 38642c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 38742c9c57cSBarry Smith */ 38842c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3893ca39a21SBarry Smith ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr); 39042c9c57cSBarry Smith #endif 391fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3923ca39a21SBarry Smith ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr); 39342c9c57cSBarry Smith #endif 394930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 395930e68a5SMark Adams ierr = MatSolverTypeRegister_KOKKOS();CHKERRQ(ierr); 396930e68a5SMark Adams #endif 39772367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3983ca39a21SBarry Smith ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr); 39972367587SKarl Rupp #endif 40042c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4013ca39a21SBarry Smith ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr); 40242c9c57cSBarry Smith #endif 403d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 404d24d4204SJose E. Roman ierr = MatSolverTypeRegister_ScaLAPACK();CHKERRQ(ierr); 405d24d4204SJose E. Roman #endif 40642c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 4073ca39a21SBarry Smith ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr); 40842c9c57cSBarry Smith #endif 409570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 4103ca39a21SBarry Smith ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr); 41142c9c57cSBarry Smith #endif 41242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4133ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr); 41442c9c57cSBarry Smith #endif 41508f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4163ca39a21SBarry Smith ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr); 41708f5efcfSPieter Ghysels #endif 41842c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4193ca39a21SBarry Smith ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr); 42042c9c57cSBarry Smith #endif 42142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4223ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr); 42342c9c57cSBarry Smith #endif 424418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4253ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 42642c9c57cSBarry Smith #endif 42742c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4283ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr); 42942c9c57cSBarry Smith #endif 430d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4313ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr); 432d305a81bSVasiliy Kozyrev #endif 43342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4343ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr); 43542c9c57cSBarry Smith #endif 43642c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4373ca39a21SBarry Smith ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr); 43842c9c57cSBarry Smith #endif 4398e81d068SLisandro Dalcin /* Register package finalizer */ 440b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4411153da11SBarry Smith PetscFunctionReturn(0); 4421153da11SBarry Smith } 4431153da11SBarry Smith 444aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4451153da11SBarry Smith /* 4461153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4471153da11SBarry Smith 4483f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4491153da11SBarry Smith 4501153da11SBarry Smith */ 451607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4521153da11SBarry Smith { 4531153da11SBarry Smith PetscErrorCode ierr; 4541153da11SBarry Smith 4551153da11SBarry Smith PetscFunctionBegin; 456607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4571153da11SBarry Smith PetscFunctionReturn(0); 4581153da11SBarry Smith } 4591153da11SBarry Smith 4601153da11SBarry Smith 461aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 462