Computer Science and Application
Vol.3 No.6(2013), Article ID:12349,4 pages DOI:10.12677/CSA.2013.36047
The Remote Call and Parallel Processing of Matlab Based on JSP*
School of Electronic Engineering, Beijing University of Posts and Telecommunications, Beijing
Email: zuyx@bupt.edu.cn
Received: Jun. 17th, 2013 revised: Jul. 4th, 2013; accepted: Jul. 28th, 2013
Copyright © 2013 Jiaqing Sun et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
ABSTRACT:
As one of the development directions of the Internet in the future, migrating a variety of services, software, operating system to the Web has been recognized by most people in the field. This paper developed a set of system in which the JSP Web site works together with Matlab, so that users can call the communication networks simulation platform by logging onto the site. In the system, the channel parameters are input at the front page, the simulation program is called, and the results are feedback to the user through the Web pages. Taking account of the large calculation of the simulation platform, the Matlab Parallel Computing Toolbox is used to achieve parallel computing and added to the system. The validity and advantages of parallel computing are verified by example.
Keywords: JSP; Matlab; Remote Calling; Parallel Computing
基于JSP的Matlab远程调用和并行处理*
孙佳庆,俎云霄*,李巍海,李 喆,李志先
北京邮电大学电子工程学院,北京
Email: zuyx@bupt.edu.cn
摘 要:
将各种服务、软件、甚至是操作系统移植到Web上,作为互联网未来的一个发展方向,已经被很多业内人士所认同。本文设计了一套JSP网站与Matlab协同工作的系统,使用户可以通过登录网站调用通信网络仿真平台,通过前端网页输入信道参数,调用仿真程序,并通过页面将结果反馈给用户。由于仿真平台的计算量非常大,因此利用Matlab并行计算工具箱实现并行计算功能,并加入到系统中。通过程序实例验证了并行计算的正确性及优势。
收稿日期:2013年6月17日;修回日期:2013年7月4日;录用日期:2013年7月28日
关键词:JSP;Matlab;远程调用;并行计算
1. 引言
随着信息高速公路的日益扩展,互联网技术突飞猛进的发展,网站功能的日趋多样化,人们已经不满足于仅仅从互联网上获得信息和咨询,而希望将各种软件能够实现的功能移植到互联网上,例如,已经实现的在线翻译、网页版PS等等。因此,科技工作者开始研究直接将操作系统搬到Web平台上,例如气象观测的网页发布和可视化、宿舍管理、词语翻译等[1-3],并且已经取得重大进展。在当今的信息化社会,方便与快捷才能赢得主动权,而在线仿真平台的推广无疑将会使平台技术获得进一步推广,适应网络技术发展的潮流,这一趋势已不可避免。
基于Matlab的大型通信系统仿真平台具有强大的通信仿真功能,可以完成链路级乃至系统级的信道仿真。用户输入信道参数,系统经过复杂的运算便可以得到反应信道性能和质量的若干张仿真图纸。Matlab平台上可以实施并行计算,利用多台处理器并行处理任务,提高效率,缩短时间。如果能将结合了并行计算功能的仿真平台移植到互联网平台上,使用户可以通过登录网站使用仿真平台的功能,将会大大方便用户的使用,既可避免下载、安装等诸多麻烦,也可避免用户自己的服务器不能承载运算压力的风险,可谓一举多得。本文就针对这一问题进行研究,通过远程操作实现在线仿真技术,客户端用户只需要输入相应的参数,提交仿真,即可获得仿真结果。
2. Web远程调用Matlab
Web服务是松散耦合、可复用的软件模块。从语义上看,它封装了离散的功能,在Internet上发布后,能够通过标准的Internet协议在程序中访问。典型情况下,Web服务体现为一些包装在Internet通信协议之中,可以在Internet之中组装和运行的软件部件。网络上的其它应用程序可以访问并使用它们,集成功能更强大的应用程序[4,5]。
JSP是一种动态网页编程技术标准,它能以最经济的开销维护和支持扩充一个网络服务器,为企业领域提供独立的平台,任何厂商都可以在自己的系统上实现JSP。其网页生成过程为:在传统的网页HTML文件中加入Java程序片段和JSP标记就构成了JSP网页。Java Servlet是一种Web应用开发的理想构架[6]。
2.1. Web服务的实现模型
Web服务主要建立在三个角色的交互上,他们是服务提供者、服务注册中心、服务申请者,这三个角色需要执行三类基本操作:发布、查找、绑定。这些角色和操作都围绕Web服务的两个构建——Web服务软件模块及描述展开。
Web服务最典型的实现模型是服务提供者拥有一个可以通过网络访问的软件模块,它为这个Web服务定义服务说明,并把它发布给服务的请求者或服务的注册处,服务的申请者使用查找操作从本地或服务的注册处得到服务说明,并使用服务说明中的信息与服务的提供者实现绑定,然后与Web服务交互,调用其中的操作。服务的提供者和服务的申请者是Web服务的逻辑基础。一个Web服务既可以是提供者又可以是申请者。图1显示了这些操作模块及它们之间的交互。
2.2. JSP网站与Matlab之间的交互机制
JSP技术使用Java编程语言编写类XML的TAGS和Scriptlets,封装产生动态网页的处理逻辑。Java Servlet是JSP的技术基础,大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。当Web服务器上的一个JSP页面第一次被请求执行时,JSP引擎先将JSP页面文件转译成一个Java文件,即Servlet。Java Servlet是基于服务器端编程的API,用Java Servlet编写的Java程序称为Servlet,Servlet通过HTML与客户交互。服务器将前面转译成的Java文件编译成字节码文件,再执行这个字节码文件来响应客户的请求。当这个JSP页面再次被请求时,将直接执行编译生成的字节码文件来响应,从而加快执行的速度。
利用JSP进行与Matlab的交互机制如下:
首先正确安装Web服务器、JSP服务器和Matlab运行服务器,然后把共享库JmatLink和Java类JmatLink.class放在相应的目录下。根据操作系统和JSP服务器的不同,这个目录可能会有一定的不同。通常,共享库应该放在系统目录下或JRE的BIN目录下,JmatLink.class放在JSP服务器的类目录下,其中要包含通过查询数据库或其他方式得到的数组,存储待可视化的数据。在engine.EngEvaiString(" ")的引号里写入Matlab命令,对数据进行处理,就像在Matlab窗口中一样。也可以把已有的数据可视化程序直接写到这里。
Figure 1. The model of web service
图1. Web服务实现模型
其次,用户通过浏览器提交查询数据库并把查询结果可视化,JSP向数据库提交查询,并把返回的结果赋值给一个数组变量,然后使用engPutVariabie()函数把数组发送到Matlab Runtime Server。Matlab Runtime Server根据JSP的后续指令,对数组进行预处理,最终绘制图形,并把图形保存在硬盘上。
最后,JSP输出含有指向该图片文件超链接的动态网页,Web Server把该网页连同图形文件一起传送到用户浏览器,使用对象中相应的方法。
2.3. 远程调用Matlab引擎
Matlab引擎是Matlab提供的一系列程序的集合,它允许用户在自己的应用程序中对Matlab进行调用,将Matlab作为一个操作引擎使用,使其在后台运行。一般Matlab引擎采用客户机/服务器计算方式。通过Matlab引擎,用户可以将Matlab作为一个功能强大、可编程的数学函数库,调用Matlab中大量的数学计算函数,完成复杂的计算任务;可以为一个特定的任务构建一个完整的系统,前台的用户界面用高级语言编写,后台的计算任务由Matlab引擎来完成;用户不但可以在本地计算机上调用Matlab引擎,而且还可以通过网络调用远程计算机上的Matlab引擎,这样可以很好地实现资源的共享和作业的分工合作[7,8]。
针对本文的研究工作,需要访问网站并调用一个大型的通信系统,网站系统和仿真系统保持一定的相对独立性可以提高各自的工作效率,所以选择使用网页功能调用Matlab引擎的方式来实现远程调用仿真平台的目的。
仿真平台的工作主要分两步:1) 获得仿真平台参数;2) 获得开始仿真的命令,其中包括选择并行配置。利用网页输入框获取参数,然后将参数保存到文件中,由Matlab读取文件。将启动仿真平台的一系列动作录制为一个脚本,由网页启动脚本,进而调用仿真平台,这样就可以在保持两者相对独立性的前提下使二者协同工作,并且都保持较高效率。这样做的另一个好处是便于修改和调试。因为二者只是通过文档和脚本简单的相连,所以,如果网站系统或者仿真平台的某些功能需要改进或者出现问题,我们可以分别对其进行修改和调试,而其他部分不需要为了适应这些修改和调试进行大规模改动,避免了“牵一发而动全身”的麻烦。
仿真完成后,会生成若干幅仿真图片,将图片保存起来,由JSP文件读取并显示图片,而不是由Matlab直接将图片信息发送给网站。这样可以保持二者的相对独立性,提高工作效率,为系统的开发维护人员降低工作成本。
3. Matlab并行计算
利用Parallel Computing Toolbox (并行计算工具箱),可在多核和多处理器计算机上使用Matlab和Simulink来解决计算问题和数据密集型问题。并行处理结构包括并行for循环和代码块、分布式数组、并行数值算法,以及消息传递函数等,可以以较高的级别在Matlab中执行任务及数据并行算法,而无需为特定的硬件和网络架构编写程序。这样,将串行Matlab应用程序转换为并行Matlab应用程序,几乎不需要修改代码,且不需要使用低级语言编写程序。此外,还可以在各种批处理环境中交互运行或脱机运行应用程序。
3.1. Matlab读取参数和结果返回
3.1.1. 参数传递
前端网页输入参数后,JSP文件将参数保存在文本文档中,然后由Matlab读取文件,获得参数[9]。为了便于编写和调试代码,本文在原有的Matlab工程中新建了一个prereaddata.m文件,在其中新建了一个全局类:prereaddata,将读取的参数放到其变量中,然后将prereaddata中的变量赋给主程序中的变量。参数主要分为两种:整型数和字符串。
3.1.2. 指令操作
网站的功能不仅包括将参数传递到后台,还要负责操作Matlab,具体为选择并行配置,然后运行仿真程序。为了实现这一功能,需要一个可以记录鼠标和键盘行为的软件。从方便使用、容易上手的角度考虑,选择按键精灵。
3.1.3. 结果返回
仿真结束后会生成一定数量的仿真图,仿真图显示了仿真的结果,需要在前端页面上将仿真图显示出来,将仿真结果呈现在用户面前。过程如下:首先,让Matlab将画出的仿真图以规定的名称和格式保存在指定目录下;图片保存到指定目录后,即可通过JSP的显示图片代码在网页将图片呈现出来。
3.2. Matlab并行处理技术
3.2.1. 机群的概念
机群是一组独立的计算机(节点)的集合体,节点间通过高性能的互联网络连接。各节点除了可以作为一个单一的计算资源供交互式用户使用外,还可以协同工作表现为一个单一的、集中的计算资源供并行计算任务使用。机群是一种造价低廉、易于构筑并且具有较好可扩展性的并行机体系结构。
3.2.2. Matlab机群的工作原理
Matlab并行计算就是把一个大规模的工作分解成若干小任务,让不同的计算机去处理,最后把结果收回来,以达到提高效率的目的[10]。在每台参与计算的计算机中启动一个叫Matlab Parallel Computing Engine的服务,该服务能启动参与计算的worker的Matlab session和管理各台计算机workers的Job manager。Job manager对workers进行管理,给workers分配计算任务,接收workers计算后的结果。而client把工作分解为多个任务,然后把任务给Job manager。Job manager根据workers的多少和空闲情况,适当地把任务分配给workers去做。workers完成任务后,会把结果返回给Job manager。当所有workers都完成任务后,Client就可以从Job manager里取回结果。
实验室Matlab并行机集群如图2所示,node5扮演了Job manager的角色,它负责管理四个workers,即node1到node4的工作情况。
4. 运行结果及分析
首先在本机local模式下启用单核,运行如下循环并记时。
Figure 2. Matlab parallel computer cluster
图2. 实验室Matlab并行机群
>> tic:x=0;
parfor i=1:10000000 x=x+i;
end x:toc Elapsed time is 6.511772 seconds.
>> matlabpool close Sending a stop signal to all the labs…stopped.
然后在本机上开启两核,运行如下循环并记时。
>> tic:x=0;
parfor i=1:10000000 x=x+i;
end x:toc Elapsed time is 3.311485 seconds.
>> matlabpool close Sending a stop signal to all the labs…stopped.
可见,运算时间缩短近一半。
再启用双机四核,运行如下循环并记时。
>> matlabpool Starting matlabpool using the ‘job_1’ configuration…connected to 4 labs.
>> tic:x=0;
parfor i=1:10000000 x=x+i;
end x:toc Elapsed time is 1.970535 seconds.
可见,运算时间缩短至三分之一至四分之一。
程序中的仿真模式分为“parallel”和“normal”,即并行运算和常规运算。需要注意,有时并行运算时间会大于常规运算时间,这是由程序本身的设计不合理以及循环内容少造成的。如果每循环一次就要重新分配工作站,循环完一次就要断开工作站,分配和断开都很耗时间,在以秒计的时间范围内表现得更为明显。而分配、断开所耗的时间基本固定,如果循环的内容太少将导致循环一次的时间反而比分配、断开的时间少,导致不用并行反而比较快的情况。
5. 结论
本文以一个大型通信系统仿真平台为背景,研究了基于JSP的Matlab远程调用和并行计算的实现方法,通过Web服务的实现模型、JSP网站与Matlab之间的交互机制、Matlab调用和并行机制等环节,设计了一套JSP网站与Matlab协同工作的系统,使用户可以通过登录网站调用通信网络仿真平台,通过前端网页输入信道参数,调用仿真程序,并通过页面将结果反馈给用户。
参考文献 (References)
[1] 赵铁松, 王晓云, 李伟, 陈邵友, 贾志宏. 基于B_S架构和开源WebGIS平台的气象观测站网可视化系统[J]. 气象科技, 2013, 41(1): 57-61, 96.
[2] 孙楠, 杨佳颖. 基于Web的宿舍管理系统的设计分析研究[J]. 福建电脑, 2013, 1: 114-116, 130.
[3] 斯琴其木格. 基于Web应用的蒙汉术语双向翻译词典研究[J]. 内蒙古民族大学学报, 2012, 18(1): 35-36.
[4] 蒋晓肖. 基于Web Services的电站仿真开放平台研究[D]. 上海大学, 2009.
[5] 李相育, 钱宇. 基于Web服务的Matlab功能封装模型[J]. 计算机工程与设计, 2007, 28(20): 5021-5022.
[6] 罗建华. 浅析JSP开发技术的现状与发展前景[J]. 电脑与电信, 2011, 9: 62-63.
[7] 郭富强. 基于WEB的MATLAB的远程在线编译系统设计[J]. 渭南师范学院学报, 2008, 23(5): 46.
[8] 马景涛, 郑斌, 张利益, 孔伟伟. Java Web网站应用Matlab问题解决方案[J]. 现代电子技术, 2013, 36(6): 56-58, 62.
[9] 郝雪峰, 须德, 范莹. JSP 环境下基于MATLAB引擎的数据可视化方法[J]. 计算机工程与应用, 2004, 40(22): 110-111.
[10] 高媛媛, 蔡乐才, 刘强国. 基于Matlab机群的分布式并行图像匹配算法[J]. 四川理工学院学报, 2011, 24(5): 545-547.
NOTES
*北京市科技计划项目(No:Z111100066511007)资助课题。
#通迅作者。