OPL: Our Pattern Language
Background Design Patterns: Elements of Reusable Object-Oriented Software o Introduced patterns o Very influential book Pattern Language for Parallel Programming o Tim Mattson o Attempted to do for parallel software what other book did for Object-Oriented software o Low level focus
Background Berkeley Motifs o Berkeley ParLab o High level patterns OPL: Our Pattern Language o ParLab & Mattson o Unified approach o Architecture for software o Language to communicate
Top Level patterns Structural very high level how software is organized interaction identify the most computation Computational core of computation where what pattern how good efficiency related to structural patterns
Lower level patterns Algorithm o just lower than structural and computational o exploit concurrency o start to consider hardware limits Implementation o more specific technologies o writing pseudo-code Parallel Execution o lowest level o "hidden" o optimization o real machine actions
DNA Example Problem o Determine how similar genes are o Start with a strand of DNA o Deal with mutations in gene o Need to be able to compare many Approach o Parallelize for more comparisons o Allow for easy changing of comparison of genes o Dynamic Programming approach
DNA Example Patterns Structural: Map-Reduce Computational: Dynamic Programming Algorithm: Geometric Decomposition Implementation: Bulk Synchronous Processing Parallel Execution: Data Flow
DNA Example Code