Skip to content

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

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.