论文部分内容阅读
随着网络技术的发展,高性能工作站的出现,人们对资源共享的要求越来越高。计算机通过连网,使得用户可以进行大范围的信息共享和交换。如果单单把多个计算机用网络连接起来,而不提供软件支撑,是不能构成高性能并行计算系统的,那和普通计算机构成的局域网也没有什么本质上的区别。因此并行程序设计环境的研究是一个非常活跃的研究领域,在国内外都受到广泛的重视。而工作站集群系统是并行处理领域中一个新的技术发展方向,是实现高性能计算系统的一个有效途径。PVM系统是一个通用的并行程序设计系统,它提供了编写并行程序并行程序所需要的报文传递,进程创建,同步等基本功能。而在报文传递的实现上,PVM为了实现可移植性,是采用点对点通信技术来实现组通信的,不仅浪费大量的网络带宽,而且效率很低。目前一种有效利用现有带宽的技术就是组播技术。组播是一种点到多点的通信方式,即多个接收者同时接收一个源发送的相同信息。利用组播技术改进PVM的组通信方式可以提高通信的效率,降低组播通信在网络中所占的带宽,及降低主机、网路的负载,从而有效的提高PVM的性能。本文介绍了PVM的消息机制、基于PVM并行程序的开发方法及基本的计算模型,阐述了并行程序运行的原理,通过分析分布式计算系统中的通信特点,在并行程序运行时存在着大量的组通信,所以提供高效的组通信机制可以有效地提高分布式计算系统的性能,改进PVM的组通信性能有利于提高基于PVM的并行程序运行的性能。因此提高PVM的组通信是非常必要的。为了提高通信的效率,降低组播通信在网络中所占的带宽,及降低主机、网路的负载,可以从两个方面入手解决:一种方法是采用更高性能的计算机网络,例如高性能并行接口(HiPPI)和Myrinet等;另一种方法是根据分布式计算系统中的通信特点开发高效的通信技术减少网络中传递的报文数目。对于前一种方法,在许多情况下并不是一种现实的可行的方法,因为很多情况下用户希望在现有的网络条件下获得高性能计算,人们之所以采用分布式计算系统获得高性能计算,其中一个重要的原因是因为其廉价的特征,采用更高性能的计算机网络甚至是专门设计的专用网络无疑会大大地增加成本。因此我们将采用开发高效的通信技术来提高通信效率。PVM是用单播(Unicast)实现的组通信,发送信息的主机必须向每个希望接收此数据包的用户发送一份单独的数据包拷贝。这样会给发送数据的源主机带来沉重的负担,因为它必须对每个要求都做出响应,<WP=49>这使得负担过于沉重主机的响应会大大延长,效率降低,而且多次发送单播实现组通信占据了通信带宽中的大部分比例。针对单播的这些缺点,提出了组播的概念。组通信对于并行和分布式系统是非常有用的。本论文实现的是利用组播(Multicast)通信实现PVM的组通信,即一到多(One-to-Many)通信。在描述了组播实现组通信的方案后,具体改进了PVM的组通信,一台主机发送报文到一个组播分组,任何感兴趣得主机都会接收此数据报。经改进的PVM任务组地址可以和一个组播地址相对应,所有发送到这个任务组的报文可以组播到对应的机器上,而不会发送到无关的机器上。本文采用分布式管理方式对其中的组成员进行管理,在分布式的管理方式中不存在一个集中的组管理服务员。当一个外部进程打开一个进程组的时候,它需要向组中的所有成员发送一个报文,关闭一个进程组时同样如此。当一个进程要加入一个进程组时,需要向组中的所有成员发送一个加入报文,当离开一个进程组时需要向组中的所有成员发送一个离开报文。具体实现的时候由各个结点机上由pvmd维护着本机的组播任务组表,包含所有运行的全局定义的组播任务组名(mgrouname),及其对应的组播任务组号(mgroupid),同一个任务可以分属于不同的组播组。在组通信中,组是动态的,就是说在系统中可以生成一个新的组,也可以删除一个旧的组。同时,一个任务可以加入到一个组中去pvmmcast_join,或者说从一个组中删除一个任务pvmmcast_leave。一个任务可能同时是多个组的一个成员。改进前后对组成员的管理通过一一映射后实现了功能上的一致性,实现了任务加入和离开组播组。组播组的管理以及进程间的各种通信都是由各主机的一个守护进程pvmd来实现的。守护进程在维护组播组表的过程中实现对表的各种操作,如表的初始化、创建、查找、插入和删除的功能;而进程间的通信分为与本机的进程之间的通信以及与不同节点上的守护进程之间的通信,具体包括对本地进程请求的应答,对异地节点守护进程的广播、接收异地节点守护进程的广播信息等都通过守护进程实现。改进后的PVM组通信性能大大提高,由原来的循环对组里的每个成员依次单播发送数据报的低效、高带宽占用率、高主机负载的组通信方式,改进为组播发送数据报给组播组的高效、低带宽占用率、低主机负载的组通信方式,优化了PVM的性能。用组播实现了PVM的组通信后,本文给出了用户在PVM编写并行程序的改进后的组播接口函数,并分别用改进前后的PVM组通信接口函数编写相同功能的并行程序进行性能测试。结果表明在运行并行程序的时候,与由单播实现的组通信应用相比,使用组播实现的组?