Hpc系统以及基于hpc系统的动态分派任务的方法

文档序号:6354184阅读:193来源:国知局
专利名称:Hpc系统以及基于hpc系统的动态分派任务的方法
技术领域
本发明涉及计算技术领域,尤其涉及高性能计算机系统以及该系统实现动态分派 任务的方法。
背景技术
高性能计算机(HPC)指通常使用很多处理器作为单个机器的一部分或者某一集 群中组织的几台计算机作为单个计算资源操作的计算系统和环境。高性能计算一直以来占 据高端市场,中小企业和个人也有高性能计算需求,但是不能负担高性能计算机庞大的体 积和昂贵的价格。多核处理器是高性能计算的天生载体。由中科院计算所自主研发的龙芯处理器, 是21世纪处理器家族中的一颗新星。龙芯自问世以来,以它低廉的价位,超低的功耗,多核 的高性能迅速扩展了他的应用市场。本专利使用龙芯3A处理器,有4个核心,采用MIPS精 简指令集。在架构上,可与主流的X86处理器相媲美。由于传统的HPC具有体积庞大,耗电量多,计算能力达到千万亿次,一般适用于天 气预报、地理数据采集,军事国防等大型的国家级或者世界级应用。传统的HPC显然不适于 个人或者中小型企业拥有,但是他们依然有一些大量计算的需求。例如,公司财务计算、人 体参数指标分析等应用。针对于小型的高性能计算,无论在国内还是在国际上仍是一片空 白。移动HPC系统是针对于解决这一问题而产生的一种技术。移动HPC主要应用于教育、企事业单位和个人。移动HPC的特点是体积小、耗电 少、适合携带、使用简单。移动HPC将高性能计算普及到个人桌面。本专利所述的移动HPC 由一个或者几个基于龙芯处理器构建的节点组成。由于龙芯处理器具有超低功耗、计算速 度快的特点,在进行大量计算的时候使用龙芯处理器,可为绿色低碳环保生活贡献一份力 量。用户可以使用笔记本电脑或者PC机通过网线访问移动HPC运行环境移动HPC系统是一种新生的产物,如何提高移动HPC系统的开发/使用效率是一 个急需解决得问题,本专利提出了一种动态分派任务方法,可以有效提高移动HPC系统的 开发/使用效率。

发明内容
本发明的目的在于,设计一种高性能计算机系统以及该系统动态分派任务的计算 方法,该方法基于龙芯处理器、Linux操作系统、视窗操作系统,能够动态级联运算节点从而 满足用户不同计算速度的需求并降低系统管理的复杂度、提高任务的执行速度、降低功耗、 提高资源的利用率。为解决上述问题,本发明提供了一种基于移动HPC的系统,其特征在于,包括一个后端加速节点或者多个相互连接的后端加速节点;用户终端节点,其用于安装操作系统;用户界面,其安装在用户端节点中的操作系统中,用于为用户提供操作界面;
4
主控模块,布置在用户端节点上用于接受用户的操作请求,对任务类型进行判断, 切分,分发,汇总;广播模块,布置在每个后端加速节点上用于广播每个后端加速节点的IP地址和 连接端口 ;计算模块,布置在每个后端加速节点上用于接受用户终端上的主控模块发来的任 务并执行任务后返回结果给用户终端。所述后端加速节点是由一片低功耗通用处理器、2片DDR2内存、北桥模块、2个 GBIC模块、一片快闪只读存储器、BIOS模块组成的硬件系统,其中所述快闪只读存储器中 烧写了精简过的Linux内核。所述低功耗通用处理器为龙芯3A通用处理器。所述主控模块中的一部分已经被写成模板,另一部分因应用程序而改变。所述的计算模块为Daemon模块装置,该计算模块一部分已经被写成模板,另一部 分因应用程序而改变。所述用户端节点为X86架构,其用于配置视窗操作系统。为实现本发明目的还提供了一种基于移动HPC系统的动态分派任务的方法,其特 征在于,包括步骤1 用户开启后端加速节点;步骤2 后端加速节点上的Diso模块装置和Daemon模块装置在节点加电后自动 运行;步骤3 用户终端通过接收后端加速节点Diso模块装置发来的广播包,与后端加 速节点建立连接,用户终端配置IP地址与后端加速节点在同一网段;步骤4 用户终端的用户界面与主控模块交互,生成任务;步骤5 主控模块根据任务的类型,后端节点的个数和CPU核数切分子任务,并将 子任务通过通信协议栈打包发送到后端加速节点进行计算;步骤6 后端加速节点通过Daemon模块装置计算后将子任务计算结果按照通信协 议栈打包发给用户终端的主控模块;步骤7 主控模块收到子任务的结果后,将子任务结果整合形成最终的结果,通知 用户界面;步骤8 用户界面显示结果。所述Daemon模块开两个线程,一个接收线程,一个计算线程;接收线程负责接收 用户终端的TCP连接,然后生成一个接收数据的连接给计算线程;计算线程负责接收http 数据包,解析出xml文件从而读取xml文件的内容即读取并解析数据包。所述计算线程使用了 imix网络服务常用的select机制;首先判断哪类活动; Daemon模块生成一个侦听套接字放在select集合中,用来侦听用户终端节点发来的连接, 然后建立连接;生成连接套接字放在select集合中,如果有连接套接口活动即连接套接字 可读;,那么可能有HTTP数据包发来即连接套接字可读或者有断开连接的消息即连接套 接字不可读;如果有HTTP数据包发来,那么程序将会转入处理数据包程序;处理数据包的 程序首先从数据包中解析XML文件,然后分析XML文件,得到文件中所包含的用户算法的参 数,然后传给用户算法去运算即计算步骤;然后将计算结果填充到XML包中,打包成HTTP数据包发送结果给用户终端节点;如果连接套接字不可读即上有发来断开连接的消息,那么 程序将断开TCP连接即断开连接,并释放资源。 所述Diso模块装置会首先检测本机的配置;然后Diso软件装置会在局域网内持 续的并无限循环广播的自己的IP和连接端口号;用户终端和收到后端加速节点的广播消 息后,会使用广播时收到的IP和端口号和后端加速节点建立TCP连接;连接建立以后,广播 消息可以作为心跳成为后端加速节点活着的标志。


图1是本发明的各模块间层次关系图2是本发明的系统的工作流程图3是Diso模块的工作示意图4是本发明Daemon装置计算线程流程图5是蒙特卡洛算法的算法流程图6是用户终端主控模块的工作流程图7是本发明的系统软件协议栈;
图8是本发明系统结构图9是本发明通信协议栈;
图10是本发明使用模式图11是本发明Daemon软件装置任务均衡方式图。
具体实施例方式下面结合附图,对本发明做进一步的详细描述。如附图1实现动态级联运算节点的系统包括1)后端加速节点2需要一个或者几个叫做后端加速节点2的硬件装置,它们通过网线、蓝牙等连接 方式相互连接在一起。本实施例中的后端加速节点2通过网线连接在一起,这些装置构成 了移动HPC的硬件主体。每个后端加速节点2是由一片低功耗通用处理器、2片DDR2内存、 北桥模块、2个GBIC模块、一片快闪只读存储器、BIOS模块组成的硬件系统。快闪只读存储 器中烧写了精简过的Linux内核21。后端加速节点没有硬盘。这样也减少了整个硬件装置 出错的可能性。低功耗通用处理器可以为龙芯3A通用处理器或英特尔凌动antelAtom) 处理器。本发明的实施例中的低功耗通用处理器采用的是龙芯3A通用处理器。2)用户终端节点1需要一个称为用户终端节点1的硬件装置。用户终端节点1需要是X86架构的。 用户终端既可以是笔记本电脑也可以是PC机。需要用户终端上配置视窗操作系统11。3)用户界面13用户终端节点1需要部署一个称为用户界面13的模块装置。用户界面安装在视 窗操作系统上11。用户界面可以根据用户不同的应用需求而改变。4)主控模块12用户终端节点需要部署一个叫做主控模块12的模块装置,它的主要作用就是接受用户的操作请求,生成任务,完成任务的切分和派发,并负责整理收到结果。主控模块部 分已经被写成模板,部分因应用程序而改变。5)广播模块每个后端加速节点上需要部署一个广播模块-Diso。Diso模块装置22主要是广 播自己的IP和连接端口,使得和他所连接的用户终端节点能够发现它,并能够通过IP和端 口号和它建立连接。6)计算模块每个后端加速节点上需要部署一个计算模块-叫做Daemon模块装置23,主要作用 是接收用户终端上的主控模块发来的任务,并执行任务后返回结果给用户终端。计算模块 部分已经被写成模板,部分因应用程序而改变。各模块间层次关系如图1所示。后端加速节点2上先是部署了精简过的Linux内 核21,基于内核之上部署了 Diso模块装置22和Daemon模块装置23。Diso只是使得后端 加速节点自我发现的一种装置。X86架构的用户终端安装了视窗操作系统,基于操作系统之 上部署了主控模块12,主控模块12是和后端加速节点1的Daemon模块装置23是主导通信 的一层。主控模块12与Daemon模块装置23建立连接,交互任务。主控模块12上部署了 用户界面13模块装置。主控模块12负责与用户界面13交互,生成就计算任务。一个用户终端节点1通过网线连接一个或者几个后端加速节点2。后端加速节点 2之间也是通过网线级联。可根据用户计算速度的需求自由扩展。操作人员通过开发用户 界面13、主控模块12和计算模块实现基于移动HPC的操作。其中通过用户界面完成和用户 的交互,生成任务;主控模块负责将任务切分成子任务,分发给计算模块,并收集计算模块 的计算信息,将计算结果汇总,最后报告给用户界面。具体步骤如下如附图2 100 用户开启后端加速节点。200 后端加速节点上的Diso模块装置和Daemon模块装置在节点加电后自动运 行。300 用户终端通过接收后端加速节点Diso模块装置发来的广播包,与后端加速 节点建立连接。用户终端需要配置IP地址(和后端加速节点在同一网段)400 用户终端的用户界面与主控模块交互,生成任务。500 主控模块根据后端节点的个数和CPU核数切分子任务。并将子任务通过通信 协议栈打包发送到后端加速节点进行计算。600 后端加速节点通过Daemon模块装置计算后将子任务计算结果按照通信协议 栈打包发给用户终端的主控模块。700:主控模块收到子任务的结果后,将子任务结果整合形成最终的结果,通知用 户界面800 用户界面显示结果。本发明中各个模块的详细介绍Diso模块Diso在后端加速节点加电的时候设置为开机自启动。Diso模块装置会 首先检测本机的配置。如内核的个数。因为生成的端口数目要与内核数相同。然后Diso 模块装置会在局域网内广播自己的IP和连接端口号。每个后端加速节点的IP不同,每个后 端加速节点可用的端口数与CPU核数相同。这种广播消息是持续的,如每3秒广播3次,无限循环。用户终端在收到后端加速节点的广播消息后,会使用广播时收到的IP和端口号 和后端加速节点建立TCP连接。连接建立以后,广播消息可以作为心跳成为后端加速节点 活着的标志。参见图3的Diso的工作示意图。Daemon模块=Daemon模块的主要功能为与用户终端建立连接,解析数据包、计算、 将计算结果封装成数据包、发送给用户终端。它与后端加速节点的计算模块和Diso模块以 通讯协议栈为格式交换数据。通讯协议栈包括TCP/IP协议、HTTP协议、SOAP协议。Daemon模块开两个线程。一个接收线程610,一个计算线程620。接收线程610负 责接收用户终端的TCP连接,然后生成一个接收数据的连接给计算线程620。计算线程负责 接收http数据包,解析出xml文件从而读取xml文件的内容即读取并解析数据包621,如附 图4所示。 如附图4所示,在数据通过计算模板622步骤时以蒙特卡洛算法为例。蒙特卡洛算 法又称随机性模拟算法。简单的说就是以部分估计整体,以概率为基础,用随机数来解决计 算问题。一般投放的随机数越多,计算越准确。计算线程读取xml文件的内容获得蒙特卡 洛的参数,然后运行蒙特卡洛算法,将计算的结果写进xml文件,然后使用HTTP加soap协 议在已经建立的TCP连接上发给用户终端即将计算结果打包发送623。判断是否可读624, 如果可读则继续读取并解析数据包621,如果用户终端不再在已经建立的TCP连接上发送 包含计算参数的数据包了,用户终端会发来一个结束消息给后端加速节点,那么TCP连接 关闭即释放资源关闭连接625。此模块中的蒙特卡洛算法为具体计算内容,依照操作人员的 具体计算程序而定。用户终端主控模块如图6所示图6分成左右2部分,左边部分是用户终端主控模 块的操作,右边是后端加速节点各模块与主控模块交互的部分。用户终端的主控模块负责 捕捉后端加速节点发来的广播消息,记录下IP和端口号与后端加速节点建立TCP连接即建 立连接705,建立连接后接收主控模块经过任务均衡后发来的任务,即接收计算任务706。 然后将任务切割成多个子任务后进行计算即子任务计算707,最后将子任务结果返回主控 模块进行汇总。主控模块在与用户交互后生成计算任务701,主控模块还负责任务的切分 702、派发703和汇总704。任务的切分和任务的性质有关。主控模块首先判断任务的类型。 从而确定对任务的切分是分段还是分组。例如在后端加速节点计算蒙特卡洛算法,计算目 标是比较不同参数下蒙特卡洛算法计算结果的差异。主控模块将按照这个任务的类型,将 参以分组的方式切分。假设有N个后端加速节点以网线相连协同工作,每个后端加速节点4 核心。那么主控模块将4个参数为一组,这样主控模块就把需要计算的参数分成了 4N组。 首先主控模块与每个后端加速节点建立4个连接。主控模块把每一组中的4个参数,均勻 的发给4个连接计算。当主控模块收到后端加速节点某个连接上的返回结果后,会再发下 一组参数中的一个数据给这个连接。当一组中的计算结果全部返回,就完成了一个循环。这 样循环N次后,后端加速节点的结果全部返回。主控模块对计算结果进行汇总704。汇总方 式为将计算结果分组存放或者全部存放在一起。如果分组存放,则按照处理程序的要求分 组。经过汇总后的计算结果传入处理程序进行比较。主控模块中任务切分、派发、汇总方式 已经固定为模板。主控模块与后端加速节点的通信方式也已经固为模板。用户只需要在模 板中填入计算内容。下图中与用户交互部分为用户填入内容。用户界面模块操作人员按照用户的应用需求来写。
通讯协议介绍主控模块与计算模块交互中的通讯协议使用HTTP在TCP/IP之上进行通信。HTTP 客户机使用TCP连接到HTTP服务器。在建立连接之后,客户机可向服务器发送HTTP请求 消息,随后服务器会处理此请求,然后向客户机发送一个HTTP响应。此响应包含了可指示 请求状态的状态代码。通信协议为使用遵守SOAP编码规则的HTTP请求/响应。模板代码为P0ST******HTTP/1. 1Hostwww·氺氺氺氺氺氺氺氺氺氺· comContent-Typetext/xml ; charset =〃 utf-8“Content—Length:氺氺氺氺<env:Envelopexmlns:env = " http://www.w3.org/2001/06/soap_envelope" ><env:Header)氺氺氺氺氺氺氺氺氺氺氺氺氺</env:Header)<env:Body>氺氺氺氺氺氺氺氺氺氺氺氺</env:Body></env:Envelope)注.*号代表发送的内容相关本发明中模块的操作方法为1.用户需要开发开发用户界面,填写主控模块和计算模块模板。用户界面完全按照用户需求来写, 这部分完全需要操作人员开发。主控模块和计算模块,本发明提供编写的模板,用户只需将 计算逻辑填入。2.开发步骤1)编写用户界面2)编写主控模块主控模块的代码基于C#编写。主控模块需要操作人员填入的代码为根据用户计 算需求替换上述主控模块中提到的比较程序。主控模块还需要操作人员编写和用户界面交 互的部分。3)编写计算模块计算模块代码基于Linux标准C。计算模块已经提供了算法函数的接口,操 作人员只需要根据用户计算需求按照函数接口填入即可。函数接口为double Cal_ fun (*******);替换Daemon模块中的例子所说的蒙塔卡洛算法。4)将程序部署到后端加速节点 后端加速节点没有硬盘,只有大小为16M的快闪只读存储器作为整个后端加速节 点的启动点。快闪只读存储器只支持块写和块擦除。后端加速节点上部署的Diso模块、 Daemon模块以及BIOS设置、Linux精简内核都要写在快闪只读存储器里。每次操作人员根据用户需求的不同需要重新填写Daemon模块中的模板。每次ROM中的程序有改变时,需要 使用flash_be命令将快闪只读存储器中的内容全部擦除,然后使用load命令将全部程序 从程序所在的位置写入到快闪只读存储器中。将程序烧写到快闪只读存储器中的过程,我 们已经做好了命令文件,用户只需要执行即可,无需手动。3.使用实例 1)用户界面本发明在X86架构的用户终端自己开发了用户界面的例子。比如说 用户要使用用户终端来对不同CPU架构的机器做一个计算速度的比较,用户可以在用户界 面上按按钮“建立坐标系”,然后界面弹出建立坐标系的对话框,填入纵横轴代表的意义以 及刻度,按确定按钮就在界面上建立了空的坐标轴,横轴代表时间,纵轴代表计算进度。按 按钮“计算任务”,界面上会弹出填写计算任务对话框,填写计算任务的名称为蒙特卡洛算 法,以及可执行文件所在的位置。按按钮“本机计算”,那么在X86架构的用户终端本身跑 一遍蒙特卡洛算法,然后在已经建立的坐标系中画出一道蓝色的斜线。然后按按钮“后端4 核”,那么任务会被提交到在后端加速节点上4核并行计算,在坐标系中画出一道绿色的斜 线。然后后端加速节点接上两个,按按钮“后端8核”,那么任务会被提交到在后端加速节点 上8核并行计算,在坐标系中画出一道黄色的斜线。斜线的斜率越大,表示完成的时间短, 即运算速度快。同时我们也可以更精确。按按钮“显示时间”,可以看到界面上显示了三次 计算运行的时间。这样数字可以精确的显示出后端加速节点的加速效果。图形可以直观的 表示出后端加速节点的加速效果。后端节点级联不同的个数,运算速度不同。2)填写通信模块模板。Request 从用户终端发向后端加速节点的packagePOST/Design_Time_Addresses/AsionOption/Servicel/HTTP/l. 1Content-Typeapplication/soap+xml ;charset = utf-8Host:zjp-msftContent-Length:711Expect:100-continue<s:Envelopexmlns: s = " http://www.w3.org/2003/05/soap_envelope"χ m 1 η s : a = " http://www.w3.org/2005/08/ addressing" Xs:HeaderXa:Actions : mustUnderstand = " \ " >http ://tempuri. org/1Service 1 / Pr iceAsian0ptions</a: ActionXa: Message ID>urn:uuid:lfcc8535-dc9d-4344-8fc4-6122f05fdc93</a:MessageIDXa: ReplyToXaiAddre ss>http://www. w3. org/2005/08/addressing/anonymous</a: AddressX/a: ReplyToXa: Tos:mustUnderstand = " \ " >http://ζjp-msft/Design_Time_Addresses/ AsionOption/Servicel/</a: ToX/s: HeaderXs: BodyXPriceAsianOptionsxmlns = " http://tempuri.org/ " ><initial>30</initialXexercise>30</ exercise><up>l. 4</upXdown>0. 8</down
><interest>l. 08</interestXperiods>20</periodsXruns>100000</runs></ PriceAsianOptionsX/s: BodyX/s:Envelope)Response 从 Linux 发向视窗的 packageHTTP/1. 1200 OKContent-Length:480Content-Type:application/soap+xml ;charset = utf-8Server:Microsoft-HTTPAPI/2. ODate:Sun,25 Jul 2010 13:15:42 GMTX-Charles-Received-Continue:HTTP/1. 1 100 Continue<s: Envelopexmlns: s = " http://www.w3.org/2003/05/soap_envelope"χ m 1 η s : a = " http://www.w3.org/2005/08/ addressing" Xs:HeaderXa:Actions : mustUnderstand = " \ " >http ://tempuri. org/1Service 1 / PriceAsianOptionsResponse</a: ActionXa: Re latesTo>u
rn:uuid: lfcc8535-dc9d-4344-8fc4-6122f05fdc93</a: RelatesToX/s: Header) <s: BodyXPriceAsianOptionsResponsexmlns=" http://tempuri.org/" ><PriceAsian0ptionsResult>9. 5394600768 453461</PriceAsian0ptionsResult></PriceAsianOptionsResponseX/s: BodyX/s: Envelope)3)填写计算模板——将蒙特卡洛算法写入到计算模块中double Cal_fun(struct Cal_Input Input—Para){ double氺pricePath = new double[Input_Para. periods+1];//Risk-neutral probabilitiesdouble piup = (Input_Para. interest-Input_Para. down)/(Input_Para. up-Input—Para· down);double pi down = 1-piup ;double temp = 0. O ;double priceAverage = 0. O ;double calIPayOff = 0. O ;for (int index = O ;index<Input_Para. runs ;index++){//Generate Pathdouble sumPricePath = Input—Para, initial ;for (int i = 1 ;i< = Input—Para, periods ;i++){pricePath
= Input—Para, initial ;double rn = (double) random()/ (double) RAND—MAX ;
if (rn > pi down){ pricePath[i] = pricePath[i-1]*Input_ Para, up ;}else{ pricePath[i] = pricePath[i-1]*Input_Para. down ;}sumPricePath+ = pricePath[i];}priceAverage = sumPricePath/(Input_Para. periods+1);calIPayOff = max(priceAverage-Input_Para. exercise,0);temp+ = cal IPayOff ;}double returnValue =(temp/pow(Input_Para. interest, Input_Para. periods))/Input_Para. runs ;delete []pricePath ;return returnValue ;}4)填写主控模块计算代码主控模块只需输入后端加速节点蒙特卡罗参数组即可。本例共有500组参数。开 辟一片内存区域,每组参数按照〈double ;double ;double ;double ;double ;int ;int> 方式 存储。5)将程序烧写到后端加速节点的快闪只读存储器中。将用户终端与后端加速节点用串口相连,后端加速节点连到本地所在的局域网 中,以便于从操作人员的机器中下载已经写好的程序。打开Windows的开始一〉附件一〉 通讯一〉超级终端。然后将后端加速节点加电,在后端加速节点启动的过程中一直按Esc 键,程序停住,输入命令flash_be,等待快闪只读存储器擦出完毕。输入命令ifaddr rtkO 10. 10. 11. 2给后端加速节点配一个临时的IP。等待命令执行完毕后,输入命令load-p tftp://10. 10. 111. 12/vmlinux/等待程序烧写完毕后,重启即可。本发明的系统模块协议栈图如图7所示。后端加速节点上首先部署了精简过的 Linux内核,基于内核之上部署了 Diso模块装置和Daemon模块装置。X86架构的用户终 端安装了视窗操作系统,基于操作系统之上部署了主控模块,主控模块和后端加速节点的 Daemon模块是主导通信的一层。主控模块上部署了用户界面模块装置。主控模块负责捕获 后端加速节点发来的广播消息,建立连接后负责任务的建立和分发。本发明Daemon装置计算线程处理流程如图5所示。计算线程使用了 imix网络服 务常用的select机制630。首先判断哪类活动631。Daemon装置生成一个侦听套接字632放在在select集合中,用来侦听用户终端节点发来的连接,然后建立连接635,生成连接套 接字放在select集合中,如果有连接套接口活动即连接套接字可读633,那么可能有HTTP 数据包发来即连接套接字可读633或者有断开连接的消息即连接套接字不可读634。如果 有HTTP数据包发来,那么程序将会转入处理数据包程序。处理数据包的程序首先从数据包 中解析XML文件636,然后分析XML文件,得到文件中所包含的用户算法的参数,然后传给用 户算法去运算即计算637步骤,然后将计算结果填充到XML包638中,打包成HTTP数据包 发送结果639给用户终端节点。如果连接套接字不可读634即上有发来断开连接的消息, 那么程序将断开TCP连接即断开连接640,并释放资源641。本发明系统结构图如图8所示。用户终端节点需要部署有和用户交互的图形界面 和控制任务的主控模块。用户界面和主控模块因用户需求不同而不同。每个用户终端连接 了一个或者几个后端加速节点,连接的后端加速节点的个数也是随着用户计算速度需求不 同而定。如果用户数据量大,要求短时间内出计算结果,那么需要采取高的并行度,就需要 多连接几个后端加速节点。但是在数据规模一定的情况下,并不是连接的后端加速节点越 多越好。因为任务的切分和汇总有一定的时间消耗。具体的任务该怎样切分,需要连接几 个后端加速节点,因用户应用不同而不同。本发明通信协议栈如图9所示。SOAP协议是简单对象访问协议。它用HTTP作为 底层通讯协议,使用RPC作为一致性的调用途径,使用XML作为数据传送的格式,允许服务 提供者和服务客户经过防火墙在INTERNET进行通讯交互。凡是用户终端和后端加速节点 之间交互的数据都要通过通信协议栈进行封装。SOAP协议适合在分散或者分布式环境中交 换信息。SOAP具有简单性和可扩展性的特点。客户端发送请求时,不管客户端是什么平台 的,首先把请求转换成XML格式,SOAP网关可自动执行这个转换。转化成XML格式后,SOAP 终端名(远程调用方法名)及其他的一些协议标识信息被封装成HTTP请求,然后发送给服 务器。如果应用程序要求,服务器返回一个HTTP应答信息给客户端。HTTP底层建立TCP连 接,保证数据传输的可靠性。本发明用户使用模式图如图10所示。用户终端上安装视窗操作系统,基于操作系 统部署主控模块和用户图形界面。用户终端使用网线与几个后端加速节点相连接如图所 示。后端加速节点之间用网线级联。后端加速节点上部署的Daemon模块装置中预置有用 户需要做大量计算的算法。用户终端主控模块负责生成任务,并把任务分发给后端加速节 点,后端加速节点完成计算后返回结果给用户终端的主控模块。用户终端的主要任务量在 后端加速节点完成。本发明Daemon模块模块任务均衡方式如图11所示。后端加速节点在加电启动时 就能够智能检测出后端加速节点的级联个数。如果有N个后端加速节点在级联,每个后端加 速节点是4核,那么所有的后端加速节点可以同时做4N个并行计算。用户终端的主控模块 最多可以同时与后端加速节点建立4N个连接,在每个连接上轮流分发任务到daemon上去执 行,daemon任务完成后会立即返回结果给用户终端主控模块,其中的任何一个连接完成任 务后,用户终端主控模块可以再发任务给这个连接。这样负载是均衡的,运算速度也很快。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由 权利要求书的范围来确定的。
权利要求
1.一种基于移动HPC的系统,其特征在于,包括 一个后端加速节点或者多个相互连接的后端加速节点; 用户终端节点,其用于安装操作系统;用户界面,其安装在用户端节点中的操作系统中,用于为用户提供操作界面; 主控模块,布置在用户端节点上用于接受用户的操作请求对任务类型进行判断,切分, 分发,汇总;广播模块,布置在每个后端加速节点上用于广播每个后端加速节点的IP地址和连接 端□;计算模块,布置在每个后端加速节点上用于接受用户终端上的主控模块发来的任务并 执行任务后返回结果给用户终端。
2.如权利要求1所述的基于移动HPC的系统,其特征在于所述后端加速节点是由一 片低功耗通用处理器、2片DDR2内存、北桥模块、2个GBIC模块、一片快闪只读存储器、BIOS 模块组成的硬件系统,其中所述快闪只读存储器中烧写了精简过的Linux内核。
3.如权利要求2所述的基于移动HPC的系统,其特征在于所述低功耗通用处理器为 龙芯3A通用处理器。
4.如权利要求1所述的基于移动HPC的系统,其特征在于,所述主控模块中的一部分已 经被写成模板,另一部分因应用程序而改变。
5.如权利要求1所述的基于移动HPC的系统,其特征在于,所述的计算模块为Daemon 模块装置,该计算模块一部分已经被写成模板,另一部分因应用程序而改变。
6.如权利要求1所述的所述的基于移动HPC的系统,其特征在于,所述用户端节点为 X86架构,其用于配置视窗操作系统。
7.一种基于移动HPC系统的动态分派任务的方法,其特征在于,包括 步骤1 用户开启后端加速节点;步骤2 后端加速节点上的Diso模块装置和Daemon模块装置在节点加电后自动运行; 步骤3 用户终端通过接收后端加速节点Diso模块装置发来的广播包,与后端加速节 点建立连接,用户终端配置IP地址与后端加速节点在同一网段; 步骤4 用户终端的用户界面与主控模块交互,生成任务;步骤5 主控模块根据任务的类型、后端节点的个数和CPU核数切分子任务,并将子任 务通过通信协议栈打包发送到后端加速节点进行计算;步骤6 后端加速节点通过Daemon模块装置计算后将子任务计算结果按照通信协议栈 打包发给用户终端的主控模块;步骤7 主控模块收到子任务的结果后,将子任务结果整合形成最终的结果,通知用户 界面;步骤8:用户界面显示结果。
8.如权利要求7所述的基于移动HPC系统的动态分派任务的方法,其特征在于所述 Daemon模块开两个线程,一个接收线程,一个计算线程;接收线程负责接收用户终端的TCP 连接,然后生成一个接收数据的连接给计算线程;计算线程负责接收http数据包,解析出 xml文件从而读取xml文件的内容即读取并解析数据包。
9.如权利要求8所述的基于移动HPC系统的动态分派任务的方法,其特征在于,所述计算线程使用了 unix网络服务常用的select机制;首先判断哪类活动;Daemon装置生成一 个侦听套接字放在select集合中,用来侦听用户终端节点发来的连接,然后建立连接;生 成连接套接字放在select集合中,如果有连接套接口活动即连接套接字可读;可能有HTTP 数据包发来即连接套接字可读或者有断开连接的消息即连接套接字不可读;如果有HTTP 数据包发来,那么程序将会转入处理数据包程序;处理数据包的程序首先从数据包中解析 XML文件,然后分析XML文件,得到文件中所包含的用户算法的参数,然后传给用户算法去 运算即计算步骤;然后将计算结果填充到XML包中,打包成HTTP数据包发送结果给用户终 端节点;如果连接套接字不可读即上有发来断开连接的消息,那么程序将断开TCP连接即 断开连接,并释放资源。
10.如权利要求7所述的基于移动HPC系统的动态分派任务的方法,其特征在于,所述 Diso模块装置会首先检测本机的配置;然后Diso软件装置会在局域网内持续的并无限循 环广播的自己的IP和连接端口号;用户终端和收到后端加速节点的广播消息后,会使用广 播时收到的IP和端口号和后端加速节点建立TCP连接;连接建立以后,广播消息可以作为 心跳成为后端加速节点活着的标志。
11.如权利要求7所述的所述的基于移动HPC系统的动态分派任务的方法,其特征在 于,所述用户终端的主控模块负责捕捉后端加速节点发来的广播消息,记录下IP和端口号 与后端加速节点建立TCP连接即建立连接705,建立连接后接收主控模块经过任务均衡后 发来的任务,即接收计算任务706。然后将任务切割成多个子任务后进行计算即子任务计 算707,最后将子任务结果返回主控模块进行汇总。主控模块在与用户交互后生成计算任务 701,主控模块还负责任务的切分702、派发703和汇总704。
全文摘要
本发明涉及移动HPC系统,包括一个后端加速节点或者多个相互连接的后端加速节点;用户终端节点,其用于安装操作系统;用户界面,其安装在用户端节点中的操作系统中,用于为用户提供操作界面;主控模块,布置在用户端节点上用于接受用户的作业任务,并均衡分发给后端;广播模块,布置在每个后端加速节点上用于广播每个后端加速节点的IP地址和连接端口;计算模块,布置在每个后端加速节点上用于接受用户终端上的主控模块发来的任务并执行任务后返回结果给用户终端。
文档编号G06F9/46GK102103521SQ201110033759
公开日2011年6月22日 申请日期2011年1月31日 优先权日2011年1月31日
发明者周俊平, 孙凝晖, 王磊, 詹剑锋 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1