发明内容
有鉴于此,本发明的目的在于提出一种高性能分布式矢量空间数据的分析方法和装置,能够实现大规模矢量空间数据的高性能计算。
基于上述目的本发明提供的高性能分布式矢量空间数据的分析方法,包括:
在空间数据分布式系统中确定MPI的主节点和计算节点;
在主节点中将空间分析的任务分解成至少一个子任务,利用MPI将子任务分发给各计算节点;
在各计算节点中完成子任务的MPI计算,将结果存储在各计算节点本地;
各计算节点将子任务的计算结果汇总至主节点上,形成最终结果;
主节点对所述最终结果进行处理或输出,等待接收下一轮的空间数据计算任务。
可选的,所述在主节点中将空间分析的任务分解成至少一个子任务包括:
确定主节点后,主节点接收空间数据计算任务;
确定主节点上空间数据计算任务对应的算法,对计算任务进行分解;
所述在各计算节点中完成子任务的MPI计算的步骤包括:在各计算节点上完成空间分析;
所述各计算节点将子任务的计算结果汇总至主节点为:将各计算节点上的空间分析结果利用MPI发送给主节点。
可选的,在主节点中将空间分析的任务分解过程中,按照矢量数据的占用字节数对矢量数据进行均匀分割,将切割后的矢量数据传递给各计算节点。
可选的,所述矢量数据是由索引数据传输至各计算节点上,再根据索引数据直接调用存储在各计算节点上得到的;若某个计算节点尚未存储矢量数据,则直接将图元数据传输至该节点上。
可选的,在各计算节点中完成子任务的MPI计算过程中,在分布式MPI计算启动时从主节点分发MPI计算算法至计算节点,在MPI计算时,各计算节点互为独立,独立完成各自的计算任务。
可选的,在空间数据分布式系统中,利用Linpack测试参数多次进行服务器性能测试,得到各参数下性能值,程序自动进行数据处理来进行不同参数下服务器性能的评估,将性能最好的服务器确定为主节点,其他服务器确定为计算节点。
本发明提供的高性能分布式矢量空间数据的节点装置,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-6任意一项所述的方法。
从上面所述可以看出,本发明提供的高性能分布式矢量空间数据的分析方法和装置,是利用成熟的MPI框架来对空间数据进行分布式计算和分析,通过在分布式系统中设计一个主节点和多个计算机节点,主节点将空间数据分析的计算任务通过MPI分发给各个计算节点,同时对各计算节点的任务完成情况进行回收,来解决空间数据分布式分析问题,是一种牺牲空间效益来换取时间效益的过程,通过对空间数据或计算任务进行分割,使得每个计算节点运行其中一部分,一方面极大的减少了单台计算机的负载,另一方面提高了系统的整体运行效率,以解决海量空间数据的高性能计算问题。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
基于上述目的,本发明的实施例提出了一种高性能分布式矢量空间数据的分析方法和装置。
信息传递接口(MPI,Message Passing Interface)是一种基于消息传递的并行编程技术,MPI标准定义了一组具有可移植性的编程接口。各个厂商或组织遵循这些标准实现自己的MPI包,典型的实现包括开放源代码的MPICH、LAM以及不开放源代码的Intel MPI。由于MPI提供了统一的编程接口,在进行并行计算时只需要设计好相应的并行算法,使用对应的MPI库就可以实现基于消息传递的并行计算。同时MPI是一种跨语言的通讯协议,支持多种操作系统,包括大多数的类UNIX和Windows系统。
如图3所示,为实现本发明高性能分布式矢量空间数据的分析方法实施例的空间数据分布式系统层级结构示意图;
实现本发明所述高性能分布式矢量空间数据的分析方法的分布式系统,包括四个层级:
用户层205,用于设置空间分析任务;
计算层206,用于通过主节点对计算节点的调度完成分布式MPI计算;
网络层203,用于完成基于MPI的任务传输;
数据层207,用于存储矢量空间数据;
进一步的,如图1所示,为本发明提供的高性能分布式矢量空间数据的分析方法的第一个实施例的流程示意图;
本发明提供的高性能分布式矢量空间数据的分析方法,包括:
步骤301:在空间数据分布式系统中确定MPI的主节点和计算节点;
步骤302:在主节点中将空间分析的任务分解成至少一个子任务;
步骤303:利用MPI将子任务分发给各计算节点;
步骤304:在各计算节点中完成子任务的MPI计算,将结果存储在各计算节点本地;
步骤305:各计算节点将子任务的计算结果汇总至主节点上,形成最终结果;
步骤306:主节点对所述最终结果进行处理或输出,等待接收下一轮的空间数据计算任务。
可选的,步骤302:在主节点中将空间分析的任务分解成至少一个子任务,包括:
确定主节点后,主节点接收空间数据计算任务;
确定主节点上空间数据计算任务对应的算法,对计算任务进行分解;
步骤304:在各计算节点中完成子任务的MPI计算,包括:在各计算节点上完成空间分析;
步骤305:各计算节点将子任务的计算结果汇总至主节点为:将各计算节点上的空间分析结果利用MPI发送给主节点。
可选的,步骤302中在主节点中将空间分析的任务分解过程中,按照矢量数据的占用字节数对矢量数据进行均匀分割,将切割后的矢量数据传递给各计算节点。
可选的,所述矢量数据是由索引数据传输至各计算节点上,再根据索引数据直接调用存储在各计算节点上得到的;若某个计算节点尚未存储矢量数据,则直接将图元数据传输至该节点上。
可选的,步骤304:在各计算节点中完成子任务的MPI计算过程中,在分布式MPI计算启动时从主节点分发MPI计算算法至计算节点,在MPI计算时,各计算节点互为独立,独立完成各自的计算任务。
可选的,步骤301:在空间数据分布式系统中,利用Linpack测试参数多次进行服务器性能测试,得到各参数下性能值,程序自动进行数据处理来进行不同参数下服务器性能的评估,将性能最好的服务器确定为主节点,其他服务器确定为计算节点。
进一步的,如图2所示,为本发明提供的高性能分布式矢量空间数据的分析方法的第二个实施例的流程示意图;
所述高性能分布式矢量空间数据的分析方法,包括:
步骤101:在空间数据分布式系统中,确定分布式系统中各节点性能。
可选的,在空间数据分布式系统中,利用Linpack测试参数多次进行服务器性能测试,得到各参数下性能值,程序自动进行数据处理来进行不同参数下服务器性能的评估。
Linpack是线性系统软件包(Linear systempackage)的缩写,是一个比较成熟的测试标准,使用线性代数方程组,利用选主元高斯消去法在分布式内存计算机上按双精度(64bits)算法,测量解线性方程的稠密系统所需的时间。
步骤102:在空间数据分布式系统中确定MPI的主节点和计算节点,将性能最好的确定为主节点,其余的确定为计算节点。
可选的,主节点是整个分布式计算程序的核心,在计算前需要已知空间数据分析计算算法、已知计算的空间数据对象,同时需要确定各计算节点的状态。主节点需要负责任务、数据或参数的分解分发,同时需要与用户层进行交互,将性能最好的服务器确定为主节点,将其他服务器确定为计算节点。
步骤103:在空间数据分布式系统中确定MPI的主节点和计算节点,将性能最好的确定为主节点后,用户输入计算任务,主节点接收空间数据计算任务。
可选的,用户输入计算任务,进行矢量空间分析,所述空间分析可以包括:叠加分析、缓冲区分析、网络分析等。
步骤104:确定主节点上空间数据计算任务对应的算法。
可选的,确定主节点上用户输入空间分析的计算任务对应的算法,该算法可以是基于MPI编程标准,利用FORTRAN、C或C++语言进行程序算法编写,将空间分析的任务进行分解,将任务的方式分解成小的任务。
所述该算法包括:
将空间数据读入,分为图层1,图层2;
选择一份较大的图层如图层1建立四叉树空间索引;
利用图层1上的空间索引,计算图层1和图层2中所有的几何对象相交的区域,作为结果的的一部分进行输出;
构建内存中的哈希表,键为图层1或图层2的其中一个几何对象,值为所有的和这个几个对象有相交的区域的联合;
遍历哈希表,对每一个哈希元组有键key,值value,计算键和值的差,作为结果的一部分输出。
步骤105:确定主节点上空间数据计算任务对应的算法,对计算任务进行分解。
对空间分析的任务进行分解,主要是对矢量空间数据进行均匀切割,并以此将其传递给各计算节点。由于矢量空间数据规模较大,若直接进行数据的传输会使得系统整体受到网络传输速率的限制,影响计算性能,因此切割后的矢量空间数据并非将其真实图元数据进行传输,而是将其索引数据传输至各服务器计算节点上,再根据索引数据直接调用存储在各服务器节点上相应的矢量数据,若某个节点尚未存储矢量空间数据,则将这部分真实矢量图元数据传输至该节点上。
步骤106:在主节点中将空间分析的任务分解成至少一个子任务,利用MPI将子任务分发给各计算节点。
可选的,利用MPI,将分解后的任务发放给各计算节点,其中将分解后矢量数据的索引数据进行传递,以实现分解后的计算本地化,减少大数据集的网络传输。若某台计算节点上尚未存储数据,则直接将图元数据传递给该节点。
步骤107:在各计算节点中完成子任务的MPI计算,在各计算节点上完成空间分析,将结果存储在各计算节点本地。
可选的,在各计算节点中完成子任务的MPI计算过程中,在分布式MPI计算启动时从主节点分发MPI计算算法至计算节点,在MPI计算时,各计算节点互为独立,独立完成各自的计算任务。
步骤108:各计算节点将子任务的计算结果汇总至主节点上,形成最终结果。
可选的,将各计算节点上的空间数据分析结果利用MPI程序发送给主节点,在主节点上进行汇总及处理,如图形结果的拼接等。
步骤109:主节点对所述最终结果进行处理或输出,等待接收下一轮的空间数据计算任务。
获得各计算节点上的结果后,判断主节点上是否有新的计算任务,若没有,则将上述结果反馈给用户层,若有则进行下一轮的将计算任务进行分解。
从上述实施例可以看出,本发明实施例提供的高性能分布式矢量空间数据的分析方法,是利用成熟的MPI框架来对空间数据进行分布式计算和分析,通过在分布式系统中设计一个主节点和多个计算机节点,主节点将空间数据分析的计算任务通过MPI程序分发给各个计算节点,同时对各计算节点的任务完成情况进行回收,来解决空间数据分布式分析问题,是一种牺牲空间效益来换取时间效益的过程,通过对空间数据或计算任务进行分割,使得每个计算节点运行其中一部分,一方面极大的减少了单台计算机的负载,另一方面提高了系统的整体运行效率,以解决海量空间数据的高性能计算问题。
基于上述目的,本发明还提出了一种执行所述高性能分布式矢量空间数据方法的装置的实施例。如图4所示,为本发明提供的执行所述高性能分布式矢量空间数据的分析装置的实施例的硬件结构示意图;
所述装置包括:
一个或多个处理器901以及存储器902,图3中以一个处理器901为例。
所述执行所述高性能分布式矢量空间数据的分析方法的装置还可以包括:输入装置903和输出装置904。
处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图3中以通过总线连接为例。
存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述高性能分布式矢量空间数据的分析方法对应的程序指令/模块(例如,附图2所示的计算层206)。处理器901通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的高性能分布式矢量空间数据的分析方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据推荐装置的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至会员用户行为监控装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置903可接收输入的数字或字符信息,以及产生与数据推荐装置的用户设置以及功能控制有关的键信号输入。输出装置904可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器902中,当被所述一个或者多个处理器901执行时,执行上述任意方法实施例中的高性能分布式矢量空间数据的分析方法。所述执行所述高性能分布式矢量空间数据的分析方法的装置的实施例,其技术效果与前述任意方法实施例相同或者类似。
所述装置可以为节点设备,当该装置作为主节点时,该装置执行所述以下步骤:
步骤302:在主节点中将空间分析的任务分解成至少一个子任务;
步骤303:利用MPI将子任务分发给各计算节点;
步骤306:主节点对所述最终结果进行处理或输出,等待接收下一轮的空间数据计算任务。
当该装置作为计算节点时,该装置执行所述以下步骤:
步骤304:在各计算节点中完成子任务的MPI计算,将结果存储在各计算节点本地;
步骤305:各计算节点将子任务的计算结果汇总至主节点上,形成最终结果;
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。