Windows P的PVM的實(shí)現(xiàn)論文
時(shí)間:2022-09-17 05:36:00
導(dǎo)語(yǔ):Windows P的PVM的實(shí)現(xiàn)論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要網(wǎng)絡(luò)并行計(jì)算已成為國(guó)際上并行環(huán)境發(fā)展的重要方向,本文介紹了pvm的概念、組成、在WindowsXP下的安裝與配置及在該環(huán)境下兩種編寫(xiě)程序的方法。
關(guān)鍵詞并行虛擬機(jī);并行程序設(shè)計(jì)環(huán)境;安裝;配置;編程
1引言
近年來(lái),網(wǎng)絡(luò)并行計(jì)算已成為國(guó)際上并行環(huán)境發(fā)展的一個(gè)重要方向。首先,網(wǎng)絡(luò)并行計(jì)算環(huán)境在硬件和軟件方面的成本都比并行計(jì)算專(zhuān)用工作站要低廉,更易于建立。其次,網(wǎng)絡(luò)并行計(jì)算系統(tǒng)使用方便,可擴(kuò)展性強(qiáng),更靈活。PVM(ParallelVirtualMachine)是并行虛擬機(jī)的簡(jiǎn)稱(chēng),它通過(guò)TCP/IP網(wǎng)絡(luò)通訊協(xié)議將整個(gè)網(wǎng)絡(luò)的多臺(tái)計(jì)算機(jī)虛擬成一臺(tái)并行機(jī)使用,是目前國(guó)內(nèi)外比較流行的并行計(jì)算環(huán)境之一。
PVM需要一個(gè)多任務(wù)的操作系統(tǒng)平臺(tái),以便生成多個(gè)PVM進(jìn)程,實(shí)現(xiàn)其虛擬并行機(jī)的功能。以前多任務(wù)的操作系統(tǒng)平臺(tái)都是基于Unix或Liunx的,但由于WindowsXP亦是32位的多任務(wù)操作系統(tǒng)且基于Windows的PC機(jī)在數(shù)量上遠(yuǎn)遠(yuǎn)超過(guò)基于Unix或Liunx的機(jī)器,加之PC機(jī)所用CPU速度的迅速升級(jí),由高速網(wǎng)絡(luò)互連的多臺(tái)計(jì)算機(jī)可形成強(qiáng)大的計(jì)算能力。本文介紹了在WindowsXP環(huán)境下PVM的安裝,配置與編程。選用的PVM版本為基于Windows的PVM3.4.3。
2PVM的組成
PVM系統(tǒng)由三部分組成。系統(tǒng)的第一部分是一個(gè)稱(chēng)為DaemonProcess的守護(hù)程序,縮寫(xiě)為pvmd,它駐留在構(gòu)成虛擬機(jī)的所有計(jì)算機(jī)上。守護(hù)程序是在后臺(tái)執(zhí)行的一種程序,在需要時(shí)隨時(shí)準(zhǔn)備完成一個(gè)操作。它通常是在開(kāi)始時(shí)啟動(dòng)的一種無(wú)人值守的被掛起的進(jìn)程,它等待某種事件發(fā)生,自動(dòng)地被激活,執(zhí)行作業(yè)。然后終止或?qū)⒆陨頀炱穑却乱皇录?郵件程序就是守護(hù)程序的一個(gè)例子,它在后臺(tái)運(yùn)行,處理計(jì)算機(jī)上的所有輸入和輸出電子郵件)。當(dāng)用戶指定了構(gòu)成并行虛擬機(jī)的節(jié)點(diǎn)后,啟動(dòng)PVM,就會(huì)在相應(yīng)的節(jié)點(diǎn)上各自啟動(dòng)一個(gè)pvmd3進(jìn)程,它們之間互相通信,共同管理各并行任務(wù)的執(zhí)行和通信,從而構(gòu)成了一個(gè)并行虛擬機(jī)。并行任務(wù)之間的通信實(shí)際上是通過(guò)各pvmd3進(jìn)程來(lái)實(shí)現(xiàn)的,因此每個(gè)pvmd3進(jìn)程都起著不可估量的作用。
由于pvmd3是在后臺(tái)運(yùn)行的,因此它對(duì)于虛擬機(jī)中的機(jī)器完成其它工作毫無(wú)影響。用戶可在任意主機(jī)上開(kāi)始執(zhí)行PVM應(yīng)用,多用戶可以配置重疊的虛擬機(jī),并且每個(gè)用戶可以同時(shí)執(zhí)行若干個(gè)PVM應(yīng)用。
系統(tǒng)的第二部分是一個(gè)PVM接口例行程序庫(kù)libpvm3.a。它包含各種功能完備的原語(yǔ),這些原語(yǔ)主要用于協(xié)調(diào)應(yīng)用任務(wù)。該程序庫(kù)包括那些用于消息傳遞、創(chuàng)建進(jìn)程、協(xié)調(diào)任務(wù)以及修改虛擬機(jī)等用戶可調(diào)用例行程序。PVM可在體系結(jié)構(gòu)互不兼容的計(jì)算機(jī)網(wǎng)絡(luò)上透明地處理所有消息路徑選擇、數(shù)據(jù)轉(zhuǎn)換及任務(wù)調(diào)度等。PVM計(jì)算模型是基于由若干個(gè)任務(wù)組成的應(yīng)用,所有任務(wù)通過(guò)這個(gè)標(biāo)準(zhǔn)接口例行程序庫(kù)來(lái)訪問(wèn)PVM資源。此系統(tǒng)當(dāng)前支持C、C++和Fortran語(yǔ)言。
系統(tǒng)的第三部分是PVM控制臺(tái)進(jìn)程,相當(dāng)于“并行虛擬機(jī)”的操作平臺(tái),可以交互式地與用戶工作。用戶在此可以增加、刪除節(jié)點(diǎn)機(jī)以及執(zhí)行一些其它的控制命令,如啟動(dòng)、終止一個(gè)PVM任務(wù)、顯示某任務(wù)的狀態(tài)等。
3WindowsXP下PVM的安裝與配置
PVM安裝應(yīng)該說(shuō)是比較容易的。PVM3.4.3版本提供了安裝軟件包,只需按照其向?qū)О惭b即可成功(對(duì)于PVM3.4以前的版本則需要用戶添加一些環(huán)境變量)。但是只安裝PVM軟件包是不夠的,如果要聯(lián)機(jī)計(jì)算還需要安裝winsockrshd/NT(在WindowsXP下)。rsh(remoteshell)實(shí)際上是一個(gè)在本地啟動(dòng)遠(yuǎn)程宿主機(jī)上應(yīng)用程序的一個(gè)實(shí)用命令,PVM就是利用初啟機(jī)上rsh命令來(lái)啟動(dòng)遠(yuǎn)程宿主機(jī)上pvmd的。但要使本地rsh命令能正常工作還需得到遠(yuǎn)程宿主機(jī)上的rsh監(jiān)控進(jìn)程rshd(remoteshelldae2mon)的支持。一般來(lái)說(shuō),rshd是作為Windows操作系統(tǒng)的一項(xiàng)服務(wù)來(lái)使用,如果沒(méi)有得安裝。在PVM下配置虛擬機(jī)時(shí)必須首先啟動(dòng)每臺(tái)節(jié)點(diǎn)機(jī)上的rshd服務(wù),否則rsh命令無(wú)法使用,虛擬機(jī)的配置當(dāng)然不會(huì)成功。
3.1所需的軟件
我們使用的是DenlcompSysrems公司的RSHD/NT軟件,讀者可以自行在網(wǎng)上下載。Rsh已經(jīng)存在于WindowsXp的system32文件夾下。
3.2所需的文件系統(tǒng)
因?yàn)槲覀兪菍VM運(yùn)行在Windows下,所以我們使用FAT32文件格式,如果運(yùn)行在Windows2000下,則必須使用NTFS格式,否則PVM會(huì)報(bào)錯(cuò)。
3.3安裝步驟
(1)點(diǎn)擊圖標(biāo)進(jìn)行安裝,安裝時(shí)指定Sever版還是Client版,如果用于希望本地安裝,就選擇Sever版,如果已存在PVM服務(wù)器,可選擇遠(yuǎn)程client安裝模式(不推薦使用)。
(2)接著需要指定PVM的安裝目錄(c:\pvm3.4和臨時(shí)目錄c:\temp,如果沒(méi)有得自己提前新建),則安裝程序會(huì)自動(dòng)設(shè)置環(huán)境變量PVM_ROOT為c:\pvm3.4,PVM_TMP為c:\temp,PVM_ARCH為WIN32。其中PVM_TM:它定義臨時(shí)文件的位置(PVM_TM=c:\temp);PVM_ROOT:指定PVM的安裝(PVM_ROOT=c:\pvm3.4)。
(3)安裝過(guò)程中還必須指定系統(tǒng)所用的C或Fortran編譯器(筆者機(jī)器安裝了C++6.0,沒(méi)有安裝Fortran編譯器,讀者可以跳過(guò))。指定后安裝程序會(huì)自動(dòng)搜索編譯器所在目錄并顯示出來(lái)。
(4)安裝完成重啟計(jì)算機(jī),則PVM安裝完畢。
(5)WinsockRSHD/NT的安裝。
將網(wǎng)上下載的rshdnt_eval.exe自解壓軟件包安裝在用戶硬盤(pán)的某一目錄下(例如c:\wrshdnt)。在安裝過(guò)程中可以選擇每次啟動(dòng)Windows時(shí)即啟動(dòng)rshd服務(wù)。實(shí)際上用戶隨時(shí)可以通過(guò)“開(kāi)始—程序—WINSOCKRSHD-NT”來(lái)啟動(dòng)或停止rshd服務(wù)。
4PVM并行計(jì)算環(huán)境的建立
(1)啟動(dòng)所有機(jī)器上的rshd服務(wù)。
(2)在開(kāi)始——程序——PVM3.4中,點(diǎn)擊PVMConsole圖標(biāo),將打開(kāi)PVM控制臺(tái),并啟動(dòng)pvmd后臺(tái)伺服程序,以上工作完成后會(huì)出現(xiàn)以下提示符:
pvm>
注意,如果點(diǎn)擊PVMConsole時(shí),出現(xiàn)不能啟動(dòng)pvmd的錯(cuò)誤信息時(shí),只需將PVM_TMP目錄下的pvml.<uid>和pvmd.<uid>(<uid>代表本機(jī)登錄用戶名)兩文件刪除,然后進(jìn)行步驟(2),即可順利啟動(dòng),因?yàn)榇藘晌募涗浬洗蜳VM運(yùn)行過(guò)程中的錯(cuò)誤信息,如果上次PVM運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,那么將影響本次PVM的啟動(dòng)(程序不會(huì)把這些文件自動(dòng)清空,所以只有手動(dòng)清空或刪除了)。
(3)在PVM控制臺(tái)用add命令添加節(jié)點(diǎn)機(jī)。我們條件有限,只有三臺(tái)機(jī)器(都為WIN32機(jī)器,操作系統(tǒng):winxpsp2)。命令格式如下:
pvm>add“主機(jī)名dx=c:\pvm3.4\lib\win32\pvmd3.exelo=登錄名so=口令”
由以上命令格式可以看出,除了主機(jī)名外,我們還必須指定此主機(jī)的守護(hù)進(jìn)程pvmd3.exe所在的位置(我們安裝在c:\pvm3.4\lib\win32目錄下);而且如果使用不同的登錄名添加時(shí),還必須輸入登錄名和口令。
5PVM無(wú)法正常啟動(dòng)或節(jié)點(diǎn)機(jī)無(wú)法添加的原因分析
(1)PVM的臨時(shí)工作目錄是否已建立,該目錄的位置與安裝PVM時(shí)的設(shè)置一致。
(2)網(wǎng)絡(luò)是否通暢,可以用rsh命令來(lái)測(cè)試一下。例如c:\rsh主機(jī)名dirc:\(列出指定遠(yuǎn)程主機(jī)上的C盤(pán)根目錄)。
(3)所要添加的節(jié)點(diǎn)機(jī)上的rshd服務(wù)是否已啟動(dòng)。PVM控制臺(tái)是一個(gè)標(biāo)準(zhǔn)的、交互式PVM進(jìn)程,類(lèi)似于外殼(shell),用戶通過(guò)鍵入命令來(lái)管理虛擬機(jī)、調(diào)用PVM應(yīng)用作業(yè)以及監(jiān)控作業(yè)的執(zhí)行。表1列出了常用的一些PVM控制臺(tái)命令,關(guān)于其它命令的說(shuō)明和使用方法,在此不作說(shuō)明。經(jīng)過(guò)以上六個(gè)步驟,pvm的安裝和配置就基本完成。環(huán)境配置好后,下一步工作就是編寫(xiě)程序,使之運(yùn)行于pvm環(huán)境中了。
6PVM的編程模式
使用PVM進(jìn)行程序設(shè)計(jì)的一般方法為:用C、C++或Fortran語(yǔ)言編寫(xiě)一個(gè)或多個(gè)含有對(duì)PVM庫(kù)嵌入式調(diào)用的順序程序,每個(gè)程序?qū)?yīng)于一個(gè)構(gòu)成該應(yīng)用的任務(wù)。PVM應(yīng)用程序常采用“群型”計(jì)算模式,這種模式從程序的結(jié)構(gòu)上又可分為兩種,即主從模式和對(duì)等模式。主從模式又稱(chēng)為\Masher/slave模式。在這種模式的應(yīng)用程序中,單獨(dú)執(zhí)行控制程序的一個(gè)進(jìn)程稱(chēng)為主進(jìn)程(master)。負(fù)責(zé)生成其它進(jìn)程,初始化,收集并顯示結(jié)果等。執(zhí)行從程序的若干進(jìn)程稱(chēng)為從進(jìn)程(slave),由主進(jìn)程生成,做實(shí)際的計(jì)算,它們的工作負(fù)載由主進(jìn)程分配或由從進(jìn)程本身分配。對(duì)等模式又稱(chēng)為SPMD模式。在這種模式的應(yīng)用程序中,所有進(jìn)程都執(zhí)行同一個(gè)程序,但計(jì)算的數(shù)據(jù)不同。其中,有一個(gè)進(jìn)程在完成自己的計(jì)算任務(wù)的同時(shí)還負(fù)責(zé)非計(jì)算的功能,比如初始化,收集并顯示結(jié)果等,具體選用哪種模式應(yīng)視具體應(yīng)用而定。
6.1Master/Slave并行程序的基本框架
MasterPSlave并行編程模式中,Master主進(jìn)程產(chǎn)生n個(gè)工作進(jìn)程,其中第一個(gè)工作進(jìn)程在指定的結(jié)點(diǎn)機(jī)上運(yùn)行,其余的由PVM選擇合適的結(jié)點(diǎn)機(jī)上運(yùn)行,在這些結(jié)點(diǎn)機(jī)上運(yùn)行的都是Slave從進(jìn)程。Master主進(jìn)程是應(yīng)用程序的控制進(jìn)程,負(fù)責(zé)進(jìn)程的生成、初始化、收集數(shù)據(jù)并顯示計(jì)算結(jié)果,其余的Slave從進(jìn)程執(zhí)行實(shí)際計(jì)算工作。在執(zhí)行Master主進(jìn)程的結(jié)點(diǎn)機(jī)處于等待狀態(tài)時(shí),PVM會(huì)自動(dòng)執(zhí)行Slave進(jìn)程使該結(jié)點(diǎn)機(jī)也參加實(shí)際的計(jì)算工作。因此,需要編寫(xiě)2個(gè)程序,即Master進(jìn)程和Slave進(jìn)程。
Master:
Pvm_mytid();/進(jìn)入PVM,獲得主進(jìn)程的tid/
Pvm_spawn();/生成n個(gè)從進(jìn)程/
初始化;向各個(gè)從進(jìn)程發(fā)送消息
for所有結(jié)點(diǎn)機(jī)
{
pvm_initsend();/創(chuàng)建新的活動(dòng)發(fā)送緩沖區(qū)/
pvm_pk();/數(shù)據(jù)打包/
}
endfor
pvm_barrier()/等待各個(gè)從進(jìn)程發(fā)送消息/
for所有結(jié)點(diǎn)機(jī)
{
pvm_recv();/接收從進(jìn)程發(fā)送的消息/
pvm_upk();/數(shù)據(jù)解包/
}
endfor
顯示最終結(jié)果
Pvm_exit();/離開(kāi)PVM/
Slave進(jìn)程:
Pvm_mytid();/進(jìn)入PVM,獲得從進(jìn)程的tid/
等待主進(jìn)程發(fā)送消息
pvm_parent();/獲得主程序的tid/
pvm_recv();/接收主進(jìn)程發(fā)送的消息/
pvm_upk();/數(shù)據(jù)解包/
計(jì)算;等待主進(jìn)程接收消息
pvm_initsend();/創(chuàng)建新的活動(dòng)發(fā)送緩沖區(qū)/
pvm_pk();/數(shù)據(jù)打包/
向主進(jìn)程發(fā)送消息
Pvm_send();
Pvm_exit();/離開(kāi)PVM/
6.2SPMD并行程序的基本框架
SPMD模式的并行應(yīng)用程序采用任務(wù)組機(jī)制。第一個(gè)啟動(dòng)的應(yīng)用程序拷貝負(fù)責(zé)創(chuàng)建任務(wù)組且獲得成員號(hào)0,同時(shí)還負(fù)責(zé)啟動(dòng)其它應(yīng)用程序拷貝并完成一些非計(jì)算任務(wù):如初始化、歸約運(yùn)算結(jié)果等。下面是典型SPMD并行應(yīng)用程序的基本框架。
begin
pvm-joingroup(groupname);/如果任務(wù)組不存在則創(chuàng)建該組,否則加入該組/
pvm-parent();/獲得父進(jìn)程的tid/
if組成員號(hào)=0then
pvm-spawn();/啟動(dòng)其它應(yīng)用程序拷貝/
一些非計(jì)算任務(wù),如輸入,初始化等;
endif
for所有進(jìn)程pardo
在各自的數(shù)據(jù)區(qū)進(jìn)行計(jì)算;
endfor
if組成員號(hào)=0then
歸約各進(jìn)程的運(yùn)算結(jié)果并輸出;
endif
pvm-barrier();/同步所有進(jìn)程/
pvm-lvgroup()/離開(kāi)任務(wù)組/
pvm-exit();/退出PVM3/
end
7結(jié)論
總的來(lái)說(shuō),基于WindowsXP的PVM環(huán)境提供了可靠的并行計(jì)算環(huán)境,針對(duì)目前Windows比較流行的狀況,它為我們提供了一個(gè)很好的利用機(jī)群實(shí)現(xiàn)并行處理的方案。另外,也使我們有可能在一臺(tái)機(jī)器上運(yùn)行多個(gè)相互通信的進(jìn)程。利用Windows系統(tǒng)上的豐富的資源,我們還可以開(kāi)發(fā)出更強(qiáng)大、更實(shí)用的PVM應(yīng)用程序。
參考文獻(xiàn)
[1]黃鎧,徐志偉著,陸鑫達(dá)等譯.可擴(kuò)展并行計(jì)算技術(shù).結(jié)構(gòu)與編程.北京:機(jī)械工業(yè)出版社,2000,450—455
[2]陳國(guó)良著.并行計(jì)算—結(jié)構(gòu)、算法、編程.北京:高等教育出版社,1999348-352
[3]PVM3FORWIN32http:///pvm3/win32/
[4]Winsockrshd/nthttp:///homepages/denicomp
[5]http:///gr/xjw/it/itdict/l-r/detaill~r/pvmprogamming.html