CENG 441

Introduction to Parallel Programming

Introduction to the programming techniques to effectively utilize modern multicore computers. Identifying the parallelism, naming shared data, synchronizing threads, the latency and bandwidth associated with communication, analyzing & improving parallel performance, parallel programming tools, miscallenous lab works & exercises.

Course Objectives

To teach the parallel programming models.

To teach and analyzing the different parallel programming tools.

Teaching the parallelization methodologies by experimentally. To teach the analyzing methodology of a parallelized algorithm.

Recommended or Required Reading

Grama, A. Gupta, G. Karypis, V. Kumar, ‘Introduction to Parallel Computing’, Addison-Wesley, 2nd Ed., 2003 , Behrooz Parhami, ‘Introduction to Parallel Processing Algorithms and Architectures’, Plenum Series in Computer Science, 1999

Learning Outcomes

1. Analyze the requirements for the usage of parallel programming models and efficiently implement them.

2. Comparing different parallel programming methodologies and tools, then effectively take a decision which one will be used.

3. Efficiently analyzing and conversion of sequential algorithm to parallel algorithm.

4. Analyze the efficiency of a parallelized algorithm.

Topics
Inroduction to Parallel Computing
Paralle Programming Platforms
Princibles of Algorithm Design I
Princibles of Algorithm Design II
Shared Memory and Threads
Implementing Domain Decompositions OpenMP
Confronting Race Conditions OpenMP
Implementing Task Decompositions OpenMP
Programming Shared Address Space Platforms – Thread Based Programming
Analyzing Parallel Performance
Improving Parallel Performance
Programming Using MPI Paradigm Part 1 ms-MPI Install Setup
MPI Exercise ms-MPI
Programming Using MPI Paradigm Part 2 MPI Lab. Experiments

Grading

Midterm: 25%

Homework: 30%

Research Presentation: 20%

Final: 25%