基于MATLAB的局域网集群的构建
目前的常用科学计算大多基于Matlab 环境,因此,开发基于Matlab 的并行计算平台也有很大的必要性。在本文的设计中,并行优化平台的运行是在Matlab 环境中进行的,由于Matlab 是一种跨平台软件,因此整个并行计算环境也间接地实现了跨平台,满足了在Windows 平台下并行计算的需要。在平台实现中,如果能有效地利用大粒度分解计算,可以降低程序实现的复杂性。从机群系统的应用要求上来看,也需要大粒度的并行,以减少通讯开销,从而获得更高效率。因此,并行优化计算环境的设计是大粒度的。Parallel Computing Toolbox并行计算功能现已整合到Optimization Toolbox和Genetic Algorithm and Direct Search Toolbox等优化求解器之中,让用户能够在不会对其现有应用造成过多影响的情况下,在多核计算机和计算机集群上更好地解决密集型计算优化问题,以进一步简化并行应用的开发。
实验室内局域网所用机器均采用操作系统为WINDOWS XP SP2,快速以太网网卡10/100Mbps,通过路由器连接,并安装MATLABR2008b及相关工具箱,表3.1和表3.2分别给出了集群相关硬件配置和安装软件
3.2.2软件安装和MDCE配置
安装完毕后在双击主节点机的matlabrootflexlm文件夹下的lmtool.exe(matlabroot表示matlab软件的安装目录,下面不再作说明),开启Matlab License Server。 其他节点机除了无须再安装License Manager外,其他步骤大致与主节点机相同,整个详细安装步骤不再赘述,可参考MATLAB® & Simulink® Release 2008b Installation Guide for Windows®和Installing MATLAB® Distributed Computing Server™ 4.0 on a Windows® Operating System Cluster,如果出现错误,仔细排查并认真查看文档和在线支持。成功在不同机器上安装好 #p#page_title#e#MATLAB相关产品和工具箱并配置分布计算环境是重要的一步也是必不可少的一步,网络机群本身无法进行分布并行计算,并行程序开发和应用很大程度上依赖软件和算法的支持。 MDCE配置 如果存在旧的mdce服务,则要先停止,打开DOS命令窗口,输入cd oldmatlabroot oolboxdistcompinwin32,输入命令mdce uninstall,并删除相应日志和检查文件C:TEMPMDCE,其它机器上如果存在旧的安装同样方法移除。安装并开启新的mdce服务,同样在DOS命令窗口输入cd matlabroot oolboxdistcompinwin32,切换到新的mdce目录,输入命令mdce uninstall即安装mdce服务,mdce start启动服务,其他机子上重复这个过程这样所有机器上都启动了mdce服务,以后每次重启开机都会随系统自动运行。 首先在任一台机器上开启调度管理器(Job Manager),进入DOS命令窗口,用cd 命令切换到matlabroot oolboxdistcompinwin32,启动JobManager语句格式为:startjobmanager –flags ,flags为操作标记,如表3.3所示 如startjobmanager -name MyJobManager 即在本地机器上开启一个名为MyJobManager的作业管理器,startjobmanager -name myjm -remotehost SQY 则是在主机SQY上开启一个名为myjm的作业管理器。这个过程要保证网络畅通互连,并各机器运行mdce服务。在集群上可开启多个Job Manager,但名称要唯一,不能重复。如果要停止一个作业管理器,则用stopjobmanager –flags 格式与上基本相同,不同重述。查看其运行状态可用语句nodestatus -remotehost <job manager hostname>,然后再开启worker,语句格式为start worker –flags ,flags为操作标记,如表3.4所示 如startworker -name worker1 -remotehost bug -jobmanager myjm -jobmanagerhost SQY 即在节点机bug上开启一个名为worker1由主节点机SQY上名为的myjm调度器进行管理,一台机器上可开启多少worker,一个较好的原则是其个数不应超过这台机器处理器内核个数,多了无益,性能也不会有多大提升。如果要停止某一台机子上的worker,则用语句stopworker –flags,flags标记同表3.4。 只要保持各台机器网络互连、解除防火墙相应程序和端口的阻止及mdce服务的正常运行,这些命令可在任一台机器上执行,完成整个的集群配置工作。用nodestatus -flags命令可查看各机器上Job Manager和worker的运行状态。下图3.8所示,在主节点(服务器节点)SQY的主机上有一个名为myjm的作业管理器,管理局域网8个worker,且在主节点机上运行有2个worker。 MATLAB还提供了图形用户界面Admin Center 来管理集群机器,点击MATLAB主菜单“parallel”下的“Admin Center”,即可进入管理中心图形用户界面,可以载入建立好的局域网集群,查看、编辑和添加节点机,如图3.9所示,进行客户端机器、节点机之间的连接、端口及主机名一致性等测试,最后给出测试结果,如图3.10所示。在测试前注意先关闭防火或设置相应的例外程序和端口,不然可能会出现各节点机连接测试失败的情况。 上节已经介绍了软件安装配置的一个过程,总的来说如下图所示: 计算环境搭建好了,下面对各个计算节点作一个简单的测试: 计算平台性能测试是一个重要的环节,通过MATLAB提供类似Linpack的标准测试程序[56](MATLAB Benchmark),包括大型稠密矩陈LU分解、快速傅立叶变换(Fast Fourier transform,FFT)、解范德波尔方程(van der Pol equation)、解对称稀疏线性系统及2D,3D图形显示,表3.6所示。测试程序主要针对特定的MATLAB版本在不同机器的浮点运算性能(Floating-point)、规则和不规则存储、数据结构、整点和浮点混合运算性能等出对比。 #p#page_title#e#后两项图形测试不是本节主要测试内容,为附带测试,对前四项作简要介绍 对上面测试程序在节点机上连续4次运行,在MATLAB命令窗口输入>>t=bench(4),得到如下结果,各程序运行计算以秒(second)记,图3.11 (a),(b)给出了本台机器测试结果与其他不同操作系统和处理器主频下相同MATLAB版本的对比情况,测试结果与操作系统类型,处理器主频,开启的线程数,内存大小等有关,从中可以看出本机的浮点计算,规则及不规则存储等方面的性能,各次测试结果在5%到10%之间浮动是正常的,因为不同时刻的内在和CPU使用率是有所变化的,这里不再给出细致的比较分析 (a)测试程序运行时间对比 (b)测试程序运行相对速度柱状图 图3.11 测试程序运行时间及对比 由于其他两台机器与主节点机配置一样,不再单独测试,下面是前四个测试程序对集群分布式计算进行测试,测试结果如图3.12所示,由于集群各计算中各个时刻CPU、内在使用率和网络通信延迟等因素存在差异,因此在集群计算过程中,要考虑的因素主要有通信技术、负载均衡(指分配到各个处理结点上并行执行的子任务即负载的均衡程度)、并行粒度、安全等
MATLAB产品及工具箱
FLEXnet license manager
计算节点测试
这了更好了体现并行计算的特点,最后运用并行遗传算法对一个计算耗时较长的耗时问题进行了计算结果如下图表所示,这里不作具体分析: