一种面向并行地形可视域分析的数据划分与调度方法

文档序号:10687153阅读:201来源:国知局
一种面向并行地形可视域分析的数据划分与调度方法
【专利摘要】本发明公开了一种面向并行地形可视域分析的数据划分与调度方法。该方法主要包括:(1)面向并行地形可视域分析的数据粗粒度和细粒度的层次划分:基于等角度数据拆分策略,以视点为中心按照角度的三角形区域进行粗粒度划分;对于每个三角形区域数据,按照以视点为参照点,对列数据块进行划分的细粒度划分;(2)基于进程与线程混合的数据调度方法:进程进行粗粒度计算,而线程则进行细粒度计算。本发明的数据划分方法可以保证数据单向依赖,使得后续的调度方法能有效实现并行可视域分析,提高了地形可视域分析的效率。本发明可应用于大规模海量数据的并行地形可视域分析的高性能计算的数据划分和动态调度场合。
【专利说明】
一种面向并行地形可视域分析的数据划分与调度方法
技术领域
[0001]本发明属于数字地形分析的可视域分析和并行计算的交叉技术领域,涉及利用数据并行的方法实现可视域分析的并行化,特别是涉及一种基于粗细粒度的数据划分与调度方法。
【背景技术】
[0002]数字地形分析(Digital Terrain Analysi s,简称DTA)是在数字高程模型(Digital Elevat1n Model,简称DEM)的基础上进行地形属性计算和特征提取的数字信息处理技术。可视性分析是数字地形分析的重要地形分析因子,包括通视性分析和可视域分析。可视域分析又称地形通视分析,指的是从单个或者多个地理位置所能看到的地形范围或者与其他地理位置之间的可见程度,是数字地形分析中的不可缺少的一部分。地形可视域分析在很多相关领域都有比较重要的意义,已经成为景观分析与评估、建筑规划、军事、空间认知与决策、考古等领域的重要研究手段。由于可视域分析算法中具有的数据的全局依赖特性和局部数据依赖特性,可视性分析并行化过程中所面临的各种复杂的问题需要考虑,旧有的并行化手段无法彻底解决这一问题,同时在并行数字地形分析的大环境下,大尺度下的复杂数据依赖问题逐渐成为制约相关算法加速效果进一步提升的瓶颈。
[0003]并行可视域分析是使用并行计算的技术来解决可视域分析中的海量数据量的高效处理问题。随着各种新型传感器以及测量技术的出现,DEM数据呈级数增长,从而导致单机环境下对大规模的数据进行处理是一件十分困难的事情。因此使用并行计算技术可以有效地解决单处理器的计算瓶颈问题以及提高数据处理的效率。基于规则格网DEM的可视域计算,一种简单的方法就是沿着视线的方向,从视点开始到目标格网点,计算与视线相交的格网单元(边或面),判断相交的格网单元是否可视,从而确定视点与目标视点之间是否可视。该方法存在大量的冗余计算,导致海量规则格网DEM的可视域计算非常耗时。
[0004]目前并行可视域分析的研究热点主要集中在DEM数据拆分和可视域分析算法并行化,其中对于数据并行策略的研究主要集中在数据的有效拆分和数据调度策略方面。数据拆分主要分为等角度拆分和非等角度拆分。
[0005]基于等角度的数据拆分策略是按照角度对DEM进行数据拆分。每一块数据的视点角度为ANGLE = 360°/n,n是处理器的数目。如图1所示,以视点为中心,地形被拆分为8个规格的三角形区域。各个区域的数据基本独立,不存在数据依赖,便于数据分发和并行计算。该拆分策略可以保证数据块拆分的角度大小与计算处理器的多少有关。对于单视点的并行可视域计算具有较好的适应性,可以保证相邻进程间的可视域计算不需要交互,各进程可以根据本地数据独立计算。
[0006]但是,基于等角度的数据拆分策略具有很明显的缺点,对于形状不规则的DEM或视点不在对称中心的情况,基于等角度拆分的方式会导致各进程计算的数据总量不相同,直接导致了负载不均衡问题。另外,如果DEM数据的形状为不规则的形状(如矩形区域、NODATA数据点分布不规则等情况),该方法将会更加捉襟见肘,负载均衡的问题更加严重,很难满足具体的应用。
[0007]基于非等角度拆分是基于一种基于计算量的数据拆分方法。如图2所示的矩形区域,视点不在矩形的中心。同时非等角度划分存在三角区域之间的计算依赖问题。
[0008]为了实现负载均衡的并行计算,对于任意位置的视点,可以将该矩形区域按照面积均等地拆分为η块,η是计算节点数。任意区域的计算面积MArea = S/η,S是矩形的总面积。如果以视点与矩形左上角顶点的连线设定为Pl的一条边,只需要找到Pl的另一条边就可以组成一个封闭的计算区域,如图3a)所示。按照顺时针方向,并以矩形各顶点与视点构成的三角形为基本单位,可以计算出等于计算面积的另一顶点的坐标。依次类推,可以计算P2、P4、P5是由两个三角形组成,P3是由一个三角形组成。对于每个子区域,可以通过数据拆分进一步进行细分,如图3b)所示。
[0009]尽管数据按照角度拆分成三角形区域,每个三角形中的数据是按照视点从内到外依次计算的,存在从内到外的依赖关系,也就是说外面点的可视性计算需要依赖里面点的结果。因此,每个三角形区域的数据还能否再次拆分,以便更细粒度的并行计算,是一个核心的问题之一。

【发明内容】

[0010]本发明针对上述技术问题,针对可视域分析粗粒度拆分的三角形区域DEM地形数据,提出了一种细粒度的数据拆分方法。
[0011]本发明采用的技术方案如下:
[0012]—种面向并行地形可视域分析的数据划分与调度方法,包括:
[0013]步骤1:主进程读入DEM数据,并按照角度将DEM数据划分为8个三角形区域:首先,利用等角度的数据拆分方法,对数据进行以视点为中心的三角形区域数据粗粒度划分;然后在粗粒度划分得到的三角形区域数据的基础上,以视点为参照点,按照纵坐标轴方向的列数据块进行细粒度划分;
[0014]步骤2:主进程创建8个子进程,并将所述8个三角形区域的数据分别分发给这8个子进程;
[0015]步骤3:每个子进程接收数据,按照步骤I划分的列数据块大小启动相应的线程,次序是先从坐标轴线的所在列开始;将每个列的数据分发到相应的线程,并对每个点的可视性进行计算;
[0016]步骤4:每个子进程聚集计算结果,并发给主进程;
[0017]步骤5:主进程接收计算结果,进行结果融合,并保存结果。
[0018]本发明的技术特点及有益效果:
[0019]1、本发明提出的面向地形可视域分析的数据细粒度拆分方法,结合数据依赖关系特点,在基于角度粗粒度拆分的基础上,以视点为中心的竖列拆分策略,保证数据单向依赖,为数据调度建立基础。
[0020]2、本发明提出的基于共享内存的数据调度方法,基于进程和线程混合的计算策略,利用进程进行粗粒度计算,使用线程进行细粒度计算。三角形拆分的数据区域被分发到进程上进行计算,每个进程上的三角形区域数据再按照以视点为中心的竖列拆分,并被分配到线程上。上述调度方法可以有效实现并行可视域分析,提高了地形可视域分析的效率。
[0021]3、本发明完全可应用于大规模海量数据的并行地形可视域分析的高性能计算的数据划分和动态调度场合,例如,等角度三角区域划分的可视域分析计算、基于计算量的非等角度三角区域划分的可视域计算;也可以应用于景观分析与评估、建筑规划、军事、空间认知与决策、考古等领域的可视域分析为基础的研究手段等应用场合,提高处理效率。
【附图说明】
[0022]图1是本发明实施例中的面向地形可视域分析的等角度数据拆分原理图;
[0023]图2是非等角度可视域数据拆分策略图;
[0024]图3是非等角度数据粒度大小再次细分图,(a)为粗划分图(b)为细划分图;
[0025]图4为本发明实施例中的数据依赖关系示意图;
[0026]图5为本发明实施例中的按照竖列依赖的数据拆分图;
[0027]图6为本发明实施例中的数据分发与调度流程图。
【具体实施方式】
[0028]以下结合附图对本发明具体说明。需要指出,所描述的实施例仅仅视为说明的目的,而不是对发明的限制。
[0029]本发明的实施例提供了一种面向数字地形分析的数据划分与调度方法,主要包括:(I)面向并行地形可视域分析的数据粗粒度和细粒度的层次划分:基于等角度数据拆分策略,以视点为中心按照角度的三角形区域进行粗粒度划分;对于每个三角形区域数据,按照以视点为参照点,对列数据块进行划分的细粒度划分;(2)基于进程与线程混合的数据调度方法:进程进行粗粒度计算,而线程则进行细粒度计算。具体为:
[0030]a)数据分层拆分
[0031]如图1所示所拆分的8个三角形区域,按照可视域分析算法,每个区域的数据保持独立,可以独立调度到一个进程中进行执行。无论是按照视线计算可视域,还是按照由外层节点依赖内层节点的可视性计算方法,数据都存在从内到外逐次向外扩展,如图4所示。
[0032]如果数据按照分层调度,第I层的两个点计算完成后,才能计算第2层的三个点,因为第2层的三个点依赖第I层的两个点的可视性结果。同理,第3层的四个点需要依赖第2层的三个的可视性结果。依次类推……。这样的调度策略导致进程之间存在依赖和数据通信,进程之间存在依赖必然导致等待,因而难以并行执行。
[0033]观察图1中的三角形区域p5,第I竖列可以沿纵坐标轴从里向外可以直接执行,不需要其它点的可视性结果,而第2竖列的点的可视性计算只依赖第I列从此点内层的点的可视性。同理,第3竖列的点的可视性只依赖第2列此点内层的点的可视性,依次类推…。如图5所示,按照虚线拆分数据为多个层,每个层存在数据依赖关系。
[0034]b)基于共享内存的数据调度方法
[0035]如果一个三角形区域的数据被分发到一个进程上,那么对该区域的可视域计算可以独立进行。为了更细粒度的数据调度和基于共享内存的并行计算,按照图5的细粒度拆分策略进行线程调度和计算,有效提高计算的效率。
[0036]当按照图5所示的拆分策略,各层的数据以线程的方式进行调度执行。假设第I列的数据调度在SI线程上执行,第2列的数据调度在S2线程上执行。依次类推,第η列的数据调度在Sn线程上执行。当SI线程上的第I层的第一个点的可视性计算完成后,S2线程上的第2列上的第2个点就可以执行(第I个点可以直接执行)。依次类推,直到所有的线程执行完毕。
[0037]上述的基于的共享内存的数据调度策略,可以实现并行计算,从而提高计算的效率。
[0038]C)进程与线程混合的调度方法,如图6所示,包括以下步骤:
[0039]步骤101:主进程读入DEM数据,按照角度将数据拆分为8个三角形区域;
[0040]步骤102:主进程创建8个子进程,并将这8个三角形区域数据分别分发给这8个子进程;
[0041]步骤103:每个子进程接收数据,并按照拆分的列数据块大小启动相应的线程,并指定要计算的列数据;
[0042]步骤104:线程开始计算每个点的可视性;
[0043]步骤105:子进程聚集计算结果,并发送给主进程;
[0044]步骤106:主进程接收计算结果,进行结果融合,并保存结果。
【主权项】
1.一种面向并行地形可视域分析的数据划分与调度方法,其特征在于,所述方法包括:步骤I,主进程读入DEM数据,并按照角度将DEM数据划分为8个三角形区域:首先,利用等角度的数据拆分方法,对数据进行以视点为中心的三角形区域数据粗粒度划分;然后在粗粒度划分得到的三角形区域数据的基础上,以视点为参照点,按照纵坐标轴方向的列数据块进行细粒度划分;步骤2,主进程创建8个子进程,并将所述8个三角形区域的数据分别分发给这8个子进程; 步骤3,每个子进程接收数据,按照步骤I划分的列数据块大小启动相应的线程,次序是先从坐标轴线的所在列开始;将每个列的数据分发到相应的线程,并对每个点的可视性进行计算; 步骤4:每个子进程聚集计算结果,并发给主进程; 步骤5:主进程接收计算结果,进行结果融合,并保存结果。
【文档编号】G06T17/05GK106055656SQ201610384074
【公开日】2016年10月26日
【申请日】2016年6月1日
【发明人】窦万峰, 李亚楠
【申请人】南京师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1