Organization
The lecture will be held in person. As a backup, we will provide the lecture videos of the previous year. However, we cannot guarantee that these will always be up-to-date. We will also provide supplemental material, quizzes, and so forth.
Schedule
The lecture will start with an introductory meeting on Monday, April 3th, at 14:30 in Seminar Room 5056 (Computer Science Building E2, 2356|056). Details will be published in the Moodle course room. Please register via RWTHonline for the lecture to get access to the course room (see below).
Lectures and Exercises
- Monday, 14:30 - 16:00 in Seminar Room 5056
- Thursday, 12:30 - 14:00 in Seminar Room 5056
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)