Lecture Performance and Correctness Analysis of Parallel Programs


Introduction Video

A short 2-minute introduction video gives an overview on the contents of the lecture.


We will implement the flipped classroom concept. That means that the lecture has been broken up into subsections of 20 - 30 minutes length each, and these subsections will be provided as videos here. We will also add supplemental material, quizzes, and so forth. The scheduled lecture slots will be used as interactive question-and-answer sessions via Zoom to address the lecture parts that were made available during the week before.


The lecture starts on Thursday, April 9, at 2:30 p.m. via Zoom videoconferencing. The link will be published in the Moodle course room. Please register via RWTHonline for the lecture to get access to the course room (see below).

Participation in any Zoom meeting is optional. We intend to operate with this concept until further notice.

Q&A Session

  • Thu, 2:30 p.m. - 4:00 p.m.


Registration for the lecture is organized via RWTHonline.


Materials are published in the Moodle course room. You get access by registering via RWTHonline.


Increasingly-complex scientific and industrial simulations need an increasing degree of parallelism to efficiently exploit the power of today’s and future high-performance computers. This increase in parallelism also introduces new complexity to application programming. With that, errors such as deadlocks and data races are likely to occur more often. They can be detected by correctness analysis methods that are part of this lecture. The (resulting) correct parallel program can then be analyzed with respect to its optimization in performance.

The objectives of the lecture are the understanding and detection of performance problems and sources of programming errors in parallel applications, as well as the understanding of methods and tools for (semi)-automatic performance and correctness analysis.


  • Scalability of parallel applications
  • Performance monitoring (profiling, tracing, event-driven, sample-driven)
  • Instrumentation
  • Methods of performance analysis
  • Error classes (deadlocks, race conditions)
  • Traditional debugging technology - methods for error detection (static program analysis, runtime, formal methods)
  • Errors in programming with MPI
  • Deadlock detection
  • Design methods for error prevention and detection (assertions, correctness-by-construction)