Jump to content

Portable, Extensible Toolkit for Scientific Computation

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mariostorti (talk | contribs) at 02:00, 16 May 2006. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

The Portable, Extensible Toolkit for Scientific Computation (PETSc, pronounced PET-see, the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It employs the Message Passing Interface (MPI) standard for all message-passing communication. The current version of PETSc is 2.3.1; released February, 3, 2006.

PETSc is intended for use in large-scale application projects, many ongoing computational science projects are built around the PETSc libraries. PETSc is easy to use for beginners. Moreover, its careful design allows advanced users to have detailed control over the solution process. PETSc includes a large suite of parallel linear and nonlinear equation solvers that are easily used in application codes written in C, C++, Fortran and now Python. PETSc provides many of the mechanisms needed within parallel application codes, such as simple parallel matrix and vector assembly routines that allow the overlap of communication and computation. In addition, PETSc includes support for parallel distributed arrays useful for finite difference methods. Features include:

PETSc consists of a variety of libraries (similar to classes in C++). Each library manipulates a particular family of objects (for instance, vectors) and the operations one would like to perform on the objects.

PETSc provides the following features:

  • Parallel vectors
  • Parallel matrices
  • Scatters (handles communicating ghost point information)
  • Gathers (the opposite of scatters)
  • Several sparse storage formats
  • Scalable parallel preconditioners
  • Krylov subspace methods
  • Parallel Newton-based nonlinear solvers
  • Parallel timestepping (ODE) solvers
  • Automatic profiling of floating point and memory usage
  • Consistent interface
  • Intensive error checking
  • Portable to UNIX and Windows

Some of the PETSc modules deal with

  • Index sets, including permutations, for indexing into vectors, renumbering, etc;
  • Vectors;
  • Matrices (generally sparse);
  • Distributed arrays (useful for parallelizing regular grid-based problems);
  • Krylov subspace methods;
  • Preconditioners, including multigrid and sparse direct solvers;
  • Nonlinear solvers; and
  • Timesteppers for solving time-dependent (nonlinear) PDEs.

Each consists of an abstract interface (simply a set of calling sequences) and one or more implementations