Applied Parallel Programming (cspp51085)

Winter 2009




Professor: Andrew Siegel
Location : Reyerson 277
Time : Tue 5:30-8:30
Office: Ry175-B
Email:asiegel@cs.uchicago.edu
Office Hours: Tue 3:30-5:30 and by appointment

TA: J.P. Brown
jpbrown@cs.uchicago.edu:
Office Hours: Sun. 2-4 in Ry 175-B and by appointment

Listhost: http://mailman.cs.uchicago.edu/mailman/listinfo/cspp51085

Course Description: Parallel computing allows multiple computers or processors to work together simultaneously on a common task. For certain types of applications, parallelization can increase execution time in proportion to the number of computers or processors used. This is a huge advantage for applications which have performance and/or memory bottlenecks, such as one typically encounters in financial modelling, physics, engineering, or other applied science domains. This is a fast-paced applied programming course aimed at students with significant development experience in either C, C++, or FORTRAN (Java is also possible, but not ideal). No prior knowledge of parallel computing is assumed. Students should, however, have both an interest and some previous experience in either algorithmic development, numerical methods, applied mathematics, or perhaps any physics or engineering-type discipline. A brief overview of parallel computing will be presented at the outset, but the course will be less a review and focus more on algorithmic implementation and performance tuning. The goal of the course it to give students experience in developing efficient, scalable (distributed memory) parallel algorithms appropriate for any system running an implementation of the Message Passing Interface (MPI). Assignments will be designed with some flexibility to allow students to explore applying parallel techniques to applications in their own field of interest. After an introduction to MPI, some of the topics covered will include: parallel solutions of linear equations, sorting, interpolation, and integration of ODE's and PDE's.

Course Format: Combination of instructor lecture, student presentations, and group discussion.

Grading: Weekly or bi-weekly homework assignments only. No exams.

Getting Help: When possible, all technical questions should be discussed over the course listhost (see link above). Otherwise, please consult TA first and then professor if further assistance is required.

Suggested texts:

Using MPI
by Gropp, Lusk, and Skjellum
MIT Press
2nd edition

Numerical Recipes in C (or F77 or F90)
online version here

MPI: The Complete Reference
Marc Snir, Steve W. Otto, Steven Huss-Lederman, David W. Walker, and Jack Dongarra.
The MIT Press,

Also visit the Argonne MPI page


Required Computing Resources:
-An MPI implementation, such as MPICH2, available free here
-A compiler in the language of your choice (everything is available on cs cluster).

Lectures


Week 1 Jan 6


Week 2 Jan 13


Week 3 Jan 20


Week 4 Jan 27


Week 5 Feb. 3


Week 6 Feb 10


Week 7 Feb. 17


Week 8 Feb. 24


Week 9 March 3


Week 10 March 10