CSC/ECE 506 Spring 2012/3a df

From Expertiza_Wiki
Jump to navigation Jump to search

Patterns of Parallel Programming

Introduction

Computer programming has gone through several paradigm shifts in regards to how software is design and constructed. In more recent years with the advent of object-oriented programming, an effort was made by the “Gang of Four” to categorize different arrangements and relationships between programming objects in terms of commonly used design patterns. In a similar vein, with recent advances in parallel programming and availability of hardware, there are several common designs that can be drawn from the vast amount of literature available. Although there exists no canonical text for parallel programing as there exists for object oriented programming, there is substantial overlap, which is presented here.

Intuitive Patterns

Intuitive patterns are termed as such because even those with basic knowledge of parallel processes could create their design. They are obvious, straight-forward applications of parallel computing tasks, and their implementation and use are easily implemented even without specialized software packages or advanced algorithm development.

"Embarassingly" Parallel

Replicable

Repository

Divide and Conquer

Common Patterns

Pipeline

Recursive Data

Geometric

Irregular Mesh

Inseperable

Complex Patterns

Multi-grid

Multi-domain

Formalization

Design Languages

Frameworks

See Also

References

<references></references>