Windows P的PVM的實現論文

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

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

Windows P的PVM的實現論文

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

關鍵詞并行虛擬機;并行程序設計環境;安裝;配置;編程

1引言

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

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

2PVM的組成

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

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

系統的第二部分是一個PVM接口例行程序庫libpvm3.a。它包含各種功能完備的原語,這些原語主要用于協調應用任務。該程序庫包括那些用于消息傳遞、創建進程、協調任務以及修改虛擬機等用戶可調用例行程序。PVM可在體系結構互不兼容的計算機網絡上透明地處理所有消息路徑選擇、數據轉換及任務調度等。PVM計算模型是基于由若干個任務組成的應用,所有任務通過這個標準接口例行程序庫來訪問PVM資源。此系統當前支持C、C++和Fortran語言。

系統的第三部分是PVM控制臺進程,相當于“并行虛擬機”的操作平臺,可以交互式地與用戶工作。用戶在此可以增加、刪除節點機以及執行一些其它的控制命令,如啟動、終止一個PVM任務、顯示某任務的狀態等。

3WindowsXP下PVM的安裝與配置

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

3.1所需的軟件

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

3.2所需的文件系統

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

3.3安裝步驟

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

(2)接著需要指定PVM的安裝目錄(c:\pvm3.4和臨時目錄c:\temp,如果沒有得自己提前新建),則安裝程序會自動設置環境變量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)安裝過程中還必須指定系統所用的C或Fortran編譯器(筆者機器安裝了C++6.0,沒有安裝Fortran編譯器,讀者可以跳過)。指定后安裝程序會自動搜索編譯器所在目錄并顯示出來。

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

(5)WinsockRSHD/NT的安裝。

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

4PVM并行計算環境的建立

(1)啟動所有機器上的rshd服務。

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

pvm>

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

(3)在PVM控制臺用add命令添加節點機。我們條件有限,只有三臺機器(都為WIN32機器,操作系統:winxpsp2)。命令格式如下:

pvm>add“主機名dx=c:\pvm3.4\lib\win32\pvmd3.exelo=登錄名so=口令”

由以上命令格式可以看出,除了主機名外,我們還必須指定此主機的守護進程pvmd3.exe所在的位置(我們安裝在c:\pvm3.4\lib\win32目錄下);而且如果使用不同的登錄名添加時,還必須輸入登錄名和口令。

5PVM無法正常啟動或節點機無法添加的原因分析

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

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

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

6PVM的編程模式

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

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

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

Master:

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

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

初始化;向各個從進程發送消息

for所有結點機

{

pvm_initsend();/創建新的活動發送緩沖區/

pvm_pk();/數據打包/

}

endfor

pvm_barrier()/等待各個從進程發送消息/

for所有結點機

{

pvm_recv();/接收從進程發送的消息/

pvm_upk();/數據解包/

}

endfor

顯示最終結果

Pvm_exit();/離開PVM/

Slave進程:

Pvm_mytid();/進入PVM,獲得從進程的tid/

等待主進程發送消息

pvm_parent();/獲得主程序的tid/

pvm_recv();/接收主進程發送的消息/

pvm_upk();/數據解包/

計算;等待主進程接收消息

pvm_initsend();/創建新的活動發送緩沖區/

pvm_pk();/數據打包/

向主進程發送消息

Pvm_send();

Pvm_exit();/離開PVM/

6.2SPMD并行程序的基本框架

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

begin

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

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

if組成員號=0then

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

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

endif

for所有進程pardo

在各自的數據區進行計算;

endfor

if組成員號=0then

歸約各進程的運算結果并輸出;

endif

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

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

pvm-exit();/退出PVM3/

end

7結論

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

參考文獻

[1]黃鎧,徐志偉著,陸鑫達等譯.可擴展并行計算技術.結構與編程.北京:機械工業出版社,2000,450—455

[2]陳國良著.并行計算—結構、算法、編程.北京:高等教育出版社,1999348-352

[3]PVM3FORWIN32http:///pvm3/win32/

[4]Winsockrshd/nthttp:///homepages/denicomp

[5]http:///gr/xjw/it/itdict/l-r/detaill~r/pvmprogamming.html