並行演算法 並行演算法的設計技術和並行程式開發

2021-10-03 22:48:20 字數 1241 閱讀 2667

目前普遍使用的並行演算法的設計技術:

1).流水線技術

將任務分割成許多子任務,每個處理器完成其中乙個,且第乙個處理器完成第乙個子任務後,第二個處理器可以開始完成第二個子任務…

2).分治策略

將原問題分成若干個特徵相同的子問題,分別處理。(類似超執行緒技術)

常見的分治策略:任務分割;資料分割

3).平衡樹方法

將輸入元素作為葉子節點構造二叉平衡樹。

4).倍增技術(指標跳躍技術)

適合處理鍊錶、有向圖等資料結構;經常應用於通訊系統中。

5).加速級聯策略

將最優演算法(計算速度慢)和最快演算法(不是最優)級聯起來。

乙個軟體開發環境主要由硬體平台、作業系統、支撐語言、軟體開發工具、應用軟體包等組成。並行程式開發主要在於並行程式的設計、除錯、維護和監控。

現在研究重點是擴充現有的編譯系統的並行語言功能,主要為:

資料級並行(利用fortran等開發);

任務級並行(利用mpi、linda等開發)

現在大多並行開發語言為fortran、pascal和c語言。並行環境常用的有pvm(parallel virtual machine並行虛擬機器)、mpi(message passing inte***ce 訊息傳遞介面)和express

並行程式的設計有多種方式,主要分為:

共享變數方法;訊息傳遞方法;資料並行程式設計;物件導向的並行程式設計;函式程式設計方法;邏輯程式設計方法。

選擇並實現一種並行程式設計方法前,需要重點考慮:成熟性、易程式設計性、靈活性、效率、可移植性和成本。

成熟性:主要指編譯器和訊息傳遞器的成熟性,有時也考慮開發工具的支援水平和完善程度。

易程式設計性:程式設計方法容易實現並容易產生維護**。

效率:保持編譯器和執行系統操作所有的程序通訊和同步。

1.確定性:並行應用普遍會產生不可預知的結果,這類問題往往很難發現並有效修復。這就需要為並行程式設計提供乙個可靠的、可預知的環境。

2.問題劃分:不同的處理機有時需要執行不同的程式,如何對個各個處理機進行任務劃分。

3.負載平衡:任務的分配可以是靜態的,也可以是動態的,如何保證各個計算節點具有相當的工作量。

4.資料的分配和收集:程式設計時必須考慮資料的分配(初始資料和計算環節中的過程資料)以及**(計算結果的返回)。

5.效能調整:未達到希望的效率是,必須對程式進行調整。

6.執行環境:一般情況下,並行程式要適應多種平行計算環境。

7.開銷:並行程式需要哪些額外開銷,如通訊開銷和程式管理開銷等。

並行演算法設計

求和例子總結 資料並行 其他任務劃分方法 假定已有求解問題的序列演算法,我們將 其改為並行版本 並行演算法與體系結構緊密相關 設計乙個並行演算法 計算任務的分解 如何將平行計算工作分解,交由眾多程序 執行緒併發執行 保持依賴關係 計算結果與序列演算法保持一致 額外開銷 有多種型別的開銷,要盡量降低 ...

並行演算法筆記(三) 並行演算法設計(二)

case1 並行歸併排序 對n個元素a 1 n 排序,則將a均勻分為p組,其中p為處理器個數,按如下過程排序 case2 歸併演算法 valiant歸併 對長度為p,q的有序陣列a和b歸併,則將a均勻分為p sqrt p 組,每組有p sqrt p 個元素,將b劃分為q sqrt q 組,每組q s...

並行演算法 並行演算法的初步認識

今年的課程中增加了,並行演算法的課程,我一看,一門課程都掛上 演算法 了,肯定厲害呀。這我可要認真學習它。我把我自己的見解和大家分享一下,要是有錯誤的地方一定要指出啊。這是我畫的乙個思維導圖,好像是什麼也看不出來。咱們按照順序乙個乙個的介紹哈。我不知道大家是什麼情況,我是從小學開始,學什麼都是從定理...