Introduction to Parallel Computing for Scientific Applications
Term: Spring 2006
Course: CIS/MEAM 521
Day/Time: Mondays & Wednesdays 3:00--4:30 PM, Towne 321
From numerical weather prediction and earthquake simulations, to
quantum mechanics, and to genome sequencing and molecular dynamics,
high-performance computing (HPC) is a fundamental tool for
science. The basic principles on how to design, implement, and
evaluate HPC techniques will be covered. Topics include parallel
non-numerical and numerical algorithms, computing platforms, and
message passing interface. Science applications will sample techniques
applied to partial differential equations, many-body problems, and
statistical physics. Practical problem-solving and hands-on examples
will be a basic part of the course.
- Networks, communications, load balancing, data locality,
- Models: Work-Depth, PRAM, BSP
- Programming: Message Passing Interface, OpenMP
- Non-numerical algorithms: reduction, sorting, searching, pointer jumping,
trees, graph partitioning
- Numerical algorithms: N-body Barnes-Hut,
FFT, Path following, deterministic Monte Carlo
- Applications: elliptic PDEs, data mining, molecular dynamics
10 homeworks, one take-home midterm and one individual
project. This course does not have a final exam.
- Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta,
``An Introduction to Parallel Computing: Design and Analysis of
Algorithms'', Second Edition, 2003
- Joseph Jaja, "Introduction to Parallel Algorithms",
- Gropp et al, ``The Sourcebook of Parallel Computing''
- Ian Foster, ``Designing and Building Parallel Programs : Concepts
and Tools for Parallel Software Engineering''
- Thomson F. Leighton, ``Introduction to Parallel Algorithms and
Architectures: Arrays, Trees, Hypercubes''
- Gropp & Snir, ``MPI: The Complete Reference''
Familiarity with Linux or Unix will help.