一种分布式数据向量化处理方法和装置的制造方法_3

文档序号:8512463阅读:来源:国知局
下操作步骤:
[0086]步骤Cl、工作线程对该列的512个数组全部做类型转换,可以通过CPU的SSE指令来完成,延时只有纳秒级;
[0087]步骤C2、通过函数调用固定的毫秒级延时找到执行代码入口,在计算逻辑中完成对数组中数据的计算;
[0088]步骤C3、批量的做输出类型的转换,同样可以利用CPU的SSE指令集来向量化。
[0089]由于多组数据分摊了函数调用开销,每条记录的平均延时就降到十纳秒级,并且由于SSE指令的使用,计算延时能够降低一个数量级,因此每条记录的平均计算延时降到十纳秒级别。
[0090]进一步,步骤S303中对代码指令进行向量化处理包括:
[0091]步骤S3031,从原函数中抽取输入变量、临时变量和全局变量;
[0092]步骤S3032,将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量;
[0093]步骤S3033,所述临时变量和所述全局变量保持不变。
[0094]在此,对于现有的普通标量代码指令,都包含以下任意至少一项:输入变量、临时变量、全局变量、常数。首先从原函数中识别并抽取各个输入变量、临时变量或全局变量,然后进行代码转换。对于临时变量、全局变量和常数,均保持不变。而对于输入变量将其转换于代码指令的循环体内,从而将普通标量代码指令转换为向量化代码指令。
[0095]进一步,所述方法还包括:
[0096]步骤S305,按照预设条件对所述代码指令进行优化。
[0097]进一步,步骤S105中按照预设条件对所述代码指令进行优化包括:
[0098]步骤S3051,对所述代码指令进行循环展开处理以减少调用指针的次数;
[0099]步骤S3052,对所述代码指令进行合并处理。
[0100]在此,对于已经转换的向量化代码指令,可以根据预设规则进一步进行优化。例如,对于循环体:
[0101]For(i = O ;i<100 ;i++)
[0102]{
[0103]Sum = a[i]+b[i]
[0104]}
[0105]该循环体需要循环100次,每次都需要进行I次函数调用,因此共需要调用100次指令以完成计算。因此可以对该循环体进行展开,每10组数据的进行I次循环,以减少函数调用次数,虽然代码更为复杂,但是仅需要10次函数调用,代码指令的执行时间缩短了。然后进行合并处理以进一步减少函数调用次数。
[0106]图4示出本发明实施例四的分布式数据向量化处理方法的流程示意图,如图4所示,本发明实施例四的分布式数据向量化处理方法包括:
[0107]步骤S401,建立多行数据缓存以存储多行基于行的字节数组;
[0108]在此,基于行的字节数组中,各行数据的数据结构为按照对象进行排列。
[0109]步骤S402,将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
[0110]步骤S403,从原函数中抽取输入变量、临时变量和全局变量。
[0111]步骤S404,将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量。
[0112]步骤S405,所述临时变量和所述全局变量保持不变。
[0113]步骤S406,对所述代码指令进行循环展开处理以减少调用指针的次数。
[0114]步骤S407,对所述代码指令进行合并处理。
[0115]步骤S408,以上述处理后的代码指令对所述基于列的字节数组进行向量化计算。
[0116]需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0117]另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
[0118]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此夕卜,显然“包括” 一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
【主权项】
1.一种分布式数据向量化处理方法,其中,所述方法包括: 建立多行数据缓存以存储多行基于行的字节数组; 将基于行的字节数组转换为基于列的字节数组; 对代码指令进行向量化处理; 以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
2.根据权利要求1所述的方法,其中,基于行的字节数组中,各行数据的数据结构为按照对象进行排列; 所述将基于行的字节数组转换为基于列的字节数组包括: 将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
3.根据权利要求1所述的方法,其中,所述对代码指令进行向量化处理包括: 从原函数中抽取输入变量、临时变量和全局变量; 将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量; 所述临时变量和所述全局变量保持不变。
4.根据权利要求1至3中任一项所述的方法,其中,所述方法还包括: 按照预设条件对所述代码指令进行优化。
5.根据权利要求4所述的方法,其中,所述按照预设条件对所述代码指令进行优化包括: 对所述代码指令进行循环展开处理以减少调用指针的次数; 对所述代码指令进行合并处理。
6.一种分布式数据向量化处理装置,其中,所述装置包括: 缓存模块,用于建立多行数据缓存以存储多行基于行的字节数组; 转换模块,用于将基于行的字节数组转换为基于列的字节数组; 向量化处理模块,用于对代码指令进行向量化处理; 向量化计算模块,用于以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
7.根据权利要求6所述的装置,其中,基于行的字节数组中,各行数据的数据结构为按照对象进行排列; 所述转换模块还用于: 将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
8.根据权利要求6所述的装置,其中,所述向量化处理模块包括: 变量抽取子模块,用于从原函数中抽取输入变量、临时变量和全局变量; 输入变量子模块,用于将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量; 临时变量子模块,用于保持所述临时变量不变; 全局变量子模块,用于保持所述全局变量不变。
9.根据权利要求6至8中任一项所述的装置,其中,所述装置还包括: 优化模块,用于按照预设条件对所述代码指令进行优化。
10.根据权利要求9所述的装置,其中,所述优化模块包括:展开子模块,用于对所述代码指令进行循环展开处理以减少调用指针的次数;合并子模块,用于对所述代码指令进行合并处理。
【专利摘要】本发明的目的是提供一种分布式数据向量化处理方法和装置,其中,所述方法包括:建立多行数据缓存以存储多行基于行的字节数组;将基于行的字节数组转换为基于列的字节数组;对代码指令进行向量化处理;以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。本发明的分布式数据向量化处理方法和装置,避免了多次读出的系统开销,并能有效的利用系统缓存,同时通过有效的利用CPU的高效指令集来加速计划的执行效率,提高系统的性能。
【IPC分类】G06F9-44
【公开号】CN104834532
【申请号】CN201510299229
【发明人】刘汪根, 吕程, 康毅, 孙元浩
【申请人】星环信息科技(上海)有限公司
【公开日】2015年8月12日
【申请日】2015年6月3日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1