# CS 442 / EECE 432 Fall '97

Introduction to Parallel Computing

(really Parallel Scientific Computing)

## Instructors

Bruce Hendrickson
(bah@cs.sandia.gov, 845-7599)

Steve Plimpton
(sjplimp@cs.sandia.gov, 845-7873)

## Schedule

Class: Tues/Thurs 4:00-5:15 in Mitchell 115

Office Hours: Tues 3:00-4:00 in Ferris 317

## Texts

Required: Parallel Programming with MPI by Peter Pacheco

Recommended: Introduction to Parallel Computing: Design and Analysis
of Algorithms by Kumar, Grama, Gupta & Karypis

Recommended: Designing and Building Parallel Programs by Ian Foster

## Summary

This course will introduce students to the practical algorithmic
issues involved in using current parallel computers for scientific
computations. The emphasis will be more on parallelism than on
scientific computing. The course will be structured around
programming assignments using MPI on parallel computers at the
Albuquerque Resource Center (or other machines you have access to.)
We will cover parallel algorithms for a number of important scientific
computing kernels including solving linear systems of equations,
performing finite element analysis and simulating many-body
interactions.
## Course Outline

- Introductory Material

- What's and why's of parallel computing

- Introduction to MPI

- Performance metrics and modeling

- Simple collective communication operations

- Simple Scientific Computing Kernels

- Matrix-vector multiplication

- Structured grid calculations

- Master/slave parallelism

- More sophisticated collective communication operations

- Tougher Scientific Computing Kernels

- Particle simulations

- Solving dense linear systems

- Iterative solvers for sparse systems / Graph partitioning

- Sorting

- Advanced Topics (details depend on time & student interests)

- Dynamic load balancing

- Random number generators

- Shared memory programming

- Other scientific computing applications

- Student Project Presentations

## Assignments

## Useful Web Pages