Parallelism Design Flashcards
In what ways can you decompose a problem into parallel components?
Data parallelism
Task parallelism
Pipelines
Mixed solutions
What is data parallelism?
Breaking a large data set into smaller subsets that can be processed concurrently on multiple processors.
What is task parallelism
Breaking a large task into smaller sub-tasks that can be executed concurrently on multiple processors
What is course grained parallelism?
• A program is split into large tasks to be executed in parallel.
• Good for data parallelism as all threads execute the same instructions. No load imbalance
What is fine grained parallelism?
• A program is split into small tasks to be executed in parallel.
• Fine with data parallelism as well, no load imbalance.
• Good for task parallelism/pipelining (with planning), allows the program to be split into tasks to reduce load imbalance and increase throughput.
• I.e. if addressing takes two timesteps because for 1 timestep, we write the address, and for another we stamp the letter, why not do more?
What is mixed solution in terms of granularity?
• Differing number of threads depending on how long a task takes to complete