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