342.295, Time: Tuesday, 8:30-11:00, Room: S3 057, Start: March 8, 2022
This course introduces basic techniques and models for parallel computing. We will discuss the basic theory, algorithms, programming models, and design principles for building parallel programs on multi-core processors, shared memory multiprocessors, and distributed memory multiprocessors respectively cluster systems. Class presentation will be accompanied by hands-on experience, e.g. on an SGI UV-1000 distributed shared memory multiprocessor.
Background in programming in C/C++ and Java is assumed. Course grades will be based on practical programming assignments.
As an extra service, we intend to live-stream and record the lectures via the following Zoom meetings. However, no guarantee is given with respect to completeness and quality of the stream/recordings. The basic course format is on-site, not hybrid.
The (preliminary) course schedule is as follows:
- March 8 (Schreiner): Parallel Architectures and Performance.
- March 15 (Zoitl): Parallel Algorithms and Complexity.
- March 22 (Schreiner): Concurrency in Java and OpenMP.
- April 5 (Schreiner): Message Passing Programming with MPI.
- April 26 (Schreiner): Presentations of Solutions 1.
- May 3 (Schreiner): Designing Parallel Programs.
- May 10 (Zoitl): Shared Memory Programming, Lockless Data Structures.
- May 17 (Zoitl): Shared Memory Programming with Cilk, Lace, Work Stealing.
- May 24 (Schreiner): Presentations of Solutions 2.
- May 31 (Zoitl): Shared Memory Programming with PThreads.
- June 14 (Zoitl): Presentation of Solutions 3.
- June 28 (Zoitl): Presentation of Solutions 4.
Individual meetings may be organized for discussing the assignments.
We will hand out four assignments that have to be worked out individually. At least three assignments have to be turned in and graded positively to pass the course. Submitters may be asked for presentations of their solutions; be prepared to give at least one such presentation.