處理執行中的並行型別


資料並行

資料並行是指在多個計算核心上同時執行相同任務。

讓我們舉個例子,對大小為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.