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> /*I "petscmat.h" I*/ 58a95e4e9SBarry Smith 68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat); 78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat); 849bd79ccSDebojyoti Ghosh PETSC_EXTERN PetscErrorCode MatCreate_KAIJ(Mat); 98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat); 1017667f90SBarry Smith 118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat); 128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat); 1317667f90SBarry Smith 148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat); 158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat); 1617667f90SBarry Smith 178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat); 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat); 1917667f90SBarry Smith 204742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDense(Mat); 214742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_MPIDense(Mat); 22bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 234742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat); 244742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat); 25bfc799aaSStefano Zampini #endif 2617667f90SBarry Smith 2747d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 284742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDenseHIP(Mat); 294742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_MPIDenseHIP(Mat); 3047d993e7Ssuyashtn #endif 3147d993e7Ssuyashtn 328cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 338cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 348cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 3517667f90SBarry Smith 368cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 378cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3817667f90SBarry Smith 394dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat); 404dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat); 414dfdc2d9SRichard Tran Mills 42bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 434a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat); 44a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat); 45b9e7e5c1SBarry Smith #endif 46b5b72c8aSIrina Sokolova 47bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 48b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat); 49b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat); 50191b95cbSRichard Tran Mills #endif 514a2a386eSRichard Tran Mills 528cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 538cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 5417667f90SBarry Smith 558cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 578cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 58c6570e9aSVictor Minden 59d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat); 60d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat); 615e26d47bSHong Zhang 62bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 638cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 648cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 65*2d1451d4SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELLCUDA(Mat); 66*2d1451d4SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELLCUDA(Mat); 679ae82921SPaul Mullowney #endif 689ae82921SPaul Mullowney 6947d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 7047d993e7Ssuyashtn PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJHIPSPARSE(Mat); 7147d993e7Ssuyashtn PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJHIPSPARSE(Mat); 7247d993e7Ssuyashtn #endif 7347d993e7Ssuyashtn 74bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 75d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 768f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 77d67ff14aSKarl Rupp #endif 78d67ff14aSKarl Rupp 798c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 808c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat); 818c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat); 828c3ff71bSJunchao Zhang #endif 838c3ff71bSJunchao Zhang 84bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 858cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 86dedccee8SHong Zhang #endif 87d8304050SJose E. Roman #if defined(PETSC_HAVE_ELEMENTAL) 888cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 89d8304050SJose E. Roman #endif 90d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 91d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat); 92d24d4204SJose E. Roman #endif 938a95e4e9SBarry Smith 94c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 95a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 96c094ef40SMatthew G. Knepley 97bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 9863c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 9963c07aadSStefano Zampini #endif 10063c07aadSStefano Zampini 1013423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat); 102a0d2e7d8SStefano Zampini 10353022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 10453022affSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat); 105a0d2e7d8SStefano Zampini #endif 106a0d2e7d8SStefano Zampini 107c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 108c7a4214aSPierre Jolivet PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat); 109c7a4214aSPierre Jolivet #endif 110c7a4214aSPierre Jolivet 1118a95e4e9SBarry Smith /*@C 112f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 1138a95e4e9SBarry Smith 1148a95e4e9SBarry Smith Not Collective 1158a95e4e9SBarry Smith 1168a95e4e9SBarry Smith Level: advanced 1178a95e4e9SBarry Smith 11811a5261eSBarry Smith .seealso: `MatType`, `MatSetType()`, `MatRegister()` 1198a95e4e9SBarry Smith @*/ 120d71ae5a4SJacob Faibussowitsch PetscErrorCode MatRegisterAll(void) 121d71ae5a4SJacob Faibussowitsch { 1228a95e4e9SBarry Smith PetscFunctionBegin; 1233ba16761SJacob Faibussowitsch if (MatRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS); 124f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 1258a95e4e9SBarry Smith 1269566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMFFD, MatCreate_MFFD)); 127e884886fSBarry Smith 1289566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIMAIJ, MatCreate_MAIJ)); 1299566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQMAIJ, MatCreate_MAIJ)); 1309566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMAIJ, MatCreate_MAIJ)); 131273d9f13SBarry Smith 1329566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIKAIJ, MatCreate_KAIJ)); 1339566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQKAIJ, MatCreate_KAIJ)); 1349566063dSJacob Faibussowitsch PetscCall(MatRegister(MATKAIJ, MatCreate_KAIJ)); 13549bd79ccSDebojyoti Ghosh 1369566063dSJacob Faibussowitsch PetscCall(MatRegister(MATIS, MatCreate_IS)); 1379566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSHELL, MatCreate_Shell)); 1389566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCOMPOSITE, MatCreate_Composite)); 13901bebe75SBarry Smith 1409566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJ, MATSEQAIJ, MATMPIAIJ)); 1419566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJ, MatCreate_MPIAIJ)); 1429566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJ, MatCreate_SeqAIJ)); 14317667f90SBarry Smith 1449566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJPERM, MATSEQAIJPERM, MATMPIAIJPERM)); 1459566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM)); 1469566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM)); 14717667f90SBarry Smith 1489566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJSELL, MATSEQAIJSELL, MATMPIAIJSELL)); 1499566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL)); 1509566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL)); 1514dfdc2d9SRichard Tran Mills 152bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 1539566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL, MATMPIAIJMKL)); 1549566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL)); 1559566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL)); 156b9e7e5c1SBarry Smith #endif 157b5b72c8aSIrina Sokolova 158bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 1599566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJMKL, MATSEQBAIJMKL, MATMPIBAIJMKL)); 1609566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL)); 1619566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL)); 162191b95cbSRichard Tran Mills #endif 1634a2a386eSRichard Tran Mills 1649566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCRL, MATSEQAIJCRL, MATMPIAIJCRL)); 1659566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL)); 1669566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL)); 167273d9f13SBarry Smith 1689566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJ, MATSEQBAIJ, MATMPIBAIJ)); 1699566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ)); 1709566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ)); 171273d9f13SBarry Smith 1729566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSBAIJ, MATSEQSBAIJ, MATMPISBAIJ)); 1739566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ)); 1749566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ)); 17517667f90SBarry Smith 1769566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSE, MATSEQDENSE, MATMPIDENSE)); 1779566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSE, MatCreate_MPIDense)); 1789566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSE, MatCreate_SeqDense)); 179bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 1809566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSECUDA, MATSEQDENSECUDA, MATMPIDENSECUDA)); 1819566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA)); 1829566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA)); 183bfc799aaSStefano Zampini #endif 18417667f90SBarry Smith 18547d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 18647d993e7Ssuyashtn PetscCall(MatRegisterRootName(MATDENSEHIP, MATSEQDENSEHIP, MATMPIDENSEHIP)); 18747d993e7Ssuyashtn PetscCall(MatRegister(MATSEQDENSEHIP, MatCreate_SeqDenseHIP)); 18847d993e7Ssuyashtn PetscCall(MatRegister(MATMPIDENSEHIP, MatCreate_MPIDenseHIP)); 18947d993e7Ssuyashtn #endif 19047d993e7Ssuyashtn 1919566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIADJ, MatCreate_MPIAdj)); 1929566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCATTER, MatCreate_Scatter)); 1939566063dSJacob Faibussowitsch PetscCall(MatRegister(MATBLOCKMAT, MatCreate_BlockMat)); 1949566063dSJacob Faibussowitsch PetscCall(MatRegister(MATNEST, MatCreate_Nest)); 19568326731SBarry Smith 1969566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSELL, MATSEQSELL, MATMPISELL)); 1979566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISELL, MatCreate_MPISELL)); 1989566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSELL, MatCreate_SeqSELL)); 1995e26d47bSHong Zhang 200bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 2019566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCUSPARSE, MATSEQAIJCUSPARSE, MATMPIAIJCUSPARSE)); 2029566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE)); 2039566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE)); 204*2d1451d4SHong Zhang PetscCall(MatRegisterRootName(MATSELLCUDA, MATSEQSELLCUDA, MATMPISELLCUDA)); 205*2d1451d4SHong Zhang PetscCall(MatRegister(MATSEQSELLCUDA, MatCreate_SeqSELLCUDA)); 206*2d1451d4SHong Zhang PetscCall(MatRegister(MATMPISELLCUDA, MatCreate_MPISELLCUDA)); 2079ae82921SPaul Mullowney #endif 2089ae82921SPaul Mullowney 20947d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 21047d993e7Ssuyashtn PetscCall(MatRegisterRootName(MATAIJHIPSPARSE, MATSEQAIJHIPSPARSE, MATMPIAIJHIPSPARSE)); 21147d993e7Ssuyashtn PetscCall(MatRegister(MATSEQAIJHIPSPARSE, MatCreate_SeqAIJHIPSPARSE)); 21247d993e7Ssuyashtn PetscCall(MatRegister(MATMPIAIJHIPSPARSE, MatCreate_MPIAIJHIPSPARSE)); 21347d993e7Ssuyashtn #endif 21447d993e7Ssuyashtn 215bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 2169566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJVIENNACL, MATSEQAIJVIENNACL, MATMPIAIJVIENNACL)); 2179566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL)); 2189566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL)); 2198f86e40fSKarl Rupp #endif 2208f86e40fSKarl Rupp 2218c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 2229566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJKOKKOS, MATSEQAIJKOKKOS, MATMPIAIJKOKKOS)); 2239566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos)); 2249566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos)); 2258c3ff71bSJunchao Zhang #endif 2268c3ff71bSJunchao Zhang 227bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 2289566063dSJacob Faibussowitsch PetscCall(MatRegister(MATFFTW, MatCreate_FFTW)); 229dedccee8SHong Zhang #endif 230bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL) 2319566063dSJacob Faibussowitsch PetscCall(MatRegister(MATELEMENTAL, MatCreate_Elemental)); 232db31f6deSJed Brown #endif 233d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 2349566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK)); 235d24d4204SJose E. Roman #endif 236c094ef40SMatthew G. Knepley 2379566063dSJacob Faibussowitsch PetscCall(MatRegister(MATPREALLOCATOR, MatCreate_Preallocator)); 2389566063dSJacob Faibussowitsch PetscCall(MatRegister(MATDUMMY, MatCreate_Dummy)); 23963c07aadSStefano Zampini 2409566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCONSTANTDIAGONAL, MatCreate_ConstantDiagonal)); 2413423f386SBarry Smith 242bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 2439566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHYPRE, MatCreate_HYPRE)); 24463c07aadSStefano Zampini #endif 245a0d2e7d8SStefano Zampini 24653022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 2479566063dSJacob Faibussowitsch PetscCall(MatRegister(MATH2OPUS, MatCreate_H2OPUS)); 248a0d2e7d8SStefano Zampini #endif 249c7a4214aSPierre Jolivet 250c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 2519566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHTOOL, MatCreate_Htool)); 252c7a4214aSPierre Jolivet #endif 2533ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 2548a95e4e9SBarry Smith } 255