并行算法設(shè)計(jì)基礎(chǔ)

計(jì)算分解

數(shù)據(jù)分解

搜索分解

遞歸分解

混合分解方法

針對(duì)要處理的問題靈活運(yùn)動(dòng)數(shù)據(jù)分解、搜索分解和遞歸分解

任務(wù)映射與負(fù)載均衡

在將計(jì)算分解為多個(gè)可以并行處理的子任務(wù)后,下一步是將子任務(wù)分配給可用的處理器來處理。給出一個(gè)子任務(wù)集合可用處理器集,那么怎么來判斷如何分配,即建立映射的方式是最好的呢?

  • 分配給每個(gè)處理器的計(jì)算任務(wù)應(yīng)該均衡,這樣才能減少處理器等待其他處理器處理而造成的空閑
  • 不同處理器直接的交互減少
    對(duì)很多的問題來說,在處理器中均勻分配計(jì)算任務(wù)并不一定能保證所有處理器都被有效的使用。對(duì)具有依賴關(guān)系的任務(wù)來說,尤其如此。比如采用遞歸分解的快速排序算法,遞歸樹中每一層的計(jì)算量都是O(n),但如果我們將每一層的任務(wù)分配給一個(gè)不同的處理器,這樣看起來每個(gè)處理器具有相同的計(jì)算量,但由于下層的任務(wù)需要在上層的任務(wù)結(jié)束后完成,所以,實(shí)際上這種分配導(dǎo)致了全局的串行計(jì)算。因此,任務(wù)之間的依賴關(guān)系是任務(wù)分配的主要約束關(guān)系,在調(diào)度的時(shí)候必須考慮這一點(diǎn)。

負(fù)載平衡技術(shù)

  • 靜態(tài)負(fù)載平衡
  • 動(dòng)態(tài)負(fù)載平衡
    簡(jiǎn)單的選擇負(fù)載平衡的原則就是:如果能提前預(yù)知任務(wù)分布規(guī)模和情況的則用靜態(tài)分配,這樣實(shí)現(xiàn)過程簡(jiǎn)單,而對(duì)于只能在任務(wù)啟動(dòng)后分配的任務(wù)或者是在任務(wù)執(zhí)行過程中又不斷產(chǎn)生任務(wù)的,則采用動(dòng)態(tài)分配。

靜態(tài)分解

數(shù)組分步策略--塊分布
當(dāng)數(shù)組的每個(gè)元素相關(guān)的計(jì)算是均衡的時(shí)候,我們可以采用簡(jiǎn)單的塊分布策略:為每個(gè)處理器分配相同數(shù)量的數(shù)組元素。
例子:矩陣乘法

數(shù)組分步策略--塊輪轉(zhuǎn)分布

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容