目标聚合操作处理方法和装置与流程

文档序号:16999684发布日期:2019-03-02 01:40阅读:237来源:国知局
目标聚合操作处理方法和装置与流程

本发明涉及互联网技术领域,特别涉及一种目标聚合操作处理方法和装置。



背景技术:

在许多应用中,时间序列分析是至关重要的,以能够快速地响应基于快速持续到达的数据流。例如,在股票市场应用中,多个客户端监听股票市场的价格波动,然后需要这个系统能够针对不同的客户端有效地响应分析请求。例如,每一个客户端可能需要的分析是不一样的(例如,每周股价波动率,每月平均股价等)。除了金融领域,在医疗健康、商业决策、科学计算、社交媒体和网络控制等领域中,有效的数据流处理也是非常重要的。

在数据流管理系统中,客户端通过在即将到来的数据流上注册分析请求,然后配置窗口大小(range)以及滑动距离(slide),来产生持续的分析结果。其中,滑动距离(slide)表示更新结果的时间跨度,窗口大小(range)表示需要进行聚合操作的数据大小。例如,股票应用配置中,range等于5分钟,slide等于3分钟,表明应用需要每3分钟更新一次结果,且结果来源于过去5分钟的数据。

针对如何有效地对聚合操作进行处理,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种目标聚合操作处理方法和装置,以提升加速器在处理滑动窗聚合操作的参数可适应性,从而提高其处理核函数的性能。

根据本发明的一方面,提供了一种目标聚合操作处理方法,该方法包括:

获取目标聚合操作和加速器的滑动窗口长度的参数范围;

确定所述目标聚合操作的滑动窗口长度是否超出所述参数范围;

在确定超出所述参数范围的情况下,将所述目标聚合操作拆分为多个子聚合操作,其中,每个子聚合操作的滑动窗口长度都位于所述参数范围内;

通过加速器对所述多个子聚合操作进行加速,得到多个子聚合操作的执行结果;

对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果。

在一个实施方式中,将所述目标聚合操作拆分为多个子聚合操作的步骤包括:

获取所述参数范围中的上限值;

将所述目标聚合操作顺序拆分为n个子聚合操作,其中,前n-1个子聚合操作的滑动窗口的长度为所述上限值,第n个子聚合操作的滑动窗口的长度小于等于所述上限值。

在一个实施方式中,对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果的步骤包括:

对所述子聚合操作的执行结果进行有偏移量的合并,得到所述目标聚合操作的执行结果,其中,每个子聚合操作的偏移量根据位于当前子聚合操作之前的各个子聚合操作的滑动窗口的长度确定。

在一个实施方式中,所述目标聚合操作为以下之一:累加操作、累减操作、求最大值、求最小值、求平均值。

在一个实施方式中,所述加速器为时间序列专用加速器。

另一方面,提供了一种目标聚合操作处理装置,该装置包括:

获取模块,用于获取目标聚合操作和加速器的滑动窗口长度的参数范围;

确定模块,用于确定所述目标聚合操作的滑动窗口长度是否超出所述参数范围;

拆分模块,用于在确定超出所述参数范围的情况下,将所述目标聚合操作拆分为多个子聚合操作,其中,每个子聚合操作的滑动窗口长度都位于所述参数范围内;

加速模块,用于通过加速器对所述多个子聚合操作进行加速,得到多个子聚合操作的执行结果;

合并模块,用于对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果。

在一个实施方式中,所述拆分模块包括:

获取单元,用于获取所述参数范围中的上限值;

拆分单元,用于将所述目标聚合操作顺序拆分为n个子聚合操作,其中,前n-1个子聚合操作的滑动窗口的长度为所述上限值,第n个子聚合操作的滑动窗口的长度小于等于所述上限值。

在一个实施方式中,所述合并模块具体用于对所述子聚合操作的执行结果进行有偏移量的合并,得到所述目标聚合操作的执行结果,其中,每个子聚合操作的偏移量根据位于当前子聚合操作之前的各个子聚合操作的滑动窗口的长度确定。

又一方面,提供了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述方法的步骤。

又一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。

在本发明实施例中,将滑动窗口长度超出加速器的参数范围的目标聚合操作拆分为多个滑动窗口长度都位于所述参数范围内的子聚合操作,然后,再通过加速器对多个子聚合操作进行加速,得到多个子聚合操作的执行结果,最后对多个子聚合操作的执行结果进行合并,得到目标聚合操作的执行结果。通过上述方式解决了现有的加速器参数适应度不高,而导致的对滑动窗口长度过大的聚合操作无法处理的问题,达到了提升加速器在处理滑动窗聚合操作的参数可适应性,从而提高其处理核函数的性能的技术效果。

本领域技术人员应当理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。

并且,应当理解,前述大体的描述和后续详尽的描述均为示例性说明和解释,并不应当用作对本发明所要求保护内容的限制。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:

图1是根据本发明实施例的目标聚合操作处理方法的方法流程图;

图2是根据本发明实施例的加速器可支持窗口长度为8的示意图;

图3是根据本发明实施例的当窗口长度为18时,加速器不能支持的情况示意图;

图4是根据本发明实施例的滑动窗聚合操作分解子操作1的示意图;

图5是根据本发明实施例的滑动窗聚合操作分解子操作2的示意图;

图6是根据本发明实施例的滑动窗聚合操作分解子操作3的示意图;

图7是根据本发明实施例的子输出序列合并示意图;

图8是根据本发明实施例的服务器的架构示意图;

图9是根据本发明实施例的目标聚合操作处理装置的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。

应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。

考虑到数据流管理系统中有效处理聚合操作是整个系统的瓶颈,尤其对于计算繁重的金融领域和科学计算领域。例如:求最大值、求最小值、平均值、求前n等操作,都是聚合操作。为了对这些聚合操作进行加速,一般不仅提出了一些算法上的改建,还采用fpga、asic等专用芯片来加速滑动窗聚合。

然而,由于滑动窗聚合操作的固有属性,需要大量地访问历史数据,这给硬件加速带来了适应性问题。因为在硬件实现中,需要确定缓冲区的大小来缓冲历史数据,而滑动窗聚合操作需要的历史数据的大小是由range和slide决定的。同时,滑动窗聚合操作的range和slide完全是根据用户需求来决定的,是一个无法确定的变量。

基于以上问题,在本例中提出了一种实现任意窗口长度滑动窗聚合操作的方法和装置,以提升时间序列专用加速器在处理滑动窗聚合操作的参数可适应性,从而提高其处理核函数的性能。

如图1所示,在本例中提供了一种目标聚合操作处理方法,可以包括如下步骤:

步骤101:获取目标聚合操作和加速器的滑动窗口长度的参数范围;

其中,加速器的滑动窗口长度的参数范围可以是该加速器所能支持的最大滑动窗口长度。例如,参数范围为0到10,那么表明该加速器所能支持的最大的滑动窗口长度为10。

步骤102:确定所述目标聚合操作的滑动窗口长度是否超出所述参数范围;

上述目标聚合操作的滑动窗口长度例如可以是5,可以是20,可以是15等等。如果目标聚合操作的滑动窗口长度为5,那么就不超出参数范围,如果目标聚合操作的滑动窗口长度为15或20,那么就超出参数范围。对于滑动窗口长度为5的目标聚合操作,可以直接通过当前的加速器进行加速,对于滑动窗口长度为15或20的目标聚合操作,就需要对该目标聚合操作进行处理,处理之后才可以基于当前的加速器进行加速。

步骤103:在确定超出所述参数范围的情况下,将所述目标聚合操作拆分为多个子聚合操作,其中,每个子聚合操作的滑动窗口长度都位于所述参数范围内;

在实现的时候,可以获取参数范围中的上限值,然后,将目标聚合操作顺序拆分为n个子聚合操作,其中,前n-1个子聚合操作的滑动窗口的长度为所述上限值,第n个子聚合操作的滑动窗口的长度小于等于所述上限值。例如,上限值为8,目标聚合操作的滑动窗口的长度为20,那么可以拆分为三个子聚合操作,长度分别为:8、8、4。

步骤104:通过加速器对所述多个子聚合操作进行加速,得到多个子聚合操作的执行结果;

步骤105:对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果。

具体的,对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果,可以包括:对子聚合操作的执行结果进行有偏移量的合并,得到所述目标聚合操作的执行结果,其中,每个子聚合操作的偏移量根据位于当前子聚合操作之前的各个子聚合操作的滑动窗口的长度确定。

在上例中,将滑动窗口长度超出加速器的参数范围的目标聚合操作拆分为多个滑动窗口长度都位于所述参数范围内的子聚合操作,然后,再通过加速器对多个子聚合操作进行加速,得到多个子聚合操作的执行结果,最后对多个子聚合操作的执行结果进行合并,得到目标聚合操作的执行结果。通过上述方式解决了现有的加速器参数适应度不高题,而导致的对滑动窗口长度过大的聚合操作无法处理的问题,达到了提升加速器在处理滑动窗聚合操作的参数可适应性,从而提高其处理核函数的性能的技术效果。

上述目标聚合操作可以是以下之一:累加操作、累减操作、求最大值、求最小值、求平均值。上述加速器可以是时间序列专用加速器,相应的,上述方法可以应用于时间序列分析,尤其是时间序列中滑动窗聚合操作的,并涉及到在硬件加速滑动窗聚合操作过程中,如何设计解决任意窗口长度滑动窗聚合操作。

下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

为了提高时间序列专用加速器中加速核对滑动窗大小的适应性,能够实现对任意窗口长度能进行滑动窗聚合操作而不受限于加速器在实现时给每个加速核预留的缓冲区大小。在本例中提供了一种聚合操作处理方法,可以包括如下步骤:

s1:确定时间序列专用加速器的滑动窗长度的参数范围;

s2:将滑动窗口长度参数在所述范围以外的滑动窗聚合操作分解成多个子滑动窗口聚合操作,使得每个字滑动窗聚合操作的滑动窗长度都在所述参数范围内;

s3:利用时间序列专用加速器加速所述子滑动窗的聚合操作,得到子聚合操作的运行结果;

s4:将子聚合操作的结果进行合并,得到原始滑动窗聚合操作的结果。

即,提供了一种解决任意窗口长度滑动窗聚合操作的方法,通过子聚合方法,能有效提高时间序列专用加速器在处理滑动窗聚合操作的参数可适用性,并且不需要对现有的加速器进行重新设计。

下面结合附图和具体实施方式对上述方法进行具体说明:

假设时间序列专用加速器有一个加速核ts_sum,用于求序列和,且只支持最大求8个数据的核。例如:以ts_sum(a,8)表示求序列a,窗口大小为8的和。假设当前的窗口大小为18时,那么可以按照以下方式通过现有的加速核ts_sum(a,8)来实现上述窗口大小为18的序列和。

具体的,将窗口超出范围的核函数计算分解为子核函数运算,每个子核函数的窗口长度都在加速器支持的范围之内,数学表达如下:

ts_sum(a,8)=ts_sum(a,8)+forward(ts_sum(a,8),8)+forward(ts_sum(a,2),10)

如图2所示为加速核ts_sum支持的窗口长度大小,由图2可以看出加速核支持每次访问长度为8的数据大小,然后产生一个对应的输出。图3是当应用要求窗口长度为18时,现有的加速器将不能支持。基于上述所提供的方法,可以在时间序列的窗口长度超过加速核的窗口大小时,在不改变加速核实现本身的前提下,能够完成相应的操作。

具体的,可以将整个运算拆分为4个子操作,图4是子操作1,ts_sum(a,8)完成窗口大小为8的运算,并产生子输出序列1;图5是子操作2,ts_sum(a,8)完成另外序列a从第九个数据开始的窗口大小为8的滑动窗聚合操作,并产生子输出序列2;图6是子操作3,ts_sum(a,2)完成时间序列a从第17个数据开始的窗口大小为2的滑动窗聚合操作,并产生子输出序列3。图7是子输出序列合并,其中,该输出序列合并操作是将前面子操作产生的子输出序列加起来,需要进行有偏移量的合并。如图中显示,在实现的时候,窗口长度n等于8,因此需要将子输出序列2前移8个时钟周期和和将子输出序列3前移10个时钟周期,然后将三个子输出序列进行叠加操作,从而得到最后的结果输出序列。

然而,值得注意的是,上述实现方法不仅适应于上述ts_sum这类集合操作,凡是聚合操作满足可逆性,即存在操作+和-,使得对整个序列中x和y,都有(x+y)-y=x成立,例如:求序列指定长度的最大值或最小值的ts_max、ts_min等这样一类滑动窗聚合操作都能直接使用该例中的方法。

当然,还有一些聚合操作可能不满足可逆性的要求。例如:求指定长度序列的排序值的ts_rank聚合操作,尽管无法采用本例中的开销很小的计算方式,但是可以参考排序算法“二分法”来实现滑动窗聚合操作的拆分。

通过上例的实现任意窗口长度滑动窗聚合操作的方法和装置,可以提升时间序列专用加速器在处理滑动窗聚合操作的参数可适用性,从而提高其处理核函数的性能。在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。

根据本发明实施例,还提供了一种目标聚合操作处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

上述所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图8是本发明实施例的一种目标聚合操作处理方法的计算机终端的硬件结构框图。如图8所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的目标聚合操作处理方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的目标聚合操作处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,在软件层面,目标聚合操作处理装置可以如图9所示,包括:获取模块901、确定模块902、拆分模块903、加速模块904和合并模块905,其中:

获取模块901,用于获取目标聚合操作和加速器的滑动窗口长度的参数范围;

确定模块902,用于确定所述目标聚合操作的滑动窗口长度是否超出所述参数范围;

拆分模块903,用于在确定超出所述参数范围的情况下,将所述目标聚合操作拆分为多个子聚合操作,其中,每个子聚合操作的滑动窗口长度都位于所述参数范围内;

加速模块904,用于通过加速器对所述多个子聚合操作进行加速,得到多个子聚合操作的执行结果;

合并模块905,用于对多个子聚合操作的执行结果进行合并,得到所述目标聚合操作的执行结果。

在一个实施方式中,拆分模块903可以包括:获取单元,用于获取所述参数范围中的上限值;拆分单元,用于将所述目标聚合操作顺序拆分为n个子聚合操作,其中,前n-1个子聚合操作的滑动窗口的长度为所述上限值,第n个子聚合操作的滑动窗口的长度小于等于所述上限值。

在一个实施方式中,合并模块905具体可以用于对所述子聚合操作的执行结果进行有偏移量的合并,得到所述目标聚合操作的执行结果,其中,每个子聚合操作的偏移量根据位于当前子聚合操作之前的各个子聚合操作的滑动窗口的长度确定。

在一个实施方式中,目标聚合操作可以是以下之一:累加操作、累减操作、求最大值、求最小值、求平均值。

在一个实施方式中,上述加速器可以是时间序列专用加速器。

在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。

在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。

从以上的描述中,可以看出,本发明实施例实现了如下技术效果:将滑动窗口长度超出加速器的参数范围的目标聚合操作拆分为多个滑动窗口长度都位于所述参数范围内的子聚合操作,然后,再通过加速器对多个子聚合操作进行加速,得到多个子聚合操作的执行结果,最后对多个子聚合操作的执行结果进行合并,得到目标聚合操作的执行结果。通过上述方式解决了现有的加速器参数适应度不高题,而导致的对滑动窗口长度过大的聚合操作无法处理的问题,达到了提升加速器在处理滑动窗聚合操作的参数可适应性,从而提高其处理核函数的性能的技术效果。

虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。

本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

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