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