147d993e7Ssuyashtn /* Portions of this code are under: 247d993e7Ssuyashtn Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. 347d993e7Ssuyashtn */ 4af0996ceSBarry Smith #include <petsc/private/matimpl.h> 51153da11SBarry Smith 69371c9d4SSatish Balay const char *MatOptions_Shifted[] = {"UNUSED_NONZERO_LOCATION_ERR", "ROW_ORIENTED", "NOT_A_VALID_OPTION", "SYMMETRIC", "STRUCTURALLY_SYMMETRIC", "FORCE_DIAGONAL_ENTRIES", "IGNORE_OFF_PROC_ENTRIES", "USE_HASH_TABLE", "KEEP_NONZERO_PATTERN", "IGNORE_ZERO_ENTRIES", "USE_INODES", "HERMITIAN", "SYMMETRY_ETERNAL", "NEW_NONZERO_LOCATION_ERR", "IGNORE_LOWER_TRIANGULAR", "ERROR_LOWER_TRIANGULAR", "GETROW_UPPERTRIANGULAR", "SPD", "NO_OFF_PROC_ZERO_ROWS", "NO_OFF_PROC_ENTRIES", "NEW_NONZERO_LOCATIONS", "NEW_NONZERO_ALLOCATION_ERR", "SUBSET_OFF_PROC_ENTRIES", "SUBMAT_SINGLEIS", "STRUCTURE_ONLY", "SORTED_FULL", "FORM_EXPLICIT_TRANSPOSE", "STRUCTURAL_SYMMETRY_ETERNAL", "SPD_ETERNAL", "MatOption", "MAT_", NULL}; 70f8fb01aSBarry Smith const char *const *MatOptions = MatOptions_Shifted + 2; 8f4259b30SLisandro Dalcin const char *const MatFactorShiftTypes[] = {"NONE", "NONZERO", "POSITIVE_DEFINITE", "INBLOCKS", "MatFactorShiftType", "PC_FACTOR_", NULL}; 9e6cbab7dSPierre Jolivet const char *const MatStructures[] = {"DIFFERENT", "SUBSET", "SAME", "UNKNOWN", "MatStructure", "MAT_STRUCTURE_", NULL}; 105e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL, "diagonal shift to prevent zero pivot", "Manteuffel shift", "diagonal shift on blocks to prevent zero pivot"}; 11f4259b30SLisandro Dalcin const char *const MPPTScotchStrategyTypes[] = {"DEFAULT", "QUALITY", "SPEED", "BALANCE", "SAFETY", "SCALABILITY", "MPPTScotchStrategyType", "MP_PTSCOTCH_", NULL}; 12f4259b30SLisandro Dalcin const char *const MPChacoGlobalTypes[] = {"", "MULTILEVEL", "SPECTRAL", "", "LINEAR", "RANDOM", "SCATTERED", "MPChacoGlobalType", "MP_CHACO_", NULL}; 13f4259b30SLisandro Dalcin const char *const MPChacoLocalTypes[] = {"", "KERNIGHAN", "NONE", "MPChacoLocalType", "MP_CHACO_", NULL}; 14f4259b30SLisandro Dalcin const char *const MPChacoEigenTypes[] = {"LANCZOS", "RQI", "MPChacoEigenType", "MP_CHACO_", NULL}; 15290bbb0aSBarry Smith 16607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 173ca39a21SBarry Smith extern PetscErrorCode MatSolverTypeDestroy(void); 18ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 1966976f2fSJacob Faibussowitsch 20b022a5c1SBarry Smith /*@C 2166976f2fSJacob Faibussowitsch MatFinalizePackage - This function destroys everything in the Petsc interface to the `Mat` 2266976f2fSJacob Faibussowitsch package. It is called from `PetscFinalize()`. 23b022a5c1SBarry Smith 24b022a5c1SBarry Smith Level: developer 25b022a5c1SBarry Smith 2611a5261eSBarry Smith .seealso: `Mat`, `PetscFinalize()`, `MatInitializePackage()` 27b022a5c1SBarry Smith @*/ 28d71ae5a4SJacob Faibussowitsch PetscErrorCode MatFinalizePackage(void) 29d71ae5a4SJacob Faibussowitsch { 3023bebc0bSBarry Smith MatRootName nnames, names = MatRootNameList; 3101bebe75SBarry Smith 32b022a5c1SBarry Smith PetscFunctionBegin; 339566063dSJacob Faibussowitsch PetscCall(MatSolverTypeDestroy()); 3401bebe75SBarry Smith while (names) { 3501bebe75SBarry Smith nnames = names->next; 369566063dSJacob Faibussowitsch PetscCall(PetscFree(names->rname)); 379566063dSJacob Faibussowitsch PetscCall(PetscFree(names->sname)); 389566063dSJacob Faibussowitsch PetscCall(PetscFree(names->mname)); 399566063dSJacob Faibussowitsch PetscCall(PetscFree(names)); 4001bebe75SBarry Smith names = nnames; 4101bebe75SBarry Smith } 429566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatList)); 439566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatOrderingList)); 449566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatColoringList)); 459566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatPartitioningList)); 469566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatCoarsenList)); 4723bebc0bSBarry Smith MatRootNameList = NULL; 48b022a5c1SBarry Smith MatPackageInitialized = PETSC_FALSE; 49b022a5c1SBarry Smith MatRegisterAllCalled = PETSC_FALSE; 50b022a5c1SBarry Smith MatOrderingRegisterAllCalled = PETSC_FALSE; 51b022a5c1SBarry Smith MatColoringRegisterAllCalled = PETSC_FALSE; 52b022a5c1SBarry Smith MatPartitioningRegisterAllCalled = PETSC_FALSE; 53b43b03e9SMark F. Adams MatCoarsenRegisterAllCalled = PETSC_FALSE; 544099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 559566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatSeqAIJList)); 564099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 573ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 58b022a5c1SBarry Smith } 59e5beb14aSMatthew Knepley 604742e46bSJacob Faibussowitsch #if defined(PETSC_HAVE_CUDA) 614742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSolverTypeRegister_DENSECUDA(void); 624742e46bSJacob Faibussowitsch #endif 634742e46bSJacob Faibussowitsch 644742e46bSJacob Faibussowitsch #if defined(PETSC_HAVE_HIP) 654742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSolverTypeRegister_DENSEHIP(void); 664742e46bSJacob Faibussowitsch #endif 674742e46bSJacob Faibussowitsch 6842c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 69d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void); 7042c9c57cSBarry Smith #endif 71fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 72d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void); 7342c9c57cSBarry Smith #endif 7447d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 75d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_HIPSPARSE(void); 7647d993e7Ssuyashtn #endif 77930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 78d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_KOKKOS(void); 79930e68a5SMark Adams #endif 8072367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 81d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 8272367587SKarl Rupp #endif 8342c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 84d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 8542c9c57cSBarry Smith #endif 86d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 87d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 88d24d4204SJose E. Roman #endif 89d1e78c4fSBarry Smith #if defined(PETSC_HAVE_MATLAB) 90d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 9142c9c57cSBarry Smith #endif 921148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 93d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 9442c9c57cSBarry Smith #endif 9542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 96d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 9742c9c57cSBarry Smith #endif 9808f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 99d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 10008f5efcfSPieter Ghysels #endif 10142c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 102d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 10342c9c57cSBarry Smith #endif 10442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 105d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 10642c9c57cSBarry Smith #endif 10742c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 108d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 10942c9c57cSBarry Smith #endif 110d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 111d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 112d305a81bSVasiliy Kozyrev #endif 11342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 114d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 11542c9c57cSBarry Smith #endif 11642c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 117d1f0640dSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 11842c9c57cSBarry Smith #endif 1191dd4f53aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 1201dd4f53aSPierre Jolivet PETSC_INTERN PetscErrorCode MatSolverTypeRegister_Htool(void); 1211dd4f53aSPierre Jolivet #endif 12242c9c57cSBarry Smith 123cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat, MatFactorType, Mat *); 124cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat, MatFactorType, Mat *); 125cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat, MatFactorType, Mat *); 126cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat, MatFactorType, Mat *); 127bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 128bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat, MatFactorType, Mat *); 129bfc799aaSStefano Zampini #endif 13047d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 13147d993e7Ssuyashtn PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_hip(Mat, MatFactorType, Mat *); 13247d993e7Ssuyashtn #endif 1333423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat, MatFactorType, Mat *); 134cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat, MatFactorType, Mat *); 13542c9c57cSBarry Smith 1363444e80cSBarry Smith #include <petscbm.h> 1373444e80cSBarry Smith PETSC_INTERN PetscErrorCode PetscBenchCreate_HPL(PetscBench); 1383444e80cSBarry Smith 1391153da11SBarry Smith /*@C 14011a5261eSBarry Smith MatInitializePackage - This function initializes everything in the `Mat` package. It is called 14111a5261eSBarry Smith from `PetscDLLibraryRegister_petscmat()` when using dynamic libraries, and on the first call to `MatCreate()` 1428a690491SBarry Smith when using shared or static libraries. 1431153da11SBarry Smith 1441153da11SBarry Smith Level: developer 1451153da11SBarry Smith 146*0b4b7b1cSBarry Smith Note: 147*0b4b7b1cSBarry Smith This function never needs to be called by PETSc users. 148*0b4b7b1cSBarry Smith 1491cc06b55SBarry Smith .seealso: [](ch_matrices), `Mat`, `PetscInitialize()`, `MatFinalizePackage()` 1501153da11SBarry Smith @*/ 151d71ae5a4SJacob Faibussowitsch PetscErrorCode MatInitializePackage(void) 152d71ae5a4SJacob Faibussowitsch { 1531153da11SBarry Smith char logList[256]; 1548e81d068SLisandro Dalcin PetscBool opt, pkg; 155e94e781bSJacob Faibussowitsch 1561153da11SBarry Smith PetscFunctionBegin; 1573ba16761SJacob Faibussowitsch if (MatPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS); 158b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1591755e90bSJacob Faibussowitsch /* Initialize subpackage */ 1609566063dSJacob Faibussowitsch PetscCall(MatMFFDInitializePackage()); 1611153da11SBarry Smith /* Register Classes */ 1629566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix", &MAT_CLASSID)); 1639566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix FD Coloring", &MAT_FDCOLORING_CLASSID)); 1649566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coloring", &MAT_COLORING_CLASSID)); 1659566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix MatTranspose Coloring", &MAT_TRANSPOSECOLORING_CLASSID)); 1669566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Partitioning", &MAT_PARTITIONING_CLASSID)); 1679566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coarsen", &MAT_COARSEN_CLASSID)); 1689566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Null Space", &MAT_NULLSPACE_CLASSID)); 1691153da11SBarry Smith /* Register Constructors */ 1709566063dSJacob Faibussowitsch PetscCall(MatRegisterAll()); 1719566063dSJacob Faibussowitsch PetscCall(MatOrderingRegisterAll()); 1729566063dSJacob Faibussowitsch PetscCall(MatColoringRegisterAll()); 1739566063dSJacob Faibussowitsch PetscCall(MatPartitioningRegisterAll()); 1749566063dSJacob Faibussowitsch PetscCall(MatCoarsenRegisterAll()); 1759566063dSJacob Faibussowitsch PetscCall(MatSeqAIJRegisterAll()); 1761153da11SBarry Smith /* Register Events */ 1779566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMult", MAT_CLASSID, &MAT_Mult)); 1789566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultAdd", MAT_CLASSID, &MAT_MultAdd)); 1799566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTranspose", MAT_CLASSID, &MAT_MultTranspose)); 180c926912cSJose E. Roman PetscCall(PetscLogEventRegister("MatMultHermitian", MAT_CLASSID, &MAT_MultHermitianTranspose)); 1819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID, &MAT_MultTransposeAdd)); 182c926912cSJose E. Roman PetscCall(PetscLogEventRegister("MatMultHTAdd", MAT_CLASSID, &MAT_MultHermitianTransposeAdd)); 1839566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolve", MAT_CLASSID, &MAT_Solve)); 1849566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolves", MAT_CLASSID, &MAT_Solves)); 1859566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveAdd", MAT_CLASSID, &MAT_SolveAdd)); 1869566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID, &MAT_SolveTranspose)); 1879566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID, &MAT_SolveTransposeAdd)); 1889566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSOR", MAT_CLASSID, &MAT_SOR)); 1899566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatForwardSolve", MAT_CLASSID, &MAT_ForwardSolve)); 1909566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID, &MAT_BackwardSolve)); 1919566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactor", MAT_CLASSID, &MAT_LUFactor)); 1929566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID, &MAT_LUFactorSymbolic)); 1939566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID, &MAT_LUFactorNumeric)); 1949566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactor", MAT_CLASSID, &MAT_QRFactor)); 1959566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorSym", MAT_CLASSID, &MAT_QRFactorSymbolic)); 1969566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorNum", MAT_CLASSID, &MAT_QRFactorNumeric)); 1979566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID, &MAT_CholeskyFactor)); 1989566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID, &MAT_CholeskyFactorSymbolic)); 1999566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID, &MAT_CholeskyFactorNumeric)); 2009566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID, &MAT_FactorFactS)); 2019566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID, &MAT_FactorInvS)); 2029566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactor", MAT_CLASSID, &MAT_ILUFactor)); 2039566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID, &MAT_ILUFactorSymbolic)); 2049566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID, &MAT_ICCFactorSymbolic)); 2059566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCopy", MAT_CLASSID, &MAT_Copy)); 2069566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatConvert", MAT_CLASSID, &MAT_Convert)); 2079566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatScale", MAT_CLASSID, &MAT_Scale)); 2089566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatResidual", MAT_CLASSID, &MAT_Residual)); 2099566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID, &MAT_AssemblyBegin)); 2109566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID, &MAT_AssemblyEnd)); 2119566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValues", MAT_CLASSID, &MAT_SetValues)); 2129566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetValues", MAT_CLASSID, &MAT_GetValues)); 2139566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRow", MAT_CLASSID, &MAT_GetRow)); 2149566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID, &MAT_GetRowIJ)); 2159566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID, &MAT_CreateSubMats)); 2169566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID, &MAT_CreateSubMat)); 2179566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetOrdering", MAT_CLASSID, &MAT_GetOrdering)); 2189566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID, &MAT_IncreaseOverlap)); 2199566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID, &MAT_Partitioning)); 2209566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioningND", MAT_PARTITIONING_CLASSID, &MAT_PartitioningND)); 2219566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID, &MAT_Coarsen)); 2229566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatZeroEntries", MAT_CLASSID, &MAT_ZeroEntries)); 2239566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLoad", MAT_CLASSID, &MAT_Load)); 2249566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatView", MAT_CLASSID, &MAT_View)); 2259566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAXPY", MAT_CLASSID, &MAT_AXPY)); 2269566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID, &MAT_FDColoringCreate)); 2279566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID, &MAT_FDColoringSetUp)); 2289566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID, &MAT_FDColoringApply)); 2299566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID, &MAT_FDColoringFunction)); 2309566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTranspose", MAT_CLASSID, &MAT_Transpose)); 2319566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatSolve", MAT_CLASSID, &MAT_MatSolve)); 2329566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID, &MAT_MatTrSolve)); 2339566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultSym", MAT_CLASSID, &MAT_MatMultSymbolic)); 2349566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultNum", MAT_CLASSID, &MAT_MatMultNumeric)); 2359566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID, &MAT_MatMatMultSymbolic)); 2369566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID, &MAT_MatMatMultNumeric)); 2379566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID, &MAT_PtAPSymbolic)); 2389566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID, &MAT_PtAPNumeric)); 2399566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtSym", MAT_CLASSID, &MAT_RARtSymbolic)); 2409566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtNum", MAT_CLASSID, &MAT_RARtNumeric)); 2419566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID, &MAT_MatTransposeMultSymbolic)); 2429566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID, &MAT_MatTransposeMultNumeric)); 2439566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID, &MAT_TransposeMatMultSymbolic)); 2449566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID, &MAT_TransposeMatMultNumeric)); 2459566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID, &MAT_TransposeColoringCreate)); 2469566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRedundantMat", MAT_CLASSID, &MAT_RedundantMat)); 247fe63dea0SJose E. Roman PetscCall(PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID, &MAT_GetSeqNonzeroStructure)); 2489566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID, &MAT_GetMultiProcBlock)); 2499566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetRandom", MAT_CLASSID, &MAT_SetRandom)); 2504ebed01fSBarry Smith 2514ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 2529566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqNumeric", MAT_CLASSID, &MAT_Seqstompinum)); 2539566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqSymbolic", MAT_CLASSID, &MAT_Seqstompisym)); 2549566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeq", MAT_CLASSID, &MAT_Seqstompi)); 2559566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPIConcateSeq", MAT_CLASSID, &MAT_Merge)); 2569566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMat", MAT_CLASSID, &MAT_Getlocalmat)); 2579566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMatCondensed", MAT_CLASSID, &MAT_Getlocalmatcondensed)); 2589566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrowsOfAcols", MAT_CLASSID, &MAT_GetBrowsOfAcols)); 2599566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrAoCol", MAT_CLASSID, &MAT_GetBrowsOfAocols)); 2604ebed01fSBarry Smith 2619566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetSymTransR", MAT_CLASSID, &MAT_Getsymtransreduced)); 2629566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyTo", MAT_CLASSID, &MAT_CUSPARSECopyToGPU)); 2639566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyFr", MAT_CLASSID, &MAT_CUSPARSECopyFromGPU)); 2649566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSSolAnl", MAT_CLASSID, &MAT_CUSPARSESolveAnalysis)); 2659566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSGenT", MAT_CLASSID, &MAT_CUSPARSEGenerateTranspose)); 26647d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSCopyTo", MAT_CLASSID, &MAT_HIPSPARSECopyToGPU)); 26747d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSCopyFr", MAT_CLASSID, &MAT_HIPSPARSECopyFromGPU)); 26847d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSSolAnl", MAT_CLASSID, &MAT_HIPSPARSESolveAnalysis)); 26947d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSGenT", MAT_CLASSID, &MAT_HIPSPARSEGenerateTranspose)); 2709566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID, &MAT_ViennaCLCopyToGPU)); 2719566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyTo", MAT_CLASSID, &MAT_DenseCopyToGPU)); 2729566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyFrom", MAT_CLASSID, &MAT_DenseCopyFromGPU)); 2739566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValBatch", MAT_CLASSID, &MAT_SetValuesBatch)); 2743d5bc402SStefano Zampini PetscCall(PetscLogEventRegister("MatCreateGraph", MAT_CLASSID, &MAT_CreateGraph)); 2754ebed01fSBarry Smith 2769566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringApply", MAT_COLORING_CLASSID, &MATCOLORING_Apply)); 2779566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringComm", MAT_COLORING_CLASSID, &MATCOLORING_Comm)); 2789566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringLocal", MAT_COLORING_CLASSID, &MATCOLORING_Local)); 2799566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringIS", MAT_COLORING_CLASSID, &MATCOLORING_ISCreate)); 2809566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringSetUp", MAT_COLORING_CLASSID, &MATCOLORING_SetUp)); 2819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringWeights", MAT_COLORING_CLASSID, &MATCOLORING_Weights)); 2824f68377dSPeter Brune 2839566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetPreallCOO", MAT_CLASSID, &MAT_PreallCOO)); 2849566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValuesCOO", MAT_CLASSID, &MAT_SetVCOO)); 285bfcc3627SStefano Zampini 2869566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusBuild", MAT_CLASSID, &MAT_H2Opus_Build)); 2879566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusComp", MAT_CLASSID, &MAT_H2Opus_Compress)); 2889566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusOrth", MAT_CLASSID, &MAT_H2Opus_Orthog)); 2899566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusLR", MAT_CLASSID, &MAT_H2Opus_LR)); 29053022affSStefano Zampini 291217044c2SLisandro Dalcin /* Mark non-collective events */ 2929566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE)); 2939566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE)); 2949566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE)); 2951153da11SBarry Smith /* Turn off high traffic events by default */ 2969566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE)); 2979566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE)); 2989566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE)); 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; 3109566063dSJacob Faibussowitsch PetscCall(PetscInfoProcessClass("mat", 7, classids)); 3111153da11SBarry Smith } 312217044c2SLisandro Dalcin 3131153da11SBarry Smith /* Process summary exclusions */ 3149566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt)); 3151153da11SBarry Smith if (opt) { 3169566063dSJacob Faibussowitsch PetscCall(PetscStrInList("mat", logList, ',', &pkg)); 3179566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_CLASSID)); 3189566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID)); 3199566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COLORING_CLASSID)); 3209566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID)); 3219566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID)); 3229566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COARSEN_CLASSID)); 3239566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID)); 3241153da11SBarry Smith } 32542c9c57cSBarry Smith 326c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3279566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3289566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3299566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3309566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 331c1619fb6SBarry Smith 3329566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3339566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3349566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3359566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 336c1619fb6SBarry Smith 3379566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_LU, MatGetFactor_constantdiagonal_petsc)); 3389566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_CHOLESKY, MatGetFactor_constantdiagonal_petsc)); 3399566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_ILU, MatGetFactor_constantdiagonal_petsc)); 3409566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_ICC, MatGetFactor_constantdiagonal_petsc)); 3413423f386SBarry Smith 3429779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3439566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3449566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3459566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3469566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 347b5b72c8aSIrina Sokolova 3489566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU, MatGetFactor_seqbaij_petsc)); 3499566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqbaij_petsc)); 3509566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU, MatGetFactor_seqbaij_petsc)); 3519566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC, MatGetFactor_seqbaij_petsc)); 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 3569566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3579566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3589566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3599566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 360c1619fb6SBarry Smith 3619566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU, MatGetFactor_seqbaij_petsc)); 3629566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqbaij_petsc)); 3639566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU, MatGetFactor_seqbaij_petsc)); 3649566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC, MatGetFactor_seqbaij_petsc)); 365c1619fb6SBarry Smith 3669566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqsbaij_petsc)); 3679566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC, MatGetFactor_seqsbaij_petsc)); 368c1619fb6SBarry Smith 3699566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU, MatGetFactor_seqdense_petsc)); 3709566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU, MatGetFactor_seqdense_petsc)); 3719566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY, MatGetFactor_seqdense_petsc)); 3729566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_QR, MatGetFactor_seqdense_petsc)); 373bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 3744742e46bSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_DENSECUDA()); 375bfc799aaSStefano Zampini #endif 37647d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 3774742e46bSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_DENSEHIP()); 37847d993e7Ssuyashtn #endif 379c1619fb6SBarry Smith 3809566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC, MatGetFactor_seqaij_bas)); 381c1619fb6SBarry Smith 38242c9c57cSBarry Smith /* 38342c9c57cSBarry Smith Register the external package factorization based solvers 38442c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 38542c9c57cSBarry Smith */ 38642c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3879566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MUMPS()); 38842c9c57cSBarry Smith #endif 389fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3909566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_CUSPARSE()); 39142c9c57cSBarry Smith #endif 39247d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 39347d993e7Ssuyashtn PetscCall(MatSolverTypeRegister_HIPSPARSE()); 39447d993e7Ssuyashtn #endif 395930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 3969566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_KOKKOS()); 397930e68a5SMark Adams #endif 39872367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3999566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ViennaCL()); 40072367587SKarl Rupp #endif 40142c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4029566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Elemental()); 40342c9c57cSBarry Smith #endif 404d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 4059566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ScaLAPACK()); 406d24d4204SJose E. Roman #endif 407d1e78c4fSBarry Smith #if defined(PETSC_HAVE_MATLAB) 4089566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Matlab()); 40942c9c57cSBarry Smith #endif 4101148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 4119566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Essl()); 41242c9c57cSBarry Smith #endif 41342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4149566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU()); 41542c9c57cSBarry Smith #endif 41608f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4179566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_STRUMPACK()); 41808f5efcfSPieter Ghysels #endif 41942c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4209566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Pastix()); 42142c9c57cSBarry Smith #endif 42242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4239566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU_DIST()); 42442c9c57cSBarry Smith #endif 42542c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4269566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_Pardiso()); 42742c9c57cSBarry Smith #endif 428d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4299566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_CPardiso()); 430d305a81bSVasiliy Kozyrev #endif 43142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4329566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuiteSparse()); 43342c9c57cSBarry Smith #endif 43442c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4359566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Lusol()); 43642c9c57cSBarry Smith #endif 4371dd4f53aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 4381dd4f53aSPierre Jolivet PetscCall(MatSolverTypeRegister_Htool()); 4391dd4f53aSPierre Jolivet #endif 4403444e80cSBarry Smith #if defined(PETSC_HAVE_HPL) 4413444e80cSBarry Smith PetscCall(PetscBenchRegister(PETSCBMHPL, PetscBenchCreate_HPL)); 4423444e80cSBarry Smith #endif 4438e81d068SLisandro Dalcin /* Register package finalizer */ 4449566063dSJacob Faibussowitsch PetscCall(PetscRegisterFinalize(MatFinalizePackage)); 4453ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 4461153da11SBarry Smith } 4471153da11SBarry Smith 448aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4491153da11SBarry Smith /* 4501153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4511153da11SBarry Smith 4523f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4531153da11SBarry Smith 4541153da11SBarry Smith */ 455d71ae5a4SJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 456d71ae5a4SJacob Faibussowitsch { 4571153da11SBarry Smith PetscFunctionBegin; 4589566063dSJacob Faibussowitsch PetscCall(MatInitializePackage()); 4593ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 4601153da11SBarry Smith } 4611153da11SBarry Smith 462aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 463