342.295, Time: Tuesday, 8:30-11:00 (March 24 and 31, May 12: 8:00-10:00), Start: March 3
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.
The (preliminary) course schedule is as follows:
Individual meetings will be organized for discussing the assignments.
- March 3 (Schreiner, 8:30-11:00, KEP1): Parallel Architectures and Performance.
- March 10 (Biere, 8:30-11:00, KEP1): Parallel Algorithms and Complexity.
- March 17 (Schreiner, 8:30-11:00, KEP1): Concurrency in Java and OpenMP.
- March 24 (Biere, 8:00-10:00, BA 9908): Shared Memory Programming, Lockless Data Structures.
- March 31 (Biere, 8:00-10:00, BA 9908): Shared Memory Programming with Cilk, Lace, Work Stealing
- April 21 (Schreiner, 8:30-11:00, MZ 003B): Presentations of Solutions 1.
- April 28 (Schreiner, 8:30-11:00, KG 519): Message Passing Programming with MPI.
- May 5 (Biere, 8:30-11:00, KG 519): Shared Memory Programming with PThreads.
- May 12 (Biere, 8:00-10:00, BA 9908): Presentations of Solutions 2.
- May 19 (Schreiner, 8:30-11:00, KG 519): Designing Parallel Programs.
- June 9 (Biere, 8:30-11:00, HS 4): Presentations of Solutions 3.
- June 23 (Schreiner, 8:30-11:00, KG 519): Presentation of Solutions 4.
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.