Concurrent Programming 2011/12


Format Lecture course with lab sessions
Curriculum MSc Grid Computing
Block 1c (Jan 9 - Feb 3, 2012)
Status Compulsory
ECTS 6 credits
Objectives

To develop an understanding of the challenges of concurrent programming and to gain practical familiarity with today's industry-standard abstractions for concurrent programming.

Contents

The course motivates the need for concurrent programming through examples from multicore processors to supercomputing requirements. Following an introductory treatment of the principle properties and challenges of concurrent programming, we focus on today's industry-standard abstractions: message passing (example: MPI), multithreading (example: Posix threads) and compilation directives (example: OpenMP). 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 Raphael Poss, Roy Bakker
Schedule The (irregular) schedule of the course can be found in the Uva Rooster.
Organisation The course consists of lectures (hoorcolleges), where the various subject matters are introduced, labs, where the participants work on the given assignments with support/supervision, and classes (werkcolleges), where the participants present their results and discuss their findings with other participants and the teachers.
Grading Code (40%), Reports (40%), Presentations (20%)
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 concprog2012 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.

Posix Threads

  • David R. Butenhof: Programming with POSIX Threads, Addison Wesley, 1997.
  • Steve Kleiman, Devang Shah, Bart Smaalders: Programming with Threads, Prentice Hall, 1996.
  • Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farrel: Pthreads Programming: A Posix Standard for Better Multiprocessing, O'Reilly, 1996.

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.

MPI

  • William Gropp, Ewing Lusk, Anthony Skjellum: Using MPI, MIT Press, 2000.
  • Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, Jack Dongarra: MPI: The Complete Reference, MIT Press, 1998.
  • Peter Pacheco: Parallel Programming with MPI, Morgan Kaufmann, 1996.


Valid HTML 4.01!     Valid CSS!             Dr. Clemens Grelck