The Art of HPC
Textbooks by Victor Eijkhout of TACC
Volume 1: The Science of Computing
This book has the general background knowledge for scientific computing: computer architecture, parallel computer architecture, computer arithmetic, linear algebra, ODE/PDEs, and how it all comes together in big computations.
Paired with Volume 2, this teaches you all about HPC: the what/why here, and the how over there..
Volume 2: Parallel Programming for Science and Engineering
Much of scientific computing involves parallel programming of some sort. This book is the ultimate introduction to modern versions of MPI and OpenMP, with shorter sections on PETSc, Kokkos, Sycl, Co-array Fortran.
This book is notable for its coverage of MPI and OpenMP in both C, Fortran, C++, and (for MPI) Python.
Volume 3: Introduction to Scientific Programming
Programming in science and engineering is overwhelmingly done in C/C++ and Fortran. This book teaches you modern C++17 (which is really to be preferred over C these days) and Fortran2008.
You can read this as a from-zero introduction to scientific programming, or as a “C++ for C programmers”. There are various longer programming projects.
Volume 4: HPC Carpentry
The ecosystem of scientific computing involves much more than just a programming language and a parallel programming system: you need to understand about compilers, build systems, source code control, and a lot more. This book does not aim to be a compendium of all of these, but rather a set of introductions, biased to scientific workflows..
Victor Eijkhout is a research scientist at the .Texas Advanced Computing Center These textbooks came about while teaching various courses at The University of Texas at Austin.
If you think he has gone above and beyond the call of duty in making these books public, why no buy him a coffee?