News

  • 2012-12-11: Due date of homehwork 6 postponed to Dec. 20
  • 2012-11-01: Solutions to HW 4 and HW 5 online
  • 2012-10-29: Presentation of project proposals moved to Nov 5. Here are the details.
  • 2012-10-27: Posted solution for Homework 3 and added Homework 4.
  • 2012-10-19: Posted solution for Homework 2.
  • 2012-10-09: Homework 2 is now on-line.
  • 2012-10-04: Updated Homework 1. Posted solution for Homework 1.
  • 2012-10-04: Lecture on memory consistency continues. Also, discussion of homework #1.
  • 2012-10-03: Registration extended until Oct 4th. Please see instructor if you can't find a team partner.
  • 2012-09-28: Homework 1 is on-line.
  • 2012-09-27: Team registration on-line. Please register your team until midnight, October 1st.
  • 2012-09-27: Lecture on cache coherence continues.
  • 2012-09-24: First meeting/lecture.
  • 2012-09-11: Web site on-line.
  • Course overview

    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, tranactional memory, compiler extraction of parallelism, language and compiler support for parallel programming, threads and their execution environment, synchronization, and implementation issues of these topics.

    Course schedule

    Lectures are given in RZ F21 .

    Recitation sessions take place Thursdays 13:15 -- 15:00 in IFW D42 and take place when announced. Some of the lecture 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.

    Tentative schedule of lectures

    This is a plan. No plan survives contact with reality.

    Week Monday Thursday
    0 - 09/20: No meeting
    1 09/24: Admin issues, Introduction, Parallel computing landscape Cache coherence 09/27: Cache coherence, continued
    2 10/01: Memory consistency (Notes) 10/04: Memory consistency (cont'd), homework discussion
    3 10/08: Reasoning about performance: PRAM model (Amdahl's law slides) 10/11: No recitation
    4 10/15: Locks (Notes (not checked, use at own risk)) 10/18: Project ideas
    5 10/22: Locks and Lock-free (Notes (not checked, use at own risk)) 10/25:
    6 10/27: Group communication (Notes (not checked, use at own risk)) 11/01: Discussion of homework
    7 11/05: Project proposals 11/08: Discussion of homework
    8 11/12: Reasoning about performance: Little's law, roofline model, balance principles 11/15: --
    9 11/19: Greedy and work stealing scheduler Scheduling notes Linearizability 11/22: --
    10 11/26: Linearizability continued Java memory model 11/29: Project progress presentations
    11 12/03: Guest Lecture 12/06: --
    12 12/10: Transactional Memory 12/13: --
    13 12/17: Student project presentations

    Groups and assistants

    Thursday 13:15 - 15:00
    Room Assistant nethz ID
    IFW D42 Albert Noll / Zoltán Majó

    Assignments

    Assignments are an important part of the course. You will not learn this material from listening to a lecture alone -- you have to do the assignments.

    Note: Do not hesitate to write on the mailing list or make an appointment with your TA if you have trouble with the assignments!

    Any code fragments are distributed via subversion. Your solutions to the assignments must be submitted via subversion as well. Once you have registered a team, a directory will be made for you. The URL for your team is: https://svn.inf.ethz.ch/svn/trg/ps_students/trunk/2012hs/teams/<YourTeam>. You should log in with your nethz log in and password. If there are any problems please contact a TA immediately.

    -->
    Week Assignment Out Due Description Solution
    2 1 09/28 10/04 Homework 1 Solution Homework 1
    3 2 10/09 10/18 Homework 2 Solution Homework 2
    4 3 10/18 10/25 Homework 3 Solution Homework 3
    5 4 10/27 11/01 Homework 4 Recitation Slides array_queue_lock.c array_queue_lock_opt.c mcs_lock.c
    4A 10/27 11/05 Project proposal
    7 5 11/01 11/08 Homework 5 Solution Homework 5
    12 6 12/07 12/20 Homework 6 Solution Homework 6

    Projects

    Project groups

    Every project has a man advisor that can be contacted for questions or feedback (TG = Thomas Gross, TH = Torsten Hoefler, MP = Markus Püschel, ZM = Zoltán Majó)

    1. Mutzim: Daniel Zimmermann, Frederik Mutzel (MP): Parallel shortest path
    2. famouspotatoes: Stefan Messmer, Claudio Corrodi (TG): Alpha-beta pruning
    3. nostromo: Tim Grabowski, Ivan Jovanovic (TG): Parallel A* search
    4. SpeedupSquad: Raphael Fuchs, Pascal Spoerri (TH): Parallel queue
    5. fmiteam: Martin Enev, Vanya Dancheva (TH): Parallel queue
    6. mictim: Michael Hutzli, Timothee Martiel (ZM): Thread scheduling on NUMA systems
    7. foobar: Roman Schmocker, Severin Heiniger (TG): Efficient cellular automata on many cores
    8. damnick: Nikolaos Kyrtatas (MP): Minimal spanning tree
    9. thomath: Mathias Duerrenberger, Thomas Frick (TH): Parallel queue
    10. IndoDen: Gisli Eiriksson, Gagandeep Singh (MP): Implementing a parallel reachability algorithm
    11. Haswell: Iulia Ignatovi, Animesh Trivedi (ZM): Investigating uncore coherency on x86
    12. Knedochs: Pavol Bielik (ZM): Efficient streaming-data clustering on NUMA architectures

    Template for project report (deadline: Jan 11, 2013)

    Grading

    50% of your grade is determined by the project, and the other 50% of the grade is determined by a written 2 hr exam.

    Resources

    There exist a large number of books on programming multi-processors, multi-core system, or threads. These books may explore some topics in more depth than the lectures, or may provide background information. None of these books is mandatory. Copies of the first two books are "on reserve" the CS library. If you need a gentle introduction to Linux, consider attending the Linux Tage.