Changes: 3.16

General:

  • Change MPIU_Allreduce() to always returns a MPI error code that should be checked with CHKERRMPI(ierr)

  • Add support for A64FX and Cray compilers

  • Add support for ESSL 5.2 and later; drop support for ESSL <=5.1

  • Add support for NEC-SX Tsubasa Vector Engine

  • Add support for NVIDIA HPC SDK

Configure/Build:

  • Configure requires Python-2.7 or Python-3.4+.

  • Remove --with-kokkos-cuda-arch. One can use -with-cuda-gencodearch to specify the cuda arch for Kokkos. Usually not needed since PETSc auto detects that

  • For --download-hdf5, disable --download-hdf5-fortran-bindings by default

  • Add OpenCascade package to PETSc and allow --download-opencascade

  • Add support for hypre in device mode for both NVIDIA and AMD GPUs

  • Extend detection of C++ dialect to C++17. Configure now also takes minimum and maximum required C++ dialect of packages into account when choosing the C++ dialect

Sys:

PetscViewer:

PetscDraw:

AO:

IS:

VecScatter / PetscSF:

PF:

Vec:

PetscSection:

PetscPartitioner:

Mat:

PC:

  • Add PCSetPreSolve()

  • Add PCQR - interface to SuiteSparse QR factorization for MatSeqAIJ, MATNORMAL, and MATNORMALHERMITIAN

  • Add support for MATNORMAL in PCASM and PCHPDDM

  • Add support for BoomerAMG from PCHYPRE to run on NVIDIA and AMD GPUs

  • PCShellGetContext() now takes void* as return argument

  • Rename PCHARA in PCH2OPUS, supporting distributed memory operations with hierarchical matrices

KSP:

SNES:

SNESLineSearch:

TS:

  • Add -ts_type irk - fully implicit Runge-Kutta solvers

  • Add TSTrajectory interface to the CAMS library for optimal offline checkpointing for multistage time stepping schemes

  • Add option -ts_trajectory_memory_type <revolve | cams | petsc> to switch checkpointing schedule software

  • Add option -ts_trajectory_max_units_ram to specify the maximum number of allowed checkpointing units

TAO:

DM/DA:

DMSwarm:

DMPlex:

FE/FV:

DMNetwork:

DMStag:

DT:

Fortran: