petsc-3.14.5 2021-03-03
Documentation: Changes: 3.12
General:
- PetscRoundReal() has been removed, since the math routine round() is not supported on all systems: perhaps use PetscCeilReal() or PetscFloorReal()<\li>
- The legacy and cmake compile systems (make all-legacy and all-cmake) are removed
- make gnumake is now make libs
- PetscArraycmp() should be used instead of PetscMemcmp(), it takes a count argument instead of a byte argument
- PetscArraycpy() should be used instead of PetscMemcpy(), it takes a count argument instead of a byte argument
- PetscArrayzero() should be used instead of PetscMemzero(), it takes a count argument instead of a byte argument
- PetscArraymove() should be used instead of PetscMemmove(), it takes a count argument instead of a byte argument
- The ./configure options -with-gnu-compilers and -with-vendor-compilers are removed
- The ./configure option --with-avx512-kernels defaults to true now so the manually optimized AVX-512 kernels are used by default
- The order ./configure tests compilers has changed so there may be a different compiler selected if you do not provide them
- Added --with-64-bit-blas-indices that will switch to 64 bit indices when using MKL libraries for BLAS/LAPACK and build OpenBLAS with this support
- Changed PETSC_DEPRECATED() to PETSC_DEPRECATED_FUNCTION() and PETSC_DEPRECATED_TYPEDEF() to match naming of PETSC_DEPRECATED_ENUM() and PETSC_DEPRECATED_MACRO
- -help now causes the printing of the current value and the newly set value for PetscOptionsInt(), etc
- PetscFunctionListPrintTypes() takes an additional final argument after the current value, the set value
- PetscCalloc*() now calls the system calloc() routine instead of malloc() plus memzero()
- -malloc is now marked as deprecated, use -malloc_debug instead
- -malloc_log and -malloc_log_threshold are now -malloc_view and -malloc_view_threshold
- PetscMallocDebug() is now PetscMallocSetDebug()
- PetscMallocDumpLog() is now PetscMallocView(), see also PetscMallocViewSet()
- PetscMallocSetDumpLogThreshold() and PetscMallocSetDumpLog() are now PetscMallocViewSet()
- With -malloc_test or -malloc_debug allocated memory is initialized with NaN to detect use of uninitialized numerical arrays
- PetscMallocSet() now takes three arguments instead of two
- Moved PetscCUBLASGetHandle() to a separate header file petscublas.h
- Moved VecCUDA*-routines from petsccuda.h into petscvec.h. Removed petsccuda.h
Configure/Build:
- C++ dialect is now auto-detected (C++14 first and then C++11). One can disable this check using --with-cxx-dialect=0, or force it to only check for C++11 using --with-cxx-dialect=C++11
- New option --download-hpddm to enable PCHPDDM and KSPHPDDM
IS:
PetscDraw:
PF:
Vec:
- VecCUDAGet/RestoreArrayReadWrite() changed to VecCUDAGet/RestoreArray()
- VecViennaCLGet/RestoreArrayReadWrite() changed to VecViennaCLGet/RestoreArray()
- Added VecGet/RestoreArray/ReadInPlace() to get array of a vector where it is without copying from GPU to CPU.
PetscLayout:
- Added PetscLayoutCreateFromSizes()
- Added PetscLayoutCreateFromRanges()
- Calling PetscLayoutSetUp() twice with different sizes is now forbidden
PetscSection:
VecScatter & PetscSF:
- The default VecScatter implementation is changed to PetscSF. In other words, the default VecScatter shares PetscSF's MPI communication code. One can use -vecscatter_type mpi1 to go back to the old implementation.
- Added new InsertMode MAX_VALUES and MIN_VALUES support in VecScatterBegin/End and VecGhostUpdateBegin/End.
- PetscSFComputeMultiRootOriginalNumbering: add output argument with the number of multiroots for convenience
- Added an enum type PetscSFPattern for SF graph patterns. Valid values include PETSCSF_PATTERN_ALLGATHER, PETSCSF_PATTERN_GATHER and PETSCSF_PATTERN_ALLTOALL.
- Added PetscSFSetGraphWithPattern() to set SF graphs with predefined patterns.
- Added PetscSFComposeInverse() to compose a new SF by putting the inverse of an SF under the another SF.
- Added MPI-3.0 neighborhood collectives support. One can use command line option -sf_type neighbor to let SF use MPI-3.0 neighborhood collectives for communication instead of the default MPI_Send/Recv.
- PetscSF is now CUDA-aware. The rootdata, leafdata arguments passed to SF routines can be either GPU pointers or CPU pointers. Use a CUDA-aware MPI and option -use_gpu_aware_mpi to enable it.
- VecScatter is also CUDA-aware. You can do VecScatter on CUDA vectors without copying them from GPU to CPU. Again, you need a CUDA-aware MPI and option -use_gpu_aware_mpi.
- Removed PetscSFCreateFromZero. Instead, users should use PetscSFCreate() to create an SF, and then set its graph with PetscSFSetGraphWithPattern(..,PETSCSF_PATTERN_GATHER).
- Renam