Windows P的PVM的實現(xiàn)論文

時間:2022-09-17 05:36:00

導(dǎo)語:Windows P的PVM的實現(xiàn)論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Windows P的PVM的實現(xiàn)論文

摘要網(wǎng)絡(luò)并行計算已成為國際上并行環(huán)境發(fā)展的重要方向,本文介紹了pvm的概念、組成、在WindowsXP下的安裝與配置及在該環(huán)境下兩種編寫程序的方法。

關(guān)鍵詞并行虛擬機(jī);并行程序設(shè)計環(huán)境;安裝;配置;編程

1引言

近年來,網(wǎng)絡(luò)并行計算已成為國際上并行環(huán)境發(fā)展的一個重要方向。首先,網(wǎng)絡(luò)并行計算環(huán)境在硬件和軟件方面的成本都比并行計算專用工作站要低廉,更易于建立。其次,網(wǎng)絡(luò)并行計算系統(tǒng)使用方便,可擴(kuò)展性強(qiáng),更靈活。PVM(ParallelVirtualMachine)是并行虛擬機(jī)的簡稱,它通過TCP/IP網(wǎng)絡(luò)通訊協(xié)議將整個網(wǎng)絡(luò)的多臺計算機(jī)虛擬成一臺并行機(jī)使用,是目前國內(nèi)外比較流行的并行計算環(huán)境之一。

PVM需要一個多任務(wù)的操作系統(tǒng)平臺,以便生成多個PVM進(jìn)程,實現(xiàn)其虛擬并行機(jī)的功能。以前多任務(wù)的操作系統(tǒng)平臺都是基于Unix或Liunx的,但由于WindowsXP亦是32位的多任務(wù)操作系統(tǒng)且基于Windows的PC機(jī)在數(shù)量上遠(yuǎn)遠(yuǎn)超過基于Unix或Liunx的機(jī)器,加之PC機(jī)所用CPU速度的迅速升級,由高速網(wǎng)絡(luò)互連的多臺計算機(jī)可形成強(qiáng)大的計算能力。本文介紹了在WindowsXP環(huán)境下PVM的安裝,配置與編程。選用的PVM版本為基于Windows的PVM3.4.3。

2PVM的組成

PVM系統(tǒng)由三部分組成。系統(tǒng)的第一部分是一個稱為DaemonProcess的守護(hù)程序,縮寫為pvmd,它駐留在構(gòu)成虛擬機(jī)的所有計算機(jī)上。守護(hù)程序是在后臺執(zhí)行的一種程序,在需要時隨時準(zhǔn)備完成一個操作。它通常是在開始時啟動的一種無人值守的被掛起的進(jìn)程,它等待某種事件發(fā)生,自動地被激活,執(zhí)行作業(yè)。然后終止或?qū)⒆陨頀炱?,等待下一事?郵件程序就是守護(hù)程序的一個例子,它在后臺運(yùn)行,處理計算機(jī)上的所有輸入和輸出電子郵件)。當(dāng)用戶指定了構(gòu)成并行虛擬機(jī)的節(jié)點后,啟動PVM,就會在相應(yīng)的節(jié)點上各自啟動一個pvmd3進(jìn)程,它們之間互相通信,共同管理各并行任務(wù)的執(zhí)行和通信,從而構(gòu)成了一個并行虛擬機(jī)。并行任務(wù)之間的通信實際上是通過各pvmd3進(jìn)程來實現(xiàn)的,因此每個pvmd3進(jìn)程都起著不可估量的作用。

由于pvmd3是在后臺運(yùn)行的,因此它對于虛擬機(jī)中的機(jī)器完成其它工作毫無影響。用戶可在任意主機(jī)上開始執(zhí)行PVM應(yīng)用,多用戶可以配置重疊的虛擬機(jī),并且每個用戶可以同時執(zhí)行若干個PVM應(yīng)用。

系統(tǒng)的第二部分是一個PVM接口例行程序庫libpvm3.a。它包含各種功能完備的原語,這些原語主要用于協(xié)調(diào)應(yīng)用任務(wù)。該程序庫包括那些用于消息傳遞、創(chuàng)建進(jìn)程、協(xié)調(diào)任務(wù)以及修改虛擬機(jī)等用戶可調(diào)用例行程序。PVM可在體系結(jié)構(gòu)互不兼容的計算機(jī)網(wǎng)絡(luò)上透明地處理所有消息路徑選擇、數(shù)據(jù)轉(zhuǎn)換及任務(wù)調(diào)度等。PVM計算模型是基于由若干個任務(wù)組成的應(yīng)用,所有任務(wù)通過這個標(biāo)準(zhǔn)接口例行程序庫來訪問PVM資源。此系統(tǒng)當(dāng)前支持C、C++和Fortran語言。

系統(tǒng)的第三部分是PVM控制臺進(jìn)程,相當(dāng)于“并行虛擬機(jī)”的操作平臺,可以交互式地與用戶工作。用戶在此可以增加、刪除節(jié)點機(jī)以及執(zhí)行一些其它的控制命令,如啟動、終止一個PVM任務(wù)、顯示某任務(wù)的狀態(tài)等。

3WindowsXP下PVM的安裝與配置

PVM安裝應(yīng)該說是比較容易的。PVM3.4.3版本提供了安裝軟件包,只需按照其向?qū)О惭b即可成功(對于PVM3.4以前的版本則需要用戶添加一些環(huán)境變量)。但是只安裝PVM軟件包是不夠的,如果要聯(lián)機(jī)計算還需要安裝winsockrshd/NT(在WindowsXP下)。rsh(remoteshell)實際上是一個在本地啟動遠(yuǎn)程宿主機(jī)上應(yīng)用程序的一個實用命令,PVM就是利用初啟機(jī)上rsh命令來啟動遠(yuǎn)程宿主機(jī)上pvmd的。但要使本地rsh命令能正常工作還需得到遠(yuǎn)程宿主機(jī)上的rsh監(jiān)控進(jìn)程rshd(remoteshelldae2mon)的支持。一般來說,rshd是作為Windows操作系統(tǒng)的一項服務(wù)來使用,如果沒有得安裝。在PVM下配置虛擬機(jī)時必須首先啟動每臺節(jié)點機(jī)上的rshd服務(wù),否則rsh命令無法使用,虛擬機(jī)的配置當(dāng)然不會成功。

3.1所需的軟件

我們使用的是DenlcompSysrems公司的RSHD/NT軟件,讀者可以自行在網(wǎng)上下載。Rsh已經(jīng)存在于WindowsXp的system32文件夾下。

3.2所需的文件系統(tǒng)

因為我們是將PVM運(yùn)行在Windows下,所以我們使用FAT32文件格式,如果運(yùn)行在Windows2000下,則必須使用NTFS格式,否則PVM會報錯。

3.3安裝步驟

(1)點擊圖標(biāo)進(jìn)行安裝,安裝時指定Sever版還是Client版,如果用于希望本地安裝,就選擇Sever版,如果已存在PVM服務(wù)器,可選擇遠(yuǎn)程client安裝模式(不推薦使用)。

(2)接著需要指定PVM的安裝目錄(c:\pvm3.4和臨時目錄c:\temp,如果沒有得自己提前新建),則安裝程序會自動設(shè)置環(huán)境變量PVM_ROOT為c:\pvm3.4,PVM_TMP為c:\temp,PVM_ARCH為WIN32。其中PVM_TM:它定義臨時文件的位置(PVM_TM=c:\temp);PVM_ROOT:指定PVM的安裝(PVM_ROOT=c:\pvm3.4)。

(3)安裝過程中還必須指定系統(tǒng)所用的C或Fortran編譯器(筆者機(jī)器安裝了C++6.0,沒有安裝Fortran編譯器,讀者可以跳過)。指定后安裝程序會自動搜索編譯器所在目錄并顯示出來。

(4)安裝完成重啟計算機(jī),則PVM安裝完畢。

(5)WinsockRSHD/NT的安裝。

將網(wǎng)上下載的rshdnt_eval.exe自解壓軟件包安裝在用戶硬盤的某一目錄下(例如c:\wrshdnt)。在安裝過程中可以選擇每次啟動Windows時即啟動rshd服務(wù)。實際上用戶隨時可以通過“開始—程序—WINSOCKRSHD-NT”來啟動或停止rshd服務(wù)。

4PVM并行計算環(huán)境的建立

(1)啟動所有機(jī)器上的rshd服務(wù)。

(2)在開始——程序——PVM3.4中,點擊PVMConsole圖標(biāo),將打開PVM控制臺,并啟動pvmd后臺伺服程序,以上工作完成后會出現(xiàn)以下提示符:

pvm>

注意,如果點擊PVMConsole時,出現(xiàn)不能啟動pvmd的錯誤信息時,只需將PVM_TMP目錄下的pvml.<uid>和pvmd.<uid>(<uid>代表本機(jī)登錄用戶名)兩文件刪除,然后進(jìn)行步驟(2),即可順利啟動,因為此兩文件記錄上次PVM運(yùn)行過程中的錯誤信息,如果上次PVM運(yùn)行過程中出現(xiàn)錯誤,那么將影響本次PVM的啟動(程序不會把這些文件自動清空,所以只有手動清空或刪除了)。

(3)在PVM控制臺用add命令添加節(jié)點機(jī)。我們條件有限,只有三臺機(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目錄下);而且如果使用不同的登錄名添加時,還必須輸入登錄名和口令。

5PVM無法正常啟動或節(jié)點機(jī)無法添加的原因分析

(1)PVM的臨時工作目錄是否已建立,該目錄的位置與安裝PVM時的設(shè)置一致。

(2)網(wǎng)絡(luò)是否通暢,可以用rsh命令來測試一下。例如c:\rsh主機(jī)名dirc:\(列出指定遠(yuǎn)程主機(jī)上的C盤根目錄)。

(3)所要添加的節(jié)點機(jī)上的rshd服務(wù)是否已啟動。PVM控制臺是一個標(biāo)準(zhǔn)的、交互式PVM進(jìn)程,類似于外殼(shell),用戶通過鍵入命令來管理虛擬機(jī)、調(diào)用PVM應(yīng)用作業(yè)以及監(jiān)控作業(yè)的執(zhí)行。表1列出了常用的一些PVM控制臺命令,關(guān)于其它命令的說明和使用方法,在此不作說明。經(jīng)過以上六個步驟,pvm的安裝和配置就基本完成。環(huán)境配置好后,下一步工作就是編寫程序,使之運(yùn)行于pvm環(huán)境中了。

6PVM的編程模式

使用PVM進(jìn)行程序設(shè)計的一般方法為:用C、C++或Fortran語言編寫一個或多個含有對PVM庫嵌入式調(diào)用的順序程序,每個程序?qū)?yīng)于一個構(gòu)成該應(yīng)用的任務(wù)。PVM應(yīng)用程序常采用“群型”計算模式,這種模式從程序的結(jié)構(gòu)上又可分為兩種,即主從模式和對等模式。主從模式又稱為\Masher/slave模式。在這種模式的應(yīng)用程序中,單獨(dú)執(zhí)行控制程序的一個進(jìn)程稱為主進(jìn)程(master)。負(fù)責(zé)生成其它進(jìn)程,初始化,收集并顯示結(jié)果等。執(zhí)行從程序的若干進(jìn)程稱為從進(jìn)程(slave),由主進(jìn)程生成,做實際的計算,它們的工作負(fù)載由主進(jìn)程分配或由從進(jìn)程本身分配。對等模式又稱為SPMD模式。在這種模式的應(yīng)用程序中,所有進(jìn)程都執(zhí)行同一個程序,但計算的數(shù)據(jù)不同。其中,有一個進(jìn)程在完成自己的計算任務(wù)的同時還負(fù)責(zé)非計算的功能,比如初始化,收集并顯示結(jié)果等,具體選用哪種模式應(yīng)視具體應(yīng)用而定。

6.1Master/Slave并行程序的基本框架

MasterPSlave并行編程模式中,Master主進(jìn)程產(chǎn)生n個工作進(jìn)程,其中第一個工作進(jìn)程在指定的結(jié)點機(jī)上運(yùn)行,其余的由PVM選擇合適的結(jié)點機(jī)上運(yùn)行,在這些結(jié)點機(jī)上運(yùn)行的都是Slave從進(jìn)程。Master主進(jìn)程是應(yīng)用程序的控制進(jìn)程,負(fù)責(zé)進(jìn)程的生成、初始化、收集數(shù)據(jù)并顯示計算結(jié)果,其余的Slave從進(jìn)程執(zhí)行實際計算工作。在執(zhí)行Master主進(jìn)程的結(jié)點機(jī)處于等待狀態(tài)時,PVM會自動執(zhí)行Slave進(jìn)程使該結(jié)點機(jī)也參加實際的計算工作。因此,需要編寫2個程序,即Master進(jìn)程和Slave進(jìn)程。

Master:

Pvm_mytid();/進(jìn)入PVM,獲得主進(jìn)程的tid/

Pvm_spawn();/生成n個從進(jìn)程/

初始化;向各個從進(jìn)程發(fā)送消息

for所有結(jié)點機(jī)

{

pvm_initsend();/創(chuàng)建新的活動發(fā)送緩沖區(qū)/

pvm_pk();/數(shù)據(jù)打包/

}

endfor

pvm_barrier()/等待各個從進(jìn)程發(fā)送消息/

for所有結(jié)點機(jī)

{

pvm_recv();/接收從進(jìn)程發(fā)送的消息/

pvm_upk();/數(shù)據(jù)解包/

}

endfor

顯示最終結(jié)果

Pvm_exit();/離開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ìn)程接收消息

pvm_initsend();/創(chuàng)建新的活動發(fā)送緩沖區(qū)/

pvm_pk();/數(shù)據(jù)打包/

向主進(jìn)程發(fā)送消息

Pvm_send();

Pvm_exit();/離開PVM/

6.2SPMD并行程序的基本框架

SPMD模式的并行應(yīng)用程序采用任務(wù)組機(jī)制。第一個啟動的應(yīng)用程序拷貝負(fù)責(zé)創(chuàng)建任務(wù)組且獲得成員號0,同時還負(fù)責(zé)啟動其它應(yīng)用程序拷貝并完成一些非計算任務(wù):如初始化、歸約運(yùn)算結(jié)果等。下面是典型SPMD并行應(yīng)用程序的基本框架。

begin

pvm-joingroup(groupname);/如果任務(wù)組不存在則創(chuàng)建該組,否則加入該組/

pvm-parent();/獲得父進(jìn)程的tid/

if組成員號=0then

pvm-spawn();/啟動其它應(yīng)用程序拷貝/

一些非計算任務(wù),如輸入,初始化等;

endif

for所有進(jìn)程pardo

在各自的數(shù)據(jù)區(qū)進(jìn)行計算;

endfor

if組成員號=0then

歸約各進(jìn)程的運(yùn)算結(jié)果并輸出;

endif

pvm-barrier();/同步所有進(jìn)程/

pvm-lvgroup()/離開任務(wù)組/

pvm-exit();/退出PVM3/

end

7結(jié)論

總的來說,基于WindowsXP的PVM環(huán)境提供了可靠的并行計算環(huán)境,針對目前Windows比較流行的狀況,它為我們提供了一個很好的利用機(jī)群實現(xiàn)并行處理的方案。另外,也使我們有可能在一臺機(jī)器上運(yùn)行多個相互通信的進(jìn)程。利用Windows系統(tǒng)上的豐富的資源,我們還可以開發(fā)出更強(qiáng)大、更實用的PVM應(yīng)用程序。

參考文獻(xiàn)

[1]黃鎧,徐志偉著,陸鑫達(dá)等譯.可擴(kuò)展并行計算技術(shù).結(jié)構(gòu)與編程.北京:機(jī)械工業(yè)出版社,2000,450—455

[2]陳國良著.并行計算—結(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