数据并行与任务并行
数据并行
数据并行意味着在每个多个计算核心上并发执行同一任务。
让我们举个例子,对大小为N的数组的内容求和。对于单核系统,一个线程将简单地对元素[0]求和。。。[N-1]。但是,对于双核系统,在核0上运行的线程A可以对元素[0]求和。。。[N/2-1],而在核心1上运行的线程B可以求和元素[N/2]。。。[N-1]。因此,这两个线程将在单独的计算核心上并行运行。
任务并行
任务并行是指在多个计算核心上同时执行不同任务。
再次考虑上面的示例,任务并行性的示例可能涉及两个线程,每个线程对元素数组执行唯一的统计操作。同样,线程在单独的计算核心上并行运行,但是每个线程都执行唯一的操作。
数据并行性和任务并行性之间的主要区别是-