This course exposes students to the principal issues involved in software development for parallel computing and discusses a number of approaches to handle the problems and opportunities caused by the increased availability of parallel platforms.
The course includes lectures, assignments, self-study, and a project. 50% of your grade is determined by project work and 50% is determined by a written exam; the exam is given during the official examination period, and there is no makeup exam. Students must be able to program using Java and C/C++.
The course may cover: memory coherence and consistency models, implications for language-specific memory models, Java memory model, models of parallel programming and parallel program execution, performance models for parallel systems, transactional memory, compiler extraction of parallelism, language and compiler support for parallel programming, threads and their execution environment, synchronization, and implementation issues of these topics.
Lectures are given Mondays 13:15 - 16:00 online via zoom. Please use the following link: Zoom
Recitation sessions take place Thursdays 14:15 -- 16:00 in CAB G 61. Due to COVID, at most 65 people are allowed to attend the recitation session live. Use the doodle link posted each week to register if you want to attend live. People who cannot attend live can participate via zoom. Due to the latest COVID developments and following ETH regulations, the recitation session will take place exclusively online via Zoom starting next week so the first recitation session taking place exclusively online will be on the 5. November. Some of the recitation session hours will be devoted to other activities (tutorials, reviews, etc) or will be devoted to group meetings. Please watch this page for updates and announcements.
Week | Monday | Thursday |
---|---|---|
1 | 09/14: no lecture | 09/17: no recitation |
2 | 09/21: Introduction and Message Passing, Organization | 09/24: Registration, Zoom, Message Passing with MPI |
3 | 09/28: Cache refresher, Cache coherency | 10/1: Registration, Zoom, Message Passing with MPI - part 2 |
4 | 10/5: Cache coherency and performance modeling | 10/8: Registration, Zoom , Caches |
5 | 10/12: Performance modeling, Scheduling | 10/15: Registration, Zoom, Caches |
6 | 10/19: SIMD | 10/22: Registration, Zoom, Performance modelling |
7 | 10/26: Memory Models | 10/29: Registration, Zoom, Sequential consistency and SIMD |
8 | 11/2: Memory Models, Languages, and Locks | 11/5: Zoom, Memory Models |
9 | 11/9: Locks and Lock Free | 11/12: Zoom , Spin Locks |
10 | 11/16: Fast Locks and Lock Free | 11/19: Zoom, Spin |
11 | 11/23: Scalable RMA Locks, Consensus and SIMT | 11/26: Zoom, Wait free |
12 | 11/30: Consensus, Oblivious, and SIMT | 12/3: Zoom, Consensus |
13 | 12/7: Oblivious, SIMT, and LogP Video | 12/10: Zoom, Benchmarking |
14 | 12/14: Oblivious, Nonoblivious | 12/17: Zoom |
Assignments are an important part of the course. You will not learn this material from listening to a lecture alone and should do the assignments.
Note: Do not hesitate to write an email to your TA if you have trouble with the assignments!
Number | Assignment | Description | Solution |
---|
50% of your grade is determined by the project, and the other 50% of the grade is determined by a written 2 hr exam (Example Exam). You are not allowed to use any electronic devices or books, notes, etc. in the exam.