基于gdb的异构计算调试环境的实现系统的制作方法

文档序号:6443179阅读:188来源:国知局
专利名称:基于gdb的异构计算调试环境的实现系统的制作方法
技术领域
本发明涉及一种异构计算调试环境的实现系统,尤其是涉及一种基于GDB的异构计算调试环境的实现系统。
背景技术
当前,异构计算正在成为并行计算的一种新的形式。因为一个复杂的应用任务中往往会存在着多种不同的计算需求,比如有些部分需要大量的CPU资源进行计算,有些部分则需要对大规模的数据进行高速的读写操作,科学计算适合向量计算等,对于这些不同的计算需求仅仅靠以往单一的同构并行机群已无法满足,异构计算因此应运而生。异构计算环境通过集成不同体系结构的加速部件来实现不同的计算需求,例如使用多核CPU处理计算密集型任务,使用GPU处理数据并行型任务等,这样既可以充分发挥各类机器的性能, 又降低了系统的整体总功耗,异构计算将会是未来高性能计算的发展方向之一。异构体系结构的产生势必导致异构软件的开发需求,但是由于异构计算环境中客观存在着硬件平台、操作系统、网络通信、应用程序和服务等多种不同的差异,使得编写正确的异构并行程序十分复杂和困难(I)异构计算环境中多个并行任务的并发执行会带来运行时的不确定性问题,导致程序错误在调试过程中并不总是出现。(2)在不同的异构部件之间如何确保通信方都能理解消息数据的含义,如何设计一个快速有效的通信机制,既能保证消息传送的可靠性,又不消耗大量的网络带宽。(3)如何将不同部件的调试操作统一起来。(4)如何在一个存在着CPU数量、时钟频率、内存容量和网络带宽等多种异构性的环境下,对各个资源进行符合其自身的调试原语。(5)如何使得调试环境能够包含更多的异构部件,具有良好的可移植性。(6)如何协同好不同异构部件使之能够协同工作,能区分是对单个分支还是对所有分支进行控制。异构并行程序开发技术的滞后将会大大影响异构硬件特性和效率的发挥,限制异构计算的广泛应用。因此,自然和不可避免地需要开发异构计算调试环境来协助编程开发人员确保异构软件的正确性。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种操作简单、部署快速和成本低廉的基于GDB的异构计算调试环境的实现系统。本发明的目的可以通过以下技术方案来实现—种基于⑶B的异构计算调试环境的实现系统,其特征在于,包括依次连接的用户界面模块、联调控制模块、异构节点调试模块和并行任务分配模块;所述的用户界面模块,用于与用户进行交互,以命令行的方式接收用户的调试操作命令,并返回调试结果信息;所述的联调控制模块,用于启动和结束异构节点调试模块,分发调试任务并回收调试结果,对并行子任务进行同步或异步调试控制;
所述的异构节点调试模块,用于执行联调控制模块发送的调试命令;所述的并行任务分配模块,用于将计算任务划分成多个并行的子任务,并分配调度到相应的异构节点调试模块上执行。所述的异构节点调试模块为由不同的异构节点组成,所述的异构机电包括协同代理单元和⑶B调试器;所述的协同代理单元将联调控制模块发送的调试命令转换成GDB调试器能够处理的输入方式,用于控制GDB调试器的启动和结束进程,对正在进行的调试进程进行控制,并对得到的调试结果进行解析并转换成统一的消息格式;所述的GDB调试器作为底层的源代码级调试工具对并行子任务进行具体的本地调试操作。
所述的协同代理单元具体实现过程如下联调控制模块与协同代理单元建立连接后,协同代理单元随即生成一个子进程用来启动并控制GDB调试器的调试进程,父进程用于与联调控制模块保持连接,将接收到的调试命令转换成符合GDB调试器要求的输入格式,在父子进程之间采用管道进行通信,用来传递控制命令和结果数据。对于特殊异构计算环境的异构节点,利用宿主机环境中基础调试器工具来替代GDB调试器,协同代理单元对宿主机的基础调试器工具的控制命令和结果数据格式进行转换,隐藏宿主机基础调试器的差异性。所述的统一的消息格式包括同一控制命令格式和同一数据传输格式。所述的同一控制命令格式分为四个域(I)命令序号域用于唯一地标识该命令;(2)命令名称域为命令的关键字;(3)目标节点域指定命令的作用节点;(4)参数列表域是可选的,用来存放命令的参数,多个参数之间使用” #”分隔。所述的同一数据传输格式分为四个域(I)数据序号域对应于控制命令的命令序号域,指明该数据是哪个命令的调试结果;(2)源节点号域和目标节点域相对应,标识数据的来源;(3)数据类型域包含断点、挂起、数据、堆栈、错误和退出类型;(4)数据域是对数据类型域的具体描述。所述的联调控制模块与异构节点调试模块之间通过socket网络连接。所述的特殊异构计算环境的异构节点为非Unix/Linux操作系统的计算机。与现有技术相比,本发明具有以下优点I、借助Unix/Linux环境中的单机⑶B调试器,通过将协同控制与底层调试相分离,并设计统一的消息格式和协同代理机制,实现了一种基于GDB的异构计算调试环境;2、操作简单该方案采用GDB调试器作为底层的调试器,所设计的调试命令也与GDB大致相同,使得用户更易于掌握新的调试界面,调试操作十分简单;3、部署快速作为Unix/Linux系统的基本工具集,⑶B调试器已被集成在操作系统中,只需要进行简单的配置操作便可在Unix/Linux系统中搭建出基于GDB的单机调试环境,使得环境部署配置十分快速;4、成本低廉由于GDB调试器是一个开源的软件,不收取任何费用,降低了软件开发的成本;综上所述,本发明具有操作简单、部署快速和成本低廉等优点,是快速构建异构计算调试环境的一种可行的方法。


图I为本发明的结构示意图。
具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。实施例为了满足异构计算环境中数据通信和命令控制的一致性需求,在本发明中,该调试环境采用分层的思想,将与用户交互、协同调试控制和不同异构部件上的底层调试这三部分功能相互分离,并在这三部分之间使用统一的消息格式来满足数据通信和命令控制的一致性需求,以此来屏蔽异构计算环境中的差异性。整个结构图分为四个模块(I)用户界面模块I。该模块是与用户进行交互的界面,以命令行的方式接收用户的调试操作命令,并返回调试结果信息。用户界面模块I通过向联调控制模块2发送调试请求来实现远程调试功能。(2)联调控制模块2。该模块是整个系统的调度和控制中心,负责启动和结束协同代理单元,分发调试任务并回收调试结果,对并行子任务进行同步或异步调试控制。(3)异构节点调试模块。该模块是调试命令真正的执行层,由不同的异构计算节点组成。(4)并行任务分配模块4。该模块通过对整个计算任务进行分解,例如生成任务DAG图,将计算任务划分成多个并行的子任务,然后分配调度到相应的异构计算节点上执行。其中,联调控制模块2是整个系统的调度和控制中心,负责启动和结束协同代理单元,分发调试任务并回收调试结果,对并行子任务进行同步或异步调试控制。而异构节点调试模块是调试命令真正的执行层,它由不同的异构计算节点组成,这些节点可以是PC、小型机、服务器等不同类型的计算机。在这些计算机上都安装部署了协同代理单元31和各自操作系统环境支持的GDB调试器32。GDB调试器32可以作为底层的源代码级调试工具对并行子任务进行具体的本地调试操作。协同代理单元31是整个异构调试环境的关键,它负责将收到的调试命令转译成底层调试器(GDB调试器)能够处理的输入方式,然后对得到的调试结果进行解析并转换成统一的消息格式,以此来消除不同异构部件之间调试环境的差异性,保证系统数据传输和控制命令的一致性。如果整个异构计算环境中存在其它特殊类型的异构计算机,可以使用与之匹配的底层调试器来替代GDB调试器,配合相应的协同代理单元,使系统具有良好的兼容性和移植性。为了保证异构计算调试环境具有一个良好的通信机制,本发明使用面向连接的TCP/IP协议来保证Socket网络连接的可靠性,在联调控制台部署Socket Client,在协同代理部署Socket Server0这样的设计可以满足(1)联调控制台作为整个系统的协调控制中心,需要频繁地与各个协同代理进行通信和数据传输。(2)保证消息发送的可靠性,防止出现消息未被接收或者重复接收的情况。(3)调试命令的发送顺序与接收顺序要保持一致。
(4)使用统一的消息格式进行数据传输。异构计算环境中不同的异构部件可能存在不同的控制命令格式和数据传输格式,为了降低对消息处理的复杂性,有必要建立统一的消息格式来规范所有的传输信息。控制命令主要分为四个域(I)命令序号域用于唯一地标识该命令。(2)命令名称域为命令的关键字。(3)目标节点域指定命令的作用节点。(4)参数列表域是可选的,用来存放命令的参数,多个参数之间使用分隔。相应的,数据传输也分成四个域(1)数据序号域对应于控制命令的命令序号域,指明该数据是哪个命令的调试结果。(2)源节点号域和目标节点域相对应,标识数据的来源。(3)数据类型域包含断点、挂起、数据、堆栈、错误和退出等类型。
(4)数据域是对数据类型域的具体描述。Socket通信协议使用字节流方式进行数据传输,只需要将具体的控制命令和结果数据以字符串的形式写入到Socket套接口就可以完成数据的传送。 异构计算调试环境的具体调试操作是由异构节点调试模块执行完成,每个调试节点由协同代理单元31和⑶B调试器32组成。协同代理单元31位于⑶B调试器32的上层,接收来自联调控制模块2的命令,负责启动和结束GDB调试器32的调试进程,并对正在进行的调试进程进行控制。其实现过程为当联调控制模块2与协同代理单元31建立连接后,协同代理单元31随即生成(fork) —个子进程用来启动并控制GDB调试器32的调试进程,父进程用于与联调控制模块2保持连接,将接收到的调试命令转换成符合GDB调试器32要求的输入格式。在父子进程之间采用管道(pipe)进行通信,用来传递控制命令和结果数据。对于特殊的异构计算环境,例如非Unix/Linux操作系统,可以利用宿主机环境中基础调试器工具来替代GDB调试器,协同代理单元将会对宿主机的基础调试工具的控制命令和结果数据格式进行转换,隐藏宿主机基础调试器的差异性,从而使本方案所提出的整个异构计算调试方案具有更好的兼容性和移植性。
权利要求
1.一种基于⑶B的异构计算调试环境的实现系统,其特征在于,包括依次连接的用户界面模块、联调控制模块、异构节点调试模块和并行任务分配模块; 所述的用户界面模块,用于与用户进行交互,以命令行的方式接收用户的调试操作命令,并返回调试结果信息; 所述的联调控制模块,用于启动和结束异构节点调试模块,分发调试任务并回收调试结果,对并行子任务进行同步或异步调试控制; 所述的异构节点调试模块,用于执行联调控制模块发送的调试命令; 所述的并行任务分配模块,用于将计算任务划分成多个并行的子任务,并分配调度到相应的异构节点调试模块上执行。
2.根据权利要求I所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的异构节点调试模块为由不同的异构节点组成,所述的异构机电包括协同代理单元和⑶B调试器; 所述的协同代理单元将联调控制模块发送的调试命令转换成GDB调试器能够处理的输入方式,用于控制GDB调试器的启动和结束进程,对正在进行的调试进程进行控制,并对得到的调试结果进行解析并转换成统一的消息格式; 所述的GDB调试器作为底层的源代码级调试工具对并行子任务进行具体的本地调试操作。
3.根据权利要求2所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的协同代理单元具体实现过程如下 联调控制模块与协同代理单元建立连接后,协同代理单元随即生成一个子进程用来启动并控制GDB调试器的调试进程,父进程用于与联调控制模块保持连接,将接收到的调试命令转换成符合GDB调试器要求的输入格式,在父子进程之间采用管道进行通信,用来传递控制命令和结果数据。
4.根据权利要求2所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,对于特殊异构计算环境的异构节点,利用宿主机环境中基础调试器工具来替代GDB调试器,协同代理单元对宿主机的基础调试器工具的控制命令和结果数据格式进行转换,隐藏宿主机基础调试器的差异性。
5.根据权利要求2所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的统一的消息格式包括同一控制命令格式和同一数据传输格式。
6.根据权利要求5所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的同一控制命令格式分为四个域 (1)命令序号域用于唯一地标识该命令; (2)命令名称域为命令的关键字; (3)目标节点域指定命令的作用节点; (4)参数列表域是可选的,用来存放命令的参数,多个参数之间使用”#”分隔。
7.根据权利要求5所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的同一数据传输格式分为四个域 (1)数据序号域对应于控制命令的命令序号域,指明该数据是哪个命令的调试结果; (2)源节点号域和目标节点域相对应,标识数据的来源;(3)数据类型域包含断点、挂起、数据、堆栈、错误和退出类型; (4)数据域是对数据类型域的具体描述。
8.根据权利要求I所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的联调控制模块与异构节点调试模块之间通过socket网络连接。
9.根据权利要求4所述的一种基于GDB的异构计算调试环境的实现系统,其特征在于,所述的特殊异构计算环境的异构节点为非Unix/Linux操作系统的计算机。
全文摘要
本发明涉及一种基于GDB的异构计算调试环境的实现系统,包括依次连接的用户界面模块、联调控制模块、异构节点调试模块和并行任务分配模块;所述的用户界面模块,用于与用户进行交互,以命令行的方式接收用户的调试操作命令,并返回调试结果信息;所述的联调控制模块,用于启动和结束异构节点调试模块,分发调试任务并回收调试结果,对并行子任务进行同步或异步调试控制;所述的异构节点调试模块,用于执行联调控制模块发送的调试命令;所述的并行任务分配模块,用于将计算任务划分成多个并行的子任务,并分配调度到相应的异构节点调试模块上执行。与现有技术相比,本发明具有操作简单、部署快速和成本低廉等优点。
文档编号G06F11/36GK102902620SQ20111044069
公开日2013年1月30日 申请日期2011年12月23日 优先权日2011年12月23日
发明者曾国荪, 王伟, 陈建平 申请人:同济大学, 上海红神信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1