Recent paper on the PETSc parallel design: Efficient Management of Parallelism in Object-Oriented Numerical Software Libraries. To appear in Modern Software Tools in Scientific Computing, E. Arge, A. M. Bruaset and H. P. Langtangen, Ed., Birkhauser Press, 1997.
Unofficial PETSc benchmarks: Single processor floating point performance of the PETSc sparse matrix vector product and linear system solve (with GMRES and preconditioner ILU(0)) for a 1503 by 1503 sparse matrix with a block size of three, using the SeqBAIJ matrix data structure. These tests were run using the SLES example src/sles/examples/tutorials/ex10.c.
Overview
PETSc, the Portable, Extensible Toolkit for Scientific Computation
is a suite of data structures and routines for the
uni- and parallel-processor solution of large-scale scientific
application problems modeled by partial differential equations.
PETSc 2.0 is fully usable from Fortran, C/C++, and runs on most machines, now including Windows NT/95.

PETSc Documentation
PETSc
is a sophisticated package; as such, fully understanding its
its usage and design requires some time. However, application programmers
can easily begin to use PETSc from a high level, and then
gradually learn more details about various facets of the software
according to their needs. To ease this transition, PETSc is fully
documented, including a users manual and complete manual pages for
every function. There are over 100 examples demonstrating software
use for a variety of problem classes.
Users should
read the users manual before attempting to do any serious coding with
PETSc!
PETSc is not for everyone; if your problem can be coded efficiently and relatively easily with, for example, Matlab, then you should use Matlab. If you have little experience with programming on a Unix machine, then it may require some time to get up to snuff using PETSc, since it employs many advanced features of Unix utilities (e.g., make). PETSc is intended to make the development of large-scale codes tractable; thus, our design emphasis has been on features required in large projects, not on making it trivial to run simple problems.
One page summary of PETSc, also in PostScript.
Obtaining and Installing PETSc
PETSc is available by anonymous ftp from
info.mcs.anl.gov in
pub/petsc
as petsc.tar.Z
or petsc.tar.gz
and the bugfixes are in
BUGLIST
For Windows NT and Windows 95 using the Microsoft Developers Studio (Visual C++) retrieve petsc.zip
Before installing PETSc, the following software packages must be installed on your machine. Many systems will already have them installed; speak to your system administrator.
If you are ONLY planning to use PETSc as a sequential library, you do NOT have to install MPI before installing PETSc. See the file Installation (also available in the main directory of the PETSc distribution) for details on installing PETSc without MPI.Once you have untarred the PETSc directory, but before installing, check the BUGLIST for patches/fixes you may need to make.
You can also browse all of the PETSc source code without retrieving it. Since we use wide source (100 characters per line), you probably will want to widen your browser window accordingly.
PETScView
PETSc comes with high level tools for profiling and visualizing
PETSc programs. A short
description
of PETScView and
example output
are available in PostScript.
Mathematics and Computer Science Division
Argonne National Laboratory.
PETSc Questions and Bug Reports
Please send all maintenance requests and questions to the PETSc developers at petsc-maint@mcs.anl.gov . Please do not send maintenance requests to the individual PETSc authors; all e-mail to petsc-maint@mcs.anl.gov is automatically distributed to all of the PETSc authors, so our response time using this address will be fastest.
PETSc Users Mailing List
You can join the PETSc users mailing list by sending email to
majordomo@mcs.anl.gov
with the message, "subscribe petsc-users".
We will update users regarding new releases, changes, etc. through this
mailing list.
The PETSc Design: Talks and Papers
Several papers describe various facets of our design philosophy:
Talks related to PETSc: Designing a scalable and portable numerical library requires consideration of many factors, including choice of parallel communication technology, data structures, and user interfaces. The PETSc package uses modern software technology to provide a portable, flexible, and extensible library environment. Thus, the package serves a wide range of users with varying needs and different levels of experience, including algorithmic researchers as well as black-box and high-performance application programmers.We use an aggressive data-structure-neutral implementation that minimizes dependence on particular data structures (even vectors). This approach permits separation of the implementation language from the user-interface language and enables the library to adapt to the user, rather than the other way around. Issues of parallelism are separated from the choice of algorithms.
PETSc Tutorials
We are currently developing an on-line tutorial in conjunction with
our PETSc
Bring Your Own Code (BYOC) Workshops. Stay tuned for further
details.
Liyang Xu and Tom Robey have developed an on-line PETSc tutorial at the University of New Mexico.
Several ongoing computational science projects are built around
the PETSc 2.0 framework. Within each of these projects
PETSc facilitates the efficient solution of PDEs by
managing the complexity of evolving data structures and detailed
simulation models, and by providing access to the latest linear
algebra solution technology. These projects include:
The documentation for PETSc was created using the
doctext and tohtml text processing packages
written by William Gropp. More information regarding this software
may be obtained from
gropp@mcs.anl.govPETSc Computational Science Applications
Computational science presents a variety of challenges, including the
coordination of detailed physical models and various algorithmic
approaches. The complexity inherent in these applications demands a
framework such as PETSc that provides broad-based
infrastructure with provisions for easy customization and extension.
By devoting strict attention to component interoperability,
PETSc enables the integration of independently developed
application modules, which often most naturally employ different
coding styles and data structures. In addition, users can seamlessly
replace models as well as combine and nest algorithms.