Lecture 6 Principles of Parallel Algorithm Design
Lecture 6 Principles of Parallel Algorithm Design
Introduction: 1-4
Steps in Parallel Algorithm Design
• Identification: Identifying portions of the work that can be
performed concurrently.
Work-units are also known as tasks
E.g., Initializing two mega-arrays are two tasks and can be performed in
parallel
Multithreaded:
for (row = 0; row < n; row++)
for (column = 0; column < n; column++)
c[row][column] = create_thread( dot_product(get_row(a, row),
get_col(b, col)));
Task Dependency Graph
• The tasks in the previous examples are independent and
can be performed in any sequence.
• Processes vs Processors
Processes are logical computing agents that perform tasks
Processors are the hardware units that physically perform computations
Additional Resources
• Introduction to Parallel Computing by Ananth Grama and
Anshul Gupta