xref: /petsc/doc/install/install_tutorial.md (revision 9b92b1d3a7bbc5a081edc9021bfd15a36804dd1c)
1*9b92b1d3SBarry Smith(tut_install)=
2*9b92b1d3SBarry Smith
3*9b92b1d3SBarry Smith# Quick Start Tutorial
4*9b92b1d3SBarry Smith
5*9b92b1d3SBarry Smith## QQTW (Quickest Quick-start in The West)
6*9b92b1d3SBarry Smith
7*9b92b1d3SBarry SmithOn systems where MPI and [BLAS/LAPACK](https://www.netlib.org/lapack/lug/node11.html)
8*9b92b1d3SBarry Smithare installed, {ref}`download <doc_download>` PETSc and build with:
9*9b92b1d3SBarry Smith
10*9b92b1d3SBarry Smith```console
11*9b92b1d3SBarry Smith$ ./configure
12*9b92b1d3SBarry Smith$ make all check
13*9b92b1d3SBarry Smith```
14*9b92b1d3SBarry Smith
15*9b92b1d3SBarry SmithOr to specify compilers and have PETSc download and install [MPICH](https://www.mpich.org/) and [BLAS/LAPACK](https://www.netlib.org/lapack/lug/node11.html) [^blas] (when they are not already on
16*9b92b1d3SBarry Smithyour machine):
17*9b92b1d3SBarry Smith
18*9b92b1d3SBarry Smith```console
19*9b92b1d3SBarry Smith$ ./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-mpich --download-fblaslapack
20*9b92b1d3SBarry Smith$ make all check
21*9b92b1d3SBarry Smith```
22*9b92b1d3SBarry Smith
23*9b92b1d3SBarry SmithDon't need Fortran? Use `--with-fortran-bindings=0` to reduce the build times. If you
24*9b92b1d3SBarry Smithare not using {ref}`external packages <doc_externalsoftware>` that use Fortran (for
25*9b92b1d3SBarry Smithexample, [MUMPS](https://mumps-solver.org/) requires Fortran) you can use
26*9b92b1d3SBarry Smith`--with-fc=0` for even faster build times.
27*9b92b1d3SBarry Smith
28*9b92b1d3SBarry Smith:::{admonition} Encounter problems?
29*9b92b1d3SBarry Smith1. Read the error message from `configure`!
30*9b92b1d3SBarry Smith2. Read help `./configure --help`.
31*9b92b1d3SBarry Smith3. Refer to {ref}`configuration faq <doc_config_faq>` (e.g. build PETSc without a
32*9b92b1d3SBarry Smith   Fortran compiler).
33*9b92b1d3SBarry Smith4. `make` problems? Just copy/paste `make` command printed by the `configure`
34*9b92b1d3SBarry Smith
35*9b92b1d3SBarry Smith   : footer including any `$PETSC_DIR` and `$PETSC_ARCH` options. It may look
36*9b92b1d3SBarry Smith     similar to:
37*9b92b1d3SBarry Smith   ```
38*9b92b1d3SBarry Smith   xxx=========================================================================xxx
39*9b92b1d3SBarry Smith   Configure stage complete. Now build PETSc libraries with:
40*9b92b1d3SBarry Smith   make PETSC_DIR=/Users/jacobfaibussowitsch/NoSync/petsc PETSC_ARCH=arch-darwin-c-debug all
41*9b92b1d3SBarry Smith   xxx=========================================================================xxx
42*9b92b1d3SBarry Smith   ```
43*9b92b1d3SBarry Smith5. Check the {ref}`bug-reporting <doc_creepycrawly>` section.
44*9b92b1d3SBarry Smith:::
45*9b92b1d3SBarry Smith
46*9b92b1d3SBarry Smith______________________________________________________________________
47*9b92b1d3SBarry Smith
48*9b92b1d3SBarry Smith(tut_install_prereq)=
49*9b92b1d3SBarry Smith
50*9b92b1d3SBarry Smith## Prerequisites
51*9b92b1d3SBarry Smith
52*9b92b1d3SBarry Smith:::{important}
53*9b92b1d3SBarry SmithThis tutorial assumes basic knowledge on the part of the user on how to
54*9b92b1d3SBarry Smithnavigate your system using the Command-Line Interface (CLI), a.k.a. "from the
55*9b92b1d3SBarry Smithterminal". Being a programmable solver suite, PETSc does not have a
56*9b92b1d3SBarry Smithfront-end Graphical User Interface, so any and all tutorial examples here will
57*9b92b1d3SBarry Smithalmost exclusively use the terminal.
58*9b92b1d3SBarry Smith
59*9b92b1d3SBarry SmithWhile this tutorial will provide all commands necessary, it will not explain the usage
60*9b92b1d3SBarry Smithor syntax of commands not directly implemented by PETSc. If you are unfamiliar with the
61*9b92b1d3SBarry Smithcommand line, or would like to refresh your understanding, consider reviewing tutorials
62*9b92b1d3SBarry Smithon basic [Unix](https://www.tutorialspoint.com/unix/index.htm) and [shell](https://www.tutorialspoint.com/unix/shell_scripting.htm) usage.
63*9b92b1d3SBarry Smith:::
64*9b92b1d3SBarry Smith
65*9b92b1d3SBarry SmithBefore beginning, make sure you have the following pre-requisites installed and up to
66*9b92b1d3SBarry Smithdate:
67*9b92b1d3SBarry Smith
68*9b92b1d3SBarry Smith- [make](https://www.gnu.org/software/make/)
69*9b92b1d3SBarry Smith- [python3](https://www.python.org/) [^id5]
70*9b92b1d3SBarry Smith- C Compiler (e.g. [gcc](https://gcc.gnu.org/) or [clang](https://clang.llvm.org/))
71*9b92b1d3SBarry Smith- [OPTIONAL] Fortran Compiler (e.g. [gfortran](https://gcc.gnu.org/wiki/GFortran))
72*9b92b1d3SBarry Smith- [OPTIONAL] [git](https://git-scm.com/)
73*9b92b1d3SBarry Smith
74*9b92b1d3SBarry SmithIt is important to make sure that your compilers are correctly installed [^id6] (i.e. functional
75*9b92b1d3SBarry Smithand in your `$PATH`). To test the compilers, run the following commands:
76*9b92b1d3SBarry Smith
77*9b92b1d3SBarry Smith```console
78*9b92b1d3SBarry Smith$ printf '#include<stdio.h>\nint main(){printf("cc OK!\\n");}' > t.c && cc t.c && ./a.out && rm -f t.c a.out
79*9b92b1d3SBarry Smith```
80*9b92b1d3SBarry Smith
81*9b92b1d3SBarry Smith:::{note}
82*9b92b1d3SBarry SmithWhile it is recommended that you have functional C++ and Fortran compilers installed,
83*9b92b1d3SBarry Smiththey are not directly required to run PETSc in its default state. If they are
84*9b92b1d3SBarry Smithfunctioning, PETSc will automatically find them during the configure stage, however it
85*9b92b1d3SBarry Smithis always useful to test them on your own.
86*9b92b1d3SBarry Smith
87*9b92b1d3SBarry Smith```console
88*9b92b1d3SBarry Smith$ printf '#include<iostream>\nint main(){std::cout<<"c++ OK!"<<std::endl;}' > t.cpp && c++ t.cpp && ./a.out && rm -f t.cpp a.out
89*9b92b1d3SBarry Smith$ printf 'program t\nprint"(a)","gfortran OK!"\nend program' > t.f90 && gfortran t.f90 && ./a.out && rm -f t.f90 a.out
90*9b92b1d3SBarry Smith```
91*9b92b1d3SBarry Smith:::
92*9b92b1d3SBarry Smith
93*9b92b1d3SBarry SmithIf compilers are working, each command should print out `<compiler_name> OK!` on the command
94*9b92b1d3SBarry Smithline.
95*9b92b1d3SBarry Smith
96*9b92b1d3SBarry Smith(tut_install_download)=
97*9b92b1d3SBarry Smith
98*9b92b1d3SBarry Smith## Downloading Source
99*9b92b1d3SBarry Smith
100*9b92b1d3SBarry SmithSee the {ref}`download documentation <doc_download>` for additional details.
101*9b92b1d3SBarry Smith
102*9b92b1d3SBarry SmithWith all dependencies installed, navigate to a suitable directory on your machine and pull
103*9b92b1d3SBarry Smiththe latest version of the PETSc library to your machine with git. The following commands
104*9b92b1d3SBarry Smithwill create a directory "petsc" inside the current directory and retrieve the latest
105*9b92b1d3SBarry Smithrelease branch of the repository.
106*9b92b1d3SBarry Smith
107*9b92b1d3SBarry Smith```console
108*9b92b1d3SBarry Smith$ mkdir ~/projects
109*9b92b1d3SBarry Smith$ cd ~/projects
110*9b92b1d3SBarry Smith$ git clone -b release https://gitlab.com/petsc/petsc
111*9b92b1d3SBarry Smith$ cd petsc
112*9b92b1d3SBarry Smith```
113*9b92b1d3SBarry Smith
114*9b92b1d3SBarry Smith:::{note}
115*9b92b1d3SBarry SmithIf git is not available - or if pre-generated Fortran stubs are required (i.e avoid download and
116*9b92b1d3SBarry Smithinstall of sowing package - that also requires a C++ compiler) one can download a release tarball.
117*9b92b1d3SBarry SmithSee {ref}`download documentation <doc_download>` for additional details.
118*9b92b1d3SBarry Smith:::
119*9b92b1d3SBarry Smith
120*9b92b1d3SBarry Smith:::{Warning}
121*9b92b1d3SBarry SmithIt is **IMPERATIVE** to install PETSc in a directory whose path does not contain any of
122*9b92b1d3SBarry Smiththe following special characters:
123*9b92b1d3SBarry Smith
124*9b92b1d3SBarry Smith\~ ! @ # \$ % ^ & * ( ) \` ; < > ? , [ ] { } ' " | (including spaces!)
125*9b92b1d3SBarry Smith
126*9b92b1d3SBarry SmithWhile PETSc is equipped to handle these errors, other installed dependencies may not be
127*9b92b1d3SBarry Smithso well protected.
128*9b92b1d3SBarry Smith:::
129*9b92b1d3SBarry Smith
130*9b92b1d3SBarry SmithThe download process may take a few minutes to complete. Successfully running this command
131*9b92b1d3SBarry Smithshould yield a similar output:
132*9b92b1d3SBarry Smith
133*9b92b1d3SBarry Smith```console
134*9b92b1d3SBarry Smith$ git clone -b release https://gitlab.com/petsc/petsc.git petsc
135*9b92b1d3SBarry SmithCloning into 'petsc'...
136*9b92b1d3SBarry Smithremote: Enumerating objects: 862597, done.
137*9b92b1d3SBarry Smithremote: Counting objects: 100% (862597/862597), done.
138*9b92b1d3SBarry Smithremote: Compressing objects: 100% (197622/197622), done.
139*9b92b1d3SBarry Smithremote: Total 862597 (delta 660708), reused 862285 (delta 660444)
140*9b92b1d3SBarry SmithReceiving objects: 100% (862597/862597), 205.11 MiB | 3.17 MiB/s, done.
141*9b92b1d3SBarry SmithResolving deltas: 100% (660708/660708), done.
142*9b92b1d3SBarry SmithUpdating files: 100% (7748/7748), done.
143*9b92b1d3SBarry Smith$ cd petsc
144*9b92b1d3SBarry Smith$ git pull # Not strictly necessary, but nice to check
145*9b92b1d3SBarry SmithAlready up to date.
146*9b92b1d3SBarry Smith```
147*9b92b1d3SBarry Smith
148*9b92b1d3SBarry Smith(tut_install_config)=
149*9b92b1d3SBarry Smith
150*9b92b1d3SBarry Smith## Configuration
151*9b92b1d3SBarry Smith
152*9b92b1d3SBarry SmithSee {ref}`install documentation <doc_config_faq>` for more details.
153*9b92b1d3SBarry Smith
154*9b92b1d3SBarry SmithNext, PETSc needs to be configured using `configure` for your system with your
155*9b92b1d3SBarry Smithspecific options. This is the stage where users can specify the exact parameters to
156*9b92b1d3SBarry Smithcustomize their PETSc installation. Common configuration options are:
157*9b92b1d3SBarry Smith
158*9b92b1d3SBarry Smith- {ref}`Specifying different compilers. <doc_config_compilers>`
159*9b92b1d3SBarry Smith- {ref}`Specifying different MPI implementations. <doc_config_mpi>`
160*9b92b1d3SBarry Smith- Enabling [CUDA](https://developer.nvidia.com/cuda-toolkit)/[OpenCL](https://www.khronos.org/opencl/)/[ViennaCL](http://viennacl.sourceforge.net/)
161*9b92b1d3SBarry Smith  {ref}`support. <doc_config_accel>`
162*9b92b1d3SBarry Smith- {ref}`Specifying options <doc_config_blaslapack>` for [BLAS/LAPACK](https://www.netlib.org/lapack/lug/node11.html).
163*9b92b1d3SBarry Smith- {ref}`Specifying external packages <doc_config_externalpack>` to use or download
164*9b92b1d3SBarry Smith  automatically. PETSc can automatically download and install a wide range of other
165*9b92b1d3SBarry Smith  supporting software.
166*9b92b1d3SBarry Smith- Setting various known machine quantities for PETSc to use such as known integral sizes,
167*9b92b1d3SBarry Smith  memory alignment, or additional compiler flags.
168*9b92b1d3SBarry Smith
169*9b92b1d3SBarry Smith:::{important}
170*9b92b1d3SBarry SmithYou MUST specify all of your configuration options at this stage. In order to enable
171*9b92b1d3SBarry Smithadditional options or packages in the future, you will have to reconfigure your PETSc
172*9b92b1d3SBarry Smithinstallation in a similar manner with these options enabled.
173*9b92b1d3SBarry Smith
174*9b92b1d3SBarry SmithFor a full list of available options call
175*9b92b1d3SBarry Smith
176*9b92b1d3SBarry Smith```console
177*9b92b1d3SBarry Smith$ ./configure --help
178*9b92b1d3SBarry Smith```
179*9b92b1d3SBarry Smith:::
180*9b92b1d3SBarry Smith
181*9b92b1d3SBarry SmithAll PETSc options and flags follow the standard CLI formats `--option-string=<value>` or
182*9b92b1d3SBarry Smith`--option-string`, where `<value>` is typically either `1` (for true) or `0` (for
183*9b92b1d3SBarry Smithfalse) or a directory path. Directory paths must be absolute (i.e. full path from the root
184*9b92b1d3SBarry Smithdirectory of your machine), but do accept environment variables as input.
185*9b92b1d3SBarry Smith
186*9b92b1d3SBarry SmithFrom `$PETSC_DIR` call the following `configure` command to configure PETSc as well
187*9b92b1d3SBarry Smithas download and install [MPICH](https://www.mpich.org/) and a [BLAS/LAPACK](https://www.netlib.org/lapack/lug/node11.html) [^blas] [reference implementation](https://bitbucket.org/petsc/pkg-fblaslapack/src/master/) on your system.
188*9b92b1d3SBarry Smith
189*9b92b1d3SBarry Smith```console
190*9b92b1d3SBarry Smith$ ./configure --download-mpich --download-fblaslapack
191*9b92b1d3SBarry Smith```
192*9b92b1d3SBarry Smith
193*9b92b1d3SBarry SmithPETSc will begin configuring and printing its progress. A successful `configure` will
194*9b92b1d3SBarry Smithhave the following general structure as its output:
195*9b92b1d3SBarry Smith
196*9b92b1d3SBarry Smith```text
197*9b92b1d3SBarry Smith===============================================================================
198*9b92b1d3SBarry Smith          Configuring PETSc to compile on your system
199*9b92b1d3SBarry Smith===============================================================================
200*9b92b1d3SBarry SmithTESTING: configureSomething from PETSc.something(config/PETSc/configurescript.py:lineNUM)
201*9b92b1d3SBarry Smith===============================================================================
202*9b92b1d3SBarry Smith          Trying to download MPICH_DOWNLOAD_URL for MPICH
203*9b92b1d3SBarry Smith===============================================================================
204*9b92b1d3SBarry Smith===============================================================================
205*9b92b1d3SBarry Smith          Running configure on MPICH; this may take several minutes
206*9b92b1d3SBarry Smith===============================================================================
207*9b92b1d3SBarry Smith===============================================================================
208*9b92b1d3SBarry Smith          Running make on MPICH; this may take several minutes
209*9b92b1d3SBarry Smith===============================================================================
210*9b92b1d3SBarry Smith===============================================================================
211*9b92b1d3SBarry Smith          Running make install on MPICH; this may take several minutes
212*9b92b1d3SBarry Smith===============================================================================
213*9b92b1d3SBarry Smith===============================================================================
214*9b92b1d3SBarry Smith          Trying to download FBLASLAPACK_URL for FBLASLAPACK
215*9b92b1d3SBarry Smith===============================================================================
216*9b92b1d3SBarry Smith===============================================================================
217*9b92b1d3SBarry Smith          Compiling FBLASLAPACK; this may take several minutes
218*9b92b1d3SBarry Smith===============================================================================
219*9b92b1d3SBarry Smith===============================================================================
220*9b92b1d3SBarry Smith          Trying to download SOWING_DOWNLOAD_URL for SOWING
221*9b92b1d3SBarry Smith===============================================================================
222*9b92b1d3SBarry Smith===============================================================================
223*9b92b1d3SBarry Smith          Running configure on SOWING; this may take several minutes
224*9b92b1d3SBarry Smith===============================================================================
225*9b92b1d3SBarry Smith===============================================================================
226*9b92b1d3SBarry Smith          Running make on SOWING; this may take several minutes
227*9b92b1d3SBarry Smith===============================================================================
228*9b92b1d3SBarry Smith===============================================================================
229*9b92b1d3SBarry Smith          Running make install on SOWING; this may take several minutes
230*9b92b1d3SBarry Smith===============================================================================
231*9b92b1d3SBarry SmithCompilers:
232*9b92b1d3SBarry Smith  C Compiler:   Location information and flags
233*9b92b1d3SBarry Smith  C++ Compiler: Location information and flags
234*9b92b1d3SBarry Smith.
235*9b92b1d3SBarry Smith.
236*9b92b1d3SBarry Smith.
237*9b92b1d3SBarry SmithMPI:
238*9b92b1d3SBarry Smith     Includes: Include path
239*9b92b1d3SBarry SmithOther Installed Packages:
240*9b92b1d3SBarry Smith.
241*9b92b1d3SBarry Smith.
242*9b92b1d3SBarry Smith.
243*9b92b1d3SBarry SmithPETSc:
244*9b92b1d3SBarry Smith     PETSC_ARCH: {YOUR_PETSC_ARCH}
245*9b92b1d3SBarry Smith     PETSC_DIR:  {YOUR_PETSC_DIR}
246*9b92b1d3SBarry Smith.
247*9b92b1d3SBarry Smith.
248*9b92b1d3SBarry Smith.
249*9b92b1d3SBarry Smith.
250*9b92b1d3SBarry Smith
251*9b92b1d3SBarry Smithxxx=========================================================================xxx
252*9b92b1d3SBarry SmithConfigure stage complete. Now build PETSc libraries with (gnumake build):
253*9b92b1d3SBarry Smithmake PETSC_DIR=/your/petsc/dir PETSC_ARCH=your-petsc-arch all
254*9b92b1d3SBarry Smithxxx=========================================================================xxx
255*9b92b1d3SBarry Smith```
256*9b92b1d3SBarry Smith
257*9b92b1d3SBarry Smith(tut_install_compile)=
258*9b92b1d3SBarry Smith
259*9b92b1d3SBarry Smith## Compilation
260*9b92b1d3SBarry Smith
261*9b92b1d3SBarry SmithAfter successfully configuring, build the binaries from source using the `make`
262*9b92b1d3SBarry Smithcommand. This stage may take a few minutes, and will consume a great deal of system
263*9b92b1d3SBarry Smithresources as the PETSc is compiled in parallel.
264*9b92b1d3SBarry Smith
265*9b92b1d3SBarry Smith```console
266*9b92b1d3SBarry Smith$ make all check
267*9b92b1d3SBarry Smith```
268*9b92b1d3SBarry Smith
269*9b92b1d3SBarry SmithA successful `make` will provide an output of the following structure:
270*9b92b1d3SBarry Smith
271*9b92b1d3SBarry Smith```text
272*9b92b1d3SBarry Smith-----------------------------------------
273*9b92b1d3SBarry SmithPETSC_VERSION_RELEASE
274*9b92b1d3SBarry Smith.
275*9b92b1d3SBarry Smith.
276*9b92b1d3SBarry Smith.
277*9b92b1d3SBarry Smith-----------------------------------------
278*9b92b1d3SBarry Smith#define SOME_PETSC_VARIABLE
279*9b92b1d3SBarry Smith.
280*9b92b1d3SBarry Smith.
281*9b92b1d3SBarry Smith.
282*9b92b1d3SBarry Smith-----------------------------------------
283*9b92b1d3SBarry SmithInstalled Compiler, Package, and Library Information
284*9b92b1d3SBarry Smith.
285*9b92b1d3SBarry Smith.
286*9b92b1d3SBarry Smith.
287*9b92b1d3SBarry Smith=========================================
288*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/sys/f90-mod/petscsysmod.o
289*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/sys/fsrc/somefort.o
290*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/sys/f90-src/fsrc/f90_fwrap.o
291*9b92b1d3SBarry Smith       CC arch-darwin-c-debug/obj/sys/info/verboseinfo.o
292*9b92b1d3SBarry Smith       CC arch-darwin-c-debug/obj/sys/info/ftn-auto/verboseinfof.o
293*9b92b1d3SBarry Smith       CC arch-darwin-c-debug/obj/sys/info/ftn-custom/zverboseinfof.o
294*9b92b1d3SBarry Smith       .
295*9b92b1d3SBarry Smith       .
296*9b92b1d3SBarry Smith       .
297*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/snes/f90-mod/petscsnesmod.o
298*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/ts/f90-mod/petsctsmod.o
299*9b92b1d3SBarry Smith       FC arch-darwin-c-debug/obj/tao/f90-mod/petsctaomod.o
300*9b92b1d3SBarry Smith  CLINKER arch-darwin-c-debug/lib/libpetsc.PETSC_MAJOR.PETSC_MINOR.PETSC_PATCH.dylib
301*9b92b1d3SBarry Smith DSYMUTIL arch-darwin-c-debug/lib/libpetsc.PETSC_MAJOR.PETSC_MINOR.PETSC_PATCH.dylib
302*9b92b1d3SBarry Smithgmake[2]: Leaving directory '/your/petsc/dir'
303*9b92b1d3SBarry Smithgmake[1]: Leaving directory '/your/petsc/dir'
304*9b92b1d3SBarry Smith=========================================
305*9b92b1d3SBarry SmithRunning test examples to verify correct installation
306*9b92b1d3SBarry SmithUsing PETSC_DIR=/your/petsc/dir and PETSC_ARCH=your-petsc-arch
307*9b92b1d3SBarry SmithC/C++ example src/snes/examples/tutorials/ex19 run successfully with 1 MPI process
308*9b92b1d3SBarry SmithC/C++ example src/snes/examples/tutorials/ex19 run successfully with 2 MPI processes
309*9b92b1d3SBarry SmithFortran example src/snes/examples/tutorials/ex5f run successfully with 1 MPI process
310*9b92b1d3SBarry SmithCompleted test examples
311*9b92b1d3SBarry Smith```
312*9b92b1d3SBarry Smith
313*9b92b1d3SBarry Smith(tut_install_fin)=
314*9b92b1d3SBarry Smith
315*9b92b1d3SBarry Smith## Congratulations!
316*9b92b1d3SBarry Smith
317*9b92b1d3SBarry SmithYou now have a working PETSc installation and are ready to start using the library!
318*9b92b1d3SBarry Smith
319*9b92b1d3SBarry Smith```{rubric} Footnotes
320*9b92b1d3SBarry Smith```
321*9b92b1d3SBarry Smith
322*9b92b1d3SBarry Smith[^id5]: python2 is no longer supported.
323*9b92b1d3SBarry Smith
324*9b92b1d3SBarry Smith[^id6]: Should you be missing any of these dependencies or would like to update them, either
325*9b92b1d3SBarry Smith    download and install the latest versions from their respective websites, or use your
326*9b92b1d3SBarry Smith    preferred package manager to update them. For example, for macOS see {any}`doc_macos_install`
327*9b92b1d3SBarry Smith
328*9b92b1d3SBarry Smith[^blas]: The [BLAS/LAPACK](https://www.netlib.org/lapack/lug/node11.html) package
329*9b92b1d3SBarry Smith    installed as part of this tutorial is a [reference implementation](https://bitbucket.org/petsc/pkg-fblaslapack/src/master/) and a suitable starting
330*9b92b1d3SBarry Smith    point to get PETSc running, but is generally not as performant as more optimized
331*9b92b1d3SBarry Smith    libraries. See the {ref}`libaray guide <ch_blas-lapack_avail-libs>` for further
332*9b92b1d3SBarry Smith    details.
333