CS 475: Parallel Programming
GRAD 510: High Performance Computing
Fall 2008
Class meets: Tu-Th 2:00-3:15 PM in NESB B101
Labs meet: M 12:00 - 12:50 or M 2:00 - 2:50 (labs
are required)
Announcements:
Watch this space, the Schedule
Page and Lab Schedule Page for last
minute information. There is also a page for announcements specific
to distance students
Here are previous announcments.
Course Overview
Parallel programming is becoming increasingly critical for a computer
scientist/engineer. Tomorrow, all machines are all going to be
parallel, and a sequential program will be a slow program. Dave Patterson's
keynote talk at LCPC 2006 eloquently makes that
argument that we are at the end of the "La-Z-Boy Programming" era.
This course will train you to be ready for this challenge. It will teach you
the basic concepts of writing, debugging, analyzing, benchmarking, and
designing parallel programs. It covers the two main paradigms: shared memory,
and message passing. We will also examine a number of parallel algorithms for
a range of problems. The class is intended to be very hands-on: you will
- write a number of programs (in C);
- run them on the CS department's Unix platforms and on a large scale
supercomputer;
- measure the running time as a function of two parameters (problem size
and number of processors);
- analyze your observations; and
- write reports on your observations and analyses.
Because this class is a capstone course for the undergraduate Computer
Science curriculum, there is a significant writing component. This will be in
the form of detailed lab reports, and a term paper, for which you will receive
critical feedback on your writing and expository skills.
Prerequisites: CS 370 System Architecture and Software or
instructor consent. Another key prerequisite is intellectual
curiosity.
The tentative schedule of lecture topics, titles and due dates of the
Homework and Lab assignments and the associated reading material is also
posted there. Note that it is tentative and we may not be able to cover all
topics. The table will be modified as the course proceeds.
Details
- Class meets: Tuesday, Thursday 2:00-3:15 PM in Clark A 206.
- Instructor: Sanjay
Rajopadhye USC 223,
(email:
Sanjay.Rajopadhye@colostate.edu), (phone: 491-7323).
Office Hours: Please see
Sanjay's weekly
schedule.
- Graduate Teaching
Assistants: Tomofumi
Yuki
(email: yuki@cs.colostate.edu)
and Kaustubh Gadkari
(email: kaustubh@cs.colostate.edu)
Office Hours: Fri 10-12 in North Lab.
- Textbook: Parallel Programming in C with MPI and OpenMP,
Michael J. Quinn (Mc Graw Hill, 2003 ISBN 0-07-282256-2).
- Tentative Grading: Homework/Labs 50%, Midterms 30%, Final
Project 20%.
- Most homeworks will involve writing programs and analyzing them,
both analytically and empirically. Assignments must be submitted at the
beginning of class on the due date. Programming assignments must be
checked in by the time indicated. Late assignments will not be accepted
(exceptions may be announced in class or posted).
- There will be two midterms and a project, but no final exam.
- Final Project For your final project, you will work with a
partner and parallelize a complete application, or do a comparative study
of different approaches to parallel programming. More on this later.
The university calendar has scheduled the final exam on
Thursday, December 18, 5:50-7:50 PM, in the classroom. We do not have a
final exam. Your final project report (the last thing that you will turn
in for this class) will be due on Wednesday, December 17 at 5:00 pm.
- Important Information: Be sure to read the Computer Science
Department Student Information
Sheet. You are expected to be aware of the policies outlined there.