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 20*4742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDense(Mat); 21*4742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_MPIDense(Mat); 22bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 23*4742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat); 24*4742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat); 25bfc799aaSStefano Zampini #endif 2617667f90SBarry Smith 2747d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 28*4742e46bSJacob Faibussowitsch PETSC_INTERN PetscErrorCode MatCreate_SeqDenseHIP(Mat); 29*4742e46bSJacob 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); 659ae82921SPaul Mullowney #endif 669ae82921SPaul Mullowney 6747d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 6847d993e7Ssuyashtn PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJHIPSPARSE(Mat); 6947d993e7Ssuyashtn PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJHIPSPARSE(Mat); 7047d993e7Ssuyashtn #endif 7147d993e7Ssuyashtn 72bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 73d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 748f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 75d67ff14aSKarl Rupp #endif 76d67ff14aSKarl Rupp 778c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 788c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat); 798c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat); 808c3ff71bSJunchao Zhang #endif 818c3ff71bSJunchao Zhang 82bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 838cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 84dedccee8SHong Zhang #endif 85d8304050SJose E. Roman #if defined(PETSC_HAVE_ELEMENTAL) 868cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 87d8304050SJose E. Roman #endif 88d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 89d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat); 90d24d4204SJose E. Roman #endif 918a95e4e9SBarry Smith 92c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 93a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 94c094ef40SMatthew G. Knepley 95bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 9663c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 9763c07aadSStefano Zampini #endif 9863c07aadSStefano Zampini 993423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat); 100a0d2e7d8SStefano Zampini 10153022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 10253022affSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat); 103a0d2e7d8SStefano Zampini #endif 104a0d2e7d8SStefano Zampini 105c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 106c7a4214aSPierre Jolivet PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat); 107c7a4214aSPierre Jolivet #endif 108c7a4214aSPierre Jolivet 1098a95e4e9SBarry Smith /*@C 110f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 1118a95e4e9SBarry Smith 1128a95e4e9SBarry Smith Not Collective 1138a95e4e9SBarry Smith 1148a95e4e9SBarry Smith Level: advanced 1158a95e4e9SBarry Smith 11611a5261eSBarry Smith .seealso: `MatType`, `MatSetType()`, `MatRegister()` 1178a95e4e9SBarry Smith @*/ 118d71ae5a4SJacob Faibussowitsch PetscErrorCode MatRegisterAll(void) 119d71ae5a4SJacob Faibussowitsch { 1208a95e4e9SBarry Smith PetscFunctionBegin; 1213ba16761SJacob Faibussowitsch if (MatRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS); 122f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 1238a95e4e9SBarry Smith 1249566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMFFD, MatCreate_MFFD)); 125e884886fSBarry Smith 1269566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIMAIJ, MatCreate_MAIJ)); 1279566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQMAIJ, MatCreate_MAIJ)); 1289566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMAIJ, MatCreate_MAIJ)); 129273d9f13SBarry Smith 1309566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIKAIJ, MatCreate_KAIJ)); 1319566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQKAIJ, MatCreate_KAIJ)); 1329566063dSJacob Faibussowitsch PetscCall(MatRegister(MATKAIJ, MatCreate_KAIJ)); 13349bd79ccSDebojyoti Ghosh 1349566063dSJacob Faibussowitsch PetscCall(MatRegister(MATIS, MatCreate_IS)); 1359566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSHELL, MatCreate_Shell)); 1369566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCOMPOSITE, MatCreate_Composite)); 13701bebe75SBarry Smith 1389566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJ, MATSEQAIJ, MATMPIAIJ)); 1399566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJ, MatCreate_MPIAIJ)); 1409566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJ, MatCreate_SeqAIJ)); 14117667f90SBarry Smith 1429566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJPERM, MATSEQAIJPERM, MATMPIAIJPERM)); 1439566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM)); 1449566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM)); 14517667f90SBarry Smith 1469566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJSELL, MATSEQAIJSELL, MATMPIAIJSELL)); 1479566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL)); 1489566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL)); 1494dfdc2d9SRichard Tran Mills 150bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 1519566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL, MATMPIAIJMKL)); 1529566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL)); 1539566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL)); 154b9e7e5c1SBarry Smith #endif 155b5b72c8aSIrina Sokolova 156bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 1579566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJMKL, MATSEQBAIJMKL, MATMPIBAIJMKL)); 1589566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL)); 1599566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL)); 160191b95cbSRichard Tran Mills #endif 1614a2a386eSRichard Tran Mills 1629566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCRL, MATSEQAIJCRL, MATMPIAIJCRL)); 1639566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL)); 1649566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL)); 165273d9f13SBarry Smith 1669566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJ, MATSEQBAIJ, MATMPIBAIJ)); 1679566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ)); 1689566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ)); 169273d9f13SBarry Smith 1709566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSBAIJ, MATSEQSBAIJ, MATMPISBAIJ)); 1719566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ)); 1729566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ)); 17317667f90SBarry Smith 1749566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSE, MATSEQDENSE, MATMPIDENSE)); 1759566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSE, MatCreate_MPIDense)); 1769566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSE, MatCreate_SeqDense)); 177bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 1789566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSECUDA, MATSEQDENSECUDA, MATMPIDENSECUDA)); 1799566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA)); 1809566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA)); 181bfc799aaSStefano Zampini #endif 18217667f90SBarry Smith 18347d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 18447d993e7Ssuyashtn PetscCall(MatRegisterRootName(MATDENSEHIP, MATSEQDENSEHIP, MATMPIDENSEHIP)); 18547d993e7Ssuyashtn PetscCall(MatRegister(MATSEQDENSEHIP, MatCreate_SeqDenseHIP)); 18647d993e7Ssuyashtn PetscCall(MatRegister(MATMPIDENSEHIP, MatCreate_MPIDenseHIP)); 18747d993e7Ssuyashtn #endif 18847d993e7Ssuyashtn 1899566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIADJ, MatCreate_MPIAdj)); 1909566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCATTER, MatCreate_Scatter)); 1919566063dSJacob Faibussowitsch PetscCall(MatRegister(MATBLOCKMAT, MatCreate_BlockMat)); 1929566063dSJacob Faibussowitsch PetscCall(MatRegister(MATNEST, MatCreate_Nest)); 19368326731SBarry Smith 1949566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSELL, MATSEQSELL, MATMPISELL)); 1959566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISELL, MatCreate_MPISELL)); 1969566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSELL, MatCreate_SeqSELL)); 1975e26d47bSHong Zhang 198bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 1999566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCUSPARSE, MATSEQAIJCUSPARSE, MATMPIAIJCUSPARSE)); 2009566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE)); 2019566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE)); 2029ae82921SPaul Mullowney #endif 2039ae82921SPaul Mullowney 20447d993e7Ssuyashtn #if defined(PETSC_HAVE_HIP) 20547d993e7Ssuyashtn PetscCall(MatRegisterRootName(MATAIJHIPSPARSE, MATSEQAIJHIPSPARSE, MATMPIAIJHIPSPARSE)); 20647d993e7Ssuyashtn PetscCall(MatRegister(MATSEQAIJHIPSPARSE, MatCreate_SeqAIJHIPSPARSE)); 20747d993e7Ssuyashtn PetscCall(MatRegister(MATMPIAIJHIPSPARSE, MatCreate_MPIAIJHIPSPARSE)); 20847d993e7Ssuyashtn #endif 20947d993e7Ssuyashtn 210bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 2119566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJVIENNACL, MATSEQAIJVIENNACL, MATMPIAIJVIENNACL)); 2129566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL)); 2139566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL)); 2148f86e40fSKarl Rupp #endif 2158f86e40fSKarl Rupp 2168c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 2179566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJKOKKOS, MATSEQAIJKOKKOS, MATMPIAIJKOKKOS)); 2189566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos)); 2199566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos)); 2208c3ff71bSJunchao Zhang #endif 2218c3ff71bSJunchao Zhang 222bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 2239566063dSJacob Faibussowitsch PetscCall(MatRegister(MATFFTW, MatCreate_FFTW)); 224dedccee8SHong Zhang #endif 225bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL) 2269566063dSJacob Faibussowitsch PetscCall(MatRegister(MATELEMENTAL, MatCreate_Elemental)); 227db31f6deSJed Brown #endif 228d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 2299566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK)); 230d24d4204SJose E. Roman #endif 231c094ef40SMatthew G. Knepley 2329566063dSJacob Faibussowitsch PetscCall(MatRegister(MATPREALLOCATOR, MatCreate_Preallocator)); 2339566063dSJacob Faibussowitsch PetscCall(MatRegister(MATDUMMY, MatCreate_Dummy)); 23463c07aadSStefano Zampini 2359566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCONSTANTDIAGONAL, MatCreate_ConstantDiagonal)); 2363423f386SBarry Smith 237bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 2389566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHYPRE, MatCreate_HYPRE)); 23963c07aadSStefano Zampini #endif 240a0d2e7d8SStefano Zampini 24153022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 2429566063dSJacob Faibussowitsch PetscCall(MatRegister(MATH2OPUS, MatCreate_H2OPUS)); 243a0d2e7d8SStefano Zampini #endif 244c7a4214aSPierre Jolivet 245c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 2469566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHTOOL, MatCreate_Htool)); 247c7a4214aSPierre Jolivet #endif 2483ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 2498a95e4e9SBarry Smith } 250