CN112633489B - 一种查找表lut的合并方法、装置及设备 - Google Patents
一种查找表lut的合并方法、装置及设备 Download PDFInfo
- Publication number
- CN112633489B CN112633489B CN202011625229.6A CN202011625229A CN112633489B CN 112633489 B CN112633489 B CN 112633489B CN 202011625229 A CN202011625229 A CN 202011625229A CN 112633489 B CN112633489 B CN 112633489B
- Authority
- CN
- China
- Prior art keywords
- lut
- luts
- address
- splitting
- group
- 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
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 239000002699 waste material Substances 0.000 abstract description 6
- 238000013461 design Methods 0.000 description 64
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 15
- 230000004913 activation Effects 0.000 description 14
- 230000008676 import Effects 0.000 description 11
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- CNQCVBJFEGMYDW-UHFFFAOYSA-N lawrencium atom Chemical compound [Lr] CNQCVBJFEGMYDW-UHFFFAOYSA-N 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
本申请公开一种查找表LUT的合并方法、装置及设备。该方法包括:获取待合并的LUT中的每个LUT包括的元素组的比例信息;根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;根据所述比例信息,确定所述每个LUT的排列顺序;根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。该方法通过对待合并的LUT先拆分再合并得到目标LUT,该目标LUT中的不会产生地址的浪费,由此降低了设计硬件电路的开销。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种查找表LUT的合并方法、装置及设备。
背景技术
随着计算机技术的发展,在人工智能领域(artificial intelligence,AI),通常需要对大规模的循环神经网络(recurrent neural network,RNN)做硬件加速运算。例如:通过现场可编程逻辑门阵列(field programmable gate array,FPGA)为激活函数做加速运算。具体地,FPGA根据地址信息,在查找表(look-up-table,LUT)中确定该地址对应的内容,进而能够快速准确的获取激活函数的运算结果。
当前,激活函数的种类不同时,FPGA会为每种激活函数均设置一个与该种激活函数对应的LUT。例如:激活函数包括tanh、sigmoid等,FPGA会为tanh设置第一LUT,为sigmoid设置第二LUT。甚至,对于一个激活函数而言,由于查表的算法分段的原因,需要FPGA为该激活函数设置多个LUT。由此,在设计硬件电路时,不仅增加硬件电路的复杂性,而且需要设置多个重复的输出电路。
由此,为了降低硬件电路的复杂性,可以将多个LUT合并为一个新的LUT。以4个长度为6的LUT为例,请参见图1,该图示出了传统方案中合并LUT的方法。
第一种:直接将多个LUT首尾相接合并为新的LUT,但是,FPGA根据地址信息在该新的LUT中确定该地址信息对应的内容时,需要对原地址信息进行加法运算,由此会产生一定的时延。
第二种:先将每个表的长度补充为8(23),然后再将各个表首尾相接,但是,该种方式会产生地址的浪费,增加了设计硬件电路的开销。
因此,上述两种方式均不能在低时延、低成本的条件下,对多个LUT进行合并。
发明内容
为了解决上述技术问题,本申请提供了一种查找表LUT的合并方法,该方法通过对待合并的LUT先拆分再合并得到目标LUT,该目标LUT中的不会产生地址的浪费,由此降低了设计硬件电路的开销。
本申请实施例公开了如下技术方案:
第一方面,本申请提供了一种查找表LUT的合并方法,包括:
获取待合并的LUT中的每个LUT包括的元素组的比例信息;
根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;根据所述比例信息,确定所述每个LUT的排列顺序;
根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;
更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
可选的,所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和为2j,其中,j为大于等于1的整数;每个元素组至少包括两个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素组个数之差小于预设阈值时,根据所述比例信息确定第一拆分比例;所述比例信息中每个待比项均为2s;s为大于等于0的整数;
若所述待合并的LUT的个数为2n,根据所述第一拆分比例,拆分所述每个LUT得到所述每个LUT中的元素组;
其中,n为大于等于1的整数。
可选的,所述方法还包括:
若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;
根据所述第一拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素组;其中,k为大于等于1的整数。
可选的,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述每个LUT的每个元素组中的元素个数,确定所述每个元素组对应的地址组信息中待更新地址的地址位;
根据所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和,以及所述每个LUT的每个元素组中的元素个数,确定在所述待更新地址的地址位前增加的位数;
根据所述每个LUT的排列顺序、所述待更新地址的地址位和所述增加的位数,更新所述目标LUT中导入的每个元素组对应的地址组信息。
可选的,每个元素组仅包括一个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素个数之差小于预设阈值时,根据所述比例信息确定第二拆分比例;
若所述待合并的LUT的个数为2n,根据所述第二拆分比例,拆分所述每个LUT得到所述每个LUT中的元素;其中,n为大于等于1的整数。
可选的,所述方法还包括:
若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;
根据所述第二拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素;其中,k为大于等于1的整数。
可选的,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述待合并的LUT的个数,确定在所述每个元素对应的地址信息中待更新地址的地址位后增加的位数;
根据所述每个LUT的排列顺序以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
可选的,每个元素组仅包括一个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示在所述每个LUT中的存在第一LUT的元素个数和第二LUT的元素个数满足以下关系:
l0±∈=2pl1
其中,l0为所述第一LUT的元素个数,l1为所述第二LUT的元素个数,p为大于等于的整数;
根据所述比例信息确定所述比例信息中每个待比项之和;
若所述每个待比项之和为2m,根据所述待比项确定第三拆分比例;m为大于等于1的整数;所述比例信息中每个待比项均为2s;s为大于等于0的整数;
根据所述第三拆分比例,拆分所述每个LUT得到所述每个LUT中的元素。
可选的,所述方法还包括:
若所述每个待比项之和不为2m时,从所述每个待比项中确定多个待比项,以使所述多个待比项之和为2j;其中,j为大于等于1的整数;
根据所述多个待比项确定第四拆分比例;
根据所述第四拆分比例,拆分所述多个待比项对应的LUT得到所述多个待比项对应的LUT中的元素。
可选的,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述每个待比项,确定所述每个元素对应的地址信息中待更新地址的地址位以及在所述待更新的地址位前增加的位数;
根据所述排列顺序、所述待更新的地址位以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
第二方面,本申请提供了一种查找表LUT的合并装置,包括:获取模块、拆分模块、排序模块、合并模块和更新模块;
所述获取模块,用于获取待合并的LUT中的每个LUT包括的元素组的比例信息;
所述拆分模块,用于根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;
所述排序模块,用于根据所述比例信息,确定所述每个LUT的排列顺序;
所述合并模块,用于根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;
所述更新模块,用于更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
可选的,所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和为2j,其中,j为大于等于1的整数;每个元素组至少包括两个元素;拆分模块,具体用于若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素组个数之差小于预设阈值时,根据所述比例信息确定第一拆分比例;所述比例信息中每个待比项均为2s;s为大于等于0的整数;若所述待合并的LUT的个数为2n,根据所述第一拆分比例,拆分所述每个LUT得到所述每个LUT中的元素组;其中,n为大于等于1的整数。
可选的,拆分模块,还用于若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;根据所述第一拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素组;其中,k为大于等于1的整数。
可选的,更新模块,具体用于根据所述每个LUT的每个元素组中的元素个数,确定所述每个元素组对应的地址组信息中待更新地址的地址位;根据所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和,以及所述每个LUT的每个元素组中的元素个数,确定在所述待更新地址的地址位前增加的位数;根据所述每个LUT的排列顺序、所述待更新地址的地址位和所述增加的位数,更新所述目标LUT中导入的每个元素组对应的地址组信息。
可选的,每个元素组仅包括一个元素;所述拆分模块,具体用于若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素个数之差小于预设阈值时,根据所述比例信息确定第二拆分比例;若所述待合并的LUT的个数为2n,根据所述第二拆分比例,拆分所述每个LUT得到所述每个LUT中的元素;其中,n为大于等于1的整数。
可选的,所述拆分模块,还用于若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;根据所述第二拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素;其中,k为大于等于1的整数。可选的,所述更新模块,根据所述待合并的LUT的个数,确定在所述每个元素对应的地址信息中待更新地址的地址位后增加的位数;根据所述每个LUT的排列顺序以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
可选的,每个元素组仅包括一个元素;所述拆分模块具体用于若所述比例信息指示在所述每个LUT中的存在第一LUT的元素个数和第二LUT的元素个数满足以下关系:
l0±∈=2pl1
其中,l0为所述第一LUT的元素个数,l1为所述第二LUT的元素个数,p为大于等于的整数;根据所述比例信息确定所述比例信息中每个待比项之和;若所述每个待比项之和为2m,根据所述待比项确定第三拆分比例;m为大于等于1的整数;所述比例信息中每个待比项均为2s;s为大于等于0的整数;根据所述第三拆分比例,拆分所述每个LUT得到所述每个LUT中的元素。
可选的,所述拆分模块,还用于若所述每个待比项之和不为2m时,从所述每个待比项中确定多个待比项,以使所述多个待比项之和为2j;其中,j为大于等于1的整数;根据所述多个待比项确定第四拆分比例;根据所述第四拆分比例,拆分所述多个待比项对应的LUT得到所述多个待比项对应的LUT中的元素。
可选的,所述更新模块,具体用于根据所述每个待比项,确定所述每个元素对应的地址信息中待更新地址的地址位以及在所述待更新的地址位前增加的位数;根据所述排列顺序、所述待更新的地址位以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
第三方面,本申请一种查找表LUT的合并设备,包括:存储器和处理器;
所述存储器,用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器,根据所述计算机程序中的指令执行上述第一方面中任一项所述的查找表LUT的合并方法。
由上述技术方案可知,本申请具有以下有益效果:
一方面,在目标LUT中获取目标值的过程中无需对原地址信息进行加法运算,而是直接根据更新后的地址组信息来获取目标值,进而不会增加计算延迟。另一方面,该方法将拆分第一LUT得到的元素组和拆分第二LUT得到的元素组交叉导入到目标LUT中,按照比例信息,将拆分第一LUT得到的第一组元素组导入到目标LUT后,接着将拆分第二LUT得到的第一组元素组导入到目标LUT,然后,将拆分第一LUT得到的第二组元素组导入到目标LUT,将拆分第二LUT得到的第二组元素组导入到目标LUT,直至完成导入。由此,目标LUT中每个地址组均会与元素组对应,即减少地址的浪费,降低了设计硬件电路的成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种合并LUT的示意图;
图2为本申请实施例提供的一种LUT设计***的***架构图;
图3为本申请实施例提供的一种拆分及合并LUT过程的示意图;
图4为本申请实施例提供的一种拆分及合并LUT过程的示意图;
图5为本申请实施例提供的一种拆分及合并LUT过程的示意图;
图6为本申请实施例提供的一种拆分及合并LUT过程的示意图;
图7为本申请实施例提供的一种拆分及合并LUT过程的示意图;
图8为本申请实施例提供的一种LUT的合并方法的流程图;
图9为本申请实施例提供的一种实际应用场景的示意图;
图10为本申请实施例提供的一种LUT的合并装置的示意图;
图11为本申请实施例提供的一种LUT的合并设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
若无特殊说明,本申请中所涉及到的LUT的地址默认采用的二进制表示。
为了便于本领域技术人员理解,下面对本申请所涉及到的技术术语进行介绍。
激活函数是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。而对于大规模的RNN需要做硬件加速运算,例如:通过FPGA做加速运算。具体地,FPGA根据地址信息,在LUT中确定该地址信息对应的内容,进而能够快速准确的获取激活函数的运算结果。
而激活函数的种类不同时,需要针对每种激活函数均设置多个与该激活函数对应的LUT,甚至,某些激活函数需要上百个以上的LUT,且针对每个LUT都要设计相应的寻址方案和硬件电路。由此,不仅会导致硬件电路的面积增加,还要增加软硬件的开销和复杂性。为了降低软硬件的开销和复杂性,可将多个LUT合并为一个新的LUT,以共用一套寻址方案和硬件电路。但是,业界提供的合并方式中会增加计算时延或者合并后的LUT中存在较多的地址的浪费。
为解决上述技术问题,本申请提出了一种查找表LUT的合并方法,该方法可以通过LUT设计***实现。具体地,LUT设计***获取待合并的LUT中的每个LUT包括的元素组的比例信息,根据该比例信息拆分每个LUT得到每个LUT中的元素组,根据比例信息,确定每个LUT的排列顺序。LUT设计***根据每个LUT的排列顺序和每个LUT中的每个元素组对应的地址组信息,将每个LUT中的每个元素组交叉导入到目标LUT中,该地址组信息用于描述每个LUT中的每个元素组的排列顺序。LUT设计***更新目标LUT中的每个元素组对应的地址组信息,以实现对每个LUT的合并。
为了便于理解,以待合并的LUT包括第一LUT和第二LUT为例,上述方法中,LUT设计***根据第一LUT包括的元素组和第二LUT包括的元素组的比例信息,分别拆分第一LUT和第二LUT。例如,比例信息为1:1时,LUT设计***则分别等比例拆分第一LUT和第二LUT。若比例信息为3:1时,LUT设计***则按照三组元素组的比例拆分第一LUT,按照一组元素组的比例拆分第二LUT。LUT设计***对第一LUT和第二LUT拆分后,需要按照第一LUT和第二LUT的排列顺序,拆分前第一LUT中的元素组的排列顺序以及拆分前第二LUT中的元素组的排列顺序,将拆分后得到的每组元素组交叉导入到第三LUT中,例如目标LUT。LUT设计***更新目标LUT中的每个元素组对应的地址组信息。
LUT设计***先对待合并的LUT进行拆分,然后再进行合并,最后对目标LUT中的元素组对应的地址组进行更新。一方面,在目标LUT中获取元素的过程中无需对原地址信息进行加法运算,而是直接根据更新后的地址组信息来获取目标值,进而不会增加计算延迟。另一方面,LUT设计***将拆分第一LUT得到的元素组和拆分第二LUT得到的元素组交叉导入到目标LUT中,即LUT设计***按照比例信息,将拆分第一LUT得到的第一组元素组导入到目标LUT后,接着将拆分第二LUT得到的第一组元素组导入到目标LUT,然后,将拆分第一LUT得到的第二组元素组导入到目标LUT,将拆分第二LUT得到的第二组元素组导入到目标LUT,直至完成导入。由此,目标LUT中每个地址组均会与元素组对应,即减少地址的浪费,降低了设计硬件电路的成本。
本实施例提供的LUT设计***可以用于对已有的硬件电路设计的改进。已有的硬件电路设计中包括多个LUT时,进而导致已有的硬件电路设计较复杂,而且需要设置多个重复的输出电路。利用LUT设计***,通过对已有的硬件电路设计进行改进,即合并部分LUT,进而得到新的硬件电路设计,该新的硬件电路设计中包括的LUT数量远远小于合并前的LUT的数量。该LUT设计***还可以用于对将要实现的硬件电路的设计,例如,该将要实现的硬件电路包括多个LUT时,可以将该多个LUT进行合并,进而减少LUT的数量。
LUT设计***可以是软件***,具体地,业务***可以以计算机软件的形式部署在计算机设备中,以合并LUT。在一些实施例中,LUT设计***也可以是硬件***,该硬件***包括具有合并LUT物理设备。
参见图2,该图为本申请实施例提供的一种LUT设计***的***架构图。
LUT设计***100包括拆分子***120和合并子***140。拆分子***120用于获取待合并的LUT中每个LUT的元素组的比例信息,然后根据比例信息,拆分每个LUT得到每个LUT中的元素组,根据比例信息,确定每个LUT的排列顺序。合并子***140用于根据每个LUT的排列顺序和每个LUT中的每个元素组对应的地址组信息,对每个LUT中的每个元素组交叉导入到目标LUT中,地址组信息用于描述每个LUT中的每个元素组的排列顺序,然后对目标LUT中的每个元素组对应的地址组信息进行更新,进而实现对LUT的合并。
拆分子***120包括获取单元122、拆分单元124、排序单元126和通信单元128。
获取单元122用于获取待合并的LUT中的每个LUT的元素组的比例信息。在一些实现方式中,待合并的LUT包括第一LUT和第二LUT,若第一LUT包括的元素组为12,第二LUT包括的元素组为12,那么该比例信息为12:12,即为1:1。当该比例信息确定后,拆分单元124可以基于该比例信息对第一LUT和第二LUT进行拆分,例如,将第一LUT拆分为12组元素组,将第二LUT拆分为12组元素组。排序单元126用于根据比例信息对第一LUT和第二LUT进行排序,例如,该比例信息为1:1,则排列顺序可以为[第一LUT、第二LUT]。通信单元128用于将上述拆分后得到的元素组和排列顺序发送给合并子***140。
合并子***140包括合并单元142、更新单元144和通信单元146。
通信单元146用于接收拆分子***发送的拆分后得到的元素组和排列顺序。合并单元142根据该排列顺序、第一LUT中的元素组对应的地址组信息、第二LUT中的元素组对应的地址组信息,将拆分后的元素组交叉导入到目标LUT中,该地址组信息包括元素组在LUT中的排列顺序,例如:第一LUT中的元素组对应的地址组信息包括第一LUT中的12组元素组的排列顺序。为了便于从目标LUT中直接获取到地址组信息对应的元素组,需要对地址组信息进行更新,更新单元144用于更新目标LUT中导入的每个元素组对应的地址组信息,进而实现第一LUT和第二LUT的合并。
需要说明的是,元素组中包括的元素个数可以仅为1个,元素组中包括的元素个数之和还可以为2j,该2j即为所需连续取出的相邻元素的个数,其中,j为大于等于1的整数。下面分别针对这两种情况进行详细介绍。
第一种:元素组中包括的元素个数仅为1个。
在一些场景中,待合并的LUT包括第一LUT、第二LUT、第三LUT和第四LUT。若获取单元122获取到的比例信息指示第一LUT、第二LUT、第三LUT和第四LUT包括的元素个数相似。具体地,可以是待合并的LUT中包括的任意两个LUT包括的元素个数之差小于预设阈值。例如,第一LUT包括的元素个数与第二LUT包括的元素个数的之间的差小于预设阈值,预设阈值可以为2;具体地,第一LUT包括的元素个数为4,第二LUT包括的元素个数为3,两者之差为1,在预设阈值2之内。本领域技术人员可以根据实际情况选择该预设阈值。
参见图3,该图示出了一种拆分及合并LUT过程的示意图。由该图可以看出,比例信息为7:6:6:6,由此可以得知每个LUT包括的元素个数相似。拆分单元124根据比例信息可以确定第二拆分比例,该第二拆分比例可以为1:1:1:1。
拆分单元124拆分待合并的LUT之前,还需要确定待合并的LUT的个数。
若满足待合并的LUT的个数为2n的条件,其中,n为大于等于1的整数。由图3可以看出,待合并的LUT包括4个LUT,满足待合并的LUT的个数为2n的条件。拆分单元124根据第二拆分比例分别拆分第一LUT、第二LUT、第三LUT和第四LUT,即将第一LUT拆分为7个元素,第二LUT拆分为6元素,第三LUT拆分为6个元素,第四LUT拆分为6个元素。
合并单元142将每个LUT拆分后得到的元素交叉导入到目标LUT中,例如,第一LUT包括的元素的排列顺序为:元素101、元素102、元素103、元素104、元素105、元素106和元素107。其中,每个元素均对应一个地址信息。例如,元素101与Address 000对应。第二LUT、第三LUT和第四LUT包括的元素的排列顺序相类似,故不再赘述,具体参见图3。下面具体介绍交叉导入的方式,例如依次导入元素101、元素201、元素301、元素401、元素102……元素406和元素107。由此,目标LUT中不存在地址的浪费,即每个地址均对应一个元素。
将原LUT中的元素导入到目标LUT中后,为了能够直接获取目标LUT中的元素,需要对目标LUT中元素对应的地址信息进行更新。更新单元144,根据待合并的LUT的个数,确定在每个元素对应的地址信息中待更新地址的地址位后增加的位数,根据每个LUT的排列顺序以及该增加的位数,更新目标LUT中导入的每个元素对应的地址信息。待合并的LUT的个数为2n,即n=2,待合并的LUT中的每个LUT的排列顺序为[第一LUT、第二LUT、第三LUT和第四LUT],以上述待合并的LUT为例,每个待合并的LUT后均需要在待更新地址的地址位后增加2位,以第二LUT为例,第二LUT的排序为2,进而确定2对应的二进制数为“01”由此需要对第二LUT中的每个元素对应的地址位后增加“01”,以元素202为例,其地址更新前为Address001,地址更新后为Address 00101,即最后两位“01”为新增加的地址位。
若待合并的LUT的个数不为2n,拆分单元124可以先对待合并的LUT进行分组,以使每组的待合并的LUT的个数为2n的条件。例如,待合并的LUT的个数为6时,拆分单元124将6个待合并的LUT分为两组,第一组包括4个待合并的LUT,第二组包括2个待合并的LUT,进而能够使每组待合并的LUT的个数为2n。具体拆分及合并过程与上述拆分及合并过程相似,故不再赘述。
以上场景介绍的第一种情况中的待合并的LUT中的每个LUT包括的元素个数均相似,下面介绍元素个数不相似的情况。
在一些场景中,待合并的LUT包括第一LUT、第二LUT和第三LUT。若获取单元122获取到的比例信息指示第一LUT包括的元素个数为第二LUT包括的元素个数的2倍。具体地,可以是待合并LUT中存在任一个LUT包括的元素个数至少为其他LUT元素个数的2倍,可以为2倍,也可以为1.9倍或2.1倍。本领域技术人员可以根据实际情况选择具体的倍数关系,选择的倍数关系应当使第一LUT的元素个数和第二LUT的元素个数满足以下关系:
l0±∈=2pl1
其中,l0为所述第一LUT的元素个数,l1为所述第二LUT的元素个数,p为大于等于的整数。
参见图4,该图示出了一种拆分及合并LUT过程的示意图。由该图可以看出,待合并的LUT包括第一LUT、第二LUT和第三LUT。第一LUT包括的元素个数为12个、第二LUT包括的元素个数为6个、第三LUT包括的元素个数为6个。获取单元122获取到的比例信息为12:6:6,即2:1:1。由该比例信息可以看出,第一LUT包括的元素个数为第二LUT包括的元素个数的2倍。获取单元122还能够根据该比例信息确定每个待比项之和,例如,由上述比例信息可以看出,第一待比项与第一LUT对应,第一待比项为2,第二待比项与第二LUT对应,第二待比项为1,第三待比项与第三LUT对应,第三待比项为1。所述比例信息中每个待比项均为2s;s为大于等于0的整数。
拆分单元再拆分待合并的LUT之前,还需要确定待合并的LUT的待比项之和。
若所述每个待比项之和为2m,m为大于等于1的整数。拆分单元124根据比例信息确定第三拆分比例,该第三拆分比例为2:1:1。拆分单元124根据该第三拆分比例分别对第一LUT,第二LUT和第三LUT进行拆分,即将第一LUT拆分为6对2个连续的元素,将第二LUT拆分为6个元素,将第三LUT拆分为6个元素。
合并单元142将每个LUT拆分后得到的元素交叉导入到目标LUT中,例如:第一LUT包括的元素的排列顺序为:元素101、元素102、元素103……元素111和元素112。第二LUT包括的元素排列顺序为:元素201、元素202……元素206。第三LUT包括的元素排列顺序为:元素301、元素303……元素306。其中,每个元素均对应一个地址信息。例如,元素101与Address 0000对应。下面具体介绍交叉导入的方式,例如依次导入元素101、元素102、元素201、元素301、元素103、元素104……元素306。由此,目标LUT中不存在地址的浪费,即每个地址均对应一个元素。
将原LUT中的元素导入到目标LUT中后,为了能够直接获取目标LUT中的元素,需要对目标LUT中元素对应的地址信息进行更新。更新单元144,根据每个待比项,确定每个元素对应的地址信息中待更新地址的地址位以及在待更新的地址位前增加的位数,根据排列顺序、待更新的地址位以及增加的位置,更新目标LUT导入的每个元素对应的地址信息。举例说明,以上述比例信息(2:1:1)为例,第一待比项(2)、第二待比项(1)和第三待比项(1)之和为2m,即m=2。然后更新单元144确定每个LUT的原地址的后ti位保持不变,这里ti=log2 ki,其中,i表示第i个LUT,ki表示第i个LUT对应的第i个待比项。例如,对于第一LUT而言,保持第一LUT中元素对应的地址的后t1位保持不变,具体地,t1=log2 k1,其中,k1表示第一LUT对应的第一待比项,即本实施例中k1为2,进而可以得到t1=1,则第一LUT的后1保持不变。再如,对于第二LUT而言,保持第二LUT中元素对应的地址的后t2位保持不变,具体地,t2=log2k2,其中,k2表示第二LUT对应的第二待比项,即本实施例中k2为1,进而可以得到t2=0,则第二LUT的最后0位保持不变。t1确定后,需要确定在后t1位前增加的位数,具体地,增加的位数可以由m-t1得到,即本实施例中增加1位。待合并的LUT中每个LUT的排列顺序为[第一LUT、第二LUT和第三LUT],然后按照顺序从第一LUT中取出k1个元素,从第二LUT中取出k2个元素,从第二LUT中取出k3个元素,然后为每个元素分配一个m bits的二进制序号。然后从m bits的高位开始截取m-ti位,在确定的后ti位前增加截取的m-ti位对应的二进制序号。例如,从第一LUT取出的元素为元素101和元素102,从第二LUT取出的元素为元素201,从第三LUT取出的元素为元素301,则元素101的2bits为“00”,元素102的2bits为“01”,元素201的2bits为“10”,元素202的2bits为“11”。对于第一LUT而言,从2bits的高位截取2-1位,即截取1位,该位对应的二进制序号为“0”,然后在第一LUT的每个元素的地址的后1位前增加“0”。以元素102为例,其地址更新前为Address 0001,地址更新后为Address 00001,即在后1位“1”前增加“0”。再以元素201为例,其地址更新前为Address 000,在其最后0位前补“10”,即末位之后补“10”,地址更新后为Address 00010。
若所述每个待比项之和不为2m。拆分单元124可以先从每个待比项中确定多个待比项,以使被确定的多个待比项之和为2j,其中,j为大于等于1的整数,然后根据多个待比项确定第四拆分比例,根据第四拆分比例拆分多个待比项对应的LUT得到多个待比项对应的LUT中的元素。举例说明,若比例信息为2:1:1:1,每个待比项之和为5,不是2m。为此,拆分单元124需要从这4个待比项中确定多个待比项,以使每个待比项之和为2m。例如,确定的待比项为第一待比项(2)、第二待比项(1)和第三待比项(1),然后根据多个待比项确定第四拆分比例,该第四拆分比例可以为第一待比项、第二待比项和第三待比项之间的比例关系,即2:1:1。具体拆分及合并过程与上述拆分及合并过程相似,故不再赘述。
以上介绍了第一种情况,下面介绍第二种情况。
第二种:元素组中包括的元素个数为2j。
在第二种情况中,j为大于等于1的整数,每个元素组至少包括两个元素。在一些场景中,待合并的LUT包括第一LUT和第二LUT包括的元素组的个数相似。具体地,可以是待合并的LUT中包括的任意两个LUT包括的元素组个数之差小于预设阈值。例如,第一LUT包括的元素组个数与第二LUT包括的元素组的个数之差小于预设阈值,预设阈值可以为2。本领域技术人员可以根据实际情况选择该预设阈值。
参见图5,该图示出了一种拆分及合并LUT过程的示意图。该图可以看出,比例信息为8:7,由此可以得知每个LUT包括的元素组个数相似。拆分单元124根据比例信息可以确定第一拆分比例,该第一拆分比例可以为1:1。与上述第一种情况的不同之处在于,在第二中情况中拆分单元124在拆分待合并的LUT时,按照元素组的方式进行拆分,下面具体介绍。
拆分单元124拆分待合并的LUT之前,还需要确定待合并的LUT的个数。
若满足待合并的LUT的个数为2n的条件,由图5可以看出,待合并的LUT包括2个LUT,满足待合并的LUT的个数为2n的条件。拆分单元124根据第一拆分比例分别拆分第一LUT和第二LUT,即将第一LUT拆分为8个元素组,第二LUT拆分为7个元素组。
合并单元142将每个LUT拆分后得到的元素组交叉导入到目标LUT中,例如,第一LUT包括的元素组的排列顺序为:元素组101、元素组102……元素组108,第二LUT包括的元素组的排列顺序为:元素组201、元素组202……元素组207。需要说明的是,每个元素组中包括的元素的排列顺序与拆分之前保持一致,例如元素组101包括元素1011和元素1012,元素1011和元素1012在元素组101中的排列顺序与第一LUT被拆分之前保持一致。下面介绍交叉导入的方式,例如依次导入元素组101、元素组201、元素组102……元素组207和元素组108。由此,目标LUT中不存在地址的浪费,即每个地址组均对应一个元素组,每个地址组中的地址均与每个元素组中的元素对应。
将原LUT中的元素组导入到目标LUT中后,为了能够直接获取目标LUT中的元素组,需要对目标LUT中元素组对应的地址组信息进行更新。更新单元144根据每个LUT的每个元素组中的元素个数,确定每个元素组对应的地址组信息中待更新的地址位,根据待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和,以及每个LUT的每个元素组中的元素个数,确定在待更新地址的地址位前增加的位数,根据每个LUT的排列顺序、待更新地址的地址位和增加的位数,更新目标LUT中导入的每个元素组对应的地址组信息。举例说明,更新单元144确定每个LUT原地址的后ti位保持不变,这里ti=log2 wi,其中,i表示第i个LUT,wi表示第i个LUT的一个元素组中的元素个数。例如,对于第一LUT而言,保持第一LUT中元素对应的地址的后t1位保持不变,t1=log2 w1,其中,w1表示第一LUT的一个元素组中的元素个数,即本实施例中w1为2,进而可以得到t1=1,则第一LUT的后1位保持不变。t1确定后,需要确定在后t1位前增加的位数,具体地,增加的位数可以由v-t1得到,其中,v=log2 D,D表示合并后每个LUT的元素组包括的元素个数之和,即第一LUT的元素组中包括的元素个数与第二LUT的元素组中包括的元素个数之和,本实施例中为4。进而可以得到v=2,由此可以确定在后t1位前增加的位数为2-1位,即本实施例中增加1位。待合并的LUT中每个LUT的排列顺序为[第一LUT和第二LUT],按照排列顺序为每个LUT的元素组包括的元素分配一个vbits的二进制符号,从高位截取该二进制符号的v-ti,在确定的后ti位前增加截取的m-ti位对应的二进制序号。例如,按照排列顺序为元素1011分配的二进制符号为“00”,元素1012的二进制符号为“01”,元素2011的二进制符号为“10”,元素2012的二进制符号为“11”,对于第一LUT而言,从高位截取该二进制符号的2-1位,即截取“0”,然后在第一LUT的每个元素的地址的后1位前增加“0”。以元素1012为例,其地址更新前为Address 0001,地址更新后为Address 00001,即在后1位“1”前增加“0”。
若待合并的LUT的个数不为2n,拆分单元124可以先对待合并的LUT进行分组,以使每组的待合并的LUT的个数为2n的条件。例如,待合并的LUT的个数为6时,拆分单元124将6个待合并的LUT分为两组,第一组包括4个待合并的LUT,第二组包括2个待合并的LUT,进而能够使每组待合并的LUT的个数为2n。具体拆分及合并过程与上述拆分及合并过程相似,故不再赘述。
以上场景介绍的第二种情况中的待合并的LUT中的每个LUT包括的元素组个数均相似,元素组个数不相似的情况对第一种情况中元素个数不相似的情况类似,具体可以参见以上第一种情况中的介绍,此处不再赘述。
在一些场景中,对元素分组的方式还可以参见图6所示。以图6所示的LUT为例,该LUT在同一个地址的高32位存储一个元素,在低32位存储一个元素,可以将统一地址的两个元素视为一组元素。然后再进行拆分,具体拆分及合并过程可以参见以上介绍的图3、图4或图5中的任一种,此处不再赘述。
在一些场景中,硬件设计中,由于地址信号是二进制,第一LUT中元素组包括的元素个数一般为2c,c为大于零的整数。参见图7,该图示出了一种拆分及合并LUT过程的示意图。由图7可知,c=2,元素组中包括的元素个数为4个。当需要取出第一LUT中的三个连续的元素时,为了不增加计算的延迟,业界将第四个地址位置空,由此造成了地址浪费。
为此,根据第一LUT包括的元素的个数,确定与该元素个数存在倍数关系的第二LUT,该第二LUT包括的元素个数小于第一LUT,将第二LUT进行拆分后,按照第二LUT中元素的排列顺序依次导入到第一LUT中。为了能够直接在第一LUT中获取到原第二LUT中的元素,需要对新导入到第一LUT中元素的地址位进行更新。举例说明,第二LUT包括的元素为:元素201、元素202、元素203和元素204。元素201对应的原地址为Address 00,将元素201导入到第一LUT中,需要对该原地址进行更新,更新后地址为Address 0011,即在原地址位后增加“11”。
接下来,对本申请实施例提供的LUT的合并方法进行介绍。
参见图8,该图为本申请实施例提供的一种LUT合并的方法。该方法通过LUT设计***实现,该方法包括:
S701:LUT设计***100获取待合并的LUT中的每个LUT包括的元素组的比例信息。
在一种实现方式中,LUT设计***100先确定待合并的LUT,例如包括第一LUT和第二LUT。LUT设计***100获取第一LUT包括的元素组个数,获取第二LUT包括的元素组个数,进而能够得到第一LUT包括的元素组个数与第二LUT包括的元素组个数的比例信息,该比例信息可以是1:1。
S702:LUT设计***100根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,根据所述比例信息,确定所述每个LUT的排列顺序。
LUT设计***100拆分每个LUT之前,需要确定每个元素组中包括的元素个数,元素组中包括的元素个数可以仅为1个,元素组中包括的元素个数之和还可以为2j,其中,j为大于等于1的整数。下面分别针对这两种情况进行详细介绍。
第一种:元素组中包括的元素个数仅为1个。
当元素组包括的元素个数为1个时,元素组具体可以为元素。
下面分不同的场景进行介绍。
场景一:
LUT设计***100根据上述的比例信息,若确定每个LUT中的任意两个LUT包括的元素个数之差小于预设阈值时,根据比例信息确定第二拆分比例。
LUT设计***100拆分待合并的LUT之前,还需要确定待合并的LUT的个数。若待合并的LUT的个数为2n,LUT设计***100则根据第二拆分比例拆分每个LUT得到每个LUT中的元素。若待合并的LUT的个数不为2n,LUT设计***100需要先对待合并的LUT进行分组,根据待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT的个数为2k。LUT设计***100分别对每组LUT中的每个LUT进行拆分,得到每个LUT中的每个LUT中的元素。具体拆分过程请参见图3所示,此处不再赘述。
场景二:
LUT设计***100根据上述的比例信息,若确定每个LUT中的存在第一LUT的元素个数和第二LUT的元素个数满足以下关系:
l0±∈=2pl1
其中,l0为所述第一LUT的元素个数,l1为所述第二LUT的元素个数,p为大于等于的整数,根据比例信息确定比例信息中每个待比项之和,所述比例信息中每个待比项均为2s,s为大于等于0的整数。
若每个待比项之和为2m,m为大于等于1的整数,LUT设计***100根据待比项确定第三拆分比例,根据第三拆分比例拆分每个LUT得到每个LUT中的元素。若每个待比项之和不为2m,LUT设计***从每个待比项中确定多个待比项,以使多个待比项之和为2j;其中,j为大于等于1的整数。然后LUT设计***100根据多个待比项确定第四拆分比例,根据第四拆分比例拆分多个待比项对应的LUT得到多个待比项对应的LUT中的元素。具体拆分过程请参见图4所示,此处不再赘述。
第二种:元素组中包括的元素个数为2j。
在第二种情况中,j为大于等于1的整数,每个元素组至少包括两个元素。
场景三:
LUT设计***100根据上述的比例信息,若确定每个LUT中的任意两个LUT包括的元素组个数之差小于预设阈值,根据比例信息确定第一拆分比例,该比例信息中每个待比项均为2s;s为大于等于0的整数。
LUT设计***100拆分待合并的LUT之前,还需要确定待合并的LUT的个数。若待合并的LUT的个数为2n,LUT设计***100则根据第一拆分比例拆分每个LUT得到每个LUT中的元素组。若待合并的LUT的个数不为2n,LUT设计***100需要先对待合并的LUT进行分组,根据待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT的个数为2k。LUT设计***100分别对每组LUT中的每个LUT进行拆分,得到每个LUT中的每个LUT的元素。具体拆分过程请参见图5所示,此处不再赘述。
LUT设计***100根据比例信息确定每个LUT的排列顺序时,优选按照每个LUT中的元素组的个数确定每个LUT的排列顺序。例如,元素组的个数较大的LUT的排列顺序靠前,元素组的个数较小的LUT的排列顺序靠后。其中,较大、较小、靠前和靠后是相对而言的。
S703:LUT设计***100根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中。
LUT设计***100对待合并的LUT完成拆分之后,还需要将得到的元素交叉导入到目标LUT。具体交叉导入的过程可以参见图3、图4或图5,此处不再赘述。
S704:LUT设计***100更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
为了能够直接从目标LUT中获取到新导入的元素,LUT设计***100还需要对目标LUT中导入的每个元素对应的地址信息。对于不同的场景,LUT设计***100更新地址组信息的方式不同。
对于场景一,LUT设计***100根据待合并的LUT的个数,确定在每个元素对应的地址信息中待更新地址的地址位后增加的位数,根据每个LUT的排列顺序以及增加的位数,更新目标LUT中导入的每个元素对应的地址信息。LUT设计***100更新地址信息的过程请参见图3所示,此处不再赘述。
对于场景二,LUT设计***100根据每个待比项,确定每个元素对应的地址信息中待更新地址的地址位以及在待更新的地址位前增加的位数,根据每个LUT的排列顺序、待更新的地址位以及增加的位数,更新目标LUT中导入的每个元素对应的地址信息。LUT设计***100更新地址信息的过程请参见图4所示,此处不再赘述。
对于场景三,LUT设计***100根据每个LUT的每个元素组中的元素个数,确定每个元素组对应的地址组中待更新的地址位,根据待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和,以及每个LUT的每个元素组中的元素个数,确定在待更新地址的地址位前增加的位数,根据每个LUT的排列顺序、待更新地址的地址位和增加的位数,更新目标LUT中导入的每个元素组对应的地址组信息。LUT设计***100更新地址信息的过程请参见图5所示,此处不再赘述。
在一些实际应用场景中,通过FPGA为激活函数做加速运算时,会存在同时用到sigmoid函数和tanh函数。参见图9,该图示出sigmoid函数和tanh函数拆分及合并的过程。例如,sigmoid函数和tanh函数各自对应的LUT均由128个元素,分别保存sigmoid函数和tanh函数(0,2]的各个分段点的函数值,通过以上介绍的LUT设计***100,可以将这两个LUT合并为一个LUT。
LUT设计***先对待合并的LUT进行拆分,然后再进行合并,最后对目标LUT中的元素组对应的地址组进行更新。一方面,在目标LUT中获取目标值的过程中无需对原地址信息进行加法运算,而是直接根据更新后的地址组信息来获取目标值,进而不会增加计算延迟。另一方面,LUT设计***将拆分第一LUT得到的元素组和拆分第二LUT得到的元素组交叉导入到目标LUT中,即LUT设计***按照比例信息,将拆分第一LUT得到的第一组元素组导入到目标LUT后,接着将拆分第二LUT得到的第一组元素组导入到目标LUT,然后,将拆分第一LUT得到的第二组元素组导入到目标LUT,将拆分第二LUT得到的第二组元素组导入到目标LUT,直至完成导入。由此,目标LUT中每个地址组均会与元素组对应,即减少地址的浪费,降低了设计硬件电路的成本。
以上结合图1至图9对本申请实施例提供的LUT的合并方法进行介绍,接下来结合附图对本申请实施例提供的LUT的合并装置以及用于实现LUT的合并装置功能的计算设备进行介绍。
如图10所示,本申请实施例还提供一种LUT的合并装置1000,该装置1000用于执行前述LUT的合并方法。本申请实施例对该装置1000中的功能模块的划分不做限定,下面示例性地提供一种功能模块的划分:
LUT的合并装置1000包括获取模块1002、拆分模块1004、排序模块1006、合并模块1008和更新模块1009。
所述获取模块1002,用于获取待合并的LUT中的每个LUT包括的元素组的比例信息;
所述拆分模块1004,用于根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;
所述排序模块1006,用于根据所述比例信息,确定所述每个LUT的排列顺序;
所述合并模块1008,用于根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;
所述更新模块1009,用于更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
上述LUT的合并装置1000可以通过计算设备实现。图11提供了一种计算设备,如图11所示,计算设备800具体可以用于实现上述图10所示实施例中LUT的合并装置700的功能。
计算设备800包括总线801、处理器802和存储器803。处理器802和存储器803之间通过总线801通信。
处理器802可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器803可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器803还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard drivedrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器803中存储有可执行的程序代码,处理器802执行该可执行的程序代码以执行前述LUT的合并方法。具体地,处理器802执行上述程序代码,以获取待合并的LUT中的每个LUT包括的元素组的比例信息;根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;根据所述比例信息,确定所述每个LUT的排列顺序;根据所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述LUT的合并方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置和设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。
Claims (12)
1.一种查找表LUT的合并方法,其特征在于,包括:
获取待合并的LUT中的每个LUT包括的元素组的比例信息;
根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;根据所述比例信息,确定所述每个LUT的排列顺序;
根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;
更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
2.根据权利要求1所述的方法,其特征在于,所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和为2j,其中,j为大于等于1的整数;每个元素组至少包括两个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素组个数之差小于预设阈值时,根据所述比例信息确定第一拆分比例;所述比例信息中每个待比项均为2s;s为大于等于0的整数;
若所述待合并的LUT的个数为2n,根据所述第一拆分比例,拆分所述每个LUT得到所述每个LUT中的元素组;
其中,n为大于等于1的整数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;
根据所述第一拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素组;其中,k为大于等于1的整数。
4.根据权利要求2或3所述的方法,其特征在于,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述每个LUT的每个元素组中的元素个数,确定所述每个元素组对应的地址组信息中待更新地址的地址位;
根据所述待合并的LUT中的每个LUT包括的一个元素组中的元素个数之和,以及所述每个LUT的每个元素组中的元素个数,确定在所述待更新地址的地址位前增加的位数;
根据所述每个LUT的排列顺序、所述待更新地址的地址位和所述增加的位数,更新所述目标LUT中导入的每个元素组对应的地址组信息。
5.根据权利要求1所述的方法,其特征在于,每个元素组仅包括一个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示所述每个LUT中的任意两个LUT包括的元素个数之差小于预设阈值时,根据所述比例信息确定第二拆分比例;
若所述待合并的LUT的个数为2n,根据所述第二拆分比例,拆分所述每个LUT得到所述每个LUT中的元素;其中,n为大于等于1的整数。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述待合并的LUT的个数不为2n,根据所述待合并的LUT的个数对每个LUT进行分组,以使每组LUT包括的LUT个数为2k;
根据所述第二拆分比例,拆分所述每组LUT中的每个LUT得到所述每组LUT中的每个LUT中的元素;其中,k为大于等于1的整数。
7.根据权利要求5或6所述的方法,其特征在于,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述待合并的LUT的个数,确定在所述每个元素对应的地址信息中待更新地址的地址位后增加的位数;
根据所述每个LUT的排列顺序以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
8.根据权利要求1所述的方法,其特征在于,每个元素组仅包括一个元素;所述根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组,包括:
若所述比例信息指示在所述每个LUT中的存在第一LUT的元素个数和第二LUT的元素个数满足以下关系:
其中,l0为所述第一LUT的元素个数,l1为所述第二LUT的元素个数,p为大于等于1的整数;
根据所述比例信息确定所述比例信息中每个待比项之和;
若所述每个待比项之和为2m,根据所述待比项确定第三拆分比例;m为大于等于1的整数;所述比例信息中每个待比项均为2s;s为大于等于0的整数;
根据所述第三拆分比例,拆分所述每个LUT得到所述每个LUT中的元素。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述每个待比项之和不为2m时,从所述每个待比项中确定多个待比项,以使所述多个待比项之和为2j;其中,j为大于等于1的整数;所述比例信息中每个待比项均为2s;s为大于等于0的整数;
根据所述多个待比项确定第四拆分比例;
根据所述第四拆分比例,拆分所述多个待比项对应的LUT得到所述多个待比项对应的LUT中的元素。
10.根据权利要求8或9所述的方法,其特征在于,所述更新所述目标LUT中导入的每个元素组对应的地址组信息,包括:
根据所述每个待比项,确定所述每个元素对应的地址信息中待更新地址的地址位以及在所述待更新的地址位前增加的位数;
根据所述排列顺序、所述待更新的地址位以及所述增加的位数,更新所述目标LUT中导入的每个元素对应的地址信息。
11.一种查找表LUT的合并装置,其特征在于,包括:获取模块、拆分模块、排序模块、合并模块和更新模块;
所述获取模块,用于获取待合并的LUT中的每个LUT包括的元素组的比例信息;
所述拆分模块,用于根据所述比例信息,拆分所述每个LUT得到所述每个LUT中的元素组;
所述排序模块,用于根据所述比例信息,确定所述每个LUT的排列顺序;
所述合并模块,用于根据所述比例信息、所述每个LUT的排列顺序和所述每个LUT中的每个元素组对应的地址组信息,将所述每个LUT中的每个元素组交叉导入到目标LUT中;所述地址组信息用于描述所述每个LUT中的每个元素组的排列顺序;
所述更新模块,用于更新所述目标LUT中导入的每个元素组对应的地址组信息,以实现对所述每个LUT的合并。
12.一种查找表LUT的合并设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器,根据所述计算机程序中的指令执行所述权利要求1-10中任一项所述的查找表LUT的合并方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011625229.6A CN112633489B (zh) | 2020-12-30 | 2020-12-30 | 一种查找表lut的合并方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011625229.6A CN112633489B (zh) | 2020-12-30 | 2020-12-30 | 一种查找表lut的合并方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112633489A CN112633489A (zh) | 2021-04-09 |
CN112633489B true CN112633489B (zh) | 2024-03-22 |
Family
ID=75289980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011625229.6A Active CN112633489B (zh) | 2020-12-30 | 2020-12-30 | 一种查找表lut的合并方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112633489B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109446673A (zh) * | 2018-11-01 | 2019-03-08 | 京微齐力(北京)科技有限公司 | 一种通过部分映射时钟使能信号来改善布局完成率的方法 |
WO2020003271A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and merge: insert hmvp as a merge candidate, position of hmvp |
CN111652359A (zh) * | 2020-05-25 | 2020-09-11 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212353A1 (en) * | 2002-02-04 | 2013-08-15 | Tibet MIMAR | System for implementing vector look-up table operations in a SIMD processor |
-
2020
- 2020-12-30 CN CN202011625229.6A patent/CN112633489B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020003271A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and merge: insert hmvp as a merge candidate, position of hmvp |
CN109446673A (zh) * | 2018-11-01 | 2019-03-08 | 京微齐力(北京)科技有限公司 | 一种通过部分映射时钟使能信号来改善布局完成率的方法 |
CN111652359A (zh) * | 2020-05-25 | 2020-09-11 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
Non-Patent Citations (1)
Title |
---|
"Dual-Output LUT Merging during FPGA Technology Mapping";Feng Wang etc.;《ACM》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112633489A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220173987A1 (en) | Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization | |
CN107430704B (zh) | 基于与神经网络算法关联的元数据在神经突触基底上实现神经网络算法 | |
US20170193368A1 (en) | Conditional parallel processing in fully-connected neural networks | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN107016437B (zh) | 随机尖峰模式的生成的方法和*** | |
CN106852185A (zh) | 基于字典的并行压缩编码器 | |
CN110399487B (zh) | 一种文本分类方法、装置、电子设备及存储介质 | |
US10338629B2 (en) | Optimizing neurosynaptic networks | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN108681773B (zh) | 数据运算的加速方法、装置、终端及可读存储介质 | |
US10942671B2 (en) | Systems, methods and devices for a multistage sequential data process | |
US20240248775A1 (en) | Message-based processing system with address computation modes | |
CN115563927A (zh) | 一种gpu加速构建最小直角斯坦纳树的芯片布线方法 | |
CN112633489B (zh) | 一种查找表lut的合并方法、装置及设备 | |
Hofmann | Multi-Chip Dataflow Architecture for Massive Scale Biophyscially Accurate Neuron Simulation | |
EP3859611B1 (en) | Method, apparatus and device for updating convolutional neural network using gpu cluster | |
CN115879544B (zh) | 一种针对分布式类脑仿真的神经元编码方法及*** | |
US20240046113A1 (en) | Data storage method, data acquisition method, data acquisition apparatus for a weight matrix, and device | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及*** | |
CN108460453A (zh) | 一种用于ctc训练的数据处理方法、装置及*** | |
US20240185110A1 (en) | Distribution of quantum state vector elements across network devices in quantum computing simulation | |
CN111178529A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN104468823A (zh) | 一种集群负载均衡调度方法及*** | |
Caron et al. | Event management for large scale event-driven digital hardware spiking neural networks | |
JP7389176B2 (ja) | 加速システム |
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 |