When dealing with performance problems of programs involving a large amount of numerical operations, an HPC programmer has to know the existence of specifically developed numerical libraries, and how to use them. Their high scalability and portability can be of great help, since they can save a good amount of computing time and memory, and avoid the effort of having to think and implement functions already covered by one of such libraries.
In this course, some of the most important numerical libraries for HPC will be presented: In particular, libraries for Linear Algebra (Scalapack and others), Fast Fourier Transform (FFTW and others) will be covered in depth and an introduction to scientific computation using PETSc will be presented. Moreover an introduction to the Adaptive Mesh Refinement (AMR) method and its implementation will be covered. Time for practice is also scheduled.
Introduction to HPC Numerical libraries. Overview on Fast-Fourier Transforms theory, Parallel Data Distribution (Slab and 2D decompisition). Introduction on FFTW and 2DECOMP&FFT libraries. Introduction to AMR: Numerical Methods and Tools. Overview on (dense and sparse) Linear Algebra Libraries. Overview on numerical libraries for accelerators. Introduction on BLACS and ScaLAPACK libraries. Introduction on PETSc and overview of frameworks built on top of PETSc.
Students and researchers interested in improving the performance of their programs, by exploiting the functionality of the best suited numerical libraries for their code.
Knowledge of a scientific programming language (C/C++, Fortran) , basic notions of parallel programming (MPI and OpenMP).