并行程序設(shè)計(jì)不但包含了串行程序設(shè)計(jì),而且還包含了更多的富有挑戰(zhàn)性的問題。

基本介紹

目前并行程序設(shè)計(jì)的狀況是:①并行軟件的發(fā)展落后于并行硬件;②和串行系統(tǒng)的應(yīng)用軟件相比,現(xiàn)今的并行系統(tǒng)應(yīng)用軟件甚少且不成熟;③并行軟件的缺乏是發(fā)展并行計(jì)算的主要障礙;④而且這種狀態(tài)仍在繼續(xù).

其原因是:①并行程序設(shè)計(jì)不但包含了串行程序設(shè)計(jì),而且還包含了更多的富有挑戰(zhàn)性的問題;②串行程序設(shè)計(jì)僅有一個(gè)普遍被接受的馮*諾依曼模型,而并行計(jì)算模型雖有好多,但沒有一個(gè)被共同認(rèn)可;③并行程序設(shè)計(jì)對(duì)環(huán)境工具的要求遠(yuǎn)比串行程序設(shè)計(jì)先進(jìn)得多;④串行程序設(shè)計(jì)比較適合于自然習(xí)慣,且人們?cè)谶^去積累了大量的編程知識(shí)和寶貴的軟件財(cái)富.

并行程序設(shè)計(jì)

:對(duì)于所希望的應(yīng)用,很多并行代碼似乎不存在的;即使有,也常不能用于用戶的并行機(jī)上。因?yàn)椴⑿写a原來都是為不同的并行結(jié)構(gòu)寫的.

它的問題是:至今并行算法范例不能被很好地理解和廣泛地接受;并行程序設(shè)計(jì)是建立在

不同的計(jì)算模型

上的,而它們沒有能像馮*諾依曼模型那樣被普遍的接受和認(rèn)可。絕大部分被使用的并行程序設(shè)計(jì)語言都是Fortran和C的推廣,他們都不能夠充分地表達(dá)不同并行結(jié)構(gòu)的特點(diǎn),既不成熟也

不通用

.并行程序設(shè)計(jì)工具依賴于具體的并行結(jié)構(gòu)和計(jì)算機(jī)代的更迭,既不通用也不穩(wěn)定,在某個(gè)并行平臺(tái)上開發(fā)的并行程序很難移植到別的或?qū)淼牟⑿袡C(jī)上.

目前并行編程類型逐漸匯聚于兩類:用于PVP,SMP和DSW的

共享變量

的單地址空間模型和用于MPP和機(jī)群的消息傳遞的多地址空間模型.

并行編程模型逐漸匯聚于三類標(biāo)準(zhǔn)模型:數(shù)據(jù)并行(如:HPF),消息傳遞(如:MPI和PVM),和共享變量(如OpenMp).

現(xiàn)在人們希望高性能的并行機(jī)應(yīng)是 具有單一系統(tǒng)映像的巨大的工作站,使得很多用戶都能利用增強(qiáng)處理能力和儲(chǔ)存容量來運(yùn)行多個(gè)串行作業(yè),這就是所謂的串行程序并行系統(tǒng)spps.

當(dāng)我們?cè)趯?shí)際的并行機(jī)上設(shè)計(jì)并行程序時(shí),絕大部分均是采用擴(kuò)展Fortran和C語言的辦法,目前有三種擴(kuò)展的辦法:一是庫函數(shù)法:除了串行語言所包含的庫函數(shù)外,一組新的支持并行性和交互操作的庫函數(shù)(如MPI消息傳遞庫和POSIXPthreads多線程庫)引入到并行程序設(shè)計(jì)中。二是新語言結(jié)構(gòu)法:采用某些新的語言結(jié)構(gòu)來幫助并行程序設(shè)計(jì)以支持并行性和交互操作(如Fortran 90 中的聚集數(shù)組操作); 三是編譯制導(dǎo)法:程序設(shè)計(jì)語言保持不變,但是將稱之為編譯制導(dǎo)的格式注釋引入到并行程序中.