PETSc¶
PETSc is a suite of building blocks for the scalable solution of scientific and engineering applications modeled by partial differential equations. It supports MPI, shared memory, and GPU through CUDA or OpenCL, as well as hybrid MPI-shared memory or MPI-GPU parallelism.
Introduction¶
PETSc (Portable, Extensible Toolkit for Scientific Computation) is a suite of building blocks (data structures and routines) for the scalable solution of scientific and engineering applications modelled by partial differential equations. It allows thinking in terms of high-level objects (matrices) instead of low-level objects (raw arrays). Written in C language but can also be called from FORTRAN, C++, Python, and Java codes. It supports MPI, shared memory, and GPUs through CUDA or OpenCL, as well as hybrid MPI-shared memory or MPI-GPU parallelism.
Resources¶
- project webpage
- documentation
- PETSc Users Manual (PDF)
- index of all manual pages
- PRACE Video Tutorial part1, part2, part3, part4, part5
Modules¶
For the current list of installed versions, use:
$ ml av petsc
External Libraries¶
PETSc needs at least MPI, BLAS, and LAPACK. These dependencies are currently satisfied with Intel MPI and Intel MKL in petsc
modules.
PETSc can be linked with a plethora of external numerical libraries, extending PETSc functionality, e.g. direct linear system solvers, preconditioners, or partitioners. See below the list of libraries currently included in petsc
modules.
All these libraries can also be used alone, without PETSc. Their static or shared program libraries are available in
$PETSC_DIR/$PETSC_ARCH/lib
and header files in $PETSC_DIR/$PETSC_ARCH/include
. PETSC_DIR
and PETSC_ARCH
are environment variables pointing to a specific PETSc instance based on the PETSc module loaded.
- dense linear algebra
- Elemental
- sparse linear system solvers
- Intel MKL Pardiso
- MUMPS
- PaStiX
- SuiteSparse
- SuperLU
- SuperLU_Dist
- input/output
- ExodusII
- HDF5
- NetCDF
- partitioning
- Chaco
- METIS
- ParMETIS
- PT-Scotch
- preconditioners & multigrid
- Hypre
- SPAI - Sparse Approximate Inverse