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