We thank all PETSc/Tao/petsc4py users for their many suggestions, bug reports, and encouragement.

Recent contributors to PETSc are listed in the repository system. The history can be visualized at

Earlier contributors to PETSc that are not captured in the repository system include:

  • Asbjorn Hoiland Aarrestad, the explicit Runge-Kutta implementations, TSRK.

  • Guillaume Anciaux and Jose E. Roman, the interfaces to the partitioning packages PTScotch, Chaco, and Party.

  • Allison Baker, KSPFGMRES and KSPLGMRES.

  • Chad Carroll, the Win32 graphics.

  • Ethan Coon, PetscBag and many bug fixes.

  • Cameron Cooper, portions of VecScatter routines.

  • Patrick Farrell and Florian Wechsung, PCPATCH and SNESPATCH.

  • Paulo Goldfeld, early versions of the balancing Neumann-Neumann preconditioner PCNN.

  • Matt Hille.

  • Joel Malard, KSPBCGS.

  • Paul Mullowney, enhancements to portions of the original CUDA GPU interface.

  • Dave May, KSPGCR.

  • Peter Mell, portions of DMDA routines.

  • Richard Mills, the MATAIJPERM matrix format for the Cray X1; universal F90 array interface; enhancements to KSPIBCGS; the MATAIJMKL matrix subclass.

  • Victor Minden, the original CUDA GPU interface.


  • Robert Scheichl, the original KSPMINRES implementation.

  • Karen Toonen, designed and implemented most of the original PETSc web pages.

  • Desire Nuentsa Wakam, KSPDGMRES.

  • Liyang Xu, the interface to PVODE (now Sundials/CVODE) TSSUNDIALS.

The Toolkit for Advanced Optimization (Tao) developers especially thank Jorge Moré for his leadership, vision, and effort on previous versions of Tao. Tao has also benefited from the work of various researchers who have provided solvers, test problems, and interfaces. In particular, we acknowledge: Adam Denchfield, Elizabeth Dolan, Evan Gawlik, Michael Gertz, Xiang Huang, Lisa Grignon, Manojkumar Krishnan, Gabriel Lopez-Calva, Jarek Nieplocha, Boyana Norris, Hansol Suh, Stefan Wild, Limin Zhang, and Yurii Zinchenko.

PETSc source code contains modified routines from the following public domain software packages:

  • LINPACK - dense matrix factorization and solve; converted to C using f2c and then hand-optimized for small matrix sizes, for block matrix data structures;

  • MINPACK - sequential matrix coloring routines for finite difference Jacobian evaluations; converted to C using f2c;

  • SPARSPAK - matrix reordering routines, converted to C using f2c;

  • libtfs - the efficient, parallel direct solver developed by Henry Tufo and Paul Fischer for the direct solution of a coarse grid problem (a linear system with very few degrees of freedom per processor).

PETSc interfaces to many external software packages including:

These are all optional packages and do not need to be installed to use PETSc.

PETSc software is developed and maintained using

  • Git revision control system

PETSc documentation has been generated using