基于Windows XP的PVM的实现

时间:2022-09-02 12:37:04

摘 要 网络并行计算已成为国际上并行环境发展的重要方向,本文介绍了pvm的概念、组成、在windows xp下的安装与配置及在该环境下两种编写程序的方法。 关键词 并行虚拟机;并行程序设计环境;安装;配置;编程 1 引言 近年来,网络并行计算已成为国际上并行环境发展的一个重要方向。首先,网络并行计算环境在硬件和软件方面的成本都比并行计算专用工作站要低廉,更易于建立。其次,网络并行计算系统使用方便,可扩展性强,更灵活。pvm ( parallel virtual machine) 是并行虚拟机的简称,它通过tcp/ ip网络通讯协议将整个网络的多台计算机虚拟成一台并行机使用,是目前国内外比较流行的并行计算环境之一。 pvm需要一个多任务的操作系统平台,以便生成多个pvm进程,实现其虚拟并行机的功能。以前多任务的操作系统平台都是基于unix或liunx的,但由于windows xp亦是32位的多任务操作系统且基于windows的pc机在数量上远远超过基于unix或liunx 的机器,加之pc机所用cpu速度的迅速升级,由高速网络互连的多台计算机可形成强大的计算能力。本文介绍了在windows xp环境下pvm的安装,配置与编程。选用的pvm版本为基于windows的pvm3.4.3。 2 pvm的组成 pvm系统由三部分组成。系统的第一部分是一个称为daemon process的守护程序,缩写为pvmd,它驻留在构成虚拟机的所有计算机上。守护程序是在后台执行的一种程序,在需要时随时准备完成一个操作。它通常是在开始时启动的一种无人值守的被挂起的进程,它等待某种事件发生,自动地被激活,执行作业。然后终止或将自身挂起,等待下一事件(邮件程序就是守护程序的一个例子,它在后台运行,处理计算机上的所有输入和输出电子邮件) 。当用户指定了构成并行虚拟机的节点后,启动pvm,就会在相应的节点上各自启动一个pvmd3进程,它们之间互相通信,共同管理各并行任务的执行和通信,从而构成了一个并行虚拟机。并行任务之间的通信实际上是通过各pvmd3进程来实现的,因此每个pvmd3进程都起着不可估量的作用。 由于pvmd3是在后台运行的,因此它对于虚拟机中的机器完成其它工作毫无影响。用户可在任意主机上开始执行pvm应用,多用户可以配置重叠的虚拟机,并且每个用户可以同时执行若干个pvm应用。 系统的第二部分是一个pvm接口例行程序库libpvm3.a。它包含各种功能完备的原语,这些原语主要用于协调应用任务。该程序库包括那些用于消息传递、创建进程、协调任务以及修改虚拟机等用户可调用例行程序。pvm可在体系结构互不兼容的计算机网络上透明地处理所有消息路径选择、数据转换及任务调度等。pvm计算模型是基于由若干个任务组成的应用,所有任务通过这个标准接口例行程序库来访问pvm资源。此系统当前支持c、c+ +和fortran语言。 系统的第三部分是pvm控制台进程,相当于“并行虚拟机”的操作平台,可以交互式地与用户工作。用户在此可以增加、删除节点机以及执行一些其它的控制命令,如启动、终止一个pvm任务、显示某任务的状态等。 3 windows xp下pvm的安装与配置 pvm 安装应该说是比较容易的。pvm3.4.3版本提供了安装软件包,只需按照其向导安装即可成功(对于pvm3.4以前的版本则需要用户添加一些环境变量)。 但是只安装pvm 软件包是不够的,如果要联机计算还需要安装winsock rshd/ nt (在 windowsxp 下)。rsh ( remote shell) 实际上是一个在本地启动远程宿主机上应用程序的一个实用命令,pvm 就是利用初启机上rsh命令来启动远程宿主机上pvmd的。但要使本地rsh命令能正常工作还需得到远程宿主机上的rsh监控进程rshd ( remote shell dae2mon) 的支持。一般来说,rshd是作为windows操作系统的一项服务来使用,如果没有得安装。在pvm下配置虚拟机时必须首先启动每台节点机上的rshd服务,否则rsh命令无法使用,虚拟机的配置当然不会成功。 3.1 所需的软件 我们使用的是denlcomp sysrems公司的rshd/nt软件,读者可以自行在网上下载。rsh已经存在于windows xp的system32文件夹下。 3.2 所需的文件系统 因为我们是将pvm运行在windows下,所以我们使用fat32文件格式,如果运行在windows 2000下,则必须使用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)winsock rshd/nt的安装。 将网上下载的rshdnt_eval.exe自解压软件包安装在用户硬盘的某一目录下(例如c:\wrshdnt)。在安装过程中可以选择每次启动 windows 时即启动rshd服务。实际上用户随时可以通过“开始—程序—winsock rshd-nt”来启动或停止rshd服务。 4 pvm并行计算环境的建立 (1)启动所有机器上的rshd服务。 (2)在开始——程序——pvm3.4中,点击pvm console图标,将打开pvm控制台,并启动pvmd后台伺服程序,以上工作完成后会出现以下提示符: pvm> 注意,如果点击pvm console时,出现不能启动pvmd的错误信息时,只需将pvm_tmp目录下的pvml.<uid>和pvmd.<uid>(<uid>代表本机登录用户名)两文件删除,然后进行步骤(2),即可顺利启动,因为此两文件记录上次pvm运行过程中的错误信息,如果上次pvm运行过程中出现错误,那么将影响本次pvm的启动(程序不会把这些文件自动清空,所以只有手动清空或删除了)。 (3)在pvm控制台用add命令添加节点机。 我们条件有限,只有三台机器(都为win32机器,操作系统:winxp sp2)。命令格式如下: pvm > add“主机名 dx = c:\pvm3.4\lib\win32\pvmd3.exe lo=登录名 so=口令” 由以上命令格式可以看出,除了主机名外,我们还必须指定此主机的守护进程pvmd3.exe所在的位置(我们安装在c:\pvm3.4\lib\win32目录下);而且如果使用不同的登录名添加时,还必须输入登录名和口令。 5 pvm 无法正常启动或节点机无法添加的原因分析 (1)pvm 的临时工作目录是否已建立,该目录的位置与安装 pvm 时的设置一致。 (2)网络是否通畅,可以用rsh命令来测试一下。例如c:\rsh 主机名 dir c:\ ( 列出指定远程主机上的c盘根目录)。

(3)所要添加的节点机上的rshd服务是否已启动。pvm控制台是一个标准的、交互式pvm进程,类似于外壳(shell),用户通过键入命令来管理虚拟机、调用pvm应用作业以及监控作业的执行。表1列出了常用的一些pvm控制台命令,关于其它命令的说明和使用方法,在此不作说明。经过以上六个步骤,pvm的安装和配置就基本完成。环境配置好后,下一步工作就是编写程序,使之运行于pvm环境中了。 表1 主要的pvm控制台命令 pvm>add apple 将主机 “ apple” 加入到虚拟机中 pvm>delete apple 从虚拟机中删除主机 “ apple” pvm>conf 列出虚拟机的配置 pvm>spawn ? count 4 app 在虚拟机上启动 4 个任务运行 “app” pvm>halt 中止所有 pvm 进程,关闭 pvm 6 pvm 的编程模式 使用 pvm 进行程序设计的一般方法为:用c 、c++或fortran语言编写一个或多个含有对 pvm 库嵌入式调用的顺序程序,每个程序对应于一个构成该应用的任务。pvm应用程序常采用“群型”计算模式,这种模式从程序的结构上又可分为两种,即主从模式和对等模式。主从模式又称为\masher/slave模式。在这种模式的应用程序中,单独执行控制程序的一个进程称为主进程(master)。负责生成其它进程,初始化,收集并显示结果等。执行从程序的若干进程称为从进程(slave),由主进程生成,做实际的计算,它们的工作负载由主进程分配或由从进程本身分配。对等模式又称为spmd模式。在这种模式的应用程序中,所有进程都执行同一个程序,但计算的数据不同。其中,有一个进程在完成自己的计算任务的同时还负责非计算的功能,比如初始化,收集并显示结果等,具体选用哪种模式应视具体应用而定。 6.1 ma ster/ 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.2 spmd 并行程序的基本框架 spmd 模式的并行应用程序采用任务组机制。第一个启动的应用程序拷贝负责创建任务组且获得成员号0,同时还负责启动其它应用程序拷贝并完成一些非计算任务:如初始化、归约运算结果等。下面是典型spmd并行应用程序的基本框架。 begin

pvm- joingroup (groupname);/ 如果任务组不存在则创建该组,否则加入该组 /

pvm-parent (); / 获得父进程的 tid / if  组成员号= 0  then

pvm- spawn ();/启动其它应用程序拷贝 /

一些非计算任务,如输入,初始化等;

endif

for 所有进程 pardo

在各自的数据区进行计算;

endfor

if  组成员号 = 0  then

归约各进程的运算结果并输出;

endif

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

pvm- lvgroup () /离开任务组/

pvm- exit ();/退出 pvm 3 / end 7 结论 总的来说,基于windows xp的pvm环境提供了可靠的并行计算环境,针对目前windows比较流行的状况,它为我们提供了一个很好的利用机群实现并行处理的方案。另外,也使我们有可能在一台机器上运行多个相互通信的进程。利用windows系统上的丰富的资源,我们还可以开发出更强大、更实用的pvm应用程序。 参考文献 [1] 黄铠,徐志伟著,陆鑫达等译. 可扩展并行计算技术.结构与编程.北京:机械工业出版社,2000,450—455 [2] 陈国良著.并行计算—结构、算法、编程.北京:高等教育出版社,1999 348-352 [3] pvm3 for win32

上一篇:试论如何在可信网络中保证网络可用的研究 下一篇:利用Delphi开发网络数据库应用