并行編程模型是并行計算,尤其是并行軟件的基礎,也是并行硬件系統的導向,在面臨多核新挑戰的情況下,什么樣的并行編程模型在未來能成為主流,還很難說。至少到目前,還處于百家爭鳴的時代,很多模型提出,很多在應用,下面我們簡單介紹一下當前的并行編程模型現狀。 并行編程模型一直是并行計算研究領域中的重點內容,它和并行計算機體系結構緊密相關。共享存儲體系結構下的并行編程模型主要是共享變量編程模型,它具有單地址空間、編程容易、可移植性差等特點,其實現有OpenMP和Pthreads等。分布式存儲體系結構下的并行編程模型主要有消息傳遞編程模型和分布式共享編程模型兩種:消息傳遞編程模型的特點是多地址空間、編程困難、可移植性好,其實現有 MPI, PVM等;分布式共享編程模型是指有硬件或軟件的支持,在分布式體系結構下實現的具有共享變量編程模型特點的編程模型。后者可以分別按照硬件或軟件的實現分為 DSM和SVM,其實現有TreadMark和JiaJia等,目前研究熱點的分割全局地址空間(PGAS)模型的研究有UPC等代表,具有很強的發展潛力。 多層次的SMP集群是由共享內存的SMP作為超節點,而超節點間采用消息傳遞,內存不能直接訪問。SMP集群同時具備了共享存儲和分布式存儲體系結構的特點,因而傳統并行體系結構下的編程模型己經不再完全適用于它。根據SMP集群多級并行結構的特點,很自然地考慮到將共享存儲編程模型與分布式存儲編程模型相結合。目前國內外學術界對于 SMP集群體系結構上編程模型的選擇仍然存在著分歧,為此已經提出了多種方案,有的側重性能有的側重可移植性和易用性,孰優孰劣,尚無定論。但從編程模型的評價標準— 計算性能和易用性綜合的角度考慮,Openw 優于Thread,使得MPI+OpenMP的混合編程模型得到了廣泛的應用。 混合編程模型提供了節點間和節點內的兩級并行機制,它的優勢在于結合了進程級的粗粒度并行(例如區域分解)和線程級的細粒度并行(如循環并行)。實踐證明,在很多情況下,其執行效率高于純MPI或OpenMP程序,解決了一些它們無法解決的問題。 主要有: 1、負載平衡問題 在MPI并行程序中可能出現負載不平衡的問題,使程序的性能受損。而在混合編程模型中,OpenMP能夠很好地解決該問題,彌補了MPI的不足,從而提高并行程序的性能。 2、 MPI進程數目受限的問題 一些應用問題存在所需進程數目與處理機數目不匹配的問題。若前者太小,則不能充分發揮機器的效率:太大,又無法執行。使用混合編程模型,首先執行MPI分解策略,啟動理想數目的進程,再用OpenMP進一步分解子任務,則可以使所有處理機得到高效利用。 3、通信帶寬和延遲問題 MPI并行程序進程間的通信帶寬和延遲問題可能會嚴重影響程序的執行性能。混合模型的程序將減少通信的次數,并且OpenMP的線程級并行具有較小的延遲,可緩解純MPI程序的問題。 4、細粒度并行問題 在用OpenMP來編寫并行程序時,雖然粒度太小也會增加系統的開銷,但相對而言遠沒有MPI那樣嚴重。當應用問題的并行粒度比較小時,混合編程模型對于SMP集群這樣的機器來說是個很好的選擇。 在并行編程模型的多級并行,混合編程方面國際國內都做了一些有益的探索,主要有加州伯克利分校,伊利諾伊大學,美國航天局,美國能源部的幾個國家實驗室,英國愛丁堡大學,德國亞琛大學以及SGI,Sun,Intel,IBM等大公司;國內則主要是中科院計算所,國防科大,北京大學,國家氣象中心等單位。 |