Part1: This part of the course will help you get started with debugging and using the gdb/idb debuggers. The topics covered include, understanding debugging, naive debugging, an introduction of debugging tools, serial code debugging, parallel code (OpenMP and MPI) debugging.

Part2:In an ideal case, parallelization would lead to a speed-up which scales linearly with the number of processors used compared to the original serial program running on a single processor. What if a program’s performance does not meet these expectations? Indeed, there are good reasons why these expectations most likely will not be met and we will explore those reasons and their remedies in this hands-on course. The part of the course will cover, understanding of serial and parallel performance (benchmarking), optimizing sequential programs - serial code profiling and analysis, tuning of parallel programs, parallel code profiling, collecting runtime information, and evaluation, analysis and presentation of the collected data.

Prerequisites: Familiarity with a low-level programming language such as C/C++, or Fortran, Matlab and working comfortably in a UNIX/Linux environment or completed corresponding CACDS courses (cluster computing and C++).

UPDATED 3/12 Date: 3rd March 2020 - 14th April 2020

Time: Tue Thurs 01:00 PM - 02:30 PM

Instructor: Dr. Amit Amritkar

Location: AERB 202

Class Capacity: 12