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