xref: /petsc/doc/changes/39.md (revision ccfb0f9f40a0131988d7995ed9679700dae2a75a)
1# Changes: 3.9
2
3```{rubric} General:
4```
5
6- The scripts in \$PETSC_DIR/bin are now in \$PETSC_DIR/lib/petsc/bin
7- PetscStrncat() renamed to PetscStrlcat() now takes the length of
8  the original allocated space in the string instead of the part
9  left after strings have been copied or concatenated in
10- CUDA and ViennaCL as GPU backends can now also be used with the
11  release version (no need to use the main branch).
12
13```{rubric} Configure/Build:
14```
15
16- Option --with-cuda-arch is removed. Use CUDAFLAGS to directly
17  specify relevant nvcc option [for ex: CUDAFLAGS=-arch=sm_20]
18- Added --with-avx512-kernels to specify that hand-coded kernels
19  using AVX-512 intrinsics should be used when available. Currently
20  defaults to off.
21
22```{rubric} IS:
23```
24
25```{rubric} PetscDraw:
26```
27
28```{rubric} PF:
29```
30
31```{rubric} Vec:
32```
33
34- Added VECNODE type. Vector uses on-node shared memory to store its
35  entries.
36
37```{rubric} VecScatter:
38```
39
40- VecScatter becomes a PETSc object. Existing vecscatters have types
41  VECSCATTERSEQ, VECSCATTERMPI1.
42- Added VECSCATTERMPI3. It stores vector ghost values to the on-node
43  shared memory.
44- Added VECSCATTERMPI3NODE. It works on vectors of type VECNODE.
45
46```{rubric} PetscSection:
47```
48
49```{rubric} Mat:
50```
51
52- Added MatShellTestMultTranspose() and MatShellTestMult() for
53  checking if user provided MATSHELL matches the Jacobian of a given
54  function computed with differencing.
55- MatSolverPackage is replaced with MatSolverType.
56- mat_solver_package is replaced with mat_solver_type in options,
57  e.g. `-pc_factor_mat_solver_type` should be used instead of
58  `-pc_factor_mat_solver_package`.
59- MatShellSetOperation() and MatShellGetOperation() can now only be
60  used for MATSHELL matrices, use MatSetOperation() and
61  MatGetOperation() to set an operation for any matrix type.
62- Added MatMumpsGetInverse().
63- MatMult() for the MATAIJ type has been optimized using AVX-512
64  intrinsics; must be enabled at configure time.
65- Added a new Mat type MATSELL, featuring a fast MatMult() kernel on
66  AVX-512 architecture such as KNL and Skylake.
67- Added support for additional MKL sparse BLAS operations in
68  MATAIJMKL: MatMatMult(), MatTransposeMatMult(), MatPtAP()
69  (symmetric A only). MKL version 18, update 2 or later is required
70  for MatPtAP()/MatPtAPNumeric() and MatMatMultNumeric().
71- Added MatGetInertia() for SuperLU_DIST interface.
72
73```{rubric} PC:
74```
75
76- Added -pc_mg_distinct_smoothup and PCMGSetDistinctSmoothUp() so
77  that one can control the down and up smoothers options separately
78  from the options database
79- Removed -pc_mg_smoothup and -pc_mg_smoothdown and
80  PCMGSetNumberSmoothUp() and PCMGSetNumberSmoothDown(). Instead,
81  configure the solvers on the levels with -mg_levels_ksp_max_it n.
82  If separate numbers of smoothing steps are required for up and
83  down smoothers, use -pc_mg_distinct_smoothup -mg_levels_ksp_max_it
84  n -mg_levels_up_ksp_max_it m.
85- Added PCCHOLESKY to SuperLU_DIST interface.
86
87```{rubric} KSP:
88```
89
90```{rubric} SNES:
91```
92
93- Removed SNESHasDM() because there is always a DM in SNES.
94- The SNESType of SNESTEST has been removed, the testing code can
95  now be accessed with the options -snes_test_jacobian,
96  -snes_test_jacobian_display -snes_test_jacobian_display_threshold
97  and is called each time SNES computes a new Jacobian.
98
99```{rubric} SNESLineSearch:
100```
101
102```{rubric} TS:
103```
104
105- Added TSRHSJacobianTestTranspose() and TSRHSJacobianTest()
106  checking if user provide MATSHELL Jacobian with TSSetRHSJacobian()
107  matches the Jacobian of the function provided to
108  TSSetRHSFunction() computed with finite differencing. Command line
109  options -ts_rhs_jacobian_test_mult_transpose
110  -mat_shell_test_mult_transpose_view and -ts_rhs_jacobian_test_mult
111  -mat_shell_test_mult_view.
112- Added -ts_trajectory_dirname and -ts_trajectory_filetemplate to
113  allow users to specify the folder name and file name template for
114  disk checkpoints.
115
116```{rubric} TAO:
117```
118
119- Changed TaoDefaultMonitor() to TaoMonitorDefault() to match other
120  PETSc default monitor names, also now print with the same format
121  as other monitors %3D Tao ....
122- Added VecLock{Push|Pop} calls around user callbacks; use of
123  VecGetArray in user callbacks is now prohibited.
124- Added default matrix-free finite-differencing implementation for
125  Hessian MatMult with TaoDefaultComputeHessianMFFD(). Can be
126  selected with -tao_mf_hessian at command line.
127- Added Projected Gradient Descent (PGD) and Bounded Nonlinear
128  Conjugate Gradient (BNCG) algorithms for bound constrained
129  problems.
130- Improved support for recycling BFGS correction vectors between
131  subsequent TaoSolve() calls for the unconstrained LMVM algorithm.
132  Can be enabled using -tao_lmm_recycle at command line.
133- Convergence tests for all algorithms are separated out of
134  TaoMonitor() calls.
135
136```{rubric} DM/DA:
137```
138
139```{rubric} DMPlex:
140```
141
142- Deprecate DMGetDefaultSection() in favor of DMGetSection()
143- Deprecate DMSetDefaultSection() in favor of DMSetSection()
144- Deprecate DMGetDefaultGlobalSection() in favor of
145  DMGetGlobalSection()
146- Deprecate DMSetDefaultGlobalSection() in favor of
147  DMSetGlobalSection()
148
149```{rubric} PetscViewer:
150```
151
152- PetscViewerVTKFWrite() now takes a MPI_Datatype instead of a
153  PetscDataType argument.
154
155```{rubric} DMNetwork:
156```
157
158- DMNetworkGetComponentDataArray and DMNetworkGetComponentTypeOffset
159  are no longer available. Use DMNetworkGetComponent instead.
160- Added support for sub-dmnetworks.
161
162```{rubric} SYS:
163```
164
165- PetscPClose() no longer returns error code from pclose() because
166  some systems cannot reliably deliver it
167- PetscPopUpSelect() has been removed.
168
169```{rubric} AO:
170```
171
172```{rubric} Sieve:
173```
174
175```{rubric} Fortran:
176```
177
178- The F90Array routines now take a MPI_Datatype argument instead of
179  a PetscDataType. This should not affect user code.
180