Parallel Programming


News

21.2.2018: Group Assignment is Online
27.3.2018: [Week 6] Due to Easter the students from Friday exercises can attend an exercise on Wednesday (28.3). The groups are merged as follows:
  • Fri 10-12 HG G 26.5 -> Wed 15-17 CHN E 46
  • Fri 10-12 ETZ G 91 -> Wed 15-17 ML J 34.1
  • Fri 10-12 LFW E 13 -> Wed 15-17 CHN E 42
  • Fri 10-12 NO D 11 -> Wed 15-17 ML J 34.3
  • Fri 10-12 NO E 11 -> Wed 15-17 ETZ J 91
  • Wed 15-17 ETZ H 91 -> Wed 15-17 ETZ F 91

Overview

The purpose of this course is to introduce students to parallel programming. By the end of the course students will be able to design and implement working parallel programs in traditional (e.g., Java Threads) and emerging parallel programming models. Moreover, students will master fundamental concepts in parallelism and be able to reason about the correctness, performance, and the construction of parallel programs using different parallel programming paradigms (e.g., task parallelism, data parallelism) and mechanisms (e.g., threads, tasks, locks, communication channels). Finally, the course will examine how parallel programming methodologies can be applied in different algorithmic domains by investigating parallelization of algorithms.

Topics include:
  • Basic parallel programming concepts
  • Parallel programming using Java
  • Synchronization techniques
  • Case studies of building parallel programs starting from sequential algorithms

Course Content

Main text and reference book

  • Introduction to Java Programming, 2014. Daniel Liang. ISBN-13: 9780133813463
  • Java Concurrency in Practice, 2006. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. ISBN-13: 9780321349606
  • The Art of Multiprocessor Programming, 2011. Maurice Herlihy, Nir Shavit. Morgan Kaufmann. Also available online in the ETH network.

Related resources, text and reference books

Introduction to Java books (freely available)

Presentation Schedule

All course materials are password protected using your ETHZ credentials.
  DateTitleSlides
  Feb 20 Motivation, topics, organization PDF
  Feb 21 Java recap PDF
  Feb 27-28 Introduction to Threads and Synchronization PDF
  Mar 6-7 Parallel Architectures PDF
  Mar 14-20 Basic Concepts in Parallelism PDF
  Mar 21 Parallel Programming Models: Task and Data Parallelism PDF
  Mar 27-28 Fork Join Framework and Task Parallel Algorithms PDF
  Mar 28 Shared memory concurrency, locks and data races PDF
  Apr 17 Data Races, Solving Mutual Exclusion with Atomic Registers PDF
  Apr 18 Solving Mutual Exclusion for many processes, Hardware Primitives for mutual exclusion PDF
  Apr 24 Beyond Locks: Deadlocks, Semaphores PDF
  Apr 25 Beyond Locks II: Producer-/Consumer, Monitors PDF
  May 2 Beyond Locks III: Readers/Writers Lock, Lock Granularity PDF
  May 8 Skip Lists and Without Locks I PDF
  May 9 Without Locks II PDF
  May 15 A bit of Concurrency Theory: Linearizability, Sequential Consistency, Consensus PDF
  May 16 Sequential Consistency, Consensus + Transactional Memory PDF
  May 22 Transactional Memory and Programming based on Message Passing PDF
  May 23 Programming Models based on Message Passing II, CSP and MPI PDF

Exercises

Students should bring their laptops to the exercise sessions as most of the exercises involve programming.
  WeekTitleDue DateAssignmentSlidesSolution
  1 Introduction - PDF
  2 Java Threads 7.3 PDF PDF PDF PDF
  3 Java Threads II 12.3 PDF PDF PDF PDF
  4 Parallel Models 19.3 PDF PDF PDF
  5 Task Parallelism 26.3 PDF PDF PDF PDF PDF
  6 Task Parallelism II 9.4 PDF PDF PDF PDF
  7 Synchronization and Resource Sharing 16.4 PDF PDF PDF PDF
  8 More on Synchronization 25.4 PDF PDF PDF
  9 Beyond Locks 2.5 PDF PDF PDF PDF
  10 Advanced Synchronization Mechanism 9.5 PDF PDF PDF
  11 Advanced Synchronization Mechanism II 16.5 PDF PDF PDF
  12 Consensus 23.5 PDF PDF
  13 Transactional Memory 29.5 PDF PDF

Exams and Grading

There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.

  • 100% of grade determined by final Exam

Old Exam