HPC243 Debugging, Optimization, Best Practices

Description

Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.

Instructor: Ramses van Zon and Mike Nolta, SciNet, University of Toronto.

Prerequisites: Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.