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