【並行算法】並行算法的設計技術和並行程序開發

並行算法的設計技術

目前普遍使用的並行算法的設計技術:
1).流水線技術
將任務分割成許多子任務,每個處理器完成其中一個,且第一個處理器完成第一個子任務後,第二個處理器可以開始完成第二個子任務…
2).分治策略
將原問題分成若干個特徵相同的子問題,分別處理。(類似超線程技術)
常見的分治策略:任務分割;數據分割
3).平衡樹方法
將輸入元素作爲葉子節點構造二叉平衡樹。
4).倍增技術(指針跳躍技術)
適合處理鏈表、有向圖等數據結構;經常應用於通信系統中。
5).加速級聯策略
將最優算法(計算速度慢)和最快算法(不是最優)級聯起來。

並行程序開發

一個軟件開發環境主要由硬件平臺、操作系統、支撐語言、軟件開發工具、應用軟件包等組成。並行程序開發主要在於並行程序的設計、調試、維護和監控。

一、並行程序開發環境

現在研究重點是擴充現有的編譯系統的並行語言功能,主要爲:
數據級並行(利用Fortran等開發);
任務級並行(利用MPI、Linda等開發)

二、並行語言和消息傳遞環境

現在大多並行開發語言爲Fortran、Pascal和C語言。並行環境常用的有PVM(Parallel Virtual Machine並行虛擬機)、MPI(Message Passing Interface 消息傳遞接口)和Express

三、並行程序設計

並行程序的設計有多種方式,主要分爲:
共享變量方法;消息傳遞方法;數據並行程序設計;面向對象的並行程序設計;函數程序設計方法;邏輯程序設計方法。
選擇並實現一種並行編程方法前,需要重點考慮:成熟性、易編程性、靈活性、效率、可移植性和成本。
成熟性:主要指編譯器和消息傳遞器的成熟性,有時也考慮開發工具的支持水平和完善程度。
易編程性:編程方法容易實現並容易產生維護代碼。
效率:保持編譯器和運行系統操作所有的進程通信和同步。

四、並行編程技術遇到的挑戰

1.確定性:並行應用普遍會產生不可預知的結果,這類問題往往很難發現並有效修復。這就需要爲並行編程提供一個可靠的、可預知的環境。
2.問題劃分:不同的處理機有時需要運行不同的程序,如何對個各個處理機進行任務劃分。
3.負載平衡:任務的分配可以是靜態的,也可以是動態的,如何保證各個計算節點具有相當的工作量。
4.數據的分配和收集:編程時必須考慮數據的分配(初始數據和計算環節中的過程數據)以及回收(計算結果的返回)。
5.性能調整:未達到希望的效率是,必須對程序進行調整。
6.執行環境:一般情況下,並行程序要適應多種並行計算環境。
7.開銷:並行程序需要哪些額外開銷,如通信開銷和程序管理開銷等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章