Pipeline Pattern

Intent: Allows for efficient load balancing for parallel computers.
The idea behind the PipelinePattern is to split a large task into a sequence of independent small chunks and to distribute these chunks a processing pipeline of several "processors".

This pattern requires a sophisticated synchronization of the various processing stages (MIMD processing) or a global clock for syncronization (SIMD and hardware).

The pattern is frequently used on the hardware level for microprocessors (these famous N-stage pipelines of the Pentium-X and RISC processors). It is also used in signal processing (DSP) and data flow computing.

I have seen a real-time Radar processing system build this way, and a distributed compiler pipeline (scanner/parser/optimizer/code generator). But applying this pattern to MIMD parallel computers is relatively difficult. It is much easier to use the FarmPattern.

I haven't found a systematic treatment of patterns in parallel programming yet. If you are interest, please contact me (FrankBergmann) or check at http://www.fraber.de/bap/ for a parallel operating system based on these principles.
See also:
CategoryPattern CategoryArchitecturePattern?

View edit of August 14, 2010 or FindPage with title or text search