大电网用在线分析计算的并行编程辅助系统及其调试方法技术领域
本发明涉及一种并行编程辅助系统,具体涉及一种大电网用在线分析计算的并行编程辅助系统及其调试方法。
背景技术
智能电网精细化调度对大电网在线分析计算的实时性要求越来越高,其性能将对后续在线安全稳定分析软件的计算实时性产生很大的影响。需要研究适合大电网实时在线分析软件的并行计算技术和手段,综合利用当前并行计算的已有成果,大幅缩短在线分析软件的计算时间,满足大电网全模型实时分析计算的实时性要求。
并行软件开发难度大、门槛高,需要开发人员除具有较高的并行计算编程知识水平及较丰富的编程经验,因此需要研发一种适用于大电网在线分析计算的并行编程辅助工具,辅助开发人员进行并行框架搭建和功能开发的渐进式指导,提供图形化的开发调试界面,辅助用户定位和解决并行程序的运行时错误,以缩短并行程序的开发周期,提高并行程序开发效率,降低大电网在线分析计算并行化编程的技术门槛和难度。相对于串行调试方法,并行程序调试除了获取各个进程的运行信息外,还要能获取进程间的通信信息,因此控制流程更加复杂。
目前已有的并行编程工具包括Total View、Intel Parallel Studio、Allinea DDT(Distributed Debugging Tool)、基于eclipse的PTP(Parallel Tools Platform)和中国科技大学为曙光机群系统开发的DCDB(Dawning Cluster Debugger)等。其中,Total View和Intel Parallel Studio是通用商业软件,功能较多,使用门槛高,无法增加用于大电网在线分析的个性化功能;DDT和DCDB是针对专门系统设计的,不使用于在线分析集群系统;eclipse PTP是开源项目,很多功能不完善。
发明内容
为了克服上述现有技术的不足,本发明提供一种大电网用在线分析计算的并行编程辅助系统及其调试方法,该系统与大电网并行编程模型紧密结合,有效提高大电网在线分析的并行化效率。
为了实现上述发明目的,本发明采取如下技术方案:
一种适用于大电网在线分析计算的并行编程辅助系统,所述系统包括:并行计算集群和大电网在线分析并行编程工作站,两者通过Socket访问接口进行通信,所述并行计算集群包含n台装有国产linux系统的服务器,每台服务器都包含调试器和开发调试服务 模块;所述大电网在线分析并行编程工作站用于开发人员进行编写、调试并行程序的计算机终端,包含辅助系统底层服务模块和跨平台的辅助人机界面,所述辅助系统底层服务模块和跨平台的辅助人机界面通过API访问接口进行通信。
所述辅助系统底层服务模块包含Eclipse基础服务单元、MPI辅助单元和并行编程模型辅助单元,所述跨平台的辅助人机界面包含Eclipse图形工作台、代码编辑器模块、编程模型辅助模块和辅助调试模块。
所述开发调试服务模块与所述Eclipse基础服务单元通过Socket进行通信,使编程辅助终端远程编辑和调试应用程序;
所述调试器分为调试客户端模块和调试服务端模块,两者通过网络套接字socket联系;
所述调试服务端模块运行在计算节点端,负责接收和处理所述调试客户端模块的控制命令,并将命令返回给所述调试客户端模块;
所述调试客户端模块用于接收所述调试服务端模块处理后的控制命令,并返回给所述辅助调试模块。
所述Eclipse基础服务单元通过socket访问接口与计算服务器集群进行通信,为所述MPI辅助单元、所述并行编程模型辅助单元和所述编程语言辅助单元提供API接口;
所述MPI辅助单元利用Eclipse平台的插件体系结构与MPI并行开发辅助工具集成到开发平台上,实现MPI并行环境配置、程序自动分发和负载均衡辅助;
所述并行编程模型辅助单元封装了对负载均衡和容错管理的实现类。
若开发人员使用Windows系统开发,所述辅助系统底层服务模块还包括跨平台编程语言辅助单元,用于与Linux计算节点系统相匹配。
所述Eclipse图形工作台用于构建所述代码编辑器模块、所述编程模型辅助模块和所述辅助调试模块;
所述代码编辑器模块基于C语言开发环境CDT的C/MPI源代码编辑工具,提供了对版本管理工具git的支持,并在此基础上设计了基于SVN的开发模式;
所述编程模型辅助模块用于以图形化方式展示开发调试过程;
所述辅助调试模块,用于分发控制命令给调试服务端模块以及接收和分析调试服务端模块的返回结果,以界面展现给用户。
一种适用于大电网在线分析计算的并行编程辅助系统的调试方法,所述方法包括如下步骤:
(1)创建和修改并行编程工作站上的程序代码,通过编程模型辅助模块调用并行编程模型辅助单元的辅助功能,为所述并行编程工作站加入负载均衡和容错管理功能;
(2)当编辑结束保存程序代码时,将程序代码同步到并行计算集群中的各个服务器中,编译调试程序;
(3)当程序由多人进行协同开发时,每个开发人员的程序代码都由SVN版本管理模块进行管理;
(4)并行计算集群的开发调试服务模块自动检测代码是否变化,若通过除编程模型辅助模块以外的其他编辑器修改过程序代码,则执行步骤(5);
(5)将程序代码通过Eclipse基础服务单元的socket接口同步到所述SVN版本管理模块中,其他开发人员在保存程序代码时发现版本变化,所述SVN版本管理模块合并多个开发人员的修改,并同步到服务器和各个开发人员的编程工作站上。
与现有技术相比,本发明的有益效果在于:
本发明提出了一种适用于大电网在线分析计算的并行编程辅助系统的总体架构,该系统与大电网并行编程模型紧密结合,能够有效提高大电网在线分析的并行化效率;
本发明提出了一种增强型的远程开发调试流程,在远程开发模式基础上增加了文件同步功能,使远程开发具备了本地版本管理的能力,同时不需要同步模式复杂的配置。这种方式比较适合并行在线分析计算软件的开发。
附图说明
图1是本发明提供的一种适用于大电网在线分析计算的并行编程辅助系统结构图
具体实施方式
下面结合附图对本发明作进一步详细说明。
如图1所示,一种适用于大电网在线分析计算的并行编程辅助系统,该系统包括并行计算集群和大电网在线分析并行编程工作站;并行计算集群包含n台装有国产linux系统的计算服务器,每台服务器都包含调试器和开发调试服务模块。并行编程工作站包含辅助系统底层服务模块和跨平台的辅助人机界面;辅助系统底层服务模块包含Eclipse基础服务单元、MPI辅助单元、并行编程模型辅助单元和跨平台编程语言辅助单元;并行编程辅助人机界面包含Eclipse图形工作台、代码编辑器模块、编程模型辅助模块和辅助调试模块。
1.并行计算集群
大电网在线分析集群计算节点采用国产服务器和国产安全操作系统。国产操作系统 自带的编译器对一些并行开发的特性不支持,需要升级计算节点的编译器为最新版本的gcc编译器;安装Clang编译器,Clang编译的速度更快、编译产出更小、出错提示更友好;升级Glibc运行库;同时配置java运行环境和MPI运行环境。
1.1.开发调试服务模块
大电网在线分析集群中的每个Linux计算节点都部署开发调试服务模块,服务程序与Eclipse平台通过Socket进行通信,使编程辅助终端可以远程编辑和调试应用程序。
调试服务端负责接收调试客户端发出的控制命令,同时把这些命令转换成GDB可识别的调试命令,在GDB执行完命令后,分析GDB的输出,并提取有用信息传递给调试Client;大电网在线分析计算程序采用GDB调试器能够提高系统的可移植性,同时由于其开源特性,能够满足电力系统二次设备安全防护和信息系统等级保护的安全要求,同时可以方便地对其进行功能扩展。
1.2.调试器
计算节点的应用程序是用C/C++编写的MPI或多线程并行程序。考虑到MPI编程模式的结构特性,本系统采用Client/Serve模式来设计并行辅助调试器。调试器从逻辑上分为两部分:调试Client和调试Server。调试Client运行在编程工作站端;调试Server运行在计算服务器端,负责接收调试Client的命令,把该命令转换成GDB可识别的命令格式,GDB对被调试的应用程序作相应的调试操作,并把调试输出返回给调试Server,调试Server经过一定的处理,把结果返回给调试Client,最后再由调试Client返回给并行编程辅助人机界面的辅助调试模块单元。
2.并行编程工作站
并行编程工作站是用于程序开发人员进行编写、调试并行程序的计算机终端。该终端可以支持多种操作系统平台,根据电力系统的安全防护需要,在调控中心必须使用国产linux操作系统,但是在实验室环境可以使用其他操作系统,提高并行研发的整体效率。
2.1.辅助系统底层服务模块
底层服务模块基于Eclipse平台,集成了MPI辅助单元,并行编程模型辅助单元和跨平台语言开发辅助单元。底层服务模块为图形终端提供了API接口,辅助人机界面模块通过API访问底层辅助模块的各个单元。
2.1.1.Eclipse基础服务单元
Eclipse基础服务单元通过socket访问接口与计算服务器集群进行通信,同时为底层服务模块中的其他单元(MPI辅助单元、并行编程模型辅助单元和编程语言辅助单元) 提供API接口,并对其他单元进行管理。
Eclipse基础服务单元是基于的OSGi运行时。OSGi是open services gateway initiative的简称,原本是一种为嵌入式硬件开发的,用于服务端模块和客户端模块交互的注册服务。Eclipse使用OSGi来进行插件的管理,底层服务模块中的其他单元都是以插件的形式注册到底层服务模块中,由基础服务单元负责各个插件的网络访问控制和资源分配管理。
2.1.2.MPI辅助单元
利用Eclipse基础服务单元的插件服务体系把与MPI并行开发辅助工具集成到该编程辅助系统上。为研发人员提供MPI并行环境配置,程序自动分发,负载均衡辅助等功能。
2.1.3.并行编程模型辅助单元
状态估计、调度员潮流、静态安全分析等在线网络分析功能为调度人员提供了一套分析和评估系统运行状态及安全性的实用工具。大电网在线分析并行集群的主要特点是基于同构的服务器,操作系统为国产Linux操作系统,而在实验室的开发终端可以是多平台的,包括Linux,windows和Mac OS等。同时,大电网在线分析计算的并行计算模式可以归纳为两种模型,一种是不需要频繁通信的多任务模型,适用于静态安全分析和在线动态稳定分析等;一种是需要频繁通信的交互式模型,适用于状态估计和调度员潮流等的数值计算过程。通过引入编程模型提高程序开发的结构化水平,使开发人员不用考虑底层的软硬件结构以及负载均衡和容错机制,将精力集中于并行算法的研究和实现。
并行编程模型封装了对负载均衡和容错管理的实现方法,基于编程模型开发程序无需考虑负载均衡和容错,简化了开发流程。
大电网在线分析计算的负载均衡方法采用静态负载为主,动态负载均衡为辅,其中静态方法能够根据计算节点的性能和负载情况将任务分配到合适的计算节点,主要用于基于MPI的多机多进程之间的负载平衡;动态负载均衡方法用于多核多线程之间的计算分配,采用Work-Stealing等经典的动态负载均衡策略,当一个线程没有计算任务时,可以从其它线程窃取多余的计算任务,从而提高计算速度。
计算任务失败一般分为两种,一种是计算节点故障,一种是计算过程中出现内存溢出等问题。由于在线分析软件的计算速度比较快,因此适合大电网在线分析计算的容错处理方法主要是在线监视程序运行状态,出现问题及时重新启动计算。对于计算节点失败的故障,辅助系统能够自动屏蔽故障节点,重新配置启动参数,然后再次启动计算。
21.4.跨平台编程语言辅助单元
由于各种操作系统的C、C++开发环境不同,如果开发人员使用windows系统做开发, 需要建立一套与Linux计算节点系统相匹配的C、C++辅助资源。
2.2.跨平台的辅助人机界面
并行编程辅助系统最上层为抽象级别较高的跨平台图形化的辅助终端,继承了Eclipse工作台的代码编辑器和调试工具,增加了大电网并行编程模型的辅助功能,辅助终端通过java实现跨平台。
2.2.1.Eclipse图形工作台
图形工作台是Eclipse的整个用户接口的统称。Eclipse把基本的用户接口作为工作台API(Workbench API)提供出来,本系统在此基础上构建起了辅助调试、代码生成辅助和大电网并行编程模型辅助等界面功能。
2.2.2.代码编辑器模块
代码编辑器模块是基于C语言开发环境CDT的C/MPI源代码编辑工具,提供了对版本管理工具git的支持,本系统在此基础上设计了基于SVN的开发模式。
2.2.3.编程模型辅助模块
将并行程序的开发调试过程以图形化的方式展现给用户,通过编程模型模板可以为开发人员创建一个基于编程模型的范例,为编程人员提供了初始代码,开发人员只需要在模板基础上进行修改即可完成并行程序开发。在编辑界面中鼠标悬停在编程模型相关的标识符上时,可以弹出相关的中文说明,帮助开发人员快速掌握编程模型的使用方法。
2.2.4.辅助调试模块
辅助调试模块分发控制命令给调试Server以及接收调试Server的返回结果,同时进行结果分析,封装成事件,触发上层用户界面对事件做出响应。
一种适用于大电网在线分析计算的并行编程辅助系统的调试方法,是一种增强型的远程开发调试流程,在远程开发模式基础上增加了文件同步功能,使远程开发具备了本地版本管理的能力,同时不需要同步模式复杂的配置。这种方式比较适合并行在线分析计算软件的开发。
(1)程序开发人员通过代码编辑器模块创建和修改并行编程工作站(客户端)上的程序代码,通过编程模型辅助模块调用编程模型的辅助功能,为并行软件加入负载均衡和容错管理功能;
(2)在编辑结束保存代码的时候,辅助工具将代码同步到计算服务器(服务端),开发人员通过辅助调试模块编译调试程序。
(3)当程序由多人进行协同开发时,每个人的代码都由SVN版本服务进行管理。
(4)计算服务器上的开发调试服务自动检测代码是否变化,如果有人通过编程模型辅助客户端以外的其他编辑器修改过计算服务器上的代码,计算服务器会将代码通过Eclipse基础服务单元的socket接口同步到SVN版本管理中;其他人员在保存代码时可以发现版本变化,确认修改无误后,SVN版本服务合并多个开发人员的修改,并同步到服务器和各个开发人员的编程工作站上。
在线分析计算软件专用模式比同步模式减少了通过分布式版本库同步代码的流程,采用socket进行同步,减少了辅助系统的复杂配置环节,文件同步效率更高。大电网在线分析计算集群属于内部专用网络,适合采用集中版本管理的方式,因此本辅助系统采用了SVN集中式版本库管理多人同步开发的功能。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。