一种面向Xdraw可视性分析并行计算的容错方法与流程

文档序号:11250743阅读:1501来源:国知局
一种面向Xdraw可视性分析并行计算的容错方法与流程

本发明属于并行计算系统容错和地形可视性分析的技术领域,涉及利用冗余计算的主从计算模式对xdraw可视性分析算法进行检错和恢复,特别提出一种面向xdraw可视性分析并行计算的容错方法。



背景技术:

并行计算系统的容错处理是一个不容忽视的问题。当系统设计到大量的计算节点或处理器时,由故障引起的各种错误难以避免。特别是对于具有大规模长时间进行计算的应用,如地理可视域分析计算,其错误可能会导致计算任务无法正常进行。一个容错的并行计算系统是指在出现逻辑故障的情况下仍然能够正确的执行计算任务。

近年来,随着系统结构的复杂性增加,半导体制造工艺的发展,线宽的降低以及集成度的提高,从用户桌面系统到分布式计算环境,乃至大规模并行计算机系统,功耗和可靠性问题都日渐突出。计算机系统的可靠性反映了系统为用户提供预定服务的能力,可靠性的高低与系统故障率紧密相关。容错技术的目的在于降低计算机系统的故障率,或者在一定故障率的前提下,提高系统能正确提供服务的概率。

容错技术虽然多样,但具有一个共同的本质,就是进行一定程度的冗余计算。所谓冗余计算是指在对关键任务进行多副本的同步计算。最基本的冗余包括时间冗余和空间冗余。时间冗余直观地讲就是复算(re-compute),包括重复进行的计算和重复进行的通信,以及对多次计算结果的比较。空间冗余又可以细分为软件冗余、硬件冗余和信息冗余。软件冗余就是设置冗余的软件模块;硬件冗余就是设置冗余的硬件部件;而信息冗余就是通过使用附加的数据来描述某些内部状态,通过对这些附加数据的考察就可以实现检错和容错。

通过对现有的研究工作分析研究发现,目前国内外已有的并行计算系统的成果主要基于硬件冗余和软件冗余机制,且主要用于故障检测,而针对故障恢复机制的研究还很少。当前主流的软件容错策略面向时间冗余的方法,导致计算失败的节点需要重新进行任务恢复。

地理可视性分析是一个数据密集型和任务密集型的长时间运行的应用问题。

地理可视性分析是指基于视线计算地形上指定的一个观察点能否看到地形上另外一个目标点,而地形可视域分析是指该观察点能够看到的地形上目标点的集合。

xdraw是一个离散的可视域分析算法,是由franklin等人提出的。xdraw算法的原理是,通过计算观察点与目标点的视线与该目标点前一层上与目标点相近的两个参考点的相交点,并通过插值得到该交点的可视高程值。如果目标点的高程值大于等于该交点的可视高程值,则目标点是可视的,否则不可视。xdraw算法以观察点为中心从内到外逐层循环计算每个格网单元的可视性,最终得到多个地形上的可视区域,称为可视域。如图1所示,o为观察点,要计算目标点p的可视性,首先确定点p的前一层上,在与视线op比较近的两个参考点r1p和r2p。视线op和直线r1pr2p的交点的可视高程值可由r1p和r2p的可视高程值插值得到,然后由视线插值得到目标点p的可视高程值。最后,通过目标点的可视高程值与目标点p的实际高程值进行比较来确定p的可视性,若目标点p的实际高程值大于等于其可视高程值,则点可视,否则不可视。同时,若点p是可视的,则点p的可视高程值为p的高程值,否则点p的可视高程值为插值得到的高程值,其用于计算后面的单元点的可视性。

为了实现xdraw算法的并行化,早期的做法是将dem(digitalelevationmodel)数据区域划分成八个45°角三角形区域,使得每个三角形区域保持独立,因而可以实现数据并行计算。xdraw算法通过由视点逐渐向外的矩形环来近似确定每个单元的可视性。以视点为中心,地形被拆分为八个规格的三角形区域。各个区域的数据基本独立,不存在数据依赖,便于数据分发和并行计算。基于等角度的区域划分,对于视点为地形的中心是可行的,可以保证数据区域的均衡性。但对于视点不在区域的中心时,等角度的区域划分导致数据不均衡。



技术实现要素:

本发明针对上述问题,提出了,一种面向xdraw可视性分析并行计算的容错方法,包括基于两种调度策略的冗余计算方法和基于回滚与复算技术的错误纠正方法。

为实现上述技术目的,本发明采取具体技术方案为,一种面向xdraw可视性分析并行计算的容错方法,包括如下步骤:步骤一、主进程读取外部数据文件,

获取地形区域参数;

步骤二、主进程根据指定的观察点坐标,将地形区域划分成若干个等面积的三角形,并计算每个三角形的参数;

步骤三、主进程分别将观察点数据和每个三角形的参数发送到主计算进程与从计算进程;

步骤四、主计算进程进行可视性计算:主计算进程接收一个三角形区域参数和观察点数据,对三角形区域按轴线方向进行线程计算,分析三角形区域的可视性;

步骤五、从计算进程可视性计算:从计算进程接收同一个三角形区域参数和观察点数据,对三角形区域按层方向进行线程计算,分析三角形区域的可视性;

步骤六、对主计算进程与从计算进程的分析结果进行纠错:主计算进程接收从计算进程的分析结果,并进行主计算进程分析结果与从计算进程分析结果的比对,若分析结果一致,则结束本次计算;若分析结果不一致,则主计算进程重复步骤四,从计算机进程重复步骤五,直至主计算进程与从计算进程的分析结果一致,则结束对该三角形区域的可视性分析,进入下一个三角形区域的可视性分析;

步骤七、直至分析完所有三角形区域的可视性,主进程检查整个计算是否结束,若结束则结束本次计算。

作为本发明改进的技术方案,步骤二中根据观察点将地形区域划分成若干个等面积的三角形是采用如下步骤进行的:

步骤a、以观察点为中心,按横向方向、纵向方向、横向方向与纵向方向的两个对角线方向,将整个区域划分成8个等角度的区域;

步骤b、对于8个等角度的区域中非三角形形状的区域,直接连接其角点和观察点,使得所有的区域都是三角形形状;

步骤c、分别计算每个三角形区域的面积,取其中面积最小的三角形作为参照三角形,然后根据每个三角形的面积计算出能细分的三角形数目,即为需要再次划分的个数;

步骤d、对每个三角形区域,按照要划分的个数进行二次划分,得到最终的若干个等面积三角形。

作为本发明改进的技术方案,主计算进程可视性计算具体包括如下步骤:

步骤一、主计算进程接收一个三角形区域参数和观察点数据,按轴线方向对三

角形区域中每段数据单元进行线程计算;

步骤二、从外部文件读取一段数据单元中的起始单元数据与结束单元数据,并启动线程按照xdraw算法逐步计算分析该段数据单元的可视性;

步骤三、重复步骤二,循环计算轴线方向的每个数据单元的可视性,直至完成对该三角形区域可视性分析。

作为本发明改进的技术方案,所述从计算进程的可视性计算具体包括如下步骤:

步骤一、从计算进程接收与主计算进程相同的三角形区域参数和观察点数据,按层方向对该三角形区域中每段数据单元进行线程计算;

步骤二、读取一段数据单元中的起始单元数据与结束单元数据,并启动线程按照xdraw算法逐步计算分析该段数据单元的可视性;

步骤三、重复步骤二循环计算层方向的每个数据单元的,直至完成对该三角形区域可视性分析,将该三角形区域可视性分析结果发送给相应的主计算进程。

有益效果

本发明提出的容错计算方法,采用主计算进程与从计算进程进行冗余计算策略,通过主计算进程分析结果与从计算进程分析结果的比较来检测是否发生计算错误,并利用回滚和复算(本文中的回滚是指主/从计算进程重新回到每段数据的起始单元,复算是指重新对计算错误的三角形区域重新进行可视性分析计算)完成故障的恢复。

本发明的主计算进程与从计算进程是采用不同的调度策略,避免程序设计的缺陷。主计算进程与从计算进程采用线程模式计算每段上的单元的可视性。当发现计算错误,主计算进程与从计算进程均回滚到出错的地方,重新计算。

本发明提出的基于等面积的三角形区域划分方法,采用轴线和对角线的初步划分方法保证区域的独立性,进而通过连接角点的方法消除非三角形区域,最后细分得到等面积的三角形,有利于三角形中每段上的起始和结束格网单元的计算。

附图说明

图1是本文中xdraw算法可视性计算原理图;

图2是本文中数据粗划分的示意图;

图3是本文中三角形区域划分示意图;

图4是本文实施例中等面积三角形划分方法的示意图;

图5是本文实施例中的按层方向的数据单元调度策略示意图;

图6是本文实施例中的按轴线方向的数据单元调度策略示意图;

图7是本发明的实施例中的容错计算的流程图;

图8是本发明的实施例中的等面积三角形区域划分流程图;

图9是本发明的实施例中的主计算进程的计算与纠错过程图;

图10是本发明的实施例中的从计算进程的可视性计算与回滚及复算过程图。

具体实施方式

以下结合附图对本发明具体说明。需要指出,所描述的实施例仅仅视为说明的目的,而不是对发明的限制。

实施例:

本发明的实施例提供了一种面向xdraw可视性分析并行计算的容错方法,包括以下步骤:

步骤101:主进程读取外部数据文件,获取地形区域参数;

步骤102:根据指定的观察点坐标,依据等面积三角形区域划分方法得到所有的三角形及其参数;

步骤103:分别发送每个三角形区域参数和观察点数据到每个主(从)计算进程;

步骤104:主计算进程接收一个三角形区域参数和观察点数据,进行线程计算,并根据需要进行回滚和复算;

步骤105:从计算进程接收一个三角形区域参数和观察点数据,进行线程计算,并根据需要进行回滚和复算;

步骤106:主进程检查整个计算是否结束。若结束,则关闭数据文件,结束本次计算。

以下进一步详细地说明本发明实施例中的各个细节问题。

本发明所涉及的数据均是点集均匀的格网dem数据,因此本文中的起始单元也可为起始格网单元,结束单元也可为结束格网单元。

a、等面积三角形区域划分,

步骤201:以观察点为中心,按照坐标轴的四个方向和对角线四个方向,将整个区域划分成8个象限;

步骤202:对于其中的非三角形形状的象限,直接连接其角点和观察点,使得所有的区域都具有三角形的形状;

步骤203:分别计算每个三角形区域的面积;

步骤204:取其中面积最小的三角形作为参照,然后根据每个三角形的面积计算出可以再次细分的三角形数目,即为需要再次划分的个数;

步骤205:对每个三角形区域,按照要划分的个数进行二次划分,得到最终的三角形。

b、主计算进程的计算与纠错过程,

步骤301:接收一个三角形区域的参数和观察点信息;

步骤302:根据三角形区域参数,将三角形区域按轴向分析,计算每个轴线方向数据段的起始格网单元和结束格网单元;

步骤303:从外部文件读取该数据段的单元数据,并启动线程按照xdraw算法逐步计算该段上的数据单元的可视性;重复此过程,直至完成对该三角形区域的可视性分析;

步骤304:主计算进程接收从计算进程发来的三角形区域的可视性计算结果;

步骤305:主计算进程将相应单元的计算结果与收到从计算进程的的计算结果进行比较;

步骤306:若结果一致,则保存该层的结果到外部文件;

步骤307:结果不一致,则要求本地的各个线程回滚到出错的三角形区域,并重新计算;同时主计算进程发送错误信息给从计算进程,转步骤304;

步骤308:主进程结束计算。

3.从进程的可视性计算与回滚及复算过程,

步骤401:获取与主计算进程相同的三角形区域参数,将三角形区域按层向分析,循环计算每个层方向的数据段的起始格网单元和结束格网单元;

步骤402:从外部文件读取一个层方向数据段的起始格网单元和结束格网单元,并启动线程按照xdraw算法逐步计算该数据段上单元的可视性;

步骤403:完成虽三角形区域的可视性计算后,发送给相应的主计算进程;

步骤404:接收来自主计算进程的比较结果;若两者计算结果一致,转步骤401进行下一个三角形区域的可视性分析;若两者计算结果不一致,则主计算进程与从计算进程均线程回滚到出错位置的三角形区域开始重新计算,即转步骤402;

步骤405:完成对所有三角形区域的可视性计算后,从计算机进程结束计算。

原理说明:

基于等面积的区域划分:如图2所示,以观察点o为中心,按照坐标轴和对角线方向将区域划分成八个等角度的区域(区域ⅰ、区域ⅱ、区域ⅲ、区域ⅳ、区域ⅴ、区域ⅵ、区域ⅶ与区域ⅷ)。当然,当o不是地形区域的中心,所划分的区域显然面积不相等。同时划分的区域存在非三角形,这不利于格网单元的计算。所以,需要将非三角形的区域转换成三角形区域,具体做法是连接观察点和角点,使得全部的区域都成为三角形,如图3所示。最后,以某个最小三角形作为面积参照,如图3中的编号为“1”三角形,将其他的三角形按照面积比例进一步细分,得到如图4所示的最终划分的等面积的三角形。因此,本实施例中基于等面积的区域划分是可行的。

当进行并行计算时,每个三角形被调度到一个进程进行可视性计算。但是,基于xdraw算法,数据存在层依赖关系,即数据单元从内层向外层依次进行计算,且外层单元的可视性计算必然依赖内层的数据单元。因此,对于一个三角形内部的格网单元的可视性计算,可采用层调度的策略进行,即每一层上的数据单元为计算单位,调度到线程进行计算,如图5所示。这样的调度方法存在层依赖,后一层上单元的可视性计算需要等待前一层的单元计算完毕。所以,这种层调度策略的效率取决于层的深度和最后一层的长度。

另外一种调度策略是沿轴线方向的调度,如图6所示。沿轴线调度也是存在轴线之间依赖,但轴线方向调度的效率取决于最长轴线的长度,且最大长度不超过坐标线上的单元数目。

因此,并行计算系统的容错计算可以采用冗余计算机制,一个称为主计算进程,一个称为从计算进程。主/从计算进程可以采用不同的调度策略,可以避免由于软件设计缺陷所带来的错误。当主/从计算进程结果不一致时,可以认为发生故障,系统可以通过回滚技术并重新进行计算的方法来纠正错误。

以上仅为本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些均属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1