Multicore Programming
Concurrency vs Parallelism
- A system is parallel if it can perform more than one task simultaneously.
- A concurrent system supports more than one task by allowing all the tasks to make progress.
- Thus, it is possible to have concurrency without parallelism.
Types of Parallelism
Data parallelism focuses on distributing subsets of the same data across multiple computing cores and performing the same operation on each core.
Task parallelism involves distributing not data but tasks (threads) across multiple computing cores.
In most instances, applications use a hybrid of these two strategies.