Presentation: "A Pattern Language for Parallel Programming"

Time: Friday 14:00 - 15:00

Location: Fleming Room

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

Keywords: Multicore, C++, Java, Threaded Building parallelism

Target Audience: Developers interested in parallel programming who want to understand its impact on their software architecture

Download slides

Ralph Johnson, Co-author of Design Patterns and led the development of the first automated refactoring tool.

 Ralph  Johnson Ralph Johnson is a co-author of the now-legendary book, "Design Patterns" (Addison-Wesley, 1995). He is on the faculty of the Department of Computer Science at the University of Illinois, where he is the leader of the UIUC patterns/Software Architecture Group and active in the Illinois Universal Parallel Computing Research Center. He wrote the first paper that used the word "refactoring", and his research group developed the first automated refactoring tools. He also has explored the use of the "Adaptive Object Model" architectural style for building domain models. His current interest is in documenting patterns for parallel programming and in tools for automating large-scale software changes.