数据并行与任务并行
数据并行
数据并行意味着在多个计算核心上同时执行相同的任务。
例如,对大小为 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. 在这里,负载平衡取决于硬件的可用性和静态和动态调度等调度算法。 |
广告