Parallel Patterns.

Slides:



Advertisements
Similar presentations
Parallel Programming Patterns Eun-Gyu Kim June 10, 2004.
Advertisements

CISC 879 : Software Support for Multicore Architectures John Cavazos Dept of Computer & Information Sciences University of Delaware
CISC 879 : Software Support for Multicore Architectures John Cavazos Dept of Computer & Information Sciences University of Delaware
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
OPL: Our Pattern Language. Background Design Patterns: Elements of Reusable Object-Oriented Software o Introduced patterns o Very influential book Pattern.
A Pattern Language for Parallel Programming Beverly Sanders University of Florida.
Course Instructor: Aisha Azeem
Lecture 29 Fall 2006 Lecture 29: Parallel Programming Overview.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Lesson 7 Guide for Software Design Description (SDD)
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE 498AL, University of Illinois, Urbana-Champaign 1 Basic Parallel Programming Concepts Computational.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
CS- 492 : Distributed system & Parallel Processing Lecture 7: Sun: 15/5/1435 Foundations of designing parallel algorithms and shared memory models Lecturer/
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Finding concurrency Jakub Yaghob. Finding concurrency design space Starting point for design of a parallel solution Analysis The patterns will help identify.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE 498AL, University of Illinois, Urbana-Champaign 1 ECE 498AL Spring 2010 Programming Massively Parallel.
A Pattern Language for Parallel Programming Beverly Sanders University of Florida.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Parallel Computing Presented by Justin Reschke
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Department of Computer Science, Johns Hopkins University Lecture 7 Finding Concurrency EN /420 Instructor: Randal Burns 26 February 2014.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
Parallel Programming Models EECC 756 David D. McGann 18 May, 1999.
Maitrayee Mukerji. INPUT MEMORY PROCESS OUTPUT DATA INFO.
These slides are based on the book:
Auburn University
Algorithms and Problem Solving
Support for Program Analysis as a First-Class Design Constraint in Legion Michael Bauer 02/22/17.
Auburn University COMP7330/7336 Advanced Parallel and Distributed Computing Exploratory Decomposition Dr. Xiao Qin Auburn.
IS301 – Software Engineering Dept of Computer Information Systems
SOFTWARE DESIGN AND ARCHITECTURE
Parallel Programming By J. H. Wang May 2, 2017.
Complexity Time: 2 Hours.
Parallel Programming Patterns
Pattern Parallel Programming
Parallel and Distributed Simulation Techniques
Software Design Mr. Manoj Kumar Kar.
Parallel Algorithm Design
Parallel Programming in C with MPI and OpenMP
CS & CS Capstone Project & Software Development Project
Mattan Erez The University of Texas at Austin
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Mattan Erez The University of Texas at Austin
Objective of This Course
Mattan Erez The University of Texas at Austin
Software Architecture
Ch 2: Getting Started Ming-Te Chi
Object oriented analysis and design
Software models - Software Architecture Design Patterns
Chapter 5 Architectural Design.
Sungho Kang Yonsei University
An Introduction to Software Architecture
Implementation support
Mattan Erez The University of Texas at Austin
© David Kirk/NVIDIA and Wen-mei W. Hwu,
FUNDAMENTAL CONCEPTS OF PARALLEL PROGRAMMING
Parallel Programming in C with MPI and OpenMP
*Internal Synthesizer Flow *Details of Synthesis Steps
Chapter 6 – Architectural Design
Mattan Erez The University of Texas at Austin
From Use Cases to Implementation
Implementation support
Presentation transcript:

Parallel Patterns

Covered topics Topics so far: This talk Parallel platforms and environments Distributed environments Standard interfaces and tools Parallel Algorithm Design This talk Common Patterns of Parallel Algorithms

Patterns Quality description of problem and solution to a frequently occurring problem in some domain. (object oriented programming, network apps…) Description usually involves problem definition, driving forces, solution, benefits, difficulties, related patterns, antipatterns Pattern Language a collection of design patterns, guiding the users through the decision process in building a system. Wait, not again …

Patterns? But origin (and use) way beyond the scope of Computer Science Alexander, Christopher (1977). A Pattern Language: Towns, Buildings, Construction. Oxford University Press, USA. p. 1216. ISBN 0-19-501919-9. Patterns for city planning, landscaping, and architecture, an attempt to capture the principles of a “living” design

Patterns !

Parallel Programming Patterns Parallel software does not fully exploit parallel hardware Too difficult for programmers Parallel Programming Environments do not focus on design issues (sic!) Need a “cookbook” that will guide the programmers systematically to achieve peak parallel performance (decomposition, algorithm, program structure, programming environment, optimizations) Provide common vocabulary to the programming community Software reusability & modularity

Patterns for Parallel Programming Mattson, Sanders, Massingill: Patterns for Parallel Programming (2005) 4 design spaces Algorithm Expression Finding Concurrency Expose concurrent tasks Algorithm Structure Map tasks to processes to exploit parallel architecture Software Construction Supporting Structures Code and data structuring patterns Implementation Mechanisms Low level mechanisms used to write parallel programs In fact an analogy to Fosters methodology

Finding Concurrency Task decomposition Data decomposition Function calls Independent loop iterations Data decomposition Often related to task decomposition Start with this when The algorithm is woven around a large data structure Similar operations are applied to different parts of the data structure Pipeline decomposition

Common Types of Data Decomposition Array-like data structures Decomposition of arrays along rows, columns, blocks Recursive data structures Example: decomposition of trees into sub-trees

Common Parallel Patterns Embarrassingly Parallel Replicable Repository Divide & Conquer Pipeline Recursive Data Geometric Irregular Mesh Inseparable

Embarrassingly Parallel For problems composed of Independent Tasks

Replicable Sets of operations need to be performed using global data structure, causing dependency

Repository Independent operations applied to a centralized data structure in a non-deterministic way Access is managed by a repository (tasks cannot access single element simultaneously) Function calls often asynchronous

Divide & Conquer Problem decomposed into independent sub-problems, solutions merged

Pipeline A series of ordered but independent computation stages need to be applied on data, where each output of a computation becomes input of subsequent computation

Recursive Data Little space for concurrency in the original form, but sometimes can be transformed into a more suitable form

Geometric Dependencies exist, but communicate in predictable (geometric) neighbor-to-neighbor paths

Irregular Mesh Communication on non-predictable paths in a mesh topology. Look at patterns (and principles) that constructed the mesh, statistical analysis

Inseparable When all reasonable patterns fail Explicit protection when processing dependent elements Mutual exclusion, producer-consumer Very vague definition