CN104834532B - 一种分布式数据向量化处理方法和装置 - Google Patents

一种分布式数据向量化处理方法和装置 Download PDF

Info

Publication number
CN104834532B
CN104834532B CN201510299229.4A CN201510299229A CN104834532B CN 104834532 B CN104834532 B CN 104834532B CN 201510299229 A CN201510299229 A CN 201510299229A CN 104834532 B CN104834532 B CN 104834532B
Authority
CN
China
Prior art keywords
vectorization
byte arrays
data
code command
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510299229.4A
Other languages
English (en)
Other versions
CN104834532A (zh
Inventor
刘汪根
吕程
康毅
孙元浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Transwarp Technology Shanghai Co Ltd
Original Assignee
Star Link Information Technology (shanghai) Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Star Link Information Technology (shanghai) Co Ltd filed Critical Star Link Information Technology (shanghai) Co Ltd
Priority to CN201510299229.4A priority Critical patent/CN104834532B/zh
Publication of CN104834532A publication Critical patent/CN104834532A/zh
Application granted granted Critical
Publication of CN104834532B publication Critical patent/CN104834532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明的目的是提供一种分布式数据向量化处理方法和装置,其中,所述方法包括:建立多行数据缓存以存储多行基于行的字节数组;将基于行的字节数组转换为基于列的字节数组;对代码指令进行向量化处理;以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。本发明的分布式数据向量化处理方法和装置,避免了多次读出的系统开销,并能有效的利用系统缓存,同时通过有效的利用CPU的高效指令集来加速计划的执行效率,提高系统的性能。

Description

一种分布式数据向量化处理方法和装置
技术领域
本发明涉及计算机领域,尤其涉及一种分布式数据向量化处理方法和装置。
背景技术
Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架,其支持在商品硬件构建的大型集群上运行的应用程序。Hadoop实现了名为MapReduce的编程范式:应用程序被分割成若干小部分,而每个部分都能在集群中的任意节点上执行或重新执行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。Hadoop使得应用程序与成千上万的独立计算的电脑能够进行PB级的数据通信。
MapReduce是Hadoop的一种计算框架,它允许软件将应用程序分成Map与Reduce两个阶段,Map阶段实现的函数用来把一组键值对映射成一组新的键值对,而Reduce阶段指定并发的Reduce(归纳)函数,对一个Map阶段输出的结果列表中的元素进行适当的合并。
Spark是和MapReduce框架类似的一种分布式计算框架,其采用轻量级的调度框架,并且使用内存来缓存中间结果,因此相对于MapReduce性能有一定的提升,但是其执行速度还是比较慢。
MapReduce的出现使得即使不懂并行计算的编程人员也可以在分布式系统上开发软件,但其执行效率却很低。MapReduce需要将一个计算任务分成多个Map任务和Reduce任务,多个任务之间的中间结果要写入磁盘,因此延时非常高。另外MapReduce是为运行长达数小时的批量作业而设计,而组成作业的每个任务的运行时间都是分钟级别,因此任务调度系统的设计是非常粗粒度的,任务的启动延时也很高,一般都在10秒左右。MapReduce的执行引擎是传统的逐行执行模式,每条记录都需要经过序列化、反序列化、数据编解码的过程,每个过程的开销都很大,因此处理延时非常高。
为了解决MapReduce任务启动延时高的问题,Spark计算框架提出了一种轻量级的调度框架,将任务启动延时降低到1秒左右。但其仍然采用逐行执行模式,每条记录都需要经过序列化、反序列化、数据编解码的过程,并且会占用大量的内存空间从而导致系统不稳定。大量的实验数据证明,一条记录的序列化、反序列化和编解码过程耗费的时间往往是实际参与计算的时间的数倍,因此Spark系统的执行效率仍然不高且系统稳定性很差,无法满足企业软件对性能和稳定性的要求。
发明内容
本发明的一个目的是提供一种分布式数据向量化处理方法和装置,以解决逐行执行模式带来的执行效率低,耗费时间久的问题。
根据本发明的一个方面,提供了一种分布式数据向量化处理方法,包括:
建立多行数据缓存以存储多行基于行的字节数组;
将基于行的字节数组转换为基于列的字节数组;
对代码指令进行向量化处理;
以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
根据本发明的另一方面,还提供了一种分布式数据向量化处理装置,包括:
缓存模块,用于建立多行数据缓存以存储多行基于行的字节数组;
转换模块,用于将基于行的字节数组转换为基于列的字节数组;
向量化处理模块,用于对代码指令进行向量化处理;
向量化计算模块,用于以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
现有的数据库计算引擎每次从系统中读出一行数据后完成整个执行计划的计算过程,然后再执行下一行数据直到计算全部完成。与现有技术相比,本发明的一个实施例通过向量化模型每次从数据库中读出一定数量的行数,并通过绑定到CPU cache的方式让这些数据驻留CPU cache(高速缓存),再去执行编译好的执行计划。这种方式避免了多次读出的系统开销,并能有效的利用系统缓存,同时通过有效的利用CPU的高效向量化指令集,如SSE(Streaming SIMD Extensions,指令集),来加速计划的执行效率,提高系统的性能。此外,通过向量化代码单元可以将原本低效的代码二次编译后生成向量化代码,大幅度提高系统的性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出本发明实施例一的分布式数据向量化处理方法的流程示意图;
图2示出本发明实施例二的分布式数据向量化处理方法的流程示意图;
图3示出本发明实施例三的分布式数据向量化处理装置的结构示意图;
图4示出本发明实施例四的分布式数据向量化处理装置的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
图1示出本发明实施例一的分布式数据向量化处理装置的结构示意图,如图1所示,本发明实施例一的分布式数据向量化处理装置包括:缓存模块101、转换模块102、向量化处理模块103和向量化计算模块104。
其中,缓存模块101,用于建立多行数据缓存以存储多行基于行的字节数组;转换模块102,用于将基于行的字节数组转换为基于列的字节数组;向量化处理模块103,用于对代码指令进行向量化处理;向量化计算模块104,用于以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
在此,缓存模块101建立多行数据缓存以存储多行基于行的字节数组,缓存可以采用CPU cache(高速缓存),从而节省了从磁盘读取数据的时间。转换模块102将基于行的字节数组转换为基于列的字节数组,改变了现有技术中对指令代码逐行执行的模式,将按行存放的数据结构转换为按列存放,然后对按列存放的数据批量进行读出、序列化、反序列化以及编解码操作,最后参与实际运算,以批量执行方式来减少函数调用开销,可以有效的利用磁盘带宽的利用率,并且能充分利用CPU cache的快速存储读取功能。向量化处理模块103对代码指令进行向量化处理。向量化处理是指对原计算代码自动进行二次编译,以生成可向量化执行的代码或指令。向量化处理后的代码指令能够应用在向量上而不是单个数据上。例如对于聚合算法,现有的普通标量代码指令只能基于单个数据进行各个数据的逐级累加聚合,每当单个数据发生变化时,都需要进行一次运算。而采用向量化代码指令可以一次应用在批量数据上,而不是逐个数据进行聚合,一次调用向量化代码指令,就可以对相同数据结构下的同类数据进行整体运算,从而减少了代码调用次数,也就相应减少了代码调用时间。最后采用向量化计算模块104以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算,现有的CPU提供了单指令多数据的指令集以进行向量化计算,如x86的SSE指令集,最多可以在一条指令中对512bit的数据完成计算。相对于标量代码指令中的一条指令一次只能计算32bit的数据,向量化指令的性能提升能够高达8倍。本发明的技术方案,将函数操作的数据从单个数据变成数组,这样可以极大的减少函数调用的开销。另外由于一次操作批量数据,CPU cache能够被有效的利用起来,cache miss ratio(高速缓存命中率)会有效的降低。从高级语言生成x86汇编时,由于操作的数据都是批量的,通过有效的组织数据并通过代码生成器生成向量化指令能够进一步加速计算。
图2示出本发明实施例二的分布式数据向量化处理装置的结构示意图,如图2所示,本发明实施例二的分布式数据向量化处理装置包括:缓存模块101、转换模块102、向量化处理模块103和向量化计算模块104。
其中,缓存模块101,用于建立多行数据缓存以存储多行基于行的字节数组;转换模块102,用于将基于行的字节数组转换为基于列的字节数组;向量化处理模块103,用于对代码指令进行向量化处理;向量化计算模块104,用于以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
进一步,基于行的字节数组中,各行数据的数据结构为按照对象进行排列;
所述转换模块102还用于:将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
在此,基于行的字节数组中,各行数据的数据结构为按照各个对象进行分类排列;基于列的字节数组中,各行数据的数据结构为按照对象的各个属性进行分类排列,从而将同一数据结构下的同类数据按类存储,便于基于向量化指令进行批量运算。以结构化查询语言(SQL,Structured Query Language)为例进行更加详细的说明。在SQL分布式计算过程中,一般需进行序列化和反序列化、列与表达式计算、自定义函数计算等。例如反序列化,需要将网络传输的字符串数据流转换为实际运算所需要的各个对象。在各个对象被生成后,再调用函数进行函数计算或者结合若干函数进行表达式计算等。
在本申请方案中,对于反序列化采用如下操作步骤:
步骤A1、创建缓存以存储多行的数据对应的字节数组(Bytes Array),例如512行数据;
步骤A2、将该类按行存储的数据进行编解码生成按列存储的列值数组,列值数组里的每个元素对应一行记录生成的列值;
步骤A2、生成Java Objects(对象)。
由于JVM的函数调用开销是固定的,多行数据的处理开销仍然是毫秒级,因此平均分配到每条记录的开销就是纳秒级。因此对每行记录的序列化、反序列化时间就从毫秒级降到了十或百纳秒级。
在本申请方案中,对于列值计算采用如下操作步骤:
步骤B1、判断当前数据是否为向量化数据,如果不是则添加一个多行数据缓冲(buffer)来保存多行数据;
步骤B2、通过代码生成器来生成CPU向量化指令,并将基于行的字节数组转换为基于列的字节数组;
步骤B3、按照基于列的字节数组调用向量化的函数来生成Java Object数组。
由于整个过程都可以向量化,列值计算的延时能够极大的降低,而函数调用的固定开销对多行记录只调用一次,因此平均到每条记录以后开销就降到十纳秒级别。
在本申请方案中,对于表达式求值采用如下操作步骤:
步骤C1、工作线程对该列的512个数组全部做类型转换,可以通过CPU的SSE指令来完成,延时只有纳秒级;
步骤C2、通过函数调用固定的毫秒级延时找到执行代码入口,在计算逻辑中完成对数组中数据的计算;
步骤C3、批量的做输出类型的转换,同样可以利用CPU的SSE指令集来向量化。
由于多组数据分摊了函数调用开销,每条记录的平均延时就降到十纳秒级,并且由于SSE指令的使用,计算延时能够降低一个数量级,因此每条记录的平均计算延时降到十纳秒级别。
进一步,所述向量化处理模块103包括:
变量抽取子模块1031,用于从原函数中抽取输入变量、临时变量和全局变量;
输入变量子模块1032,用于将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量;
临时变量子模块1033,用于保持所述临时变量不变;
全局变量子模块1034,用于保持所述全局变量不变。
在此,对于现有的普通标量代码指令,都包含以下任意至少一项:输入变量、临时变量、全局变量、常数。首先通过变量抽取子模块1031从原函数中识别并抽取各个输入变量、临时变量或全局变量,然后进行代码转换。对于临时变量、全局变量和常数,均保持不变。而对于输入变量将其转换于代码指令的循环体内,从而将普通标量代码指令转换为向量化代码指令。
进一步,所述装置还包括:
优化模块205,用于按照预设条件对所述代码指令进行优化。
其中,所述优化模块405包括:展开子模块2051和合并子模块2052。
展开子模块2051,用于对所述代码指令进行循环展开处理以减少调用指针的次数;合并子模块2052,用于对所述代码指令进行合并处理。
在此,对于已经转换的向量化代码指令,可以根据预设规则进一步进行优化。例如,对于循环体:
For(i=0;i<100;i++)
{
Sum=a[i]+b[i]
}
该循环体需要循环100次,每次都需要进行1次函数调用,因此共需要调用100次指令以完成计算。因此可以对该循环体进行展开,每10组数据的进行1次循环,以减少函数调用次数,虽然代码更为复杂,但是仅需要10次函数调用,代码指令的执行时间缩短了。然后进行合并处理以进一步减少函数调用次数。
图3示出本发明实施例三的分布式数据向量化处理方法的流程示意图,如图3所示,本发明实施例三的分布式数据向量化处理方法包括:
步骤S301,建立多行数据缓存以存储多行基于行的字节数组;
步骤S302,将基于行的字节数组转换为基于列的字节数组;
步骤S303,对代码指令进行向量化处理;
步骤S304,以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算。
在此,建立多行数据缓存以存储多行基于行的字节数组,缓存可以采用CPU cache(高速缓存),从而节省了从磁盘读取数据的时间。将基于行的字节数组转换为基于列的字节数组,改变了现有技术中对指令代码逐行执行的模式,将按行存放的数据结构转换为按列存放,然后对按列存放的数据批量进行读出、序列化、反序列化以及编解码操作,最后参与实际运算,以批量执行方式来减少函数调用开销,可以有效的利用磁盘带宽的利用率,并且能充分利用CPU cache的快速存储读取功能。对代码指令进行向量化处理。向量化处理是指对原计算代码自动进行二次编译,以生成可向量化执行的代码或指令。向量化处理后的代码指令能够应用在向量上而不是单个数据上。例如对于聚合算法,现有的普通标量代码指令只能基于单个数据进行各个数据的逐级累加聚合,每当单个数据发生变化时,都需要进行一次运算。而采用向量化代码指令可以一次应用在批量数据上,而不是逐个数据进行聚合,一次调用向量化代码指令,就可以对相同数据结构下的同类数据进行整体运算,从而减少了代码调用次数,也就相应减少了代码调用时间。最后以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算,现有的CPU提供了单指令多数据的指令集以进行向量化计算,如x86的SSE指令集,最多可以在一条指令中对512bit的数据完成计算。相对于标量代码指令中的一条指令一次只能计算32bit的数据,向量化指令的性能提升能够高达8倍。本发明的技术方案,将函数操作的数据从单个数据变成数组,这样可以极大的减少函数调用的开销。另外由于一次操作批量数据,CPU cache能够被有效的利用起来,cachemiss ratio(高速缓存命中率)会有效的降低。从高级语言生成x86汇编时,由于操作的数据都是批量的,通过有效的组织数据并通过代码生成器生成向量化指令能够加速计算。
进一步,基于行的字节数组中,各行数据的数据结构为按照对象进行排列;
步骤S302中将基于行的字节数组转换为基于列的字节数组包括:
将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
在此,基于行的字节数组中,各行数据的数据结构为按照各个对象进行分类排列;基于列的字节数组中,各行数据的数据结构为按照对象的各个属性进行分类排列,从而将同一数据结构下的同类数据按类存储,便于基于向量化指令进行批量运算。以结构化查询语言(SQL,Structured Query Language)为例进行更加详细的说明。在SQL分布式计算过程中,一般需进行序列化和反序列化、列与表达式计算、自定义函数计算等。例如反序列化,需要将网络传输的字符串数据流转换为实际运算所需要的各个对象。在各个对象被生成后,再调用函数进行函数计算或者结合若干函数进行表达式计算等。
在本申请方案中,对于反序列化采用如下操作步骤:
步骤A1、创建缓存以存储多行的数据对应的字节数组(Bytes Array),例如512行数据;
步骤A2、将该类按行存储的数据进行编解码生成按列存储的列值数组,列值数组里的每个元素对应一行记录生成的列值;
步骤A2、生成Java Objects(对象)。
由于JVM的函数调用开销是固定的,多行数据的处理开销仍然是毫秒级,因此平均分配到每条记录的开销就是纳秒级。因此对每行记录的序列化、反序列化时间就从毫秒级降到了十或百纳秒级。
在本申请方案中,对于列值计算采用如下操作步骤:
步骤B1、判断当前数据是否为向量化数据,如果不是则添加一个多行数据缓冲(buffer)来保存多行数据;
步骤B2、通过代码生成器来生成CPU向量化指令,并将基于行的字节数组转换为基于列的字节数组;
步骤B3、按照基于列的字节数组调用向量化的函数来生成Java Object数组。
由于整个过程都可以向量化,列值计算的延时能够极大的降低,而函数调用的固定开销对多行记录只调用一次,因此平均到每条记录以后开销就降到十纳秒级别。
在本申请方案中,对于表达式求值采用如下操作步骤:
步骤C1、工作线程对该列的512个数组全部做类型转换,可以通过CPU的SSE指令来完成,延时只有纳秒级;
步骤C2、通过函数调用固定的毫秒级延时找到执行代码入口,在计算逻辑中完成对数组中数据的计算;
步骤C3、批量的做输出类型的转换,同样可以利用CPU的SSE指令集来向量化。
由于多组数据分摊了函数调用开销,每条记录的平均延时就降到十纳秒级,并且由于SSE指令的使用,计算延时能够降低一个数量级,因此每条记录的平均计算延时降到十纳秒级别。
进一步,步骤S303中对代码指令进行向量化处理包括:
步骤S3031,从原函数中抽取输入变量、临时变量和全局变量;
步骤S3032,将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量;
步骤S3033,所述临时变量和所述全局变量保持不变。
在此,对于现有的普通标量代码指令,都包含以下任意至少一项:输入变量、临时变量、全局变量、常数。首先从原函数中识别并抽取各个输入变量、临时变量或全局变量,然后进行代码转换。对于临时变量、全局变量和常数,均保持不变。而对于输入变量将其转换于代码指令的循环体内,从而将普通标量代码指令转换为向量化代码指令。
进一步,所述方法还包括:
步骤S305,按照预设条件对所述代码指令进行优化。
进一步,步骤S105中按照预设条件对所述代码指令进行优化包括:
步骤S3051,对所述代码指令进行循环展开处理以减少调用指针的次数;
步骤S3052,对所述代码指令进行合并处理。
在此,对于已经转换的向量化代码指令,可以根据预设规则进一步进行优化。例如,对于循环体:
For(i=0;i<100;i++)
{
Sum=a[i]+b[i]
}
该循环体需要循环100次,每次都需要进行1次函数调用,因此共需要调用100次指令以完成计算。因此可以对该循环体进行展开,每10组数据的进行1次循环,以减少函数调用次数,虽然代码更为复杂,但是仅需要10次函数调用,代码指令的执行时间缩短了。然后进行合并处理以进一步减少函数调用次数。
图4示出本发明实施例四的分布式数据向量化处理方法的流程示意图,如图4所示,本发明实施例四的分布式数据向量化处理方法包括:
步骤S401,建立多行数据缓存以存储多行基于行的字节数组;
在此,基于行的字节数组中,各行数据的数据结构为按照对象进行排列。
步骤S402,将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
步骤S403,从原函数中抽取输入变量、临时变量和全局变量。
步骤S404,将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量。
步骤S405,所述临时变量和所述全局变量保持不变。
步骤S406,对所述代码指令进行循环展开处理以减少调用指针的次数。
步骤S407,对所述代码指令进行合并处理。
步骤S408,以上述处理后的代码指令对所述基于列的字节数组进行向量化计算。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (8)

1.一种分布式数据向量化处理方法,其中,所述方法包括:
建立多行数据缓存以存储多行基于行的字节数组;
将基于行的字节数组转换为基于列的字节数组;
对代码指令进行向量化处理;
以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算;
所述对代码指令进行向量化处理包括,从原函数中抽取输入变量、临时变量和全局变量;
将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量;
所述临时变量和所述全局变量保持不变。
2.根据权利要求1所述的方法,其中,基于行的字节数组中,各行数据的数据结构为按照对象进行排列;
所述将基于行的字节数组转换为基于列的字节数组包括:
将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
3.根据权利要求1至2中任一项所述的方法,其中,所述方法还包括:
按照预设条件对所述代码指令进行优化。
4.根据权利要求3所述的方法,其中,所述按照预设条件对所述代码指令进行优化包括:
对所述代码指令进行循环展开处理以减少调用指针的次数;
对所述代码指令进行合并处理。
5.一种分布式数据向量化处理装置,其中,所述装置包括:
缓存模块,用于建立多行数据缓存以存储多行基于行的字节数组;
转换模块,用于将基于行的字节数组转换为基于列的字节数组;
向量化处理模块,用于对代码指令进行向量化处理;
向量化计算模块,用于以所述向量化处理后的代码指令对所述基于列的字节数组进行向量化计算;
所述向量化处理模块包括,变量抽取子模块,用于从原函数中抽取输入变量、临时变量和全局变量;
输入变量子模块,用于将基于单个字节的所述输入变量转换为基于字节数组的向量化输入变量;
临时变量子模块,用于保持所述临时变量不变;
全局变量子模块,用于保持所述全局变量不变。
6.根据权利要求5所述的装置,其中,基于行的字节数组中,各行数据的数据结构为按照对象进行排列;
所述转换模块还用于:
将按照对象排列的各行基于行的字节数组,转换为按照所述对象的属性排列的所述基于列的字节数组。
7.根据权利要求5或6中任一项所述的装置,其中,所述装置还包括:
优化模块,用于按照预设条件对所述代码指令进行优化。
8.根据权利要求7所述的装置,其中,所述优化模块包括:
展开子模块,用于对所述代码指令进行循环展开处理以减少调用指针的次数;
合并子模块,用于对所述代码指令进行合并处理。
CN201510299229.4A 2015-06-03 2015-06-03 一种分布式数据向量化处理方法和装置 Active CN104834532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510299229.4A CN104834532B (zh) 2015-06-03 2015-06-03 一种分布式数据向量化处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510299229.4A CN104834532B (zh) 2015-06-03 2015-06-03 一种分布式数据向量化处理方法和装置

Publications (2)

Publication Number Publication Date
CN104834532A CN104834532A (zh) 2015-08-12
CN104834532B true CN104834532B (zh) 2018-01-02

Family

ID=53812442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510299229.4A Active CN104834532B (zh) 2015-06-03 2015-06-03 一种分布式数据向量化处理方法和装置

Country Status (1)

Country Link
CN (1) CN104834532B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544844A (zh) * 2016-06-27 2018-01-05 中兴通讯股份有限公司 一种提升Spark运行效能的方法及装置
CN110362451B (zh) * 2019-07-17 2023-09-26 北京小米移动软件有限公司 一种监控方法、装置及介质
CN117234514B (zh) * 2023-11-08 2024-02-23 睿思芯科(深圳)技术有限公司 将标量化程序转换为向量化程序的方法、系统及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622120B1 (en) * 1999-12-24 2003-09-16 Electronics And Telecommunications Research Institute Fast search method for LSP quantization
CN102231118A (zh) * 2011-07-25 2011-11-02 中国科学技术大学 一种基于龙芯3a向量访存的编译优化方法
CN103336758A (zh) * 2013-06-29 2013-10-02 中国科学院软件研究所 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243195B2 (en) * 2004-12-02 2007-07-10 International Business Machines Corporation Software managed cache optimization system and method for multi-processing systems
US20130113809A1 (en) * 2011-11-07 2013-05-09 Nvidia Corporation Technique for inter-procedural memory address space optimization in gpu computing compiler

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622120B1 (en) * 1999-12-24 2003-09-16 Electronics And Telecommunications Research Institute Fast search method for LSP quantization
CN102231118A (zh) * 2011-07-25 2011-11-02 中国科学技术大学 一种基于龙芯3a向量访存的编译优化方法
CN103336758A (zh) * 2013-06-29 2013-10-02 中国科学院软件研究所 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种支持跨幅访存的向量化代码生成方法;李朋远 等;《计算机科学》;20150531;第42卷(第5期);第194-203页 *
刚架单元的Matlab向量化编程方法;丁星;《四川建筑科学研究》;20101231;第36卷(第6期);第23-26页 *
向量化编程技术及其在大型电网潮流计算中的应用;李传栋;《福建农林大学学报(自然科学版)》;20070930;第36卷(第5期);第537-541页 *

Also Published As

Publication number Publication date
CN104834532A (zh) 2015-08-12

Similar Documents

Publication Publication Date Title
Battré et al. Nephele/PACTs: a programming model and execution framework for web-scale analytical processing
US9411853B1 (en) In-memory aggregation system and method of multidimensional data processing for enhancing speed and scalability
Halstead et al. Accelerating join operation for relational databases with FPGAs
US11023443B2 (en) Collaborative planning for accelerating analytic queries
US20150363467A1 (en) Performing an index operation in a mapreduce environment
Hu et al. Trix: Triangle counting at extreme scale
Elsayed et al. Mapreduce: State-of-the-art and research directions
Sukhwani et al. A hardware/software approach for database query acceleration with FPGAs
WO2011162628A2 (en) Apparatus and method for data stream processing using massively parallel processors
CN104834532B (zh) 一种分布式数据向量化处理方法和装置
US11797337B2 (en) Data processing management methods for imaging applications
Jiang et al. A parallel FP-growth algorithm based on GPU
Lin et al. Efficient subgraph matching using gpus
Martínez-Angeles et al. Relational learning with GPUs: Accelerating rule coverage
Wang et al. Sparkarray: An array-based scientific data management system built on apache spark
Besedin et al. Simulating of query processing on multiprocessor database systems with modern coprocessors
Ding et al. Commapreduce: An improvement of mapreduce with lightweight communication mechanisms
Shibla et al. Improving efficiency of DBSCAN by parallelizing kd-tree using spark
Kamburugamuve et al. Hptmt: Operator-based architecture for scalable high-performance data-intensive frameworks
CN107784032B (zh) 一种数据查询结果的渐进式输出方法、装置及系统
Hüske Specification and optimization of analytical data flows
Wang et al. GPU-based efficient join algorithms on Hadoop
Kruliš et al. Optimizing sorting and top-k selection steps in permutation based indexing on GPUs
Aldinucci et al. Languages for big data analysis
Zhang et al. Improving performance for geo-distributed data process in wide-area

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai

Patentee after: Star link information technology (Shanghai) Co.,Ltd.

Address before: Room 1902, 19th floor, block a, 391 Guiping Road, Xuhui District, Shanghai 200233

Patentee before: TRANSWARP TECHNOLOGY (SHANGHAI) Co.,Ltd.

CP03 Change of name, title or address