Organization
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.
Schedule
The lecture will start on Tuesday, April 20th 2021, at 12:30 p.m. and it will take place 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.
Q&A Session
- Tue, 12:30 p.m. - 2:00 p.m.
Exercises
- Fri, 10:30 a.m. - 12:00 p.m.
Registration
Registration for the lecture is organized via RWTHonline.
Exam Admission
Obtaining the exam admission requires a successful participation in two exercises. Details will be announced in the first lecture.
Materials
Materials are published in the Moodle course room. You get access by registering via RWTHonline.
Description
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.
Content
- 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)