数据并行与任务并行


数据并行

数据并行意味着在多个计算核心上同时执行相同的任务。

例如,对大小为 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. 在这里,负载平衡取决于硬件的可用性和静态和动态调度等调度算法。

更新于:2019年10月11日

18K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告