1# About This Manual 2 3This manual describes the use of the Portable, Extensible Toolkit for Scientific Computation 4(PETSc) and the Toolkit for Advanced Optimization (TAO) for the numerical solution of 5partial differential equations (PDEs) and related problems on high-performance 6computers. PETSc/TAO is a suite of data structures and routines that provide the 7building blocks for implementing large-scale application codes 8on parallel (and serial) computers. PETSc uses the MPI standard for all 9distributed memory communication. 10 11PETSc/TAO includes a large suite of parallel **linear solvers**, **nonlinear 12solvers**, **time integrators**, and **optimizers** that may be used in application codes 13written in Fortran, C, C++, and Python (via petsc4py; see {any}`sec_getting_started` ). The library 14is organized hierarchically, enabling users to employ the abstraction level most appropriate for a particular problem. By using 15techniques of object-oriented programming, PETSc provides enormous 16flexibility for users. 17 18PETSc is a sophisticated set of software tools; 19it initially has a steeper learning curve than packages such as MATLAB or a simple subroutine 20library. In particular, for individuals without some experience programming in C, C++, Python, or Fortran and 21experience using a debugger such as `gdb` or `lldb`, it may require a 22significant amount of time to take full advantage of the features that 23enable efficient software use. However, the power of the PETSc design 24and the algorithms it incorporates makes the efficient implementation 25of many application codes simpler than “rolling them” yourself. 26 27- For many tasks, a package such as MATLAB is often the best tool; PETSc 28 is not intended for the classes of problems for which effective 29 MATLAB code can be written. 30- Several packages (listed on <https://petsc.org/>), 31 : built on PETSc, may satisfy your needs without requiring 32 directly using PETSc. We recommend reviewing these packages' 33 functionality before starting to code directly with PETSc. 34- PETSc can be used to provide a “MPI parallel linear 35 solver” in an otherwise sequential or OpenMP parallel code. 36 This approach can provide modest improvements in the application time 37 by utilizing modest numbers of MPI processes. See `PCMPI` for details on how to 38 utilize the PETSc MPI linear solver server. 39 40Since PETSc is under continued development, small changes in usage and 41calling sequences of routines will occur. PETSc has been supported for twenty-five years; see 42{doc}`mailing list information on our website </community/mailing>` for 43information on contacting support. 44