This training will present basic elements first to enable developpers to understand when and how to use a debugger, and second to optimize the performance of their codes.
Debugging :
- A short introduction to debugging with examples
Optimization :
- Basics (stripping, IOs, getting the calculations out of the loops, changing the algorithm, ...)
- Compiler options - Profilers (Valgrind, Intel Vtune)
- Vectorization - Data access (cache usage maximization)
- OpenMP parallelization strategies
- Theory to upper-bound the expected performance benefit (speedup, efficiency, peak, memory bandwidth, ...)
Half of the course will be made of hands-on sessions.
Learning outcomes
Ability to understand the main issues for code optimization, knowledge of the main tools and techniques for basic debugging.
Prerequisites
Basic knowledge of Unix, programming experience in C or Fortran, OpenMp