xref: /petsc/doc/changes/312.md (revision b11d9968bc79904c690b122f9399be46447eb113)
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