数据并行与任务并行
数据并行
数据并行意味着在多个计算核心上同时执行相同的任务。
例如,对大小为 N 的数组求和。对于单核系统,一个线程会简单地对元素 [0] ... [N − 1] 求和。然而,对于双核系统,在核心 0 上运行的线程 A 可以对元素 [0] ... [N/2 − 1] 求和,而同时在核心 1 上运行的线程 B 可以对元素 [N/2] ... [N − 1] 求和。因此,这两个线程将在单独的计算核心上并行运行。
任务并行
任务并行意味着在多个计算核心上同时执行不同的任务。
再次考虑上面的例子,任务并行的例子可能包括两个线程,每个线程对元素数组执行唯一的统计运算。同样,这些线程在单独的计算核心上并行运行,但每个线程执行唯一的操作。
数据并行和任务并行的主要区别在于:
| 数据并行 | 任务并行 |
|---|---|
| 1. 对相同数据的不同子集执行相同的任务。 | 1. 对相同或不同数据执行不同的任务。 |
| 2. 执行同步计算。 | 2. 执行异步计算。 |
| 3. 由于只有一个执行线程操作所有数据集,因此加速效果更好。 | 3. 由于每个处理器将在相同或不同数据集上执行不同的线程或进程,因此加速效果较差。 |
| 4. 并行化程度与输入大小成正比。 | 4. 并行化程度与执行的独立任务数量成正比。 |
| 5. 它旨在在多处理器系统上实现最佳负载平衡。 | 5. 在这里,负载平衡取决于硬件的可用性和静态和动态调度等调度算法。 |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP