首页> 中国专利> 面向数据密集型遥感图像处理的泛型编程的框架编程方法

面向数据密集型遥感图像处理的泛型编程的框架编程方法

摘要

本发明涉及一种面向数据密集型遥感图像处理的泛型编程的框架编程方法,技术方案为:1)针对遥感影像数据规模大、数据结构复杂等特征,构建分布式遥感影像数据模型;2)在遥感数据并行处理算法分析的基础上,对重复出现的公共并行计算模式进行建模和抽象,建立面向遥感数据处理算法的并行算法;3)通过模板机制对并行算法进行封装,实现泛型编程的算法模型。本发明有益效果:遥感应用算法提供了并行编程范式,能有效降低海量遥感数据处理应用的并行编程难度,克服了传统的遥感数据处理中对领域专家编程能力要求高的缺陷,大大促进了并行计算技术在全球变化、动态灾害监测等覆盖大区域甚至全球的大规模遥感数据处理中的广泛应用。

著录项

  • 公开/公告号CN103019671A

    专利类型发明专利

  • 公开/公告日2013-04-03

    原文格式PDF

  • 申请/专利号CN201210376490.6

  • 发明设计人 马艳;王力哲;刘定生;刘鹏;

    申请日2012-10-08

  • 分类号G06F9/44;G06F17/30;

  • 代理机构北京纽乐康知识产权代理事务所;

  • 代理人覃莉

  • 地址 100094 北京市海淀区邓庄南路9号

  • 入库时间 2024-02-19 18:43:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-17

    授权

    授权

  • 2013-10-02

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20121008

    实质审查的生效

  • 2013-04-03

    公开

    公开

说明书

技术领域

本发明涉及遥感数据处理领域,尤其涉及一种面向数据密集型遥感图像处理的泛型编程的框架编程方法。

背景技术

随着遥感技术的快速发展,遥感影像数据正以每日TB级的速度增长,如何实时、快速、高效地处理海量数据是当前遥感数据应用中面临的重要挑战。基于分布式并行集群的高性能并行计算技术的高速发展,为数据密集型遥感图像处理提供了重要技术手段。目前,多核集群系统正逐渐成为并行计算的主流。这种混合并行系统具有复杂的多层并行结构及日益庞大的系统规模,其并行程序开发存在多级并行化问题(节点间并行和多核并行),涉及消息传递和共享内存两种模型,并行编程难度大。由于自动并行编译技术在短期内尚不成熟,对于数据密集型的海量遥感数据处理,遥感领域专家在应对海量的多维遥感影像数据和复杂遥感应用算法的同时,还必须具备充分的并行系统结构知识,进行数据划分、并行任务分解、同步和进程通信等并行算法设计与编程实现,这对领域专家的编程能力提出了很高的要求。因此,如何提供一种能简化并行程序开发过程、提高并行程序开发效率的并行编程模型显得非常迫切。

目前,在并行计算领域,常用的简化并行编程方法主要为Skeleton(框架)并行编程方法,其基本思路是基于泛型编程思想对重复出现的并行计算模式进行抽象,为问题并行求解提供通用的并行实现框架(Skeleton),从而摆脱琐碎的并行细节,可大大简化并行编程。当前已有许多Skeleton相关研究,包括SkeTo、QUAFF、P3L、Cole等,各应用领域也定义专用并行Skeleton,如Google用于分布式数据挖掘的MapReduce模型本质上也是一个专用Skeleton。然而,由于海量遥感数据处理应用有其自身的特点,如海量的多维遥感影像数据计算与遥感影像数据在多维度上相关、数据处理流程复杂且处理流程的任务间存在计算依赖等,这使得当前已有的典型通用并行编程Skeleton无法直接用于海量遥感数据应用算法的并行编程中。因此,目前还没有面向海量遥感数据处理的并行编程Skeleton相关方法技术。

发明内容

本发明的技术解决问题是:克服现有的数据密集型遥感数据处理编程繁琐、困难、并行效率低的缺陷,提供一种基于算法Skeleton的面向海量遥感数据处理的并行编程模型,该方法将泛型编程引入到遥感应用算法的并行开发中,在遥感算法的并行计算特点、并行算法框架分析的基础上,对海量遥感数据处理方法进行Skeleton建模和抽象,建立数据密集型遥感数据处理算法的并行编程范式。该方法能有效降低海量遥感数据处理的并行编程难度,克服了传统的遥感数据处理中对领域专家编程能力要求高的缺陷。

本发明的目的通过以下技术方案来实现:

一种面向数据密集型遥感图像处理的泛型编程的框架编程方法,包括以下步骤:

1)在遥感数据处理算法的计算特点和并行算法框架分析的基础上,对重复出现的公共并行计算模式进行建模,抽象出面向海量遥感数据处理的并行算法Skeleton,从同类遥感应用算法的并行求解过程中提取并抽象出公共的并行算法框架Skeleton;

2)针对遥感影像数据的多波段图像数据结构(三维矩阵)、复杂地理信息数据结构及大数据规模等特性,研制分布式遥感影像数据模型RSData Templates;

3)在分布式遥感影像数据模型RSData Templates的基础上,进一步提出分布式遥感影像数据模型(Dist_RSData)的泛型抽象和C++模板类封装;

4)利用C++模板机制对各个并行算法Skeleton进行Template封装,并基于多核集群系统平台的MPI运行时环境,对并行算法Skeleton的并行结构在多核集群平台的自动映射、计算任务划分及子任务在计算节点间的自动分配,并行算法框架及计算节点通信等并行细节进行预实现;以及

5)利用数据类型模板中的分布式大规模遥感影像数据Dist_RSData Template进行大规模遥感影像数据的多级数据划分、跨节点数据分布,所述多级数据划分,可调用自与应用算法相匹配的自定义数据划分策略函数对大规模遥感影像数据进行多级递归数据划分(图像数据分块与地理信息重新计算)。

进一步的,采用并行文件系统提供遥感影像屋里数据块的I/O节点分布信息指导遥感影像划分的数据逻辑分块在计算节点间的映射,可在多节点、多核间进行遥感影像数据的多级数据分布,为并行Skeleton所处理的海量大规模复杂遥感影像数据提供复杂数据结构描述及数据分布和缝合机制,从而简化并行编程中繁琐的复杂遥感数据结构处理。

本发明的有益效果为:为遥感应用算法提供了并行编程范式,使得遥感应用领域技术人员,无需熟悉高性能计算平台上基于机群的并行计算模型、也无需具备MPI并行编程技术等与高性能并行计算相关的技术细节,只需要套用模板的方式,便可实现遥感处理算法的快速并行化,并达到较高的并行效率,有效降低海量遥感数据处理应用的并行编程难度,克服了传统的遥感数据处理中对领域专家编程能力要求高的缺陷。

附图说明

图1为本发明实施例中并行编程模型的总体框架示意图; 

图2为本发明实施例中不同类型的遥感计算的数据相关性分析;

图3为本发明实施例中局部相关类算法(RS Farm-pipeline)Skeleton的并行结构图;

图4为本发明实施例中遥感图像畸变校正类算法框架示意图;

图5为本发明实施例中棋格划分策略示意图;

图6为本发明实施例中不规则数据划分方法示意图;

图7为本发明实施例中RS Feature Abstract Skeleton的并行结构;

图 8 为本发明实施例中遥感影像数据对象的数据组成示意图;

图 9 为本发明实施例中遥感影像数据属性数据的数据结构示意;

图 10 为本发明实施例中带重叠区的遥感影像数据RSBlock示意图;

图 11 为本发明实施例中分布式遥感影像数据模型Dist_RSData的数据划分与分布流程图;

图 12 为本发明实施例中分布式遥感影像数据模型数据划分流程图;

图 13 为本发明实施例中分布式遥感影像数据模型数据分布示意图。

具体实施方式

本发明实施例所述的一种面向数据密集型遥感图像处理的泛型编程的框架编程方法,包括以下步骤:

1)在遥感数据处理算法的计算特点和并行算法框架分析的基础上,对重复出现的公共并行计算模式进行建模,抽象出面向海量遥感数据处理的并行算法Skeleton,从同类遥感应用算法的并行求解过程中提取并抽象出公共的并行算法框架Skeleton;

2)针对遥感影像数据的多波段图像数据结构(三维矩阵)、复杂地理信息数据结构及大数据规模等特性,研制分布式遥感影像数据模型RSData Templates;

3)在分布式遥感影像数据模型RSData Templates的基础上,进一步提出分布式遥感影像数据模型(Dist_RSData)的泛型抽象和C++模板类封装;

4)利用C++模板机制对各个并行算法Skeleton进行Template封装,并基于多核集群系统平台的MPI运行时环境,对并行算法Skeleton的并行结构在多核集群平台的自动映射、计算任务划分及子任务在计算节点间的自动分配,并行算法框架及计算节点通信等并行细节进行预实现;以及

5)利用数据类型模板中的分布式大规模遥感影像数据Dist_RSData Template进行大规模遥感影像数据的多级数据划分、跨节点数据分布,所述多级数据划分,可调用自与应用算法相匹配的自定义数据划分策略函数对大规模遥感影像数据进行多级递归数据划分(图像数据分块与地理信息重新计算)。

采用并行文件系统提供遥感影像屋里数据块的I/O节点分布信息指导遥感影像划分的数据逻辑分块在计算节点间的映射,可在多节点、多核间进行遥感影像数据的多级数据分布,为并行Skeleton所处理的海量大规模复杂遥感影像数据提供复杂数据结构描述及数据分布和缝合机制,从而简化并行编程中繁琐的复杂遥感数据结构处理。

具体实施时,面向遥感数据处理算法的并行算法Skeleton建模与抽象(遥感数据处理算法归类及并行性分析)的分析如下:

(1) 遥感处理算法的归类及并行性分析

遥感影像数据的多波段结构和几何特性,使得遥感数据处理算法具有天然的内在数据并行性,同时计算与数据也具有一定的几何相关性。遥感数据处理算法种类繁多,包括常规遥感图像处理算法和遥感信息提取算法,这些算法遥感应用算法中存在着不同的计算特性及数据相关性,其中包括数据独立、局部数据相关、波谱数据相关、全局数据相关。图2中对不同的数据相关性进行了分析。

数据独立,为点运算模式,即输出图像可以由输入图像中每个像素的独立运算得到,与其他像素点无关,其数据并行性最好。其中包括简单的图像代数运算,辐射校正/定标,图像拉伸增强等。S表示源遥感影像数据,R表示处理结果,x,y表示像素p在图像中的空间位置,b表示像素p所在的图像波段号,f表示计算公式,该类型算法的计算模式为:

                                                

邻域相关,多为邻域运算模式,即输出图像中某个像素的运算与输入图像中该像素位置)的邻域局部(窗口)中的数据相关,具有很好的数据并行性。其中包括图像插值、几何校正、图像滤波等。region(S_(b,x,y) )为图像波段b中以像素点S_(b,x,y)为中心的数据区域,则该类型算法的计算模式可表示为:

 波段相关,为波段间运算模式,即输出图像中某个像素的运算与多个波段图像中该象素位置或该象素领域的数据相关,即对于某像素点的运算需要对多波段图像相应位置的光谱值所组成的向量参与计算,如像素级融合算法、部分变换类算法等变换类算法,以及植被指数、干旱等特征信息提取算法等。vector(S_(x,y) )表示多个波段图像中对应(x,y)空间位置的像素值组成的向量,则该类型算法的计算模式可表示为:

 

全局相关,全局操作模式,即输出图像中某个像素的运算与整个输入图像空间的数据相关。S_b表示图像波段b,则该类型算法的计算模式可表示为:

 

针对具有不同数据相关性的遥感数据处理算法,其算法并行性也不尽相同,在算法并行化中也将对应不同的并行计算模式,包括不同的任务划分方法、数据划分策略等。因此,在计算特点及计算的数据相关性分析的基础上,根据计算的数据相关性以及遥感数据处理算法的处理流程对遥感数据并行处理算法进行分类,并对该类算法的数据计算模式、并行结构、任务/数据划分策略、并行算法流程、节点通信模式进行抽象,并建立相应的并行算法框架Skeleton。

(2) 不同类型的遥感处理算法Skeleton框架的构建

A)RS Farm-pipeline Skeleton(局部相关类算法框架)

RS Farm-pipeline Skeleton主要针对具有数据独立性的点运算模式遥感算法、波段相关运算模式、具有数据邻域相关性的邻域运算模式遥感算法,且不包含产生几何形变的处理算法。因此,该算法Skeleton能适应很多数遥感数据处理算法。其数据计算模式可表示为:S为源遥感影像数据,R为结果遥感影像数据,x,y表示像素p在图像中的空间位置,b表示像素p所在的图像波段号, 表示图像波段b中以像素点为中心的数据区域,,f表示计算公式,则:

或或

且满足,即图像不发生几何形变。

这些算法具有极好的数据并行性,数据处理任务可进行细粒度划分,各数据块的计算是相互独立的,可以完全并行处理。针对多核集群中存在两层并行结构,即节点并行和节点内多核并行,因此,在该算法Skeleton中拟采用Farm-pipeline两层并行结构。第一层,为节点并行层,采用并行计算中常用的Farm并行结构,管理节点Master负责任务划分及任务分配,处理的结果遥感影像数据块的缝合及输出,工人节点worker负责对分配子任务中遥感影像数据块的并行处理,工人节点之间无需数据通信和数据交互;第二层为多核并行层,采用pipeline流水线并行结构,针对遥感影像数据的大数据规模将引起大量的数据I/O,因此在计算节点内部由数据载入、数据处理(多线程并行)、节点内数据缝合与输出构成流水线,在多处理线程并行处理数据块i-1的同时,数据载入线程进行数据块i的数据预取,即可以计算节点内部,同时对数据块i, i–1, i–2进行并行处理,在增加并行性的同时,使得计算与I/O充分重叠。Farm-pipeline两层并行结构如图3所示。

该Skeleton适用的遥感数据处理算法中,理论上可采用任意任务划分和数据划分方式,而且任务划分和数据划分将采用相同的划分方式,从而保证计算的数据局部性。而为了充分利用多核集群中多核处理器的并行性能,可采用规则的两级任务/数据划分策略,第一次切分后为节点处理任务,第二次划分是将节点任务进行切分得到节点内线程处理任务。如两级棋格划分(multipatch),先行划分后列划分(row-col)、先波段划分后行划分(band-row)等。

其中波段相关算法不能采用band-row划分,因为某像素的计算与多个波段的组成的像素向量相关,因此不能对处理任务/处理数据进行波段切分。

而点运算算法和局部相关算法则可以选择以上任意的划分算法进行并行处理。

  本Skeleton针对该类遥感数据处理应用的并行算法流程为:

  Master:slice() ,进行计算任务划分和数据划分

  Slave: 

步骤1:创建流水线pipeline;Stage1:load(Aij),载入映射到该节点的遥感影像数据块 Aij;stage2:comp(f(Aij-1)),利用多线程对遥感影像数据Aij-1进行f(Aij-1)并行处理的每个像素值,得Bij-1=f(Aij-1);stage3:zip(Bij-2),对计算结果Bij进行缝合处理,并输出Bi;步骤2:流水线结束;

即并行算法流程可表示为:farm[slice,pipeline[load, parallel[comp], zip]]。

c)RS Image Wrapper Skeleton(畸变校正类算法框架)

RS Image Wrapper Skeleton主要针对遥感该算法框架主要针对图像畸变处理算法,即对原始遥感影像数据中存在的几何畸变进行校正处理的算法,如几何校正、静校正、DEM校正、变形校正等算法。因此,该类算法进行校正后的结果遥感图像数据与原始遥感影像数据的数据形状、数据大小、对象像素的几何位置等将不发生变化而不再一致。其数据计算模式也为数据邻域相关性的邻域运算模式,但是输出图像中某个像素的运算与输入图像中该像素对应的共轭点的邻域窗口中的数据相关。问题在于,该数据相关邻域是以共轭点为中心的数据区域,而共轭点并不能在算法一开始就确定,而是在计算过程中根据几何畸变校正产生的map映射关系计算共轭点,这就意味着并行计算中的数据划分依赖于后面的计算过程,这给数据划分带来了很大的难度,无论如何进行数据划分都很难和任务划分一致,那么每个计算节点势必需要与其他计算节点进行数据交换,这对于大规模遥感影像数据的处理将会带来很大的网络开销。因此,我们为该类典型算法应用单独进行算法Skeleton抽象。

该类算法也具有很好的数据并行性,数据处理任务之间也是相互独立的,因此也将采用Farm-pipeline两层并行结构。如图7所示,第一层,为节点并行层,采用Farm并行结构;第二层,在节点内部,采用pipeline流水线并行结构。

A表示原始遥感影像数据,f表示处理过程,B表示结果遥感影像数据。对处理任务B进行划分,可对B采用两级棋格划分(图5),及进行两次递归划分,每次划分都分别在行列两个方向进行切分,第一次切分后为节点处理任务,第二次为节点内线程处理任务。

该Skeleton中不宜使用常规的规则划分策略对数据A进行划分,因为规则划分会带来每个计算节点间大量数据交换。因此,本Skeleton将拟采用不规则数据划分策略,该数据划分策略将以数据任务B的划分策略为指导进行划分,并利几何畸变校正中的map映射关系计算A的数据划分,其中划分后的数据块之间是可能存在交集的,因此是一种不严格的划分方法。

不规则划分策略:

输入:遥感影像数据A

mapf(): mapf几何映射关系函数

       处理任务划分

输出:不规则划分

步骤1:用mapf几何映射关系,计算与 相关的数据区域,For  in;步骤1.1:用几何映射关系函数,计算与相关的不规则数据区域region,Region= mapf();步骤1.2:用矩形区域 对不规则数据区域region进行近似逼近=approximate(Region)approximating,End;步骤2:返回划分结果 ,RS Image Wrapper Skeleton的并行算法框架为:

  Master:

步骤1:mapf,求解B->A的几何映射关系(逆映射);步骤2:B=mapf(A) ,计算处理任务规模B;步骤3:taskslice(),进行计算任务划分 

  Slave: 

步骤1:创建流水线pipeline;Stage1:dataslice(), 利用不规则划分策略,根据mapf、 求解;stage2:load(Aij),载入遥感影像数据块 Aij;stage:3:comp(f(Aij-1)),利用多线程对遥感影像数据Aij-1进行f(Aij-1)并行处理的每个像素值,得Bij-1=f(Aij-1);Stage4:zip(Bij-2),对计算结果Bij进行缝合处理,并输出Bi;步骤2:流水线结束

即并行算法流程可表示为:

 

在该Skeleton的并行算法框架中,将数据划分推后,各计算节点调用不规则数据划分方法,根据几何映射关系mapf计算、任务划分计算子任务Bi对应的准确数据划分块Ai,如此就避免了一开始盲目的数据划分造成的节点间频繁数据通信。

(c)RS Feature Abstract Skeleton(特征提取类算法框架)

RS Feature Abstract Skeleton主要针对植被指数、干旱模型、直方图统计等特征提取类算法,即从遥感影像数据中提取特征信息,将特征信息进行汇总及全局处理。其中特征提取过程可能是点运算模式、波段相关模式或领域相关的局域区域计算模式,因此并行性很好,其并行计算过程与RS Farm-pipeline Skeleton相同;而特征信息进行汇总及全局处理则涉及全局通信和全局数据处理。因此,RS Feature Abstract Skeleton将特征提取类算法进行并行算法框架抽象。

如图7所示,RS Feature Abstract Skeleton的并行结构分为两个阶段,第一阶段采用Farm-pipeline两层并行结构,第二阶段为reduce全局通信。其中Farm-pipeline两层并行结构,第一层,为节点并行层,采用Farm并行结构;第二层,在节点内部,采用pipeline流水线并行结构。

RS Image Wrapper Skeleton的并行算法流程为:

Master:slice(),进行计算任务划分和数据划分

Slave: 

步骤1:创建流水线pipeline;Stage1:load(Aij),载入遥感影像数据块 Aij;stage2:comp(f(Aij-1)),利用多线程对数据块Aij-1进行f(Aij-1)并行处理,得localRes=f(Aij-1);stage3:merge(localRes),对计算结果localRes进行合并;步骤2:reduce(op) , 对每个节点的计算结果localRes进行op全局处理;

即并行算法流程可表示为:

 

2.   构建分布式大规模遥感影像数据模型

针对遥感影像数据的多波段图像数据结构(三维矩阵)、复杂地理信息数据结构及大数据规模等特性,RSData Templates提供遥感影像数据模型(RSData)、遥感影像数据块模型(RSBlock)的泛型抽象及C++模板类封装,并在此基础上进一步提出分布式遥感影像数据模型(Dist_RSData)的泛型抽象和C++模板类封装。RSData Templates中三个数据模型对应的模板类关系如下:

(a)遥感影像数据模型(RSData)

遥感影像数据,包括可见光、多光谱、高光谱、SAR遥感影像等,通常都由具有多波段结构的图像数据和属性数据组成。属性数据为可对遥感影像进行自描述的元数据,包括图像信息、地理信息及卫星传感器信息等,与图像数据紧密关联且参与遥感数据处理过程,并在计算过程中发生数据转换。因此,在遥感影像数据模型的建模中,将包含图像数据及其属性信息的遥感影像数据抽象为一个遥感影像数据对象。

图 8 遥感影像数据对象的数据组成示意图

根据图8给出的遥感影像数据对象数据组成,遥感影像数据对象可抽象为图像属性,图中的遥感影像数据A可以数学表示为:

T为多波段结构的遥感图像数据,保存图像的光谱信息和空间位置。其中单幅图像通常以二维矩阵表示,而于多波段遥感图像T则在单幅图像基础上增加了一个波谱维度,可以采用三维矩阵数据结构表示,对于具有k波段的m* n像元的遥感图像可数学表示为:

 T=[a_(z,x,y) ]   ,0<z<k,0<x<m,0<y<m   

式中,z为波谱维,x为行维,y为像元维。

多波段遥感图像数据T通常都按如上的波段主序排列,但在不同遥感算法中根据计算需要,也会采用不同的数据排列方式。因此,在本数据模型中将提供三种常用的排列方式,包括BSQ、BIL、BIP。BSQ(band major sequence)为波段主序排列,适合大多数算法,各波段的二维图像数据按波段顺序排列(波段顺序,(行号顺序,(像元号顺序))),数据T可表示为[a_(z,x,y) ]。BIP格式(band interleaved by pixel)为像素交错排列,适合波谱向量进行计算的光谱分析算法及变换类算法等,每个像元按光谱波段排序,然后对像元按先列后行排列(行号顺序,(像元号顺序,波段次序)),数据T可表示为[a_(x,y,z) ]。BIL(band interleaved by line)为行交错排列,对每个数据行按波段顺序排列,最后对按行排列。(行号顺序,(波段顺序,(像元号顺序))),数据T可表示为[a_(x,z,y) ]。

P为包括图像信息、地理信息及卫星传感器信息的属性数据,如图9所示。其中图像信息包括图像的区域大小、数据类型、数据排列方法等;地理信息包括四角经纬度、大地坐标的地理位置信息、地面分辨率及投影参数信息;卫星传感器包括卫星轨道参数、传感器参数等。其中,对于不同的遥感影像数据,其传感器信息和投影参数的数据项都不仅相同,这就意味着针对不同投影方式,属性数据是个动态的数据结构,这给属性数据的表示带来了很大麻烦。因此,针对不同投影方式其投影参数不同的问题,我们拟采用GDAL的WKT投影字符 串进行标准化表示,这种表示方式能够扩展各种投影参数,能与标准Proj4投影字符串进行转换,且GDAL也有相应的lib库支持。而对于传感器参数,拟仿照投影字符串的表示方式将传感器参数归一化为传感器字符串,以适应不同的传感器参数的动态表示。

(b)遥感影像数据块模型(RSBlock)

大规模遥感影像数据在并行算法中必然要进行数据划分,划分后的遥感影像数据块是并行算法中各计算节点所处理的基本数据对象,天然地继承了遥感影像数据的数据结构。由于遥感处理算法中遥感影像数据的属性信息尤其是地理信息,参与计算过程并在计算中发生转换,因此遥感影像数据块RSBlock需继承遥感影像数据RSData的属性信息,其中的图像信息、地理信息则根据划分后的数据区域进行重新计算。

数据分块能降解遥感应用问题的处理规模,同时也给遥感影像数据处理中带来边界效应,即在计算过程中,数据块的边界由于缺乏邻域数据而无法计算,造成边界数据丢失。因此,在遥感影像数据块模型RSBlockk数据块的重叠区域Overlay纳入考虑(图10),重叠区域的设计将可以消除数据划分引起的数据块边界效应,使得数据块处理结果能无缝拼接与缝合。

遥感影像数据块还需记录RSBlock在RSData中的数据区域和位置信息,从而使数据块缝合能按数据划分的逆过程进行拼接。

 (c)分布式遥感影像数据模型(Dist_RSData)

基于遥感影像数据模型RSData,遥感影像数据块模型RSBlock,进一步提出分布式遥感影像数据模型Dist_RSData。该数据模型中对大规模遥感影像数据按图11所示流程进行多级数据划分,经划分后的数据块在多核计算节点间进行数据分布。用户可以不必关心具体的数据划分和数据节点分布细节,如同操作本地遥感影像数据RSData一样对Dist_RSData中的分布数据进行访问。

分布式遥感影像数据模型可简单抽象为图像属性 划分集合 节点分布关系,对于遥感影像数据A,则可数学表示为:

A=T⊕P⊕π(A)⊕map (π(A))

T为A的多波段图像数据,分布在集群的计算节点间,图像数据块Ti保存在对应计算节点的共享内存空间。P为数据A的属性信息。π(A)={A1,…An}为数据A的一个数据划分集合,其中An为经某种数据划分策略划分后的数据块。map (π(A))=map_f{A1,…An }为数据划分集合中数据块对应在node_1~node_m计算节点间的映射关系。

数据划分

在数据划分中,Dist_RSData可调用自与应用算法相匹配的自定义数据划分策略(函数形式)对大规模遥感影像数据进行多级递归数据划分(图像数据分块与地理信息重新计算)。“数据划分”可抽象表示为:设影像数据集A,A∈RSData.π(A)为影像数据集A的一次数据划分,A_i、A_j分别为π(A)划分的两个相邻的影像数据块RS-Block,且A_i∩A_j数据块集合运算定义时,针对RS-Block的不带重叠区的实际数据区域。

规则划分可定义为:

 

不规则划分可定义为:

 

数据划分中提供规则划分和不规则划分,其中规则划分定义为一种严格的数据划分,不同的数据块之间没有交集;而不规则划分则是应遥感处理算法的需求,数据划分可能是不规则形状数据区域,我们在划分中采用将可包含这些不规则数据区域的遥感数据矩形块的最小近似逼近来替代,因而这些数据块之间可能会存在交集。

针对多核集群的层次并行结构,通常可通过处理任务的细粒度多级划分,从而充分利用多核的并行计算能力,因而相应的数据划分也需进行多级递归划分。在分布式遥感影像数据模型的数据划分中,可按多种数据划分策略(函数形式)在空间维(行方向、列方向)、波谱维等多个维度上对大规模遥感影像进行递归数据分割,数据划分的基本流程如图12所示。

数据划分dataSlice的算法描述如下:

输入:RSData遥感影像数据A 和Policy_f()划分策略函数;输出: array(RSBlock):A的划分结果π(A)={A_ij | 0<i<n,0<j<m};步骤1:对A进行第一级划分,Policy_f (A) -> π(A)={A_1,A_2…A_n};多波段图像数据T按Split f()的划分策略进行数据切割,得到图像数据块集合{T_1,T_2…T_n},图像数据块T_i的重叠区处理,即增加重叠区,重新计算图像数据块T_i的属性信息P_i,主要是根据投影参数对P_i的地理信息geoInfo进行重新计算,包括P_i的图像信息imageInfo地理信息geoInfo的重新计算,得到{P_1,P_2…P_n};步骤2:第二级递归划分For i=1 to n A=A_i 跳到步骤1,Policy_f (A_i) ->π(A_i )={A_i1,A_i2…A_(im)}  End;步骤3:直到所有A_i划分结束。

数据分布

“数据分布”,即数据分块的节点映射关系,可表示为:设为遥感影像数据A的数据划分集合,为该数据划分在节点映射关系集合,为其中的节点映射关系,则:

 

图13给出了Dist_RSData的数据分布过程,Dist_RSData可利用用户自定义分布方式,或默认情况下可利用并行文件系统提供的遥感影像物理数据块的I/O节点分布信息控制数据块在多核集群的多个计算节点间的节点映射和数据分布,从而使计算能尽可能地靠近数据。而事实上,在算法中存在数据划分与并行文件系统的物理数据块划分不一致的情况,即遥感影像数据块A_i在并行文件系统中横跨多个节点的多个物理数据块。对于这种情况,拟根据各节点所存储数据区域的大小进行选择,即选择将数据块A_i映射到其中存储数据区域最大max(rect_(node_i ))的节点。在节点映射关系建立的基础上,利用MPI的单边通信定义能跨计算节点的分布共享内存空间,映射到各计算节点的数据块经过复杂数据类型序列化驻留在该节点的共享内存空间。如此,基于MPI的RMA远程内存访问操作,为各个进程提供对整个分布遥感影像数据Dist_RSData中所有数据远程的load/store,从而实现模板对大规模遥感影像数据的管理。

数据分布dataDistribution的算法描述如下:

输入:array(RSBlock) 数据划分π(A) map_f()数据分布策略(缺省时,利用并行文件系统分布信息);输出:array(map<rect,node>):"map (π(A))={<" A_i "," node_j ">| 0<i<n,0<j<m }" ;步骤1:从文件系统获取物理数据块的节点映射关系map;步骤2:根据并行文件系统的物理数据块映射关系map,计算数据划分的映射关系map_f :array(map<rect,node>);rect结构表示A_i的数据区域信息;步骤3:基于MPI的单边通信操作创建跨节点的分布共享内存空间;步骤4:各计算节点node_j,根据节点映射关系"<" A_i "," node_j ">" ,获取遥感影像数据块A_i ;步骤5:对A_i进行数据序列化,并驻留在该节点node_j的共享内存空间中;步骤6:结束。

数据缝合

Dist_RSData还提供了对分布遥感影像数据块A_i的数据收集和数据拼接,包括遥感图像数据的拼接,属性数据的合并计算,可视为数据划分的一个逆过程。在数据拼接前,首先要根据数据块的空间位置信息进行排序,得到这些数据块的偏序关系,再基于偏序关系进行数据缝合。

数据缝合dataZip的算法描述如下:

输入:array(RSBlock):遥感影像数据A的划分;输出:RSData:遥感影像数据A;步骤1:利用quick_sort()对做波段排序;步骤2:对相同波段的数据块 ,利用quick_sort()做行排序;步骤3:对相同起始行位置的数据块 ,利用quick_sort()做列排序;步骤4:属性数据合并计算,根据数据排序,计算拼接后遥感影像数据的属性信息P,包括数据大小、地理坐标等;步骤5:根据排序对 的图像数据进行拼接及重叠区域处理;步骤6:直到拼接结束,返回拼接结果A。

Data的模板类的接口封装中,将遥感影像数据的数据划分、数据分布操作都封装到构造函数中,即可在Dist_RSData对象创建及初始化过程完成大规模遥感影像数据的数据划分和分布等细节;此外,还封装“( )”操作符,基于MPI的RMA远程内存访问操作,通过操作符重载为各个进程提供对整个分布遥感影像数据Dist_RSData中所有数据的远程load/store。当需要进行节点数据块交换时,可不必调用MPI的消息传递接口进行消息通信,而用户可直接如同操作本地遥感影像数据RSData一样对Dist_RSData中的分布数据进行访问。

3.   基于泛型编程的Skeletons Templates实现

基于泛型编程,利用C++模板机制对各个并行算法Skeleton进行Template封装,并基于多核集群系统平台的MPI运行时环境,对并行算法Skeleton的并行结构在多核集群平台的自动映射、计算任务划分及子任务在计算节点间的自动分配,并行算法框架及计算节点通信等并行细节进行预实现;利用数据类型模板中的分布式大规模遥感影像数据Dist_RSData Template进行大规模遥感影像数据的多级数据划分、跨节点数据分布。在Skeletons Templates实现中,利用MPI并行I/O操作,各计算节点可从并行文件系统并发地载入物理数据块到分布式遥感影像数据类型中构建的分布式共享内存空间中,供各计算节点远程load/store。

虽然以上仅描述了本发明的具体实施方式范例,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更或修改均落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号