Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
PETSc
=====
PETSc is a suite of building blocks for the scalable solution of
scientific and engineering applications modelled by partial differential
equations. It supports MPI, shared memory, and GPUs through CUDA or
OpenCL, as well as hybrid MPI-shared memory or MPI-GPU parallelism.
Introduction
------------
PETSc (Portable, Extensible Toolkit for Scientific Computation) is a
suite of building blocks (data structures and routines) for the scalable
solution of scientific and engineering applications modelled by partial
differential equations. It allows thinking in terms of high-level
objects (matrices) instead of low-level objects (raw arrays). Written in
C language but can also be called from FORTRAN, C++, Python and Java
codes. It supports MPI, shared memory, and GPUs through CUDA or OpenCL,
as well as hybrid MPI-shared memory or MPI-GPU parallelism.
Resources
---------
- [project webpage](http://www.mcs.anl.gov/petsc/)
- [documentation](http://www.mcs.anl.gov/petsc/documentation/)
- [PETSc Users
Manual (PDF)](http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf)
- [index of all manual
pages](http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/singleindex.html)
- PRACE Video Tutorial [part
1](http://www.youtube.com/watch?v=asVaFg1NDqY), [part
2](http://www.youtube.com/watch?v=ubp_cSibb9I), [part
3](http://www.youtube.com/watch?v=vJAAAQv-aaw), [part
4](http://www.youtube.com/watch?v=BKVlqWNh8jY), [part
5](http://www.youtube.com/watch?v=iXkbLEBFjlM)
Modules
-------
You can start using PETSc on Anselm by loading the PETSc module. Module
names obey this pattern:
# module load petsc/version-compiler-mpi-blas-variant, e.g.
module load petsc/3.4.4-icc-impi-mkl-opt
where `variant` is replaced by one of
`{dbg, opt, threads-dbg, threads-opt}`. The `opt` variant is compiled
without debugging information (no `-g` option) and with aggressive
compiler optimizations (`-O3 -xAVX`). This variant is suitable for
performance measurements and production runs. In all other cases use the
debug (`dbg`) variant, because it contains debugging information,
performs validations and self-checks, and provides a clear stack trace
and message in case of an error. The other two variants `threads-dbg`
and `threads-opt` are `dbg` and `opt`, respectively, built with [OpenMP
and pthreads threading
support](http://www.mcs.anl.gov/petsc/features/threads.html).
External libraries
------------------
PETSc needs at least MPI, BLAS and LAPACK. These dependencies are
currently satisfied with Intel MPI and Intel MKL in Anselm `petsc`
modules.
PETSc can be linked with a plethora of [external numerical
libraries](http://www.mcs.anl.gov/petsc/miscellaneous/external.html),
extending PETSc functionality, e.g. direct linear system solvers,
preconditioners or partitioners. See below a list of libraries currently
included in Anselm `petsc` modules.
All these libraries can be used also alone, without PETSc. Their static
or shared program libraries are available in
`$PETSC_DIR/$PETSC_ARCH/lib` and header files in
`$PETSC_DIR/$PETSC_ARCH/include`. `PETSC_DIR` and `PETSC_ARCH` are
environment variables pointing to a specific PETSc instance based on the
petsc module loaded.
### Libraries linked to PETSc on Anselm (as of 11 April 2015)
- dense linear algebra
- [Elemental](http://libelemental.org/)
- sparse linear system solvers
- [Intel MKL
Pardiso](https://software.intel.com/en-us/node/470282)
- [MUMPS](http://mumps.enseeiht.fr/)
- [PaStiX](http://pastix.gforge.inria.fr/)
- [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html)
- [SuperLU](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu)
- [SuperLU_Dist](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu_dist)
- input/output
- [ExodusII](http://sourceforge.net/projects/exodusii/)
- [HDF5](http://www.hdfgroup.org/HDF5/)
- [NetCDF](http://www.unidata.ucar.edu/software/netcdf/)
- partitioning
- [Chaco](http://www.cs.sandia.gov/CRF/chac.html)
- [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview)
- [ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview)
- [PT-Scotch](http://www.labri.fr/perso/pelegrin/scotch/)
- preconditioners & multigrid
- [Hypre](http://acts.nersc.gov/hypre/)
- [Trilinos ML](http://trilinos.sandia.gov/packages/ml/)
- [SPAI - Sparse Approximate
Inverse](https://bitbucket.org/petsc/pkg-spai)