I will assign reading from the textbook each week; see the daily schedule below. You will need to both read the text and come to class. Quite a bit of the material we cover in class will not be in the textbook; you are responsible for material we cover in class in any case. Class participation is expected and will have an influence on your grade.
It is your responsibility to manage your time so that you can turn in your assignments when they are due. No late homework will be accepted.
If you have questions about grading of homework, talk to the t.a. first. If you are unable to reach an agreement, make an appointment to talk to me. The statute of limitations for regrades is one week -- that is, any requests for regrades must be made no later than one week after the homework (or exam) was returned in class.
The projects are intentionally left open-ended so that you can explore. I encourage you to discuss your plans with me and/or Stefan K., in office hours or by email, as you decide what to do. The project proposal is intended as a chance for you to get feedback on your plans before you get too far down the road, so please make your proposal as complete as possible even if you're not yet sure what might change.
If you have a parallel computing project of your own that you would like to work on instead of doing one of these three problems, please talk to us about it. It's okay to do a different project provided it has the right level of parallel-implementation difficulty, and provided you write a thorough proposal describing it.
I strongly prefer that you do the term project in teams of two. If you want to work alone, you must talk to me first. I will expect the graduate students in the course to propose somewhat more ambitious projects than the undergraduates. It is okay for a grad student and an undergrad to work together on a team.
Tue Jan 6: Introduction.
[parallel sorting,
bone density modeling]
Reading: Textbook sections 1.1, 1.2, 1.3 (overview of parallel computers).
(Homework 1 assigned)
Thu Jan 8: Message-passing and MPI.
[slides on parallel machines;
MPI slides;
examples of MPI code]
Reading: Textbook sections 2.1, 2.2 (introduction to MPI).
Tue Jan 13: SDSC orientation, accounts, and performance
analysis tools (Stefan Boeriu, guest lecturer).
[Stefan B.'s web page]
Reading: Textbook sections 2.3, 2.4, 2.5
(analyzing and debugging parallel programs),
and sections 3.1 and 3.2.3 (Monte Carlo methods).
(Homework 1 due, Homework 2 assigned)
Thu Jan 15: Matrix-vector multiplication and data layout.
[summary of complexity notation]
Reading:
Cilk e-book
sections 1 and 2 (parallelism, work and span laws).
Tue Jan 20: Parallel complexity measures, cache issues. [slides on work law and span law, matrix multiplication, complexity notation]
Thu Jan 22:
Parallel matrix multiplication.
(Aydin Buluc, guest lecturer.)
[slides on matrix multiplication]
(Homework 2 due, Homework 3 assigned)
Tue Jan 27: Multicore, shared memory, and Cilk++. (Aydin Buluc, guest lecturer.) [slides on introduction to multicore] [ Cilk++ on OnDemand ]
Thu Jan 29: Divide and conquer examples using Cilk++.
(Aydin Buluc, guest lecturer.)
[slides on sorting on multicore ]
Reading for the academically inclined: book chapter on parallel algorithms by Guy Blelloch and Bruce Maggs. Note that they use the word "depth" instead of "span".
Tue Feb 3: Scientific examples using Cilk++ (Aydin Buluc, guest lecturer.) [slides on matrix-matrix and matrix-vector multiplication ].
Thu Feb 5: Midterm 1. [syllabus and rules]
(Homework 3 due 11:59pm Mon Feb 9)
Tue Feb 10: Spatially local computations:
Game of Life, finite element modeling, temperature problem.
[Wikipedia on
Life;
a java Life simulator;
slides on bone density modeling]
Reading: Textbook sections 6.1 - 6.3 (synchronous iteration).
(Homework 4 assigned)
Thu Feb 12: (no class, JRG out sick)
Tue Feb 17: Stencil computations, Jacobi relaxation. [Matlab transcript, data, and Jacobi code; slides on Jacobi]
Thu Feb 19: More stencil computation, finite elements.
[slides on
stencil computations
and communication cost]
Read the requirements for the final project (above on this page).
(Homework 4 due 11:59pm Fri Feb 20)
Tue Feb 24: Conjugate gradients,
sparse matrix-vector multiplication.
[slides on meshes,
conjugate gradients, matrices, and graphs]
(Final project teams and proposals due)
Thu Feb 26: Matrices and graphs, partitioning.
[same slides as last time on
matrices and graphs]
Reading: Berry-Hendrickson paper (passed out in class).
Tue Mar 3: Graph algorithms: maximal independent set. [Matlab code for sequential and parallel maximal independent sets]
Thu Mar 5: Midterm 2.
[syllabus and rules,
syllabus update]
(Final project progress reports due)
Tue Mar 10: Exotic architectures: massive multithreading, GPU computing. [Cray XMT multithreading diagram and overview slides; slides on IBM Cell]
Thu Mar 12: Exotic languages: Star-P, mapreduce.
Wed Mar 18: Final project demos in CSIL, 8:00-11:00 am. [schedule]
(Final project reports due 11:59pm Thu Mar 19)