CS267 Handout 1

Class Introduction

Spring 1999


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 scientific problems.

Class Materials

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. One project from 1995, is the basis of a $1B company founded by by student Paul Gauthier and Prof. Eric Brewer. So many things are possible!

Computing facilties

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%).