Unfortunately, Lecture 11 on Feb 24 was not recorded.
Instead, we have posted a link to the lecture on the same topic
given during Spring 2010. Most of the material is the same, although
some new results were presented in Spring 2011.
Click here for the powerpoint slides for the lecture
from Spring 2010.

Syllabus and Motivation

CS267 was originally designed to teach students how to
program parallel computers to efficiently solve
challenging problems in science and engineering,
where very fast computers are required
either to perform complex simulations or to analyze enormous datasets.
CS267 is intended to be useful for students from many departments
and with different backgrounds, although we will assume reasonable
programming skills in a conventional (non-parallel) language,
as well as enough mathematical skills to understand the
problems and algorithmic solutions presented.
CS267 satisfies part of the course requirements for a new
Designated Emphasis ("graduate minor") in
Computational Science and Engineering.

While this general outline remains, a large change
in the computing world has started in the last few years:
not only are the fastest computers
parallel, but nearly all computers will soon be parallel,
because the physics of semiconductor manufacturing
will no longer let conventional sequential processors
get faster year after year, as they have for so long
(roughly doubling in speed every 18 months for
many years). So all programs that need to
run faster will have to become parallel programs.
(It is considered very unlikely that compilers will be
able to automatically find enough parallelism in most
sequential programs to solve this problem.)
For background on this trend toward parallelism, click
here.

This will be a huge change not just for science
and engineering but the entire computing industry,
which has depended on selling new computers by running
their users' programs faster without the users
having to reprogram them. Large research activities
to address this issue are underway at many computer
companies and universities, including
Berkeley's ParLab,
whose research agenda is outlined
here.

While the ultimate solutions to the parallel programming
problem are far from determined, students in CS267 will
get the skills to use some of the best existing parallel programming
tools, and be exposed to a number of open research questions.

Grading

There will be several programming assignments to acquaint students
with basic issues in memory locality and parallelism needed for
high performance. Most of the grade will be based on a final project
(in which students are encouraged to work in small interdisciplinary teams),
which could involve parallelizing an interesting application, or
developing or evaluating a novel parallel computing tool. Students
are expected to have identified a likely project by mid semester,
so that they can begin working on it. We will provide many suggestions
of possible projects as the class proceeds.

Homeworks should be submitted by emailing them to
cs267.spring2011.submissions@gmail.com.

Class Projects

You are welcome to suggest your own class project, but you may also look at
the following sites for ideas:

(Jan 17) For students who want to try some on-line self-paced
courses to improve basic programming skills, click
here.
You can use this material without having to register.
In particular, courses like CS 9C (for programming in C) might
be useful.

(Jan 17) This course will have students attending from several
CITRIS campuses: these include
UC Berkeley, UC Davis, UC Merced and UC Santa Cruz.
CITRIS is generously providing the webcasting facilities and other
resources to help run the course.
Lectures will be webcast
here
(active during lectures only).

This will include, among other things,
class handouts, homework assignments,
the class roster, information about class accounts, pointers
to documentation for machines and software tools we will use,
reports and books on supercomputing,
pointers to old CS267 class webpages (including old class projects),
and pointers to other useful websites.

Lecture Notes and Video

Live video of the lectures may be seen
here
(only while the lecture is being given).

Notes from previous offerings of CS267 are posted on old
class webpages available under
Class Resources

In particular, the web page from the
1996 offering
has detailed, textbook-style notes available on-line that are still
largely up-to-date in their presentations of parallel algorithms
(the slides to be posted during this semester will contain some more
recently invented algorithms as well).

Lectures (power point) for lectures from Spr 2010 will be posted here.

Sharks and Fish

"Sharks and Fish" are a collection of simplified simulation programs
that illustrate a number of common parallel programming techniques
in various programming languages (some current ones, and some
old ones no longer in use).