Table of Contents
Outline
Outline
OpenMP
OpenMP (2)
Shared Memory
Shared Memory in Pictures
OpenMP
OpenMP in Pictures
Design of OpenMP
Design of OpenMP (2)
Outline
Control Structures
Control Structures (2)
DO Scheduling
DO Scheduling (2)
Orphaned Directives
OpenMP Synchronization
OpenMP Synchronization (2)
OpenMP Data Environments
OpenMP Data Environments
OpenMP Environment & Runtime Library
OpenMP Environment & Runtime (2)
OpenMP Environment & Runtime (3)
Outline
Analyzing for Parallelism
Program Profile
Walking the Key Loop Nest
Multiple Parallel Loops
Example —Loop Nest
Restructuring Applications
Two Levels of Parallel Processing
Two Levels of Parallel Processing (cont.)
Determining Shared and Private
Types of Variables
Guidelines for Classifying Variables
Process of Classifying Variables
Process of Classifying Variables (2)
Process of Classifying Vars (3)
Firstprivate and Lastprivate
Firstprivate and Lastprivate (2)
Choosing & Placing Synchronization
What to Synchronize
Example — Critical/Ordered Section
Reductions
(Flawed) Plan For a Good Reduction
Good Reductions
Typical Parallel Bugs
Typical Parallel Bugs (2)
Typical Parallel Bugs (3)
Outline
Designing Parallel Programs in OpenMP
Designing Parallel Programs in OpenMP (2)
Jacobi Iteration: The Problem
Jacobi Iteration: OpenMP Partitioning, Communication, and Agglomeration
Partitioning, Communication, and Agglomeration (2)
Jacobi Iteration: OpenMP Mapping
Jacobi Iteration: OpenMP Program
Jacobi Iteration/Program (2)
Irregular Mesh: The Problem
Irregular Mesh: Sequential Program
Irregular Mesh: OpenMP Partitioning
Irregular Mesh: OpenMP Communication
Irregular Mesh: OpenMP Agglomeration
Irregular Mesh: OpenMP Mapping
Irregular Mesh: OpenMP Mapping (2)
Irregular Mesh: OpenMP Program
Irregular Mesh
Irregular Mesh: Pictures
Irregular Mesh: Bad Data Order
Irregular Mesh: Bad Data Order
Irregular Mesh: Good Data Order
Irregular Mesh: Good Data Order
OpenMP Summary
Three Systems Compared
Three Systems Compared (2)
OpenMP + MPI
MPI + HPF
HPF + OpenMP
|