|
CISC 372: Parallel Programming
Catalog Description:
Introduction to parallel programming concepts, methodologies, and tools.
Programming techniques for programs that contain code segments which will
run simultaneously on multiple processors. Topics include: concurrency,
program decomposition, data distribution, communication, load balancing,
scalability, locality, granularity, debugging, performance evaluation.
Current Text:
Parallel Programming with MPI
Peter S. Pacheco
Morgan Kaufmann Publishers, 1997
Goals:
At the end of this course, the student should be able to:
- DESCRIBE
the major functions and approaches used in a large scientific program,
through program inspection and research on an application domain
- APPLY
commercially available profiling tools to identify the regions of a
large time-consuming program that are most conducive to increased performance
through parallelization
- SELECT
and apply appropriate parallelization constructs to a large program
to create a correct parallel version to exploit a state-of-the-art parallel
computing environment
- ASSESS
the correctness of a parallel program
- APPLY
available debugging methods to detect and correct errors in an erroneous
parallel program
- ASSESS
the performance of parallel programs run with different parameters of
input sizes and numbers of processors
- VERBALLY
AND ORALLY CRITIQUE a parallelization effort and its resulting performance
results to non-experts
- COORDINATE
and cooperatively participate in a team similar to industrial and government
research labs working on a realistic program parallelization problem
Content:
- Introduction
- What is parallel computing?
- Overview
of parallel architectures and parallel programming models
- How do
I write a simple parallel program?
- The MIMD
and SPMD models
- What
are the problems unique to parallel programs?
- How do
I deal with these problems?
- How do
I debug parallel programs?
- How do
I measure the goodness of my parallel program?
- The process
of designing good parallel programs:
- How
do I break up the problem?
- Some
basic techniques of parallel algorithm design
- How
do I get processes to pass data around in effective ways?
- How
much overhead have I created for the sake of parallelism?
- How
can I improve the parallel program in terms of communication overhead?
MPI Concepts:
- Basic
Send and Recv
- Collective
Communication
- Communicators
and Groups
- Topologies
- Derived
Data Types
- Advanced
Point-to-Point Communication
- Timing
and Profiling MPI Programs
Prerequisites:
CISC 220 Data Structures
|