B673: Advanced Scientific Computing
- Parallel Programming - Spring 2009
- B673
Contents
General Information
- Instructor:
- Class meets in LH115, Mon-Wed 4-5PM. Later we'll just do it on Mondays,
once you get up to speed.
- Prerequisites:
- A working knowledge of C, C++, or Fortran. Enough UNIX to write, manage,
and run multifile programs, and to time algorithms and codes
- Linear algebra, sufficient to understand and code operations such as
the product of two matrices, dotproducts, and matrix-vector products
This course is primarily on practical aspects and modeling for parallel computing.
Another course, B524, covers the programming languages aspects of parallelism,
and is taught in alternating semesters with B673. B673 concentrates more
on applications, performance engineering of parallel codes, and
emerging issues in high-performance computing: file systems,
data management, and access to online data systems, instruments, and sensors.
- Textbooks:
Much of the course material is on the Web and covered in class.
There are some outstanding books on the area of parallel
computing, generally concentrating on one aspect or another.
If you want to buy one, my recommendation is to wait until
after the course is over, when you know what material is most useful to you.
Do not print off the books listed below It is a
major waste of paper to do so, our use of them will be negligible, and
the online versions are often updated and better curated.
- MPI:
The Complete Reference by Marc Snir, Steve Otto,
Steven Huss-Lederman, David Walker, and Jack Dongarra is the most useful one
for looking up MPI functions and their calling sequences.
This covers MPI-1.
- Using MPI-2: Advanced Features of the Message Passing Interface by
William Gropp, Ewing Lusk and Rajeev Thakur. This covers
the MPI-2 standard, with some extensions that are not fully implemented yet by any supplier.
It is likely that most of MPI-2 will be available by mid-November 2004.
- Parallel Computing
Works! by Geoffrey C. Fox, Roy D. Williams, and
Paul C. Messina is now somewhat dated but its description of
applications is still excellent. Unfortunately the Web
version is not very readable.
- Designing and
Building Parallel Programs, by Ian Foster is another book that
concentrates on the programming aspects of parallel machines.
- Sourcebook of Parallel Computing
by Jack Dongarra et al has more sophisticated applications than we will
implement in this class, but the chapters on parallel I/O, graph partitioning,
and numerical linear algebra are relevant.
Course Description
This course covers the basic theory and practice of parallel computing.
Extremely simple parallel architecture ideas and
basic analytical models of parallelism will be presented. Software tools for
parallel programming and performance analysis will be surveyed along
with some current parallel programming models, languages, packages, and systems.
Students will implement and analyze parallel algorithms as part of the course.
The focus is on the practical modern use of parallel programming for
numerical computing.
Course Outline
The following outline is not a chronological one. For example,
we will quickly introduce MPI so that it can be used in programming
assignments.
An item's level in the outline also does not reflect the actual
weight or importance of the item: we will spend much time on MPI
and pthreads, but the SIMD/SPMD/MIMD distinction will receive only
a few minutes of attention.
- Hardware taxonomies and architecture
- Memory organization
- Shared memory machines
- Distributed memory machines and interconnection networks.
- Hybrid memory machines; CC-NUMA
- Vector processing
- Parallel programming models: SIMD, SPMD, MIMD
- Performance modeling and analysis
- The n1/2-rinfinity vector model
- Speedups and parallel efficiency; Amdahl's Law; isoefficiency curves
- Message passing models
- Scalability definitions and models
- Model problems and parallel algorithms
- Dense matrix operations
- Fast Fourier Transforms
- Sparse matrix operations
- N-body problems
- PDE solvers and domain decomposition
- Software and tools for parallelism
- Compilation techniques.
- Parallel languages
- Message passing interface
- Pthreads and OpenMP
- Performance evaluation
- Parallel I/O
Dynamic Class Informtion
The
course webboard
will be
used to post announcements, assignments, corrections, and other information.
It should be accessible by Wednesday, 28 Jan. Use it to post
questions related to the course or share related information with the
class. Check the Web board frequently, since
any changes or corrections to assignments will appear there.
It will use SSL access validated by your IU netpass password, allowing you
to access it from outside of the IU domain.
Grading Policies
Change log for this page:
Initiated: 26 Jan 2009
Restructured: 26 Jan 2009