|
Dynamic Assignment
- Dynamic assignment comes with its own overhead
- Now you need to maintain a shared count of the number of available tasks
- The update of this variable must be protected by a lock
- Need to be careful so that this lock contention does not outweigh the benefits of dynamic decomposition
- More complicated applications where a task may not just operate on an index range, but could manipulate a subtree or a complex data structure
- Normally a dynamic task queue is maintained where each task is probably a pointer to the data
- The task queue gets populated as new tasks are discovered
Decomposition Types
- Decomposition by data
- The most commonly found decomposition technique
- The data set is partitioned into several subsets and each subset is assigned to a process
- The type of computation may or may not be identical on each subset
- Very easy to program and manage
- Computational decomposition
- Not so popular: Tricky to program and manage
- All processes operate on the same data, but probably carry out different kinds of computation
- More common in systolic arrays, pipelined graphics processor units (GPUs) etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|