Principles of Parallel Algorithm Design
Principles of Parallel Algorithm Design
Lecture 11
Preliminaries: Decomposition, Tasks, and
Dependency Graphs
Note that the same problem can be decomposed into subtasks in other
ways as well.
What are the critical path lengths for the two task dependency graphs?
If each task takes 10 time units, what is the shortest parallel execution time
for each decomposition? How many processors are needed in each case to
achieve this minimum parallel execution time? What is the maximum
degree of concurrency?
Limits on Parallel Performance
Note: These criteria often conflict eith each other. For example, a
decomposition into one task (or no decomposition at all) minimizes
interaction but does not result in a speedup at all! Can you think of
other such conflicting cases?
Processes and Mapping: Example
• recursive decomposition
• data decomposition
• exploratory decomposition
• speculative decomposition
Recursive Decomposition
In this example, once the list has been partitioned around the pivot, each
sublist can be processed concurrently (i.e., each sublist represents an
independent subtask). This can be repeated recursively.
Recursive Decomposition: Example
Task 1:
Task 2:
Task 3:
Task 4:
Input Data Partitioning
• Task sizes may be uniform (i.e., all tasks are the same size) or non-
uniform.
• Non-uniform task sizes may be such that they can be determined (or
estimated) a-priori or not.
• Examples in this class include discrete optimization problems, in
which it is difficult to estimate the effective size of a state space.
Size of Data Associated with Tasks
• The size of data associated with a task may be small or large when
viewed in the context of the size of the task.
• A small context of a task implies that an algorithm can easily
communicate this task to other processes dynamically (e.g., the 15
puzzle).
• A large context ties the task to a process, or alternately, an algorithm
may attempt to reconstruct the context at another processes as
opposed to communicating the context of the task (e.g., 0/1 integer
programming).
Characteristics of Task Interactions
(Static Vs Dynamic)
1: 6: 11:
2: 7: 12:
3: 8: 13:
4: 9: 14:
5: 10:
Block Cyclic Distributions