Our Pattern Language (Pattern Language Glossary) (Pattern Template) (Pattern Workshop) (Pattern v1.0) (Pattern v2.0)
| Applications | ||||||||||
| Choose your high level architecture | ||||||||||
| Guided Decomposition | ||||||||||
| Choose your high level structure | Task Decomposition | Data Decomposition | Identify Key Computation Patterns | |||||||
| Guided Expansion | Group Tasks | Order Groups | Data Sharing | Data Access Patterns | Guided Instantiation | |||||
| Pipe-and-filter | Map reduce | Graph Algorithms | Graphical models | |||||||
| Agent and Repository | Layered systems | Dynamic Programming doc | Finite state machines | |||||||
| Arbitrary Static Task Graph | Process Control | Dense Linear Algebra | Backtrack Branch and Bound | |||||||
| Model-view controller | Bulk_Synchronous | Sparse Linear Algebra | N-Body methods | |||||||
| Event-based, implicit invocation | Unstructured Grids | Circuits | ||||||||
| Structured Grids | Spectral Methods | |||||||||
| Refine the structure - what concurrent approach do I use? | ||||||||||
| Guided Re-organization | ||||||||||
| Geometric Decomposition | Data Parallelism | Event Based | Task Parallelism | Digital Circuits | ||||||
| Divide and Conquer | Pipeline | Discrete Event | Graph algorithms | |||||||
| Utilize Supporting Structures – how do I implement my concurrency? | |||||||||
| Guided Mapping | |||||||||
| Fork/Join | Distributed Array | Shared Queue | Shared Hash Table | Master/Worker | |||||
| CSP | Shared Data | Loop Parallelism | Graph algorithms | ||||||
| Implementation methods – what are the building blocks of parallel programming? | |||||||||
| Guided Implementation | |||||||||
| Thread Creation/destruction | Message passing | Speculation | Barriers | Semaphores | |||||
| Process Creation/destruction | Collective communication | Transactional memory | Mutex | ||||||