处理执行中的并行类型


数据并行

数据并行是指在多个计算核心上同时执行相同任务。

让我们举个例子,对大小为N的数组求和。对于单核系统,一个线程会简单地对元素[0]…[N-1]求和。然而,对于双核系统,在核心0上运行的线程A可以对元素[0]…[N/2-1]求和,而同时在核心1上运行的线程B可以对元素[N/2]…[N-1]求和。因此,这两个线程将在单独的计算核心上并行运行。

任务并行

任务并行是指在多个计算核心上同时执行不同的任务。

再次考虑我们上面的例子,任务并行的例子可能包括两个线程,每个线程对元素数组执行唯一的统计运算。同样,这些线程在单独的计算核心上并行运行,但每个线程都执行一个唯一的操作。

位级并行

位级并行是一种基于增加处理器字长的并行计算形式。在这种类型的并行中,增加字长减少了处理器必须执行的指令数量,以对大小大于字长的变量执行操作。

例如,考虑一个8位处理器必须添加两个16位整数的情况。首先,处理器必须添加每个整数的8个低位,然后添加8个高位,然后需要两条指令才能完成单个操作。一个具有16位的处理器将能够用单条指令完成该操作。

指令级并行

**指令级并行**是指同时执行程序中的多条指令。虽然流水线是ILP的一种形式,但我们必须利用它才能实现指令流中指令的并行执行。

示例

for (i=1; i<=100; i= i+1)
   y[i] = y[i] + x[i];

这是一个并行循环。循环的每次迭代都可以与任何其他迭代重叠,尽管在每次循环迭代中几乎没有重叠的机会。

更新于:2019年10月11日

15K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.