The patterns in this post cover different ways to dividing up data in an algorithm for processing. I have not had the opportunity to work with these patterns personally yet.
Geometric Decomposition
This pattern covers dividing data up into chunks to be processed concurrently. The one thing that struck me as interesting was the necessity in many of the examples for optimizing for hardware. Deciding the size of chunks and number can both be affected by the underlying hardware for some algorithms.
Pipeline
In this pattern, data is stuffed down a pipeline where different stages can work on different objects at the same time. Think of an assembly line or a CPU pipeline. While it is used most frequently at a low level in hardware where one part of the pipeline focuses on a specific task, it can be used at a higher level as well. The assembly line is one example. This pattern would be useful any time it is faster to have individual threads focusing on one task in a system. I think this could be easier to implement, even if the speed difference is minimal, than having each thread perform everything.
Data Parallelism
This pattern was pretty much non-existent, with only a paragraph currently written.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment