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