1) Parallel algorithms divide a problem into sub-problems that can be solved concurrently. This document discusses techniques for decomposing problems into parallel tasks, including recursive decomposition, data decomposition, and partitioning input/output/intermediate data.
2) Data decomposition involves partitioning the data used in computations and assigning each partition to a separate task. This is a common technique that can induce concurrency in algorithms that operate on large data structures.
3) Partitioning can involve dividing input data, output data, or intermediate data among tasks. The goal is to identify independent work that can be done simultaneously while minimizing communication between tasks.