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.
- A short introduction to debugging with examples
- Basics (stripping, IOs, getting the calculations out of the loops, changing the algorithm, ...)
- Compiler options
- 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. The hands-on will use the https://github.com/aff3ct/MIPP library
- Bertrand Cirou
- Mathieu Cloirec
- Cédric Jourdain
Ability to understand the main issues for code optimization, knowledge of the main tools and techniques for basic debugging.
Basic knowledge of Unix, programming experience in C++, OpenMP