Programming Concurrent Systems 2013/14


Format Lecture course with lab sessions
Curriculum MSc Computer Science Joint programme Universiteit van Amsterdam and Vrije Universiteit Amsterdam
Block 1b (Oct 28 - Dec 20, 2013)
Status

Compulsory in Track Computer Systems and Security
Constrained Choice in all other tracks
Qualifies as programming course

ECTS 6 credits
Objectives

To develop an understanding of the opportunities, challenges and limits of parallel computing and to gain practical familiarity with state-of-the-art programming abstractions for a variety of contemporary concurrent systems

Contents

The course motivates the need for concurrent systems through examples from multicore processors to supercomputing requirements. Following an introductory treatment of the principle properties and challenges of programming concurrent systems, we focus on state-of-the-art programming abstractions: multithreading for symmetric shared memory systems based on OpenMP compiler directives, heterogeneous computing with accelerator boards based on OpenACC compiler directives and partitioned global address space approaches to programming clusters and other distributed memory systems based on Chapel. A glimpse on recent academic advances in concurrent programming, namely the functional data parallel language SAC and the declarative component coordination language S-Net, concludes the course.

Lecturer Dr Clemens Grelck
Assistants Roeland Douma, Roy Bakker
Schedule The schedule of the course can be found in Datanose.
Organisation The course has two weekly lectures (hoorcolleges), where the various subject matters are introduced, and two weekly labs, where the participants work on the given assignments with support/supervision.
For each assignment we reserve one lab run as an interactive class (werkcollege) where participants present their solutions and the performance they achieve. Based on these presentations we all jointly discuss advantages and disadvantages of the presented solutions and provide further hints, tips and tricks for the assignments.
Grading By assignments: code (50%), reports (50%)
Slides

See Blackboard.
Disclaimer: Lecture slides are lecture slides, not more, not less. They do not form a tutorial suitable for self-studying. For instance, a slide may well miss an important aspect pointed out during the lecture, or it may contain deliberately erroneous code or examples of how not to solve some problem.

Assignments See Blackboard.
Code See Blackboard.
Mailing List The UvA mailing list pcs2013 serves as the primary medium of communication between lecturers and participants as well as among participants themselves. Subscription to the mailing list is controlled and restricted to participants of the course. Traffic on the mailing list is archived; access to the archives is restricted to participants. Please, subscribe here.
Literature

The course does not follow any specific text book. This following list summarises a number of interesting textbooks on various aspects of the course. While books are always a helpful source of background information, I do not expect participants of the course the buy any or all of these, nor do I receive any revenues.

Concurrent Programming in General

  • Kevin Dowd, Charles Severance: High Performance Computing, O'Reilly, 1998.
  • Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Addison-Wesley, 2003.
  • Gregory R. Andrews: Foundations of Multithreaded, Parallel, and Distributed Programming, Addison Wesley, 2000.
  • Michael J. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003.

OpenMP

  • Rohit Chandra, Leo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, Ramesh Menon: Parallel Programming in OpenMP, Morgan Kaufmann, 2000.
  • Barbara Chapman, Gabriele Jost, Ruud van der Pas: Using OpenMP, MIT Press, 2007.
  • www.openmp.org

OpenACC

Chapel


Valid HTML 4.01!     Valid CSS!             Dr. Clemens Grelck