Add automatic generated fortran support for setting and returning contextsMajor cleanup of the code for setting and returning application (previously called user) contexts - PetscCtx ctx is now t
Add automatic generated fortran support for setting and returning contextsMajor cleanup of the code for setting and returning application (previously called user) contexts - PetscCtx ctx is now the standard for passing in contexts - PetscCtxRt ctx is the standard for passing out contexts, including context destroy routines based on PetscCtxDestroyFnBoth of these are typedef to void*Also removed most use of user and userctx for context arguments now consistently named ctxImproved documentation on PetscCtx and PetscCtxRt and on how to use contexts (including getting them) from Fortran
show more ...
Kokkos: update to v5.0.0CI: remove kokkos from linux-cuda-pkgs (in favor of linux-kokkos-cuda) as v5 breaks with many external pkgs,CI: continue to use kokkos v4.7.01 for hip builds - as they curr
Kokkos: update to v5.0.0CI: remove kokkos from linux-cuda-pkgs (in favor of linux-kokkos-cuda) as v5 breaks with many external pkgs,CI: continue to use kokkos v4.7.01 for hip builds - as they currently use rocm-5.4.3Co-authored-by: Satish Balay <balay@mcs.anl.gov>
Rework MAT_SYMMETRIC and MAT_HERMITIAN options
MatAssemblyEnd(): fix missing space in -info
- Replace MatMissingDiagonal() and MatMarkDiagonals_SeqXXX() with MatGetDiagonalMarkers_SeqXXX() - Mat_SeqXXX->diag is not automatically created during MatAssemblyEnd() saving memory and time
- Replace MatMissingDiagonal() and MatMarkDiagonals_SeqXXX() with MatGetDiagonalMarkers_SeqXXX() - Mat_SeqXXX->diag is not automatically created during MatAssemblyEnd() saving memory and time - Accessing Mat_SeqXXX->diag now requires the use of MatGetDiagonalMarkers_SeqXXX() except when the current values are known to be correct; for example during numerical factorizations and solves - Mat_SeqXXX->diag is now never shared among matrices; hence the free_diag flag is gone. That was always a risky proposition since any of the owning matrices could chang the values thus making them incorrect for other owners.
This MR optimize some MAT[SB]AIJ operations related to the diagonalThe longer term goal is to refactor some Mat_SeqXXX non-numeric code to make it easier to also implement it on GPUs. For example,
This MR optimize some MAT[SB]AIJ operations related to the diagonalThe longer term goal is to refactor some Mat_SeqXXX non-numeric code to make it easier to also implement it on GPUs. For example, MatGetDiagonal() and friendsThis commit- MatMarkDiagonal_SeqAIJ/ELL() - now use change in mat->nonzerostate to determine if it needs to recheck the diagonal locations - sets diagDense flag for a complete diagonal- MatInvertDiagonal_SeqAIJ/ELL() - now uses change in mat->state to determine if diagonal entries and inverses need to be recomputed - name changed to MatInvertDiagonalForSOR_SeqAIJ/ELL() for code clarity- Added MatInvertDiagonal_SeqAIJ_Inode() for use by MatSOR_SeqAIJ_Inode() - now uses change in mat->state to determine if block diagonal entries and inverses need to be recomputed
Change names of Mat_XXX product contexts to MatProductCtx_XXX for code maintainabilityUpdate destroy callback of all MatProductCtx and MatShellSetMatProductOperation() to use PetscCtxDestroyFn
doc: remove non-existing referencesReported-by: Victor Eijkhout <eijkhout@tacc.utexas.edu>
Gather CUDA lib includes in petscdevice_cuda.h + disable cuSPARSE warnings using DISABLE_CUSPARSE_DEPRECATEDDefining DISABLE_CUSPARSE_DEPRECATED is Nvidia's recommended way of disabling cuSPARSE wa
Gather CUDA lib includes in petscdevice_cuda.h + disable cuSPARSE warnings using DISABLE_CUSPARSE_DEPRECATEDDefining DISABLE_CUSPARSE_DEPRECATED is Nvidia's recommended way of disabling cuSPARSE warningsThis avoids requiring -Wdeprecated-declarations - that can mask other (non-cuSPARSE) warnings
Fix warnings due to ignoring return value type with nodiscard attribute
One-liners from petsc/petsc!5344 and petsc/petsc!5557Slightly reworked regular expressiongit ls-files -z -- '*.c' '*.cxx' '*.cu' '*.h' '*.hpp' '*.cpp' | while IFS= read -r -d '' file; do cat
One-liners from petsc/petsc!5344 and petsc/petsc!5557Slightly reworked regular expressiongit ls-files -z -- '*.c' '*.cxx' '*.cu' '*.h' '*.hpp' '*.cpp' | while IFS= read -r -d '' file; do cat $file | tr '\n' '\r' | sed -E 's/\r([ ]*)(for|if|while|else) ([^\r]*)\{\r[ ]*Petsc([a-zA-Z]*)\(([^\r]*)\);\r[ ]*\}\r/\r\1\2 \3Petsc\4(\5);\r/g' | tr '\r' '\n' > ${file}.joe; mv ${file}.joe ${file}done
Merge branch 'lindad/hypre-control-through-pmat' into 'main'Change hypre PC option defaults based on hypre matrix memory locationSee merge request petsc/petsc!8505
Make MatGetCurrentMemType first class API
Docs: typos
Mat: change the prototype of a ctor of Mat_SeqAIJKokkosTo correctly mark the a,i,j on host are allocated by Mat_SeqAIJKokkos, so don't use them when Mat_SeqAIJKokkos is deleted.close #1798
Merge remote-tracking branch 'origin/release'
Merge branch 'zach/fixes-gpu-mi300a' into 'release'MATHYPRE and Kokkos FixesSee merge request petsc/petsc!8510
Remove extra preprocessor checks
aijkokkos: fix a bug, in MatAssemblyEnd_SeqAIJKokkos, before deleting aijkok, need to preserve a,i,j on host
aijkokkos: fix a bug, MatConvert from aij to aijkokkos with MAT_INITIAL_MATRIX didn't set the output matrix type correctly
Split KokkosDualViewSync into Host and Device versions
Kokkos - Limit excess synchronization on MI300A
atSeqAIJRestoreKokkosViewWrite: fix unused variable warning
petscerror.h: iwyu export semi-private headerpetscerror.h cannot be included directly unless petscsys.h has alreadybeen included (and that unconditionally includes petscerror.h). Thisupdates docs
petscerror.h: iwyu export semi-private headerpetscerror.h cannot be included directly unless petscsys.h has alreadybeen included (and that unconditionally includes petscerror.h). Thisupdates docs and uses IWYU pragma export so IDEs (clangd) willautomatically include the correct header when you use things likeSETERRQ that appear petscerror.h.Fix #1254
1234567