您好,登錄后才能下訂單哦!
廣義上講,并行可以分為幾類,1. 共享內存并行(明確的線程,比如Pthreads和Java threads);2.共享內存并行(任務/數據的并行,比如OpenMP); 2. 分布式并行(明確的通信,比如MPI, SHMEM, 和Global Arrays); 3. 分布式并行(特殊的全局訪問,比如Co-Array Fortran, UPC)。
具體說來,
Pthreads 是一個共享內存的編程模型,并行化通過并行調用函數來實現。一個并行函數體被多個線程同步的執行,這些線程都可以訪問共享的全局數據。Pthreads是許多并行模型的底層實現。
Java是一個通用的編程語言,它通過線程的形式來支持并行化。并行Java程序運行在共享內存處理器上,它非常類似于Pthreads程序。Pthreads和Java僅僅在共享內存處理器上存在。
OpenMP也是共享內存模型,它的并行化是通過為循環和函數定義并行注釋(parallel directives)來實現。OpenMP注釋可以指出哪些循環部分可以并行執行,以及可以并行起來的函數。其它的一些注釋用于指出針對某一進程的共享或私有的數據。編譯器可以將OpenMP程序翻譯成像Pthreads一樣的程序,其中并行的循環體都會被翻譯成并行函數的形式。OpenMP是一個工業標準的并行化庫,被多種語言和平臺所支持。OpenMP目前僅僅應用于共享內存處理器。
MPI是分布式內存模型,其線程需要明確的進行通信,這些通信基于MPI運行時庫來發送和接受數據。MPI被廣泛采納,任何并行平臺都能找到它。它的性能也已經被調優。盡管需要一定的編程才能實現,MPI由于其可移植性和性能表現,是目前最受歡迎的并行模式。
許多科學應用具有非常規則的內存訪問模式,因此可以很容易的并行起來。三種典型的應用是,1. 不規則的表訪問,涉及到許多并行數據庫操作;2.不規則的動態訪問,涉及到稀疏的數據結構,比如共軛梯度法求n階稀疏矩陣的主特征值;3. 內存排序 in-memory sorting。
來源:
Evaluating the Imapct of Programming Language Features on the Performance of Parallel Applications on Cluster Architectures (by Konstantin Berlin, et al.)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。