Presentation: "A Pattern Language for Parallel Programming"
Track:
The Concurrency Challenge
Time: Friday 14:00 - 15:00
Location: Fleming Room
Abstract:
Download slides
Parallel programming is not just a new library or a new set of language features. It is a new way of designing and programming, and often requires new algorithms. Thus, the pattens of parallel programming are different from traditional programming patterns. I'll describe my work, with a large group of other people, on a pattern language for parallel programming. This pattern language starts with large-scale software architecture patterns and algorithmic patterns, which set the stage for parallelism but are mostly independent of it.
Then it includes patterns about parallel algorithm strategy, which is the main place where parallelism is introduced. There are a large number of lower level patterns that are used to implement these algorithms, including programming styles like SIMD or SPMD, data structures like shared queues and distributed arrays, and coordination patterns like barriers, mutual exclusion, or transactions. Sometimes these patterns are built-in to a language or a library, but often they are implemented by an application. In either case, you need to know these patterns if you are going to use them or to understand systems that use them.
Our pattern language is large, so I will not be able to teach it to you in one hour. Parallel programming is hard, so it would be surprising if I could However, I will explain the overall structure, what kinds of problems it solves, and tell you how you can learn more about it.
The web site for our pattern language is here
Then it includes patterns about parallel algorithm strategy, which is the main place where parallelism is introduced. There are a large number of lower level patterns that are used to implement these algorithms, including programming styles like SIMD or SPMD, data structures like shared queues and distributed arrays, and coordination patterns like barriers, mutual exclusion, or transactions. Sometimes these patterns are built-in to a language or a library, but often they are implemented by an application. In either case, you need to know these patterns if you are going to use them or to understand systems that use them.
Our pattern language is large, so I will not be able to teach it to you in one hour. Parallel programming is hard, so it would be surprising if I could However, I will explain the overall structure, what kinds of problems it solves, and tell you how you can learn more about it.
The web site for our pattern language is here
Keywords: Multicore, C++, Java, Threaded Building Blocks.data parallelism
Target Audience: Developers interested in parallel programming who want to understand its impact on their software architecture