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

基本介紹

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

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

并行程序設(shè)計

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

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

不同的計算模型

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

不通用

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

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

共享變量

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

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

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

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