CN110245756B - 用于处理数据组的可编程器件及处理数据组的方法 - Google Patents
用于处理数据组的可编程器件及处理数据组的方法 Download PDFInfo
- Publication number
- CN110245756B CN110245756B CN201910516213.2A CN201910516213A CN110245756B CN 110245756 B CN110245756 B CN 110245756B CN 201910516213 A CN201910516213 A CN 201910516213A CN 110245756 B CN110245756 B CN 110245756B
- Authority
- CN
- China
- Prior art keywords
- data
- bucket
- accumulation
- programmable device
- characteristic
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Logic Circuits (AREA)
Abstract
提供了一种用于处理数据组的可编程器件及处理数据组的方法,所述可编程器件包括:多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储所述流水线加法器计算结果的一个缓存单元;以及多路复用器,用于依次接收所述数据组中的数据,动态地确定包含在所述数据中的多个特征与所述多个累加电路之间的对应关系,并根据所述对应关系将所接收数据中的多个特征的特征值分别发送到对应的累加电路。
Description
技术领域
本发明涉及一种用于处理数据组的可编程器件和一种处理数据组的方法。
背景技术
随着机器学习算法的发展,在机器学习算法(例如,梯度回归决策树GBDT)的具体实现中,处理节点***是其中大量消耗运行时间的步骤,GBDT算法的总体运行时间取决于此。在例如直方图算法的处理节点***的诸多算法中,流水线优化是一种在硬件加速中常见的并行优化方法。流水线优化将一个复杂的处理操作切分为多个步骤,通过在不同步骤上重叠操作,使得多个操作可以并行地加以执行,从而大大的提升了整个程序的运行速度,也有效地提高了硬件资源的利用效率。
在现有技术中,为了将GBDT直方图算法中的累加操作进行流水线优化,通常采用累加器来解决因流水线优化而带来的数据依赖(数据冲突)问题。然而,由于资源(例如,大于2万个独立的累加需求)和精度(例如,64位double双精度浮点数)的限制,在GBDT直方图算法的硬件加速实现中,无法直接使用专门的累加器来执行累加操作。因此,采用专门的累加器来执行累加操作的优化方法是受限的。
发明内容
本发明的目的在于提供一种用于处理数据组的可编程器件和一种处理数据组的方法。
本发明的一方面提供了一种用于处理数据组的可编程器件,所述可编程器件包括:多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储流水线加法器计算结果的一个缓存单元;以及多路复用器,用于依次接收数据组中的数据,动态地确定包含在所述数据中的多个特征与多个累加电路之间的对应关系,并根据对应关系将所接收数据中的多个特征的特征值分别发送到对应的累加电路。
可选地,每个累加电路中的流水线加法器可以用于从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值,可以将所接收到的特征值累加到读取的累加值上得到新的累加值,并且可以用新的累加值更新对应缓存单元中的相应累加值。
可选地,可编程器件还可以包括:输出单元,用于将各累加电路中的各缓存单元中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
可选地,累加电路的数量可以与数据组中的数据所包含的特征的数量相同。
可选地,累加电路的数量可以小于数据组中的数据所包含的特征的数量,或者,累加电路的数量可以大于数据组中的数据所包含的特征的数量。
可选地,多路复用器可以用于根据所接收的数据在数据组中的序号及所接收数据中的各特征的序号,动态地确定包含在所接收数据中的多个特征与多个累加电路之间的对应关系。
可选地,数据可以包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以用于根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
可选地,数据可以包括指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以用于根据多路复用器的动态确定对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
可选地,流水线加法器可以为单精度加法器或双精度加法器。
可选地,数据组可以是特定应用场景下的用于进行机器学习的样本数据集;可编程器件可以用于对样本数据集执行梯度回归决策树GBDT直方图算法处理。
可选地,可编程器件是现场可编程门阵列FPGA。
本发明的另一方面提供了一种基于可编程器件处理数据组的方法,所述方法包括:在可编程器件中设置多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储流水线加法器计算结果的一个缓存器;以及在可编程器件中设置多路复用器,多路复用器接收数据组中的每个数据,动态地确定所述数据包含的多个特征与多个累加电路之间的对应关系,并且在每个时段期间根据对应关系将多个特征中的每个特征的特征值发送到对应的累加电路。
可选地,每个累加电路中的流水线加法器可以从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值,可以将所接收到的特征值累加到读取的累加值上得到新的累加值,并且可以用新的累加值更新对应缓存单元中的相应累加值。
可选地,所述方法还可以包括:在可编程器件中设置输出单元,将各累加电路中的各缓存单元中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
可选地,所述方法可以设置所述累加电路的数量与所述数据组中的数据所包含的特征的数量相同。
可选地,所述方法可以设置所述累加电路的数量小于所述数据组中的数据所包含的特征的数量,或者,可以设置所述累加电路的数量大于所述数据组中的数据所包含的特征的数量。
可选地,多路复用器根据所接收的数据在数据组中的序号及所接收数据中的各特征的序号,动态地确定包含在所接收数据中的多个特征与多个累加电路之间的对应关系。
可选地,在所述方法中,数据可以包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
可选地,在所述方法中,数据可以包括指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以根据所述多路复用器的动态确定所述对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
可选地,在所述方法中,所述流水线加法器为单精度加法器或双精度加法器。
可选地,在所述方法中,数据组可以是特定应用场景下的用于进行机器学习的样本数据集;可编程器件可以用于对样本数据集执行梯度回归决策树GBDT直方图算法处理。
可选地,在所述方法中,可编程器件是现场可编程门阵列FPGA。
根据本发明的一个或多个方面,通过多路复用器动态地确定包含在所接收数据中的多个特征与多个累加电路之间的对应关系,避免/减少累加电路对特定特征的特征值进行累加期间再次被分配到同一特征的情况,从而避免/减少数据冲突的产生。
将在接下来的描述中部分阐述本发明另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明的实施而得知。
附图说明
通过下面结合示例性地示出一例的附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1示出了根据发明构思的使用由流水线加法器和缓存器生成的累加电路的框图;
图2中示出了根据发明构思通过累加电路来执行累加操作的时序图的示意图;
图3示出了根据发明构思的实施例的用于处理数据组的可编程器件的框图;
图4示出了根据发明构思的实施例的可编程器件的累加电路与数据的特征之间的对应关系的示意图;
图5示出了根据发明构思的实施例的用于处理数据组的方法的流程图;以及
图6示出了根据发明构思的另一实施例的用于处理数据组的方法的流程图。
具体实施方式
下面参照附图详细描述本发明的实施例。
为了解决累加器在资源和精度上的限制,本申请的发明人采用加法器(例如,单精度加法器或双精度加法器)和缓存器(例如,Block RAM)配合来生成累加电路。
图1示出了根据发明构思在硬件加速中使用由加法器和缓存器生成的累加电路的框图。GBDT的直方图优化算法是指:在训练前预先把特征值转化为bin,也就是对每个特征的取值做个分段函数,将所有样本在该特征上的取值划分到某一段(bin)中。最终把特征取值从连续值转化成了离散值。举例来说:对于年龄这个特征的取值进行分桶,如分成5个桶:0~20岁、20~40岁、40~60岁、60~80岁、80~100岁。对于其中的任一个桶,如对于20~40岁这个桶,累加所有数据的年龄特征落入20~40岁的特征值,得到累加值x(或累加后得到平均年龄值为x),然后对于年龄特征的真实取值落入20~40岁这个桶的数据,将其年龄特征的取值替换为x。由于每个数据都会包含多个特征,且多个特征需要分别进行直方图构建,因此可以给每个特征分配一个累加电路以保证能够同时并行地处理所有特征的直方图构建。然而,由于加法器和缓存器的特性,在某些用于加速的硬件(例如,FPGA器件)上每个累加操作可能会产生例如多个时钟周期的延时。
图2中示出了通过累加电路来执行累加操作的时序图的示意图。参照图2,加法器在加载时段(加载信号高电平)从缓存器中读取数据,并在此后的若干时钟周期期间对数据执行累加操作,在累加操作执行结束后,加法器响应于高电平的存储信号将累加后的新数据存储到缓存器中。由于上一次的累加结果还没有被写入缓存器而导致无法进行下一个累加操作,所以不可避免地引入了大量的数据依赖,因而导致流水线停顿。在一些情况下,这样的延时可以多达14时钟周期。换言之,加法器每运行一个时钟周期将会被迫停顿13个时钟周期,并因此造成流水线的效率和吞吐量下降。对此,本申请的发明人进一步提出了图3所示的方案。
图3示出了根据发明构思的实施例的用于处理数据组的可编程器件的框图。
如图3所示,根据发明构思的用于处理数据组的可编程器件包括多个累加电路AC和多路复用器MUX,其中,每个累加电路AC包括一个流水线加法器SA和用于存储流水线加法器SA计算结果的一个缓存单元BUF。多路复用器MUX可以用于依次接收数据组中的数据,动态地确定包含在所述数据中的多个特征与多个累加电路AC之间的对应关系,并根据对应关系将所接收数据中的多个特征的特征值分别发送到对应的累加电路AC。在具体的实施例中,可编程器件可以是现场可编程门阵列(FPGA)。
在实施例中,所述数据组可以是特定应用场景下的用于进行机器学习的样本数据集。其中,机器学习算法可以是需要处理大量数据并对精度有特定要求的机器学习算法。例如,可编程器件可以用于对样本数据集执行梯度回归决策树GBDT直方图算法处理。直方图算法的基本理念是把特征值进行预装箱处理,从而在计算***时只需要考虑直方图分桶来选择划分点。相对于预排序算法,直方图算法显著的降低了内存的消耗,有助于提高训练的速度。
在根据发明构思的可编程器件中,流水线加法器SA可以作为流水线电路来进行操作。在流水线电路中,由多个不同功能的电路单元组成一条指令处理流水线,然后将一条指令分成多步(例如,4-6步)后再由这些电路单元分别执行,这样流水线电路就能实现在每个时钟周期都可以获得一个新的输入。在经过初始的延时后,流水线电路每个时钟周期都可以生成一个新的输出。流水线电路并没有减少单个数据运算的时间,却大大增加了吞吐量,使得硬件利用率高,从而降低了硬件资源的需求。
每个累加电路中的流水线加法器SA从对应缓存单元BUF中读取所接收到的特征值所属的分桶对应的累加值,将所接收到的特征值累加到读取的累加值上得到新的累加值,并用新的累加值更新对应缓存单元BUF中的相应累加值(参见图2中)。累加电路的数量可以由可用硬件资源决定,数据组中的数据所包含的特征的数量可以根据情况不同地进行设置(例如,由数据的种类决定和/或由用户决定)。可编程器件可以通过同一硬件资源(例如,相同数量的累加电路)处理多种数据和/或多种用户数据。在实施例中,累加电路AC的数量可以小于数据组中的数据所包含的特征的数量,在这种情况下,累加电路AC中的一些将被复用。在另一实施例中,累加电路AC的数量可以与数据组中的数据所包含的特征的数量相同以确保可以同时并行地处理所有特征。在又一实施例中,累加电路AC的数量可以大于数据组中的数据所包含的特征的数量。
在发明构思的实施例中,数据组中的数据可以包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签。在这种情况下,每个累加电路AC中的流水线加法器SA可以根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元BUF中读取所接收到的特征值所属的分桶对应的累加值。
在发明构思的另一实施例中,数据组中的数据可以仅包括指示所包含的各特征值所对应的分桶的分桶标签。在这种情况下,每个累加电路AC中的流水线加法器SA可以根据多路复用器的动态确定对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元BUF中读取所接收到的特征值所属的分桶对应的累加值。
在实施例中,流水线加法器SA可以为单精度加法器或双精度加法器。应该理解的是,根据资源和精度上的需求,可以对流水线加法器SA的类型进行各种修改而不脱离发明构思的范围。
通过多路复用器动态地确定多个特征与多个累加电路AC之间的是对应关系能够最大程度的避免连续的同一特征落到同一个分桶上,从而避免/减少数据冲突的产生。
在实施例中,多路复用器MUX可以根据所接收的数据在数据组中的序号及所接收数据中的各特征的序号动态地确定包含在所接收数据中的多个特征与多个累加电路AC之间的对应关系。将随后参照图4对这一特征进行更详细的描述。
根据发明构思的另一实施例,用于处理数据组的可编程器件还可以包括输出单元(未示出)。输出单元可以用于将各累加电路AC中的各缓存单元BUF中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
图4示出了根据发明构思的实施例的可编程器件的累加电路AC与数据的特征之间的对应关系的示意图。
下面将参照图4给出多路复用器MUX根据所接收的数据在数据组中的序号及所接收数据中的各特征的序号动态地确定包含在所接收数据中的多个特征与多个累加电路AC之间的对应关系的具体描述。
为描述方便,不妨假设:(1)累加电路AC做加法操作的时间延迟是4个时钟周期(包括缓存单元BUF读取数据、做加法、再用加法的结果更新缓存单元BUF的时间段);(2)每条数据包含4个特征:特征a、特征b、特征c、特征d(例如,数据1包含特征f1a、f1b、f1c、f1d,数据2包含特征f2a、f2b、f2c、f2d,以此类推)。
参照图3和图4,累加电路1至累加电路4均由一个流水线加法器SA和一个缓存单元BUF构成。虽然完成一个加法操作需要4个时钟周期,但是因其为流水线电路,故流水线加法器SA每个时钟都可以在没有数据依赖的情况下开始处理一个加法操作。缓存单元BUF可以是在每个时钟周期最多执行一个存储和一个加载操作的双端口存储器。
参照图4,在本实施例中,由于假设数据的特征的数量为4个,因此设置了4个累加电路(累加电路1至累加电路4),即,累加电路的数量与数据所包含的特征的数量相同。
多路复用器按时间顺序依次接收数据,而每条数据包括4个特征(例如,在图4中的第一个时钟周期接收数据1的特征f1a、f1b、f1c、f1d,在第二时钟周期接收数据2的特征f2a、f2b、f2c、f2d……),通过设置多路复用器的数据选择端的控制逻辑实现如上图所示的特征与累加电路的对应关系。更详细地说,在第一时钟周期期间,累加电路1对应f1a、累加电路2对应f1b、累加电路3对应f1c、累加电路4对应f1d;在第二时钟周期期间,累加电路1对应f2b、累加电路2对应f2c、累加电路3对应f2d、累加电路4对应f2a……。换言之,每当数据的序号增加1时,与累加电路对应的特征的序号向左循环移动1个位置。
需要说明的是,这里描述的累加电路的数量、特征的数量以及累加电路与特征的对应关系仅是为了方便说明。容易理解的是,根据具体的实施例,数据的特征的数量可以多于4,例如,200~300或更多。累加电路的数量可以与特征的数量相等。在另一实施例中,累加电路的数量可以大于或小于特征的数量。累加电路与特征的对应关系可以根据具体实施例进行各种修改。
通过多路复用器MUX的动态确定对应关系的控制逻辑,避免/减少累加电路对特定特征的特征值进行累加期间再次被分配到同一特征的情况,从而避免/减少数据冲突的产生。
在实施例中,数据可以包括特征标签和分桶标签,累加电路根据特征标签和分桶标签从缓存单元BUF读取所接收到的特征值所属的分桶对应的累加值。
在另一实施例中,数据可以仅包括分桶标签,累加电路根据多路复用器的数据选择端的逻辑和分桶标签从缓存单元BUF读取所接收到的特征值所属的分桶对应的累加值。
参照图4,由于每个累加电路会参与计算全部特征的全部分桶的累加计算,因此每个缓存单元BUF(累加电路与缓存单元一一对应)均包括全部特征以及他们的分桶。因此,输出单元(未示出)可以将各累加电路对应的缓存单元中的对应同一特征的同一分桶的累加值进行求和,得到最终的累加值。
图5示出了根据发明构思的实施例的用于处理数据组的方法的流程图。
在根据发明构思的实施例中,基于可编程器件处理数据组的方法包括:
在步骤S100中,在可编程器件中设置多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储流水线加法器计算结果的一个缓存器;
在步骤S200中,在可编程器件中设置多路复用器,多路复用器接收数据组中的每个数据,动态地确定数据包含的多个特征与多个累加电路之间的对应关系,并且在每个时段期间根据对应关系将多个特征中的每个特征的特征值发送到对应的累加电路。
在根据发明构思的方法中,流水线加法器为单精度加法器或双精度加法器。
在根据发明构思的方法中,可编程器件可以是现场可编程门阵列(FPGA);数据组可以是特定应用场景下的用于进行机器学习的样本数据集;可编程器件可以用于对样本数据集执行梯度回归决策树GBDT直方图算法处理。所述方法可以设置累加电路的数量与数据组中的数据所包含的特征的数量相同,或者可以设置累加电路的数量大于或小于数据组中的数据所包含的特征的数量。这里描述的数据组和可编程器件以及累加电路的数量与数据所包含的特征的数量之间的关系与参照图3描述的那些相同或相似,因此,在此省略冗余的描述。
在根据发明构思的方法中,数据可以包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
在根据发明构思的方法中,数据可以仅包括指示所包含的各特征值所对应的分桶的分桶标签;每个累加电路中的流水线加法器可以根据所述多路复用器的动态确定所述对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
在实施例中,每个累加电路中的流水线加法器从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值,将所接收到的特征值累加到读取的累加值上得到新的累加值,并用新的累加值更新对应缓存单元中的相应累加值。这里描述的流水线加法器和缓存单元与参照图3描述的流水线加法器SA与缓存单元BUF相同或相似,因此,在此省略冗余的描述。
在实施例中,多路复用器根据所接收的数据在数据组中的序号及所接收数据中的各特征的序号,动态地确定包含在所接收数据中的多个特征与多个累加电路之间的对应关系。这里描述的多路复用器与参照图3和图4描述的多路复用器MUX相同或相似,因此,在此省略冗余的描述。
图6示出了根据发明构思的另一实施例的用于处理数据组的方法的流程图。
除了步骤S300之外,图6示出的方法与图5示出的方法基本相同或相似,因此,在此省略冗余的描述。
在步骤S300中,在可编程器件中设置输出单元,将各累加电路中的各缓存单元中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
在根据本发明的实施例的用于处理数据组的可编程器件及处理数据组的方法中,在硬件加速开发中,可以精确地控制和使用流水线加法器和缓存单元。本发明根据机器学习算法的特性,设计出适合于机器学习算法的缓存使用逻辑,减少或消除了数据冲突的可能性,从而极大的提高了流水线的执行效率。
以上描述了本发明的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本发明不限于所披露的各示例性实施例。在不偏离本发明的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本发明的保护范围应该以权利要求的范围为准。
Claims (22)
1.一种用于处理数据组的可编程器件,所述可编程器件包括:
多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储所述流水线加法器计算结果的一个缓存单元;以及
多路复用器,用于依次接收所述数据组中的数据,针对不同周期中的数据动态地确定包含在所述数据中的多个特征与所述多个累加电路之间的对应关系,并根据所述对应关系将所接收数据中的多个特征的特征值分别发送到对应的累加电路,以避免或减少累加电路对特定特征的特征值进行累加期间再次被分配到同一特征的情况,从而避免或减少数据冲突的产生。
2.根据权利要求1所述的可编程器件,其中,
所述每个累加电路中的所述流水线加法器从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值,将所接收到的特征值累加到读取的所述累加值上得到新的累加值,并用所述新的累加值更新对应缓存单元中的相应累加值。
3.根据权利要求2所述的可编程器件,所述可编程器件还包括:
输出单元,用于将各累加电路中的各缓存单元中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
4.根据权利要求1所述的可编程器件,其中,所述累加电路的数量与所述数据组中的数据所包含的特征的数量相同。
5.根据权利要求1所述的可编程器件,其中,所述累加电路的数量小于所述数据组中的数据所包含的特征的数量,或者,所述累加电路的数量大于所述数据组中的数据所包含的特征的数量。
6.根据权利要求1所述的可编程器件,其中,
所述多路复用器根据所接收的数据在所述数据组中的序号及所接收数据中的各特征的序号,动态地确定包含在所接收数据中的多个特征与所述多个累加电路之间的对应关系。
7.根据权利要求2所述的可编程器件,其中,所述数据中包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签;
所述每个累加电路中的所述流水线加法器根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
8.根据权利要求2所述的可编程器件,其中,所述数据中包括指示所包含的各特征值所对应的分桶的分桶标签;
所述每个累加电路中的所述流水线加法器根据所述多路复用器的动态确定所述对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
9.根据权利要求1所述的可编程器件,其中,所述流水线加法器为单精度加法器或双精度加法器。
10.根据权利要求1-9中的任意一项所述的可编程器件,其中,
所述数据组是特定应用场景下的用于进行机器学习的样本数据集;
所述可编程器件用于对所述样本数据集执行梯度回归决策树GBDT直方图算法处理。
11.根据权利要求1-9中的任意一项所述的可编程器件,其中,所述可编程器件是现场可编程门阵列FPGA。
12.一种基于可编程器件处理数据组的方法,所述方法包括:
在可编程器件中设置多个累加电路,其中,每个累加电路包括一个流水线加法器和用于存储所述流水线加法器计算结果的一个缓存器;以及
在可编程器件中设置多路复用器,所述多路复用器接收所述数据组中的每个数据,针对不同周期中的数据动态地确定所述数据包含的多个特征与所述多个累加电路之间的对应关系,并且在每个时段期间根据所述对应关系将所述多个特征中的每个特征的特征值发送到对应的累加电路,以避免或减少累加电路对特定特征的特征值进行累加期间再次被分配到同一特征的情况,从而避免或减少数据冲突的产生。
13.根据权利要求12所述的方法,其中,
每个累加电路中的流水线加法器从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值,将所接收到的特征值累加到读取的所述累加值上得到新的累加值,并用所述新的累加值更新对应缓存单元中的相应累加值。
14.根据权利要求13所述的方法,所述方法还包括:
在可编程器件中设置输出单元,将各累加电路中的各缓存单元中的与同一特征的同一分桶对应的累加值进行求和,并输出与各特征的各分桶对应的各最终累加值。
15.根据权利要求12所述的方法,其中,
设置所述累加电路的数量与所述数据组中的数据所包含的特征的数量相同。
16.根据权利要求12所述的方法,其中,
设置所述累加电路的数量小于所述数据组中的数据所包含的特征的数量,或者,设置所述累加电路的数量大于所述数据组中的数据所包含的特征的数量。
17.根据权利要求12所述的方法,其中,
所述多路复用器根据所接收的数据在所述数据组中的序号及所接收数据中的各特征的序号,动态地确定包含在所接收数据中的多个特征与所述多个累加电路之间的对应关系。
18.根据权利要求13所述的方法,其中,所述数据中包括指示所包含的各特征值所分别对应的特征的特征标签和指示所包含的各特征值所对应的分桶的分桶标签;
每个累加电路中的流水线加法器根据所接收到的特征值对应的特征标签和分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
19.根据权利要求13所述的方法,其中,所述数据中包括指示所包含的各特征值所对应的分桶的分桶标签;
每个累加电路中的流水线加法器根据所述多路复用器的动态确定所述对应关系的控制逻辑和所接收到的特征值对应的分桶标签,从对应缓存单元中读取所接收到的特征值所属的分桶对应的累加值。
20.根据权利要求12所述的方法,其中,所述流水线加法器为单精度加法器或双精度加法器。
21.根据权利要求12-20中的任意一项所述的方法,其中,
所述数据组是特定应用场景下的用于进行机器学习的样本数据集;
所述可编程器件用于对所述样本数据集执行梯度回归决策树GBDT直方图算法处理。
22.根据权利要求12-20中的任意一项所述的方法,其中,所述可编程器件是现场可编程门阵列FPGA。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516213.2A CN110245756B (zh) | 2019-06-14 | 2019-06-14 | 用于处理数据组的可编程器件及处理数据组的方法 |
US17/619,142 US11791822B2 (en) | 2019-06-14 | 2020-06-12 | Programmable device for processing data set and method for processing data set |
PCT/CN2020/095907 WO2020249106A1 (zh) | 2019-06-14 | 2020-06-12 | 用于处理数据组的可编程器件及处理数据组的方法 |
EP20821819.8A EP3985498B1 (en) | 2019-06-14 | 2020-06-12 | Programmable device for processing data set, and method for processing data set |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516213.2A CN110245756B (zh) | 2019-06-14 | 2019-06-14 | 用于处理数据组的可编程器件及处理数据组的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245756A CN110245756A (zh) | 2019-09-17 |
CN110245756B true CN110245756B (zh) | 2021-10-26 |
Family
ID=67887157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910516213.2A Active CN110245756B (zh) | 2019-06-14 | 2019-06-14 | 用于处理数据组的可编程器件及处理数据组的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11791822B2 (zh) |
EP (1) | EP3985498B1 (zh) |
CN (1) | CN110245756B (zh) |
WO (1) | WO2020249106A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245756B (zh) | 2019-06-14 | 2021-10-26 | 第四范式(北京)技术有限公司 | 用于处理数据组的可编程器件及处理数据组的方法 |
CN113222126B (zh) * | 2020-01-21 | 2022-01-28 | 上海商汤智能科技有限公司 | 数据处理装置、人工智能芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149374A (zh) * | 1994-04-20 | 1997-05-07 | 汤姆森消费电子有限公司 | 利用恒定位率编码器的多路复用*** |
US7826581B1 (en) * | 2004-10-05 | 2010-11-02 | Cypress Semiconductor Corporation | Linearized digital phase-locked loop method for maintaining end of packet time linearity |
CN203966104U (zh) * | 2014-07-23 | 2014-11-26 | 中国电子科技集团公司第五十八研究所 | 可配置可扩展的流水线乘累加器 |
CN108133262A (zh) * | 2016-12-01 | 2018-06-08 | 上海兆芯集成电路有限公司 | 具有用于执行高效3维卷积的存储器布局的神经网络单元 |
CN109543816A (zh) * | 2018-09-20 | 2019-03-29 | 中国科学院计算技术研究所 | 一种基于权重捏合的卷积神经网络计算方法和*** |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI96256C (fi) * | 1993-04-05 | 1996-05-27 | Tapio Antero Saramaeki | Menetelmä ja järjestely transponoidussa digitaalisessa FIR-suodattimessa binäärisen sisääntulosignaalin kertomiseksi tappikertoimilla sekä menetelmä transponoidun digitaalisen suodattimen suunnittelemiseksi |
CN1215665C (zh) * | 2001-07-24 | 2005-08-17 | 凌源通讯股份有限公司 | 相位解调器、符号时序回复电路及其方法 |
CN101950250B (zh) * | 2010-09-29 | 2012-10-31 | 中国科学院光电技术研究所 | 基于累加器的哈特曼-夏克波前斜率获取方法及处理器 |
CN102033732B (zh) * | 2010-12-17 | 2012-07-18 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
KR101949294B1 (ko) * | 2012-07-24 | 2019-02-18 | 삼성전자주식회사 | 영상의 히스토그램 축적 계산 장치 및 방법 |
US9684509B2 (en) * | 2013-11-15 | 2017-06-20 | Qualcomm Incorporated | Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods |
CN104102470A (zh) * | 2014-07-23 | 2014-10-15 | 中国电子科技集团公司第五十八研究所 | 可配置可扩展的流水线乘累加器 |
US20160026607A1 (en) * | 2014-07-25 | 2016-01-28 | Qualcomm Incorporated | Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media |
CN106250614B (zh) * | 2016-07-29 | 2019-04-05 | 上海交通大学 | 适用于fpga平台电磁暂态实时仿真的数据处理方法 |
US10480954B2 (en) * | 2017-05-26 | 2019-11-19 | Uber Technologies, Inc. | Vehicle routing guidance to an authoritative location for a point of interest |
RU2666303C1 (ru) * | 2017-12-14 | 2018-09-06 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ и устройство для вычисления хэш-функции |
CN108108150B (zh) * | 2017-12-19 | 2021-11-16 | 云知声智能科技股份有限公司 | 乘累加运算方法及装置 |
CN110245756B (zh) * | 2019-06-14 | 2021-10-26 | 第四范式(北京)技术有限公司 | 用于处理数据组的可编程器件及处理数据组的方法 |
-
2019
- 2019-06-14 CN CN201910516213.2A patent/CN110245756B/zh active Active
-
2020
- 2020-06-12 EP EP20821819.8A patent/EP3985498B1/en active Active
- 2020-06-12 US US17/619,142 patent/US11791822B2/en active Active
- 2020-06-12 WO PCT/CN2020/095907 patent/WO2020249106A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149374A (zh) * | 1994-04-20 | 1997-05-07 | 汤姆森消费电子有限公司 | 利用恒定位率编码器的多路复用*** |
US7826581B1 (en) * | 2004-10-05 | 2010-11-02 | Cypress Semiconductor Corporation | Linearized digital phase-locked loop method for maintaining end of packet time linearity |
CN203966104U (zh) * | 2014-07-23 | 2014-11-26 | 中国电子科技集团公司第五十八研究所 | 可配置可扩展的流水线乘累加器 |
CN108133262A (zh) * | 2016-12-01 | 2018-06-08 | 上海兆芯集成电路有限公司 | 具有用于执行高效3维卷积的存储器布局的神经网络单元 |
CN109543816A (zh) * | 2018-09-20 | 2019-03-29 | 中国科学院计算技术研究所 | 一种基于权重捏合的卷积神经网络计算方法和*** |
Also Published As
Publication number | Publication date |
---|---|
US20220149843A1 (en) | 2022-05-12 |
EP3985498A1 (en) | 2022-04-20 |
EP3985498B1 (en) | 2023-04-05 |
EP3985498A4 (en) | 2022-08-03 |
US11791822B2 (en) | 2023-10-17 |
CN110245756A (zh) | 2019-09-17 |
WO2020249106A1 (zh) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11262982B2 (en) | Computation circuit including a plurality of processing elements coupled to a common accumulator, a computation device and a system including the same | |
CN109426484B (zh) | 一种数据排序装置、方法及芯片 | |
US20180197084A1 (en) | Convolutional neural network system having binary parameter and operation method thereof | |
CN110245756B (zh) | 用于处理数据组的可编程器件及处理数据组的方法 | |
CN111142938B (zh) | 一种异构芯片的任务处理方法、任务处理装置及电子设备 | |
CN115237580B (zh) | 面向智能计算的流水并行训练自适应调整***、方法 | |
CN112000485A (zh) | 任务分配方法、装置、电子设备及计算机可读存储介质 | |
CN117391148A (zh) | 卷积计算单元、ai运算阵列及相关设备 | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
CN112256435B (zh) | 用于图形处理器的工作组的分配方法以及图形处理器 | |
CN112085128B (zh) | 一种基于脉动阵列的图像识别方法、装置和介质 | |
CN114205160A (zh) | 基于区块链的数据处理方法、装置及电子设备 | |
CN114116228A (zh) | 一种任务分配方法、装置、设备及存储介质 | |
US10175913B2 (en) | Link management method and physical device | |
CN112230884B (zh) | 目标检测硬件加速器及加速方法 | |
CN111985628A (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
CN112346703B (zh) | 一种用于卷积神经网络计算的全局平均池化电路 | |
CN117194041B (zh) | 一种用于高性能计算机的并行优化方法及*** | |
CN220208247U (zh) | 除法运算电路 | |
CN114327644B (zh) | 一种处理器预测访存相关性的实现方法 | |
US20230081063A1 (en) | Arithmetic processing device, arithmetic processing method, and storage medium | |
US10192014B2 (en) | Circuit design support apparatus and computer readable medium | |
CN115729704A (zh) | 算力资源分配方法、装置及计算机可读存储介质 | |
CN117319373A (zh) | 数据传输方法、装置、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |