- Parallel Computing
342.295, Time: Tuesday, 8:30-11:00, Room: S2 219, Start: March 5
March 26, April 2, May 21: S2 120, April 30: HF 9901
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.
- Topics and Schedule
The (preliminary) course schedule is as follows:
Individual meetings will be organized for discussing the assignments.
- March 5 (Schreiner): Parallel Architectures and Performance.
- March 12 (Biere): Parallel Algorithms and Complexity.
- March 26 (Schreiner): Concurrency in Java and OpenMP.
- April 2 (Biere): Low-Level Shared Memory Programming.
- April 9 (Schreiner): Designing Parallel Programs.
- April 30 (Biere): Low-Level Shared Memory Programming.
- May 7 (Schreiner): Presentations of Solutions 1.
- May 14 (Biere): Low-Level Shared Memory Programming.
- May 21 (Biere): Presentations of Solutions 2.
- May 28 (Schreiner): Message Passing Programming with MPI.
- June 18 (Biere): Presentations of Solutions 3.
- June 25 (Schreiner): Presentation of Solutions 4.
- Course Materials
We will hand out four assignments that can be elaborated individually or by pairs of students. 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.