CS267 Handout 1
This class will equip students to use existing parallel computers and
(networks of) high-performance workstations
to solve large computational problems in engineering and science. We
will discuss parallel computer architectures and software systems so
as to understand their capabilities, limitations, and costs. We will
also discuss a variety of parallel algorithms and applications,
studying the tradeoffs among different solutions. Sample problems and
applications we consider will include particle simulations, linear
algebra, large systems of differential equations, and data mining;
other topics will depend on student interest.
We expect and welcome students from diverse backgrounds and
departments, and will spend time on needed background from computer
architecture, software, and numerical analysis. Most of the class will
be spent on particular parallel algorithms and implementations for
Detailed lecture notes are available on the
CS 267 class homepage.
We will be updating and adding material to them throughout the semester.
There will be no other text book.
An enormous amount of other material is available on the web, and we
will endeavor to update the class webpage to point to the more valuable sites.
In particular, the website for prior offerings of CS267 are valuable,
with prior versions of many of the lectures we will be giving.
Since parallel computing is a dynamic field, with new machines, new
programming tools and new algorithms constantly being developed, the
course material necessarily changes somewhat from semester to semester.
Students will do several programming assignments, a midterm
and a final project (a substantial parallel programming project).
Programming assignments and the final project should be done by
``mixed'' teams of 2 or 3 students, where a mixed team has at least
one CS student and one non-CS student. This field is
interdisciplinary, with diverse knowledge of computer science and the
relevant application needed to solve a problem. This is too much for
most individuals to know, so work is typically done by
interdisciplinary teams, and it is therefore important to learn to
work with people in other disciplines. In this spirit, students are
strongly encouraged to change partners for each programming assignment,
in order to get to know as many potential final project partners as possible.
The most important part of the class is the final project. Students are
invited to bring their own applications to parallelize, but I will supply
a list with many suggestions. At the end of the semester we will have
a ``poster session'' where all projects will be presented.
For a look at what previous projects have involved, see the lists on the
homepages from previous years.
Projects have been in all disciplines.
from 1995, is the basis of a $1B company founded by
by student Paul Gauthier and Prof. Eric Brewer.
So many things are possible!
Parallel and other high performance machines available to the class include
the Berkeley NOW, a cluster of about 100 Sun Ultra sparcs
on a fast Myrinet interconnection network;
4 8-processor Sun Enterprise shared memory parallel machines (SMPs), and
one or two prototype Millennium clusters, consising either of 8
2-processor Intel SMPs or of 4 4-processor SMPs.
There is also an 8-processor DEC SMP and and 8-processor IBM SMP in
the CS Division, if people are interested in trying them.
Projects of common interest to people at the neighboring
supercomputer center NERSC (National
Energy Research Scientific Computing Center) may be able to access
their 640 processor Cray T3E, among other machines.
Class accounts will be made available early in the semester.
You have to be registered to get accounts on these parallel machines.
You are also welcome to use other parallel machines, if they are
available to you.
I assume people have access to workstations somewhere on campus. See me
if this is not the case.
Grades will be based on class participation (10%),
programming homework (25%),
midterm (20%), and
final project (45%).