CS 475: Parallel Programming
GRAD 510: High Performance Computing
Fall 2011
Class meets: Tu-Th 9:30-10:45 AM in Behavioral Sciences
107
Lab meets: Wed 3:00 - 4:40
Announcements:
Watch this space, the Schedule
Page and Lab Schedule Page for last minute
information.
- Thu Aug 18 (5:00 am): We have set up the email
address cs475@cs.colostate.edu to automatically forward to the
whole teaching team: instructor and TAs. Please send any questions about
the course to that address. This ensures that we are all aware of the
issue and its resolution, and that the first available person answers, so
that our response is faster.
- Thu Aug 18 (5:00 am): In addition to the two on-campus classes
(CS475 and GRAD510), this is also the common web site for the on-line
section of CS475. Our department is committed to ensuring that the
on-line and the on-campus sections are as close as possible. To this end,
all students do essentially the same work (assignments, same exams,
quizzes, labs, and project).
- Thu Aug 18 (5:00 am): The on-campus lectures are recorded and
made available to (all) students under RamCT. All other material (lecture
slides, HW announcements, schedule, lab schedule, instructions, reference
material, etc.) is available at this public site.
- Thu Aug 18 (5:00 am): This class uses a number of systems.
Your programming assignments are done on the Carver supercomputer
at NERSC. You will also use RamCT and
the CS department machines.
- 10% of your grade is based on quizzes, discussions, and labs. This
is done under RamCT. Also, HW reports are submitted under RamCT.
- Program development and debugging should be done on the department
machines. HW code submission should be done on the department machines.
- Final program runs, and performance data collection should be done
on Carver (batch submissions). We will grade your carver programs.
We will soon post instructions to obtain your NERSC accounts. This is a
rather involved process, requiring you to fax your personal information,
and then waiting for us to approve the account. You will be allocated
adequate but not unlimited time on this machine, and should be careful
about the usage. This is why you should do program development/debugging
on the department machines.
- Here are previous
announcements.
Course Overview
Parallel programming is becoming increasingly critical for a computer
scientist/engineer. All new machines are increasingly parallel.
There is already a movement that suggests that all students be
taught parallel programming in the introductory courses, with
sequential programming viewed as a special case
(see Bleloch's
keynote speech at PPoPP 2009).
Although we don't do that at CSU, parallel programming is very important.
However, parallel programming is not easy. Patterson's
keynote
talk at LCPC 2006 (here
are his slides) eloquently makes that
argument that we were, even then, at the end of the "La-Z-Boy Programming" era,
so this is a huge challenge.
This course will train you to respond to the 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 at NERSC;
- 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 will be modified as the course
proceeds.
Details
- Class meets: Tuesday, Thursday 9:30-10:45 AM in Behavioral
Sciences 107.
- Instructor: Sanjay
Rajopadhye 340 CSB,
(email:
Sanjay.Rajopadhye@colostate.edu), (phone: 491-7323).
Office Hours: Please see
Sanjay's weekly
schedule.
- Graduate Teaching Assistants: TBA
GTA Office Hours: TBA
- Textbook: Parallel Programming in C with MPI and OpenMP,
Michael J. Quinn (Mc Graw Hill, 2003 ISBN 0-07-282256-2). This textbook
is out of print in North America. If you are able to get it from any
other source (eBay, Amazon, international, etc.) that's fine, but we have
worked out an arrangement with the publisher to make the required chapters
available to students. This will cost about $30, and can be purchased at
the CSU bookstore.
- Tentative Grading: Homework 40%, Labs/Discussions/Quizzes 10%,
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 the dynamic programming algorithm for the knapsack
problem using a number of alternative strategies that you have not seen in
the homework assignments. The goal is to achieve the best possible
performance. More on this later.
The university calendar has scheduled the final exam on Monday,
December 12, 6:20-8:20 PM, in the classroom. We do not have a final exam,
but your final project report and code (the last thing that you will turn
in for this class) will be due Monday (midnight).
- Important Information: Be sure to read the Computer Science
Department Student Information
Sheet. You are expected to be aware of the policies outlined there as
well as the
department's Code
of Conduct.