1*7f296bb3SBarry Smith# Changes: 3.12 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} General: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- PetscRoundReal() has been removed, since the math routine round() 7*7f296bb3SBarry Smith is not supported on all systems: perhaps use PetscCeilReal() or 8*7f296bb3SBarry Smith PetscFloorReal()\<li> 9*7f296bb3SBarry Smith- The legacy and CMake compile systems (make all-legacy and 10*7f296bb3SBarry Smith all-cmake) are removed 11*7f296bb3SBarry Smith- make gnumake is now make libs 12*7f296bb3SBarry Smith- PetscArraycmp() should be used instead of PetscMemcmp(), it takes 13*7f296bb3SBarry Smith a count argument instead of a byte argument 14*7f296bb3SBarry Smith- PetscArraycpy() should be used instead of PetscMemcpy(), it takes 15*7f296bb3SBarry Smith a count argument instead of a byte argument 16*7f296bb3SBarry Smith- PetscArrayzero() should be used instead of PetscMemzero(), it 17*7f296bb3SBarry Smith takes a count argument instead of a byte argument 18*7f296bb3SBarry Smith- PetscArraymove() should be used instead of PetscMemmove(), it 19*7f296bb3SBarry Smith takes a count argument instead of a byte argument 20*7f296bb3SBarry Smith- The ./configure options -with-gnu-compilers and 21*7f296bb3SBarry Smith -with-vendor-compilers are removed 22*7f296bb3SBarry Smith- The ./configure option --with-avx512-kernels defaults to true now 23*7f296bb3SBarry Smith so the manually optimized AVX-512 kernels are used by default 24*7f296bb3SBarry Smith- The order ./configure tests compilers has changed so there may be 25*7f296bb3SBarry Smith a different compiler selected if you do not provide them 26*7f296bb3SBarry Smith- Added --with-64-bit-blas-indices that will switch to 64-bit 27*7f296bb3SBarry Smith indices when using MKL libraries for BLAS/LAPACK and build 28*7f296bb3SBarry Smith OpenBLAS with this support 29*7f296bb3SBarry Smith- Changed PETSC_DEPRECATED() to PETSC_DEPRECATED_FUNCTION() and 30*7f296bb3SBarry Smith PETSC_DEPRECATED_TYPEDEF() to match naming of 31*7f296bb3SBarry Smith PETSC_DEPRECATED_ENUM() and PETSC_DEPRECATED_MACRO 32*7f296bb3SBarry Smith- -help now causes the printing of the current value and the newly 33*7f296bb3SBarry Smith set value for PetscOptionsInt(), etc 34*7f296bb3SBarry Smith- PetscFunctionListPrintTypes() takes an additional final argument 35*7f296bb3SBarry Smith after the current value, the set value 36*7f296bb3SBarry Smith- PetscCalloc\*() now calls the system calloc() routine instead of 37*7f296bb3SBarry Smith malloc() plus memzero() 38*7f296bb3SBarry Smith- -malloc is now marked as deprecated, use -malloc_debug instead 39*7f296bb3SBarry Smith- -malloc_log and -malloc_log_threshold are now -malloc_view and 40*7f296bb3SBarry Smith -malloc_view_threshold 41*7f296bb3SBarry Smith- PetscMallocDebug() is now PetscMallocSetDebug() 42*7f296bb3SBarry Smith- PetscMallocDumpLog() is now PetscMallocView(), see also 43*7f296bb3SBarry Smith PetscMallocViewSet() 44*7f296bb3SBarry Smith- PetscMallocSetDumpLogThreshold() and PetscMallocSetDumpLog() are 45*7f296bb3SBarry Smith now PetscMallocViewSet() 46*7f296bb3SBarry Smith- With -malloc_test or -malloc_debug allocated memory is initialized 47*7f296bb3SBarry Smith with NaN to detect use of uninitialized numerical arrays 48*7f296bb3SBarry Smith- PetscMallocSet() now takes three arguments instead of two 49*7f296bb3SBarry Smith- Moved PetscCUBLASGetHandle() to a separate header file 50*7f296bb3SBarry Smith petscublas.h 51*7f296bb3SBarry Smith- Moved VecCUDA\*-routines from petsccuda.h into petscvec.h. Removed 52*7f296bb3SBarry Smith petsccuda.h 53*7f296bb3SBarry Smith 54*7f296bb3SBarry Smith```{rubric} Configure/Build: 55*7f296bb3SBarry Smith``` 56*7f296bb3SBarry Smith 57*7f296bb3SBarry Smith- C++ dialect is now auto-detected (C++14 first and then C++11). One 58*7f296bb3SBarry Smith can disable this check using --with-cxx-dialect=0, or force it to 59*7f296bb3SBarry Smith only check for C++11 using --with-cxx-dialect=C++11 60*7f296bb3SBarry Smith- New option --download-hpddm to enable PCHPDDM and KSPHPDDM 61*7f296bb3SBarry Smith 62*7f296bb3SBarry Smith```{rubric} IS: 63*7f296bb3SBarry Smith``` 64*7f296bb3SBarry Smith 65*7f296bb3SBarry Smith```{rubric} PetscDraw: 66*7f296bb3SBarry Smith``` 67*7f296bb3SBarry Smith 68*7f296bb3SBarry Smith```{rubric} PF: 69*7f296bb3SBarry Smith``` 70*7f296bb3SBarry Smith 71*7f296bb3SBarry Smith```{rubric} Vec: 72*7f296bb3SBarry Smith``` 73*7f296bb3SBarry Smith 74*7f296bb3SBarry Smith- VecCUDAGet/RestoreArrayReadWrite() changed to 75*7f296bb3SBarry Smith VecCUDAGet/RestoreArray() 76*7f296bb3SBarry Smith- VecViennaCLGet/RestoreArrayReadWrite() changed to 77*7f296bb3SBarry Smith VecViennaCLGet/RestoreArray() 78*7f296bb3SBarry Smith- Added VecGet/RestoreArray/ReadInPlace() to get array of a vector 79*7f296bb3SBarry Smith where it is without copying from GPU to CPU. 80*7f296bb3SBarry Smith 81*7f296bb3SBarry Smith```{rubric} PetscLayout: 82*7f296bb3SBarry Smith``` 83*7f296bb3SBarry Smith 84*7f296bb3SBarry Smith- Added PetscLayoutCreateFromSizes() 85*7f296bb3SBarry Smith- Added PetscLayoutCreateFromRanges() 86*7f296bb3SBarry Smith- Calling PetscLayoutSetUp() twice with different sizes is now 87*7f296bb3SBarry Smith forbidden 88*7f296bb3SBarry Smith 89*7f296bb3SBarry Smith```{rubric} PetscSection: 90*7f296bb3SBarry Smith``` 91*7f296bb3SBarry Smith 92*7f296bb3SBarry Smith```{rubric} VecScatter & PetscSF: 93*7f296bb3SBarry Smith``` 94*7f296bb3SBarry Smith 95*7f296bb3SBarry Smith- The default VecScatter implementation is changed to PetscSF. In 96*7f296bb3SBarry Smith other words, the default VecScatter shares PetscSF's MPI 97*7f296bb3SBarry Smith communication code. One can use -vecscatter_type mpi1 to go back 98*7f296bb3SBarry Smith to the old implementation. 99*7f296bb3SBarry Smith- Added new InsertMode MAX_VALUES and MIN_VALUES support in 100*7f296bb3SBarry Smith VecScatterBegin/End and VecGhostUpdateBegin/End. 101*7f296bb3SBarry Smith- PetscSFComputeMultiRootOriginalNumbering: add output argument with 102*7f296bb3SBarry Smith the number of multiroots for convenience 103*7f296bb3SBarry Smith- Added an enum type PetscSFPattern for SF graph patterns. Valid 104*7f296bb3SBarry Smith values include PETSCSF_PATTERN_ALLGATHER, PETSCSF_PATTERN_GATHER 105*7f296bb3SBarry Smith and PETSCSF_PATTERN_ALLTOALL. 106*7f296bb3SBarry Smith- Added PetscSFSetGraphWithPattern() to set SF graphs with 107*7f296bb3SBarry Smith predefined patterns. 108*7f296bb3SBarry Smith- Added PetscSFComposeInverse() to compose a new SF by putting the 109*7f296bb3SBarry Smith inverse of an SF under the another SF. 110*7f296bb3SBarry Smith- Added MPI-3.0 neighborhood collectives support. One can use 111*7f296bb3SBarry Smith command line option -sf_type neighbor to let SF use MPI-3.0 112*7f296bb3SBarry Smith neighborhood collectives for communication instead of the default 113*7f296bb3SBarry Smith MPI_Send/Recv. 114*7f296bb3SBarry Smith- PetscSF is now CUDA-aware. The rootdata, leafdata arguments passed 115*7f296bb3SBarry Smith to SF routines can be either GPU pointers or CPU pointers. Use a 116*7f296bb3SBarry Smith CUDA-aware MPI and option -use_gpu_aware_mpi to enable it. 117*7f296bb3SBarry Smith- VecScatter is also CUDA-aware. You can do VecScatter on CUDA 118*7f296bb3SBarry Smith vectors without copying them from GPU to CPU. Again, you need a 119*7f296bb3SBarry Smith CUDA-aware MPI and option -use_gpu_aware_mpi. 120*7f296bb3SBarry Smith- Removed PetscSFCreateFromZero. Instead, users should use 121*7f296bb3SBarry Smith PetscSFCreate() to create an SF, and then set its graph with 122*7f296bb3SBarry Smith PetscSFSetGraphWithPattern(..,PETSCSF_PATTERN_GATHER). 123*7f296bb3SBarry Smith- Renamed PetscSFGetRanks() to PetscSFGetRootRanks(). 124*7f296bb3SBarry Smith 125*7f296bb3SBarry Smith```{rubric} Mat: 126*7f296bb3SBarry Smith``` 127*7f296bb3SBarry Smith 128*7f296bb3SBarry Smith- MatShift(Mat,0); will no longer silently insure there are no 129*7f296bb3SBarry Smith missing diagonal entries. (Previously it would put 0 into any 130*7f296bb3SBarry Smith diagonal entry that was missing) 131*7f296bb3SBarry Smith- Renamed MatComputeExplicitOperator() into MatComputeOperator() and 132*7f296bb3SBarry Smith MatComputeExplicitOperatorTranspose() into 133*7f296bb3SBarry Smith MatComputeOperatorTranspose(). Added extra argument to select the 134*7f296bb3SBarry Smith desired matrix type 135*7f296bb3SBarry Smith- MatLoad() now supports loading dense matrices from HDF5/MAT files. 136*7f296bb3SBarry Smith- Added new Mat type, MATKAIJ, for matrices that can be expressed in 137*7f296bb3SBarry Smith a particular Kronecker (tensor) product form. 138*7f296bb3SBarry Smith- Added MatCompositeSetScalings() to set separate scaling factors 139*7f296bb3SBarry Smith for component matrices. 140*7f296bb3SBarry Smith- Added a Boolean option -mat_composite_merge_mvctx to merge Mvctx 141*7f296bb3SBarry Smith of component matrices to optimize communication in MatMult() for 142*7f296bb3SBarry Smith ADDITIVE matrices. Default is true. 143*7f296bb3SBarry Smith- Added MATSEQDENSECUDA class to use GPUs for dense linear algebra. 144*7f296bb3SBarry Smith 145*7f296bb3SBarry Smith```{rubric} PC: 146*7f296bb3SBarry Smith``` 147*7f296bb3SBarry Smith 148*7f296bb3SBarry Smith- Renamed PCComputeExplicitOperator() into PCComputeOperator(). 149*7f296bb3SBarry Smith Added extra argument to select the desired matrix type 150*7f296bb3SBarry Smith- Added support for PCCHOLESKY with MATSOLVERMUMPS and SBAIJ 151*7f296bb3SBarry Smith matrices with bs greater than 1 152*7f296bb3SBarry Smith- Added support for PCLU with MATSOLVERMKL_PARDISO (resp. 153*7f296bb3SBarry Smith MATSOLVERMKL_CPARDISO) and SEQBAIJ (resp. MPIBAIJ) matrices 154*7f296bb3SBarry Smith- Added support for PCCHOLESKY with MATSOLVERMKL_PARDISO (resp. 155*7f296bb3SBarry Smith MATSOLVERMKL_CPARDISO) and SEQSBAIJ (resp. MPISBAIJ) matrices 156*7f296bb3SBarry Smith- Added new preconditioner PCHPDDM, cf. 157*7f296bb3SBarry Smith src/ksp/ksp/examples/tutorials/ex71.c or 158*7f296bb3SBarry Smith src/snes/examples/tutorials/ex56.c 159*7f296bb3SBarry Smith 160*7f296bb3SBarry Smith```{rubric} KSP: 161*7f296bb3SBarry Smith``` 162*7f296bb3SBarry Smith 163*7f296bb3SBarry Smith- Renamed KSPComputeExplicitOperator() into KSPComputeOperator(). 164*7f296bb3SBarry Smith Added extra argument to select the desired matrix type 165*7f296bb3SBarry Smith- KSPCGGLTRGetMinEig(KSP,PetscReal\*) -> 166*7f296bb3SBarry Smith KSPGLTRGetMinEig(KSP,PetscReal\*) 167*7f296bb3SBarry Smith- KSPCGGLTRGetLambda(KSP,PetscReal\*) -> 168*7f296bb3SBarry Smith KSPGLTRGetLambda(KSP,PetscReal\*) 169*7f296bb3SBarry Smith- KSPCGNASH, KSPCGSTCG, KSPCGGLTR -> KSPNASH, KSPSTCG, KSPGLTR 170*7f296bb3SBarry Smith- Added new Krylov solver KSPHPDDM, cf. 171*7f296bb3SBarry Smith src/ksp/ksp/examples/tutorials/ex75.c or 172*7f296bb3SBarry Smith src/ksp/ksp/examples/tutorials/ex9.c 173*7f296bb3SBarry Smith 174*7f296bb3SBarry Smith```{rubric} SNES: 175*7f296bb3SBarry Smith``` 176*7f296bb3SBarry Smith 177*7f296bb3SBarry Smith- Changed SNES_CONVERGED_TR_DELTA to SNES_DIVERGED_TR_DELTA with a 178*7f296bb3SBarry Smith negative value to indicate diverged, unclear why it was ever 179*7f296bb3SBarry Smith positive since tiny trust region would indicate trouble, not 180*7f296bb3SBarry Smith converged 181*7f296bb3SBarry Smith 182*7f296bb3SBarry Smith```{rubric} SNES: 183*7f296bb3SBarry Smith``` 184*7f296bb3SBarry Smith 185*7f296bb3SBarry Smith- -snes_mf no longer turns the preconditioner to none; to use it 186*7f296bb3SBarry Smith generally you will also need -pc_type none 187*7f296bb3SBarry Smith 188*7f296bb3SBarry Smith```{rubric} SNESLineSearch: 189*7f296bb3SBarry Smith``` 190*7f296bb3SBarry Smith 191*7f296bb3SBarry Smith```{rubric} TS: 192*7f296bb3SBarry Smith``` 193*7f296bb3SBarry Smith 194*7f296bb3SBarry Smith- Added tangent linear models for Runge-Kutta methods 195*7f296bb3SBarry Smith- Added second-order adjoint solvers based on Runge-Kutta methods 196*7f296bb3SBarry Smith and Theta methods 197*7f296bb3SBarry Smith- Improved the usage of first-order adjoint solvers in an 198*7f296bb3SBarry Smith optimization context. (The TS object can be reused in the 199*7f296bb3SBarry Smith optimization loop) 200*7f296bb3SBarry Smith- Changed the APIs for integrand evaluations and corresponding 201*7f296bb3SBarry Smith derivative evaluations. TSSetCostIntegrand() is deprecated. 202*7f296bb3SBarry Smith (Instead a quadrature TS is used to handle the callbacks) 203*7f296bb3SBarry Smith- TSTrajectory creates a unique name for folders that store the 204*7f296bb3SBarry Smith checkpoint data. Users can rerun adjoint codes without worrying 205*7f296bb3SBarry Smith about the folder names, and run multiple codes under the same 206*7f296bb3SBarry Smith directory. 207*7f296bb3SBarry Smith- Added support for using finite-differencing (and coloring) to 208*7f296bb3SBarry Smith approximate the Jacobians needed by the adjoint solvers. 209*7f296bb3SBarry Smith -snes_fd_color can be used for both implicit and explicit methods. 210*7f296bb3SBarry Smith 211*7f296bb3SBarry Smith```{rubric} DM/DA: 212*7f296bb3SBarry Smith``` 213*7f296bb3SBarry Smith 214*7f296bb3SBarry Smith- Add DMGetLocalSection() to be used in preference to 215*7f296bb3SBarry Smith DMGetSection(). 216*7f296bb3SBarry Smith- Add DMSetLocalSection() to be used in preference to 217*7f296bb3SBarry Smith DMSetSection(). 218*7f296bb3SBarry Smith- DMGetDefaultSF() replaced with DMGetSectionSF(). 219*7f296bb3SBarry Smith- DMSetDefaultSF() replaced with DMSetSectionSF(). 220*7f296bb3SBarry Smith- DMCreateDefaultSF() replaced with DMCreateSectionSF(). 221*7f296bb3SBarry Smith- DMAddLabel() now increments the reference count of the DMLabel. 222*7f296bb3SBarry Smith- DMRemoveLabel() now destroys the DMLabel if the output argument is 223*7f296bb3SBarry Smith NULL. 224*7f296bb3SBarry Smith- Add DMRemoveLabelBySelf() which looks up the DMLabel by itself, 225*7f296bb3SBarry Smith removes from DM and destroys. 226*7f296bb3SBarry Smith 227*7f296bb3SBarry Smith```{rubric} DMPlex: 228*7f296bb3SBarry Smith``` 229*7f296bb3SBarry Smith 230*7f296bb3SBarry Smith- Rename DMPlexCreateSpectralClosurePermutation() to 231*7f296bb3SBarry Smith DMPlexSetClosurePermutationTensor() 232*7f296bb3SBarry Smith- Add DMPlexFindVertices() for vertex coordinates -> DAG point 233*7f296bb3SBarry Smith lookup 234*7f296bb3SBarry Smith- Add DMPlexGetOverlap() to get the partition overlap 235*7f296bb3SBarry Smith 236*7f296bb3SBarry Smith```{rubric} DMNetwork: 237*7f296bb3SBarry Smith``` 238*7f296bb3SBarry Smith 239*7f296bb3SBarry Smith- Changed prototypes for DMNetworkSetSizes() 240*7f296bb3SBarry Smith 241*7f296bb3SBarry Smith```{rubric} PetscViewer: 242*7f296bb3SBarry Smith``` 243*7f296bb3SBarry Smith 244*7f296bb3SBarry Smith- Removed PetscViewerHDF5{Get,Set}AIJNames() which are likely not 245*7f296bb3SBarry Smith really needed 246*7f296bb3SBarry Smith- PetscViewerHDF5SetCollective() and -viewer_hdf5_collective can be 247*7f296bb3SBarry Smith used to switch between independent and collective transfer mode. 248*7f296bb3SBarry Smith Defaults now to false (independent). 249*7f296bb3SBarry Smith 250*7f296bb3SBarry Smith```{rubric} SYS: 251*7f296bb3SBarry Smith``` 252*7f296bb3SBarry Smith 253*7f296bb3SBarry Smith- Added PetscCheckDupsInt() to check if a PetscInt array has dups. 254*7f296bb3SBarry Smith- Added an argument to PetscBinaryRead() and 255*7f296bb3SBarry Smith PetscBinarySynchronizedRead() to return the number of items read. 256*7f296bb3SBarry Smith 257*7f296bb3SBarry Smith```{rubric} AO: 258*7f296bb3SBarry Smith``` 259*7f296bb3SBarry Smith 260*7f296bb3SBarry Smith```{rubric} Sieve: 261*7f296bb3SBarry Smith``` 262*7f296bb3SBarry Smith 263*7f296bb3SBarry Smith```{rubric} Fortran: 264*7f296bb3SBarry Smith``` 265