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; 19b022a5c1SBarry Smith /*@C 2011a5261eSBarry Smith MatFinalizePackage - This function destroys everything in the Petsc interface to the `Mat` package. It is 2111a5261eSBarry Smith called from `PetscFinalize()`. 22b022a5c1SBarry Smith 23b022a5c1SBarry Smith Level: developer 24b022a5c1SBarry Smith 2511a5261eSBarry Smith .seealso: `Mat`, `PetscFinalize()`, `MatInitializePackage()` 26b022a5c1SBarry Smith @*/ 27d71ae5a4SJacob Faibussowitsch PetscErrorCode MatFinalizePackage(void) 28d71ae5a4SJacob Faibussowitsch { 2923bebc0bSBarry Smith MatRootName nnames, names = MatRootNameList; 3001bebe75SBarry Smith 31b022a5c1SBarry Smith PetscFunctionBegin; 329566063dSJacob Faibussowitsch PetscCall(MatSolverTypeDestroy()); 3301bebe75SBarry Smith while (names) { 3401bebe75SBarry Smith nnames = names->next; 359566063dSJacob Faibussowitsch PetscCall(PetscFree(names->rname)); 369566063dSJacob Faibussowitsch PetscCall(PetscFree(names->sname)); 379566063dSJacob Faibussowitsch PetscCall(PetscFree(names->mname)); 389566063dSJacob Faibussowitsch PetscCall(PetscFree(names)); 3901bebe75SBarry Smith names = nnames; 4001bebe75SBarry Smith } 419566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatList)); 429566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatOrderingList)); 439566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatColoringList)); 449566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatPartitioningList)); 459566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatCoarsenList)); 4623bebc0bSBarry Smith MatRootNameList = NULL; 47b022a5c1SBarry Smith MatPackageInitialized = PETSC_FALSE; 48b022a5c1SBarry Smith MatRegisterAllCalled = PETSC_FALSE; 49b022a5c1SBarry Smith MatOrderingRegisterAllCalled = PETSC_FALSE; 50b022a5c1SBarry Smith MatColoringRegisterAllCalled = PETSC_FALSE; 51b022a5c1SBarry Smith MatPartitioningRegisterAllCalled = PETSC_FALSE; 52b43b03e9SMark F. Adams MatCoarsenRegisterAllCalled = PETSC_FALSE; 534099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 549566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatSeqAIJList)); 554099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 563ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 57b022a5c1SBarry Smith } 58e5beb14aSMatthew Knepley 594742e46bSJacob Faibussowitsch #if defined(PETSC_HAVE_CUDA) 604742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSolverTypeRegister_DENSECUDA(void); 614742e46bSJacob Faibussowitsch #endif 624742e46bSJacob Faibussowitsch 634742e46bSJacob Faibussowitsch #if defined(PETSC_HAVE_HIP) 644742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatSolverTypeRegister_DENSEHIP(void); 654742e46bSJacob Faibussowitsch #endif 664742e46bSJacob Faibussowitsch 6742c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 683ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void); 6942c9c57cSBarry Smith #endif 70fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 713ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void); 7242c9c57cSBarry Smith #endif 7347d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 7447d993e7Ssuyashtn PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_HIPSPARSE(void); 7547d993e7Ssuyashtn #endif 76930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 77930e68a5SMark Adams PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_KOKKOS(void); 78930e68a5SMark Adams #endif 7972367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 803ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 8172367587SKarl Rupp #endif 8242c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 833ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 8442c9c57cSBarry Smith #endif 85d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 86d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 87d24d4204SJose E. Roman #endif 88d1e78c4fSBarry Smith #if defined(PETSC_HAVE_MATLAB) 893ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 9042c9c57cSBarry Smith #endif 911148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 923ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 9342c9c57cSBarry Smith #endif 9442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 953ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 9642c9c57cSBarry Smith #endif 9708f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 983ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 9908f5efcfSPieter Ghysels #endif 10042c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1013ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 10242c9c57cSBarry Smith #endif 10342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1043ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 10542c9c57cSBarry Smith #endif 106418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1073ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 10842c9c57cSBarry Smith #endif 10942c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1103ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 11142c9c57cSBarry Smith #endif 112d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1133ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 114d305a81bSVasiliy Kozyrev #endif 11542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1163ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 11742c9c57cSBarry Smith #endif 11842c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1193ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 12042c9c57cSBarry Smith #endif 12142c9c57cSBarry Smith 122cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat, MatFactorType, Mat *); 123cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat, MatFactorType, Mat *); 124cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat, MatFactorType, Mat *); 125cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat, MatFactorType, Mat *); 126bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 127bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat, MatFactorType, Mat *); 128bfc799aaSStefano Zampini #endif 12947d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 13047d993e7Ssuyashtn PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_hip(Mat, MatFactorType, Mat *); 13147d993e7Ssuyashtn #endif 1323423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat, MatFactorType, Mat *); 133cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat, MatFactorType, Mat *); 13442c9c57cSBarry Smith 1351153da11SBarry Smith /*@C 13611a5261eSBarry Smith MatInitializePackage - This function initializes everything in the `Mat` package. It is called 13711a5261eSBarry Smith from `PetscDLLibraryRegister_petscmat()` when using dynamic libraries, and on the first call to `MatCreate()` 1388a690491SBarry Smith when using shared or static libraries. 1391153da11SBarry Smith 1401153da11SBarry Smith Level: developer 1411153da11SBarry Smith 142*1cc06b55SBarry Smith .seealso: [](ch_matrices), `Mat`, `PetscInitialize()`, `MatFinalizePackage()` 1431153da11SBarry Smith @*/ 144d71ae5a4SJacob Faibussowitsch PetscErrorCode MatInitializePackage(void) 145d71ae5a4SJacob Faibussowitsch { 1461153da11SBarry Smith char logList[256]; 1478e81d068SLisandro Dalcin PetscBool opt, pkg; 148e94e781bSJacob Faibussowitsch 1491153da11SBarry Smith PetscFunctionBegin; 1503ba16761SJacob Faibussowitsch if (MatPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS); 151b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1521755e90bSJacob Faibussowitsch /* Initialize subpackage */ 1539566063dSJacob Faibussowitsch PetscCall(MatMFFDInitializePackage()); 1541153da11SBarry Smith /* Register Classes */ 1559566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix", &MAT_CLASSID)); 1569566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix FD Coloring", &MAT_FDCOLORING_CLASSID)); 1579566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coloring", &MAT_COLORING_CLASSID)); 1589566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix MatTranspose Coloring", &MAT_TRANSPOSECOLORING_CLASSID)); 1599566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Partitioning", &MAT_PARTITIONING_CLASSID)); 1609566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coarsen", &MAT_COARSEN_CLASSID)); 1619566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Null Space", &MAT_NULLSPACE_CLASSID)); 1621153da11SBarry Smith /* Register Constructors */ 1639566063dSJacob Faibussowitsch PetscCall(MatRegisterAll()); 1649566063dSJacob Faibussowitsch PetscCall(MatOrderingRegisterAll()); 1659566063dSJacob Faibussowitsch PetscCall(MatColoringRegisterAll()); 1669566063dSJacob Faibussowitsch PetscCall(MatPartitioningRegisterAll()); 1679566063dSJacob Faibussowitsch PetscCall(MatCoarsenRegisterAll()); 1689566063dSJacob Faibussowitsch PetscCall(MatSeqAIJRegisterAll()); 1691153da11SBarry Smith /* Register Events */ 1709566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMult", MAT_CLASSID, &MAT_Mult)); 1719566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultAdd", MAT_CLASSID, &MAT_MultAdd)); 1729566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTranspose", MAT_CLASSID, &MAT_MultTranspose)); 173c926912cSJose E. Roman PetscCall(PetscLogEventRegister("MatMultHermitian", MAT_CLASSID, &MAT_MultHermitianTranspose)); 1749566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID, &MAT_MultTransposeAdd)); 175c926912cSJose E. Roman PetscCall(PetscLogEventRegister("MatMultHTAdd", MAT_CLASSID, &MAT_MultHermitianTransposeAdd)); 1769566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolve", MAT_CLASSID, &MAT_Solve)); 1779566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolves", MAT_CLASSID, &MAT_Solves)); 1789566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveAdd", MAT_CLASSID, &MAT_SolveAdd)); 1799566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID, &MAT_SolveTranspose)); 1809566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID, &MAT_SolveTransposeAdd)); 1819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSOR", MAT_CLASSID, &MAT_SOR)); 1829566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatForwardSolve", MAT_CLASSID, &MAT_ForwardSolve)); 1839566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID, &MAT_BackwardSolve)); 1849566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactor", MAT_CLASSID, &MAT_LUFactor)); 1859566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID, &MAT_LUFactorSymbolic)); 1869566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID, &MAT_LUFactorNumeric)); 1879566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactor", MAT_CLASSID, &MAT_QRFactor)); 1889566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorSym", MAT_CLASSID, &MAT_QRFactorSymbolic)); 1899566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorNum", MAT_CLASSID, &MAT_QRFactorNumeric)); 1909566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID, &MAT_CholeskyFactor)); 1919566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID, &MAT_CholeskyFactorSymbolic)); 1929566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID, &MAT_CholeskyFactorNumeric)); 1939566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID, &MAT_FactorFactS)); 1949566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID, &MAT_FactorInvS)); 1959566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactor", MAT_CLASSID, &MAT_ILUFactor)); 1969566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID, &MAT_ILUFactorSymbolic)); 1979566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID, &MAT_ICCFactorSymbolic)); 1989566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCopy", MAT_CLASSID, &MAT_Copy)); 1999566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatConvert", MAT_CLASSID, &MAT_Convert)); 2009566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatScale", MAT_CLASSID, &MAT_Scale)); 2019566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatResidual", MAT_CLASSID, &MAT_Residual)); 2029566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID, &MAT_AssemblyBegin)); 2039566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID, &MAT_AssemblyEnd)); 2049566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValues", MAT_CLASSID, &MAT_SetValues)); 2059566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetValues", MAT_CLASSID, &MAT_GetValues)); 2069566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRow", MAT_CLASSID, &MAT_GetRow)); 2079566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID, &MAT_GetRowIJ)); 2089566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID, &MAT_CreateSubMats)); 2099566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID, &MAT_CreateSubMat)); 2109566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetOrdering", MAT_CLASSID, &MAT_GetOrdering)); 2119566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID, &MAT_IncreaseOverlap)); 2129566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID, &MAT_Partitioning)); 2139566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioningND", MAT_PARTITIONING_CLASSID, &MAT_PartitioningND)); 2149566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID, &MAT_Coarsen)); 2159566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatZeroEntries", MAT_CLASSID, &MAT_ZeroEntries)); 2169566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLoad", MAT_CLASSID, &MAT_Load)); 2179566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatView", MAT_CLASSID, &MAT_View)); 2189566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAXPY", MAT_CLASSID, &MAT_AXPY)); 2199566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID, &MAT_FDColoringCreate)); 2209566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID, &MAT_FDColoringSetUp)); 2219566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID, &MAT_FDColoringApply)); 2229566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID, &MAT_FDColoringFunction)); 2239566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTranspose", MAT_CLASSID, &MAT_Transpose)); 2249566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatSolve", MAT_CLASSID, &MAT_MatSolve)); 2259566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID, &MAT_MatTrSolve)); 2269566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultSym", MAT_CLASSID, &MAT_MatMultSymbolic)); 2279566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultNum", MAT_CLASSID, &MAT_MatMultNumeric)); 2289566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID, &MAT_MatMatMultSymbolic)); 2299566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID, &MAT_MatMatMultNumeric)); 2309566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID, &MAT_PtAPSymbolic)); 2319566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID, &MAT_PtAPNumeric)); 2329566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtSym", MAT_CLASSID, &MAT_RARtSymbolic)); 2339566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtNum", MAT_CLASSID, &MAT_RARtNumeric)); 2349566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID, &MAT_MatTransposeMultSymbolic)); 2359566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID, &MAT_MatTransposeMultNumeric)); 2369566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID, &MAT_TransposeMatMultSymbolic)); 2379566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID, &MAT_TransposeMatMultNumeric)); 2389566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID, &MAT_TransposeColoringCreate)); 2399566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRedundantMat", MAT_CLASSID, &MAT_RedundantMat)); 240fe63dea0SJose E. Roman PetscCall(PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID, &MAT_GetSeqNonzeroStructure)); 2419566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID, &MAT_GetMultiProcBlock)); 2429566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetRandom", MAT_CLASSID, &MAT_SetRandom)); 2434ebed01fSBarry Smith 2444ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 2459566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqNumeric", MAT_CLASSID, &MAT_Seqstompinum)); 2469566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqSymbolic", MAT_CLASSID, &MAT_Seqstompisym)); 2479566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeq", MAT_CLASSID, &MAT_Seqstompi)); 2489566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPIConcateSeq", MAT_CLASSID, &MAT_Merge)); 2499566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMat", MAT_CLASSID, &MAT_Getlocalmat)); 2509566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMatCondensed", MAT_CLASSID, &MAT_Getlocalmatcondensed)); 2519566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrowsOfAcols", MAT_CLASSID, &MAT_GetBrowsOfAcols)); 2529566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrAoCol", MAT_CLASSID, &MAT_GetBrowsOfAocols)); 2534ebed01fSBarry Smith 2549566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetSymTransR", MAT_CLASSID, &MAT_Getsymtransreduced)); 2559566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyTo", MAT_CLASSID, &MAT_CUSPARSECopyToGPU)); 2569566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyFr", MAT_CLASSID, &MAT_CUSPARSECopyFromGPU)); 2579566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSSolAnl", MAT_CLASSID, &MAT_CUSPARSESolveAnalysis)); 2589566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSGenT", MAT_CLASSID, &MAT_CUSPARSEGenerateTranspose)); 25947d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSCopyTo", MAT_CLASSID, &MAT_HIPSPARSECopyToGPU)); 26047d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSCopyFr", MAT_CLASSID, &MAT_HIPSPARSECopyFromGPU)); 26147d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSSolAnl", MAT_CLASSID, &MAT_HIPSPARSESolveAnalysis)); 26247d993e7Ssuyashtn PetscCall(PetscLogEventRegister("MatHIPSPARSGenT", MAT_CLASSID, &MAT_HIPSPARSEGenerateTranspose)); 2639566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID, &MAT_ViennaCLCopyToGPU)); 2649566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyTo", MAT_CLASSID, &MAT_DenseCopyToGPU)); 2659566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyFrom", MAT_CLASSID, &MAT_DenseCopyFromGPU)); 2669566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValBatch", MAT_CLASSID, &MAT_SetValuesBatch)); 2674ebed01fSBarry Smith 2689566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringApply", MAT_COLORING_CLASSID, &MATCOLORING_Apply)); 2699566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringComm", MAT_COLORING_CLASSID, &MATCOLORING_Comm)); 2709566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringLocal", MAT_COLORING_CLASSID, &MATCOLORING_Local)); 2719566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringIS", MAT_COLORING_CLASSID, &MATCOLORING_ISCreate)); 2729566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringSetUp", MAT_COLORING_CLASSID, &MATCOLORING_SetUp)); 2739566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringWeights", MAT_COLORING_CLASSID, &MATCOLORING_Weights)); 2744f68377dSPeter Brune 2759566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetPreallCOO", MAT_CLASSID, &MAT_PreallCOO)); 2769566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValuesCOO", MAT_CLASSID, &MAT_SetVCOO)); 277bfcc3627SStefano Zampini 2789566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusBuild", MAT_CLASSID, &MAT_H2Opus_Build)); 2799566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusComp", MAT_CLASSID, &MAT_H2Opus_Compress)); 2809566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusOrth", MAT_CLASSID, &MAT_H2Opus_Orthog)); 2819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusLR", MAT_CLASSID, &MAT_H2Opus_LR)); 28253022affSStefano Zampini 283217044c2SLisandro Dalcin /* Mark non-collective events */ 2849566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE)); 2859566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE)); 2869566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE)); 2871153da11SBarry Smith /* Turn off high traffic events by default */ 2889566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE)); 2899566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE)); 2909566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE)); 291e94e781bSJacob Faibussowitsch /* Process Info */ 292e94e781bSJacob Faibussowitsch { 293e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 294217044c2SLisandro Dalcin 295e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 296e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 297e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 298e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 299e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 300e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 301e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 3029566063dSJacob Faibussowitsch PetscCall(PetscInfoProcessClass("mat", 7, classids)); 3031153da11SBarry Smith } 304217044c2SLisandro Dalcin 3051153da11SBarry Smith /* Process summary exclusions */ 3069566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt)); 3071153da11SBarry Smith if (opt) { 3089566063dSJacob Faibussowitsch PetscCall(PetscStrInList("mat", logList, ',', &pkg)); 3099566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_CLASSID)); 3109566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID)); 3119566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COLORING_CLASSID)); 3129566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID)); 3139566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID)); 3149566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COARSEN_CLASSID)); 3159566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID)); 3161153da11SBarry Smith } 31742c9c57cSBarry Smith 318c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3199566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3209566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3219566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3229566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 323c1619fb6SBarry Smith 3249566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3259566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3269566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3279566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 328c1619fb6SBarry Smith 3299566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_LU, MatGetFactor_constantdiagonal_petsc)); 3309566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_CHOLESKY, MatGetFactor_constantdiagonal_petsc)); 3319566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_ILU, MatGetFactor_constantdiagonal_petsc)); 3329566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL, MAT_FACTOR_ICC, MatGetFactor_constantdiagonal_petsc)); 3333423f386SBarry Smith 3349779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3359566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3369566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3379566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3389566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 339b5b72c8aSIrina Sokolova 3409566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU, MatGetFactor_seqbaij_petsc)); 3419566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqbaij_petsc)); 3429566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU, MatGetFactor_seqbaij_petsc)); 3439566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC, MatGetFactor_seqbaij_petsc)); 344191b95cbSRichard Tran Mills #endif 3452251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3462251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3472251f9d6SRichard Tran Mills 3489566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU, MatGetFactor_seqaij_petsc)); 3499566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY, MatGetFactor_seqaij_petsc)); 3509566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU, MatGetFactor_seqaij_petsc)); 3519566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC, MatGetFactor_seqaij_petsc)); 352c1619fb6SBarry Smith 3539566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU, MatGetFactor_seqbaij_petsc)); 3549566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqbaij_petsc)); 3559566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU, MatGetFactor_seqbaij_petsc)); 3569566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC, MatGetFactor_seqbaij_petsc)); 357c1619fb6SBarry Smith 3589566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY, MatGetFactor_seqsbaij_petsc)); 3599566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC, MatGetFactor_seqsbaij_petsc)); 360c1619fb6SBarry Smith 3619566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU, MatGetFactor_seqdense_petsc)); 3629566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU, MatGetFactor_seqdense_petsc)); 3639566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY, MatGetFactor_seqdense_petsc)); 3649566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_QR, MatGetFactor_seqdense_petsc)); 365bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 3664742e46bSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_DENSECUDA()); 367bfc799aaSStefano Zampini #endif 36847d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 3694742e46bSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_DENSEHIP()); 37047d993e7Ssuyashtn #endif 371c1619fb6SBarry Smith 3729566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC, MatGetFactor_seqaij_bas)); 373c1619fb6SBarry Smith 37442c9c57cSBarry Smith /* 37542c9c57cSBarry Smith Register the external package factorization based solvers 37642c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 37742c9c57cSBarry Smith */ 37842c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3799566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MUMPS()); 38042c9c57cSBarry Smith #endif 381fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3829566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_CUSPARSE()); 38342c9c57cSBarry Smith #endif 38447d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 38547d993e7Ssuyashtn PetscCall(MatSolverTypeRegister_HIPSPARSE()); 38647d993e7Ssuyashtn #endif 387930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 3889566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_KOKKOS()); 389930e68a5SMark Adams #endif 39072367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3919566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ViennaCL()); 39272367587SKarl Rupp #endif 39342c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3949566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Elemental()); 39542c9c57cSBarry Smith #endif 396d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 3979566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ScaLAPACK()); 398d24d4204SJose E. Roman #endif 399d1e78c4fSBarry Smith #if defined(PETSC_HAVE_MATLAB) 4009566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Matlab()); 40142c9c57cSBarry Smith #endif 4021148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 4039566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Essl()); 40442c9c57cSBarry Smith #endif 40542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4069566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU()); 40742c9c57cSBarry Smith #endif 40808f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4099566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_STRUMPACK()); 41008f5efcfSPieter Ghysels #endif 41142c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4129566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Pastix()); 41342c9c57cSBarry Smith #endif 41442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4159566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU_DIST()); 41642c9c57cSBarry Smith #endif 417418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4189566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SparseElemental()); 41942c9c57cSBarry Smith #endif 42042c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4219566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_Pardiso()); 42242c9c57cSBarry Smith #endif 423d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4249566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_CPardiso()); 425d305a81bSVasiliy Kozyrev #endif 42642c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4279566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuiteSparse()); 42842c9c57cSBarry Smith #endif 42942c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4309566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Lusol()); 43142c9c57cSBarry Smith #endif 4328e81d068SLisandro Dalcin /* Register package finalizer */ 4339566063dSJacob Faibussowitsch PetscCall(PetscRegisterFinalize(MatFinalizePackage)); 4343ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 4351153da11SBarry Smith } 4361153da11SBarry Smith 437aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4381153da11SBarry Smith /* 4391153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4401153da11SBarry Smith 4413f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4421153da11SBarry Smith 4431153da11SBarry Smith */ 444d71ae5a4SJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 445d71ae5a4SJacob Faibussowitsch { 4461153da11SBarry Smith PetscFunctionBegin; 4479566063dSJacob Faibussowitsch PetscCall(MatInitializePackage()); 4483ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 4491153da11SBarry Smith } 4501153da11SBarry Smith 451aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 452