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", 9dc5b3d67SBarry Smith "NEW_DIAGONALS", 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", 260f8fb01aSBarry Smith "MAT_SUBSET_OFF_PROC_ENTRIES", 270f8fb01aSBarry Smith "MAT_SUBMAT_SINGLEIS", 2892d4d306SBarry Smith "MatOption","MAT_",0}; 290f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2; 306a6fc655SJed Brown const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",0}; 315e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 326a6fc655SJed Brown const char *const MPPTScotchStrategyTypes[] = {"QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",0}; 336a6fc655SJed Brown const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",0}; 346a6fc655SJed Brown const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",0}; 356a6fc655SJed Brown const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",0}; 36290bbb0aSBarry Smith 37607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 3842c9c57cSBarry Smith extern PetscErrorCode MatSolverPackageDestroy(void); 39ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 40b022a5c1SBarry Smith /*@C 4160154eb2SBarry Smith MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is 42b022a5c1SBarry Smith called from PetscFinalize(). 43b022a5c1SBarry Smith 44b022a5c1SBarry Smith Level: developer 45b022a5c1SBarry Smith 46b022a5c1SBarry Smith .keywords: Petsc, destroy, package, mathematica 47b022a5c1SBarry Smith .seealso: PetscFinalize() 48b022a5c1SBarry Smith @*/ 497087cfbeSBarry Smith PetscErrorCode MatFinalizePackage(void) 50b022a5c1SBarry Smith { 5101bebe75SBarry Smith MatBaseName nnames,names = MatBaseNameList; 5201bebe75SBarry Smith PetscErrorCode ierr; 5301bebe75SBarry Smith 54b022a5c1SBarry Smith PetscFunctionBegin; 5542c9c57cSBarry Smith ierr = MatSolverPackageDestroy();CHKERRQ(ierr); 5601bebe75SBarry Smith while (names) { 5701bebe75SBarry Smith nnames = names->next; 5801bebe75SBarry Smith ierr = PetscFree(names->bname);CHKERRQ(ierr); 5901bebe75SBarry Smith ierr = PetscFree(names->sname);CHKERRQ(ierr); 6001bebe75SBarry Smith ierr = PetscFree(names->mname);CHKERRQ(ierr); 6101bebe75SBarry Smith ierr = PetscFree(names);CHKERRQ(ierr); 6201bebe75SBarry Smith names = nnames; 6301bebe75SBarry Smith } 6437e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatList);CHKERRQ(ierr); 6537e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatOrderingList);CHKERRQ(ierr); 6637e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatColoringList);CHKERRQ(ierr); 6737e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatPartitioningList);CHKERRQ(ierr); 6837e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatCoarsenList);CHKERRQ(ierr); 690298fd71SBarry Smith MatBaseNameList = NULL; 70b022a5c1SBarry Smith MatPackageInitialized = PETSC_FALSE; 71b022a5c1SBarry Smith MatRegisterAllCalled = PETSC_FALSE; 72b022a5c1SBarry Smith MatOrderingRegisterAllCalled = PETSC_FALSE; 73b022a5c1SBarry Smith MatColoringRegisterAllCalled = PETSC_FALSE; 74b022a5c1SBarry Smith MatPartitioningRegisterAllCalled = PETSC_FALSE; 75b43b03e9SMark F. Adams MatCoarsenRegisterAllCalled = PETSC_FALSE; 764099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 774099cc6bSBarry Smith ierr = PetscFunctionListDestroy(&MatSeqAIJList);CHKERRQ(ierr); 784099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 79b022a5c1SBarry Smith PetscFunctionReturn(0); 80b022a5c1SBarry Smith } 81e5beb14aSMatthew Knepley 8242c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 8342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MUMPS(void); 8442c9c57cSBarry Smith #endif 8572367587SKarl Rupp #if defined(PETSC_HAVE_CUSP) 8672367587SKarl Rupp PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSP(void); 8772367587SKarl Rupp #endif 88c41cb2e2SAlejandro Lamas Daviña #if defined(PETSC_HAVE_VECCUDA) 8942c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSPARSE(void); 9042c9c57cSBarry Smith #endif 9172367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 9272367587SKarl Rupp PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_ViennaCL(void); 9372367587SKarl Rupp #endif 9442c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 9542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Elemental(void); 9642c9c57cSBarry Smith #endif 9742c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 9842c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Matlab(void); 9942c9c57cSBarry Smith #endif 100570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 10142c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Essl(void); 10242c9c57cSBarry Smith #endif 10342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 10442c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU(void); 10542c9c57cSBarry Smith #endif 10608f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 10708f5efcfSPieter Ghysels PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_STRUMPACK(void); 10808f5efcfSPieter Ghysels #endif 10942c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 11042c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Pastix(void); 11142c9c57cSBarry Smith #endif 11242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 11342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU_DIST(void); 11442c9c57cSBarry Smith #endif 115418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 116418810c4SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SparseElemental(void); 11742c9c57cSBarry Smith #endif 11842c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 11942c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_Pardiso(void); 12042c9c57cSBarry Smith #endif 121d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 122d305a81bSVasiliy Kozyrev PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_CPardiso(void); 123d305a81bSVasiliy Kozyrev #endif 12442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 12542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuiteSparse(void); 12642c9c57cSBarry Smith #endif 12742c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 12842c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Lusol(void); 12942c9c57cSBarry Smith #endif 13042c9c57cSBarry Smith 131cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 132cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 133cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 134cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 135cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 13642c9c57cSBarry Smith 1371153da11SBarry Smith /*@C 1381153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1391153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() 1401153da11SBarry Smith when using static libraries. 1411153da11SBarry Smith 1421153da11SBarry Smith Level: developer 1431153da11SBarry Smith 1441153da11SBarry Smith .keywords: Mat, initialize, package 1451153da11SBarry Smith .seealso: PetscInitialize() 1461153da11SBarry Smith @*/ 147607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1481153da11SBarry Smith { 1491153da11SBarry Smith char logList[256]; 1501153da11SBarry Smith char *className; 151ace3abfcSBarry Smith PetscBool opt; 1521153da11SBarry Smith PetscErrorCode ierr; 1531153da11SBarry Smith 1541153da11SBarry Smith PetscFunctionBegin; 155b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 156b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 157cce0b1b2SLisandro Dalcin /* Inialize subpackage */ 158607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1591153da11SBarry Smith /* Register Classes */ 1600700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1610700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 162335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 163b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1640700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 165b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1660700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1671153da11SBarry Smith /* Register Constructors */ 168607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 169607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 170607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 171607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 172607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1734099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1741153da11SBarry Smith /* Register Events */ 1750700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1760700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1770700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1780700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 2010700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 202f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2050700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2097dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2107dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 214b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2160700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2170700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2200df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2210700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2240700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); 2250700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 2260700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2270700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2287bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMult", MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr); 2297bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2307bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAP", MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr); 2320700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2330700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 234286f30e3SHong Zhang ierr = PetscLogEventRegister("MatRARt", MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr); 23550647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 23650647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2376fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTransMult", MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr); 2386fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2396fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 24075648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMult", MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr); 24175648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 24275648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 243b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 24453cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2450700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 24682d44351SHong Zhang ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 24700e125f8SBarry Smith ierr = PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr); 2484ebed01fSBarry Smith 2494ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 250a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 251a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 252a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 253a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 254a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 255a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 256a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 257a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2584ebed01fSBarry Smith 2590700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2600700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2610700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2624ebed01fSBarry Smith 2630700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2640700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2650700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr); 2668154be41SBarry Smith ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr); 2679ae82921SPaul Mullowney ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2688f86e40fSKarl Rupp ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 26937868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 27037868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr); 27137868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr); 27237868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr); 27337868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr); 2744ebed01fSBarry Smith 275367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 276367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 277367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 278367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 279367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 280367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2814f68377dSPeter Brune 2821153da11SBarry Smith /* Turn off high traffic events by default */ 2831153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 2841153da11SBarry Smith /* Process info exclusions */ 285c5929fdfSBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); 2861153da11SBarry Smith if (opt) { 2871153da11SBarry Smith ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 2881153da11SBarry Smith if (className) { 2890700a824SBarry Smith ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2901153da11SBarry Smith } 2911153da11SBarry Smith } 2921153da11SBarry Smith /* Process summary exclusions */ 2937bf5a629SBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); 2941153da11SBarry Smith if (opt) { 2951153da11SBarry Smith ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 2961153da11SBarry Smith if (className) { 2970700a824SBarry Smith ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2981153da11SBarry Smith } 2991153da11SBarry Smith } 30042c9c57cSBarry Smith 301c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 302c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 303c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 304c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 305c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 306c1619fb6SBarry Smith 307c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 308c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 309c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 310c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 311c1619fb6SBarry Smith 312191b95cbSRichard Tran Mills #if defined(PETSC_HAVE_MKL) 3132251f9d6SRichard Tran Mills ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3142251f9d6SRichard Tran Mills ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3152251f9d6SRichard Tran Mills ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3162251f9d6SRichard Tran Mills ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 317*b5b72c8aSIrina Sokolova 318*b5b72c8aSIrina Sokolova ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 319*b5b72c8aSIrina Sokolova ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 320*b5b72c8aSIrina Sokolova ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 321*b5b72c8aSIrina Sokolova ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 322191b95cbSRichard Tran Mills #endif 3232251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3242251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3252251f9d6SRichard Tran Mills 326c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 327c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 328c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 329c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 330c1619fb6SBarry Smith 331c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 332c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 333c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 334c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 335c1619fb6SBarry Smith 336c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 337c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 338c1619fb6SBarry Smith 339c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 340c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 341c1619fb6SBarry Smith 342c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 343c1619fb6SBarry Smith 34442c9c57cSBarry Smith /* 34542c9c57cSBarry Smith Register the external package factorization based solvers 34642c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 34742c9c57cSBarry Smith */ 34842c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 34942c9c57cSBarry Smith ierr = MatSolverPackageRegister_MUMPS();CHKERRQ(ierr); 35042c9c57cSBarry Smith #endif 35172367587SKarl Rupp #if defined(PETSC_HAVE_CUSP) 35272367587SKarl Rupp ierr = MatSolverPackageRegister_CUSP();CHKERRQ(ierr); 35372367587SKarl Rupp #endif 354c41cb2e2SAlejandro Lamas Daviña #if defined(PETSC_HAVE_VECCUDA) 35542c9c57cSBarry Smith ierr = MatSolverPackageRegister_CUSPARSE();CHKERRQ(ierr); 35642c9c57cSBarry Smith #endif 35772367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 35872367587SKarl Rupp ierr = MatSolverPackageRegister_ViennaCL();CHKERRQ(ierr); 35972367587SKarl Rupp #endif 36042c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 36142c9c57cSBarry Smith ierr = MatSolverPackageRegister_Elemental();CHKERRQ(ierr); 36242c9c57cSBarry Smith #endif 36342c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 36442c9c57cSBarry Smith ierr = MatSolverPackageRegister_Matlab();CHKERRQ(ierr); 36542c9c57cSBarry Smith #endif 366570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 36742c9c57cSBarry Smith ierr = MatSolverPackageRegister_Essl();CHKERRQ(ierr); 36842c9c57cSBarry Smith #endif 36942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 37042c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU();CHKERRQ(ierr); 37142c9c57cSBarry Smith #endif 37208f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 37308f5efcfSPieter Ghysels ierr = MatSolverPackageRegister_STRUMPACK();CHKERRQ(ierr); 37408f5efcfSPieter Ghysels #endif 37542c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 37642c9c57cSBarry Smith ierr = MatSolverPackageRegister_Pastix();CHKERRQ(ierr); 37742c9c57cSBarry Smith #endif 37842c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 37942c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU_DIST();CHKERRQ(ierr); 38042c9c57cSBarry Smith #endif 381418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 382418810c4SBarry Smith ierr = MatSolverPackageRegister_SparseElemental();CHKERRQ(ierr); 38342c9c57cSBarry Smith #endif 38442c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 38542c9c57cSBarry Smith ierr = MatSolverPackageRegister_MKL_Pardiso();CHKERRQ(ierr); 38642c9c57cSBarry Smith #endif 387d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 388d305a81bSVasiliy Kozyrev ierr = MatSolverPackageRegister_MKL_CPardiso();CHKERRQ(ierr); 389d305a81bSVasiliy Kozyrev #endif 39042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 39142c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuiteSparse();CHKERRQ(ierr); 39242c9c57cSBarry Smith #endif 39342c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 39442c9c57cSBarry Smith ierr = MatSolverPackageRegister_Lusol();CHKERRQ(ierr); 39542c9c57cSBarry Smith #endif 396418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 397418810c4SBarry Smith ierr = MatSolverPackageRegister_SparseElemental();CHKERRQ(ierr); 39842c9c57cSBarry Smith #endif 39942c9c57cSBarry Smith 400b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4011153da11SBarry Smith PetscFunctionReturn(0); 4021153da11SBarry Smith } 4031153da11SBarry Smith 404aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4051153da11SBarry Smith /* 4061153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4071153da11SBarry Smith 4083f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4091153da11SBarry Smith 4101153da11SBarry Smith */ 411607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4121153da11SBarry Smith { 4131153da11SBarry Smith PetscErrorCode ierr; 4141153da11SBarry Smith 4151153da11SBarry Smith PetscFunctionBegin; 416607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4171153da11SBarry Smith PetscFunctionReturn(0); 4181153da11SBarry Smith } 4191153da11SBarry Smith 4201153da11SBarry Smith 421aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 422