溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

幾種并行模型比較

發(fā)布時間:2020-06-09 15:41:09 來源:網(wǎng)絡(luò) 閱讀:1507 作者:wolfiealex 欄目:軟件技術(shù)

廣義上講,并行可以分為幾類,1. 共享內(nèi)存并行(明確的線程,比如Pthreads和Java threads);2.共享內(nèi)存并行(任務(wù)/數(shù)據(jù)的并行,比如OpenMP); 2. 分布式并行(明確的通信,比如MPI, SHMEM, 和Global Arrays); 3. 分布式并行(特殊的全局訪問,比如Co-Array Fortran, UPC)。


具體說來,

Pthreads 是一個共享內(nèi)存的編程模型,并行化通過并行調(diào)用函數(shù)來實現(xiàn)。一個并行函數(shù)體被多個線程同步的執(zhí)行,這些線程都可以訪問共享的全局數(shù)據(jù)。Pthreads是許多并行模型的底層實現(xiàn)。


Java是一個通用的編程語言,它通過線程的形式來支持并行化。并行Java程序運行在共享內(nèi)存處理器上,它非常類似于Pthreads程序。Pthreads和Java僅僅在共享內(nèi)存處理器上存在。


OpenMP也是共享內(nèi)存模型,它的并行化是通過為循環(huán)和函數(shù)定義并行注釋(parallel directives)來實現(xiàn)。OpenMP注釋可以指出哪些循環(huán)部分可以并行執(zhí)行,以及可以并行起來的函數(shù)。其它的一些注釋用于指出針對某一進程的共享或私有的數(shù)據(jù)。編譯器可以將OpenMP程序翻譯成像Pthreads一樣的程序,其中并行的循環(huán)體都會被翻譯成并行函數(shù)的形式。OpenMP是一個工業(yè)標準的并行化庫,被多種語言和平臺所支持。OpenMP目前僅僅應(yīng)用于共享內(nèi)存處理器。


MPI是分布式內(nèi)存模型,其線程需要明確的進行通信,這些通信基于MPI運行時庫來發(fā)送和接受數(shù)據(jù)。MPI被廣泛采納,任何并行平臺都能找到它。它的性能也已經(jīng)被調(diào)優(yōu)。盡管需要一定的編程才能實現(xiàn),MPI由于其可移植性和性能表現(xiàn),是目前最受歡迎的并行模式。


許多科學應(yīng)用具有非常規(guī)則的內(nèi)存訪問模式,因此可以很容易的并行起來。三種典型的應(yīng)用是,1. 不規(guī)則的表訪問,涉及到許多并行數(shù)據(jù)庫操作;2.不規(guī)則的動態(tài)訪問,涉及到稀疏的數(shù)據(jù)結(jié)構(gòu),比如共軛梯度法求n階稀疏矩陣的主特征值;3. 內(nèi)存排序 in-memory sorting。


來源:

Evaluating the Imapct of Programming Language Features on the Performance of Parallel Applications on Cluster Architectures (by Konstantin Berlin, et al.)




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI