数据并行意味着在每个多个计算核心上并发执行同一任务。
让我们举个例子,对大小为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.在这里,负载平衡取决于硬件的可用性以及诸如静态和动态调度之类的调度算法。 |