iT邦幫忙

DAY 12
0

平行計算筆記系列 第 12

平行計算Ch3筆記3

  • 分享至 

  • xImage
  •  

Finding Global Sum in logarithmic time 這是要把下面的陣列全部加起來的方法,必須在log時間內算出來!

首先先做一回合的兩兩一組相加,

相加後的結果再做一回合的兩兩相加

如此做法可在四回合算完 4x4 個元素

以二為底 log (16) = 4 回合

檢視一下我們做的步驟,觀察結果發現

其實左上,右上,左下,右下四個區塊等同於把區塊內的元素全部加起來的效果

這一步驟是做 Agglomeration整合 and Mapping 分配任務的結果

n tasks mapped to p processors

定義變數:n 個任務分配給 p 個處理器去做!

由上述的分析可得知

n/p primitive tasks

with 1 value

1 primitive tasks

with n/p values

這裡是在講 其實每區塊(四個task相加)整合後得到一個總和的結果

如此可把每四個一組的任務整合成一件單純的總和的任務

如此全部有 n = 16 個任務點,就整合成 (n/p) = (16/4) = 四件單純的總和的task得到一個總和的value

定義兩個變數

x 念做 "開" :定義成做這個operation所需的時間,

入 念做"lamda" :定義成訊息傳輸的延遲時間

如此:分給四個處理器同時運算時所花的時間為:

這裡是表示把(n/p) = (16/4) = 四個元素相加起來的任務運算

共需要做 4-1 = 3 次的相加。

而在做task之間的reduction整合的任務之中所需時間為

"lamda" 加 "開" ,意即訊息傳遞時間延遲加上做operation的時間

如此的p個處理器做p個task,整合時的任務共有 log p 個 communication steps

所以得到全部時間總和為:

這裡好抽象... 希望大家不要覺得我在講外星語 ><


上一篇
平行計算Ch2習題練習
下一篇
平行計算Ch3筆記4 The n-Body Problem
系列文
平行計算筆記19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言