CENG 444

Parallel Programming Patterns

The course presents basic parallel algorithm design skills and parallel programming patterns. It covers the basic concepts of parallel architectures and parallel programming, OpenMP programming model topics, and control and data patterns by presenting the fundamentals of parallel software development.

Course Objectives

1. Understand shared-memory parallel architectures.

2. Design and implement parallel programs for multicore systems.

3. Understand parallel program execution and performance optimization techniques.

4. Understand parallel software development techniques and programming patterns.

Recommended or Required Reading

– Arch Robison, James Reinders, and Michael David McCool, Structured Parallel Programming: Patterns for Efficient Computation.
– Online OpenMP resources and tutorials

Learning Outcomes:

1. To be able to understand the parallel programming problems and related patterns

2. To demonstrate the experience to apply the parallel programming patterns on various programming problems

3. To be able to make a qualitative evaluation of different programming patterns and models

Topics
Introduction
Parallel Hardware Environments
Parallel Software Development
Parallel Program Performance Analysis
OpenMP
OpenMP
Midterm
Patterns
Map Pattern
Reduce/Scan Pattern
Data Reorganization
Stencil/Recurrence
Fork/Join
Project Presentations

Grading

20% Midterm Exam

40% Assignments/Final Project

40% Final Exam