#### General

- How can I subscribe to the PETSc mailing lists?
- Any useful books on numerical computing?
- What kind of parallel computers or clusters are needed to use PETSc? Or why do I get little speedup?
- What kind of license is PETSc released under?
- Why is PETSc programmed in C, instead of Fortran or C++?
- Does all the PETSc error checking and logging reduce PETSc's efficiency?
- How do such a small group of people manage to write and maintain such a large and marvelous package as PETSc?
- For complex numbers will I get better performance using C or C++?
- How come when I run the same program on the same number of processes I get "different" answers?
- How come when I run the same linear solver with different number of processes it takes a different number of iterations?
- Can PETSc use GPUs to speed up the computation time?
- Can I run PETSc with extended precision?
- Why doesn't PETSc use QD to implement support for extended precision?

#### Installation

- How do I begin using PETSc if the software has already been completely built and installed by someone else?
- The PETSc distribution is SO large. How can I reduce my disk space usage?
- I want to use PETSc only for uniprocessor programs. Must I still install and use a version of MPI?
- Can I install PETSc to not use X windows (either under Unix or Windows with gcc, the gnu compiler)?
- Why do you use MPI?
- What do I do if my MPI compiler wrappers are invalid?
- When should/can I use the ./configure option --with-64-bit-indices?
- How do I install petsc4py with the development PETSc?
- What Fortran compiler do you recommend for the Apple Mac OS X?
- How can I find the URL locations of the packages you install using --download-PACKAGE?

#### Usage

- How can I redirect PETSc's stdout and stderr when programming with a GUI interface in Windows Developer Studio or to C++ streams?
- I want to use hypre boomerAMG without GMRES but when I run -pc_type hypre -pc_hypre_type boomeramg -ksp_type preonly I don't get a very accurate answer!
- You have AIJ and BAIJ matrix formats, and SBAIJ for symmetric storage, how come no SAIJ?
- How do I use PETSc for domain decomposition?
- Can I create BAIJ matrices with different size blocks for different block rows?
- How do I access values from a parallel PETSc vector on a different process than the one that owns the values?
- How do I collect all the values from a parallel PETSc vector into a sequential vector on each processor?
- How do I collect all the values from a parallel PETSc vector into a vector on the zeroth (or any particular) processor?
- How can I read in or write out a sparse matrix in Matrix Market, Harwell-Boeing, SLAPC or other ASCII format?
- Does TSSetFromOptions(), SNESSetFromOptions() or KSPSetFromOptions() reset all the parameters I set or how come TS/SNES/KSPSetXXX() don't seem to work?
- Can I use my own makefiles or rules for compiling code, rather than PETSc's?
- Can I use CMake to build my own project that depends on PETSc?
- How can I put carriage returns in PetscPrintf() statements from Fortran?
- How can I implement callbacks using C++ class methods?
- Everyone knows that when you code Newton's method you should compute the function and its Jacobian at the same time. How can one do this in PETSc?
- How can I use Newton's method Jacobian free? Can I difference a different function than provided with SNESSetFunction()?
- How can I determine the condition number of a matrix?
- How can I compute the inverse of a PETSc matrix?
- How can I compute a Schur complement: Kbb - Kba *inverse(Kaa)*Kab?
- Do you have examples of doing unstructured grid finite element computations (FEM) with PETSc?
- The PETSc DMDA object decomposes the domain differently than the MPI_Cart_create() command. How can one use them together?
- When solving a system with Dirichlet boundary conditions I can use MatZeroRows() to eliminate the Dirichlet rows but this results in a non-symmetric system. How can I apply Dirichlet boundary conditions and yet keep the matrix symmetric?
- How can I use PETSc with MATLAB? How can I get PETSc Vecs and Mats to MATLAB or vice versa?
- How do I get started with Cython so that I can extend petsc4py?
- I would like to compute a custom norm for KSP to use as a convergence test or for monitoring?

#### Execution

- PETSc executables are SO big and take SO long to link.
- PETSc has so many options for my program that it is hard to keep them straight.
- PETSc automatically handles many of the details in parallel PDE solvers. How can I understand what is really happening within my program?
- Assembling large sparse matrices takes a long time. What can I do make this process faster? or MatSetValues() is
**so slow**, what can I do to make it faster? - How can I generate performance summaries with PETSc?
- Why do I get different answers on a different numbers of processors?
- How do I know the amount of time spent on each level of the solver in multigrid (PCType of PCMG) -pc_type mg.
- Where do I get the input matrices for the examples?
- When I dump some matrices and vectors to binary, I seem to be generating some empty files with .info extensions. What's the deal with these?
- Why is my parallel
**solver slower**than the sequential solver, or I have poor speed-up? - What steps are necessary to make the pipelined solvers execute efficiently?
- When using PETSc in single precision mode (--with-precision=single when running ./configure) are the operations done in single or double precision?
- Why is Newton's method (SNES) not converging, or converges slowly?
- Why is the linear solver (KSP) not converging, or converges slowly?

#### Debugging

- How do I turn off PETSc signal handling so I can use the -C option on xlF?
- How do I debug if -start_in_debugger does not work on my machine?
- How can I see where my code is hanging?
- How can I inspect Vec and Mat values when in the debugger?
- How can I find the cause of floating point exceptions like not-a-number (NaN) or infinity?
- Error while loading shared libraries: libimf.so: cannot open shared object file: No such file or directory.
- What does Object Type not set: Argument # n mean?
- What does Error detected in PetscSplitOwnership() about "sum of local lengths ...": mean?
- What does Corrupt argument or Caught signal or SEQV or segmentation violation or bus error mean? Can I use valgrind to debug memory corruption issues?
- What does Detected zero pivot in LU factorization mean?
- You create Draw windows or ViewerDraw windows or use options -ksp_monitor or_draw -snes_monitor_lg_residualnorm and the program seems to run OK but windows never open.
- The program seems to use more and more memory as it runs, even though you don't think you are allocating more memory.
- When calling MatPartitioningApply() you get a message
`Error! Key 16615 not found`

- With GMRES At restart the second residual norm printed does not match the first
- Why do some Krylov methods seem to print two residual norms per iteration?
- Unable to locate PETSc dynamic library /home/balay/spetsc/lib/libg/linux/libpetsc
- How do I determine what update to PETSc broke my code?