廣義上講,并行可以分為幾類,1. 共享內(nèi)存并行(明確的線程,比如Pthreads和Java threads);2.共享內(nèi)存并行(任務(wù)/數(shù)據(jù)的并行,比如OpenMP); 2. 分布式并行(明確的通信,比如MPI, SHMEM, 和Global Arrays); 3. 分布式并行(特殊的全局訪問(wèn),比如Co-Array Fortran, UPC)。
十多年的承德網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整承德建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“承德網(wǎng)站設(shè)計(jì)”,“承德網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
具體說(shuō)來(lái),
Pthreads 是一個(gè)共享內(nèi)存的編程模型,并行化通過(guò)并行調(diào)用函數(shù)來(lái)實(shí)現(xiàn)。一個(gè)并行函數(shù)體被多個(gè)線程同步的執(zhí)行,這些線程都可以訪問(wèn)共享的全局?jǐn)?shù)據(jù)。Pthreads是許多并行模型的底層實(shí)現(xiàn)。
Java是一個(gè)通用的編程語(yǔ)言,它通過(guò)線程的形式來(lái)支持并行化。并行Java程序運(yùn)行在共享內(nèi)存處理器上,它非常類似于Pthreads程序。Pthreads和Java僅僅在共享內(nèi)存處理器上存在。
OpenMP也是共享內(nèi)存模型,它的并行化是通過(guò)為循環(huán)和函數(shù)定義并行注釋(parallel directives)來(lái)實(shí)現(xiàn)。OpenMP注釋可以指出哪些循環(huán)部分可以并行執(zhí)行,以及可以并行起來(lái)的函數(shù)。其它的一些注釋用于指出針對(duì)某一進(jìn)程的共享或私有的數(shù)據(jù)。編譯器可以將OpenMP程序翻譯成像Pthreads一樣的程序,其中并行的循環(huán)體都會(huì)被翻譯成并行函數(shù)的形式。OpenMP是一個(gè)工業(yè)標(biāo)準(zhǔn)的并行化庫(kù),被多種語(yǔ)言和平臺(tái)所支持。OpenMP目前僅僅應(yīng)用于共享內(nèi)存處理器。
MPI是分布式內(nèi)存模型,其線程需要明確的進(jìn)行通信,這些通信基于MPI運(yùn)行時(shí)庫(kù)來(lái)發(fā)送和接受數(shù)據(jù)。MPI被廣泛采納,任何并行平臺(tái)都能找到它。它的性能也已經(jīng)被調(diào)優(yōu)。盡管需要一定的編程才能實(shí)現(xiàn),MPI由于其可移植性和性能表現(xiàn),是目前最受歡迎的并行模式。
許多科學(xué)應(yīng)用具有非常規(guī)則的內(nèi)存訪問(wèn)模式,因此可以很容易的并行起來(lái)。三種典型的應(yīng)用是,1. 不規(guī)則的表訪問(wèn),涉及到許多并行數(shù)據(jù)庫(kù)操作;2.不規(guī)則的動(dòng)態(tài)訪問(wèn),涉及到稀疏的數(shù)據(jù)結(jié)構(gòu),比如共軛梯度法求n階稀疏矩陣的主特征值;3. 內(nèi)存排序 in-memory sorting。
來(lái)源:
Evaluating the Imapct of Programming Language Features on the Performance of Parallel Applications on Cluster Architectures (by Konstantin Berlin, et al.)