掌桥专利:专业的专利平台
掌桥专利
首页

使用多层级查找表的函数近似方法和装置

文献发布时间:2024-04-18 20:02:18


使用多层级查找表的函数近似方法和装置

技术领域

本发明涉及一种使用多层级查找表的函数近似设备及方法。

背景技术

本部分的陈述仅提供与本公开相关的背景信息,而不一定构成现有技术。

在神经网络中,各种非线性函数用于算术运算(例如,exp、log、sqrt、tanh、sigmoid、mish、swish等)。对于这些非线性函数,为了计算正确的函数值,可能需要大量时间来计算,或者当非线性函数被实现为HW时可能需要大的面积。

通常,当非线性函数被实现为HW时,可以通过将非线性函数划分为多个段,然后应用分段线性近似或分段多项式近似来计算非线性函数的近似值。当应用这种分段近似时,可以使用将函数划分为不同大小的段的方法,以便减小函数的近似误差。然而,如果段具有不同的范围,则需要预先执行将输入变量值与所有范围中的段相比较的处理,以便确定其中包括输入变量值的段。换句话说,当存在任意大小的L(其中L是自然数)个段时,需要最多L+1次比较来将输入变量值与每个段的起始值或结束值进行比较。在完成该比较处理之后,可以通过获得用于相应段的线性近似或多项式近似的常数(在下文中,称为“近似系数”)来计算函数的近似值。因此,为了快速计算,可能需要L+1个比较器和用于存储每个段的边界值的存储空间,因此,基于任意段的线性近似或多项式近似在硬件(HW)实现方面效率低。

因此,当分段线性近似或分段多项式近似被实现为HW时,如图13所示,通常使用基于相等段的近似方法,其中输入变量的范围被分成相等大小的段,并且特别地,总段的数量被设置为2N(其中N是自然数)。当使用2N个相等段时,可以通过仅使用输入变量的高N位来容易地确定包括输入变量的段,而不需要复杂的比较处理。另外,高N位可用作访问存储器的地址。基于相等段的近似具有能够使用高N位从如图14中所说明的查找表(LUT)读取关于对应段的近似系数的优点。这里,近似系数在线性近似的情况下包括斜率和偏移。

同时,如图13所示,当整个区间被分成8段时,在段S

作为另一种现有技术,NVIDIA发行的开放源型人工智能处理器NVDLA使用基于两个LUT的线性近似,如图15和16所示,以减少近似误差(参见“http://nvdla.org/hw/v1/ias/lut-programming.html”)。在该方法中,通过由第一LUT将函数的整个输入区段划分为L个相等的段来线性地近似给定函数,并且通过由第二LUT将要更精确地计算的输入段划分为J个相等的段来线性地近似给定函数。

例如,如图15所示,通过使用第一LUT将整个输入区段分成8个相等的段S

如图15中所说明的两个LUT的总大小(其与LUT所支持的段的数量成比例)可允许存储总共28(8+20)个段的近似系数,如图16中所说明。

NVDLA首先使用两个LUT为给定输入变量值同时计算两个值。接下来,如果输入变量值在可以通过第二LUT近似的范围内,则基于第二LUT计算的值被选择作为输出,并且如果输入变量值不在该范围内,则基于第一LUT计算的值被选择作为输出。

虽然当给定函数的整个输入区段的仅一部分中存在显著变化时,这种基于两个LUT的分段线性近似在减小近似误差方面是有效的,但是该方法具有的问题是,当若干部分具有显著变化时,或者即使在一部分中存在变化并且该变化严重显著,也不能有效地减小近似误差。

因此,在对具有各种特性的非线性函数进行分段近似时,需要一种能够有效减小近似误差的LUT结构和操作方法。

本公开

技术问题

本公开寻求提供一种函数近似设备和一种方法,用于在基于分段线性近似或分段多项式近似来近似非线性函数值时使用多层级查找表(LUT)来以多阶方式近似函数的函数值。在多层级LUT中,为了减小近似误差,根据函数的变化量来不同地设置段长度。

技术方案

本公开的至少一个方面提供了一种由计算设备执行的分段函数近似方法。分段函数近似方法包括获得用于函数的输入变量值。所述分段函数近似方法还包括基于所述输入变量值使用多层级查找表(LUT)来提取用于所述函数的近似系数。所述多层级LUT包括K个LUT(K是2或更大的自然数)。该分段函数近似方法还包括使用近似系数来计算针对输入变量值的函数值。所述K个LUT支持不同的段大小,由第k个LUT(k是从1到K-1的自然数)支持的段大小大于第(k+1)个LUT支持的段大小,并且基于由第k个LUT提供的映射信息来访问第(k+1)个LUT。

本公开的另一方面提供了一种分段函数近似设备。该分段函数近似设备包括输入单元,该输入单元被配置为用于获得函数的输入变量值。分段函数近似设备还包括包含多层级查找表(LUT)的存储器。多层级LUT包括K个LUT(K是2或更大的自然数)。该分段函数近似装置还包括系数提取器,其被配置为基于输入变量值使用多层级查找表(LUT)来提取用于函数的近似系数。该分段函数近似设备还包括函数值生成器,其被配置为使用近似系数来计算针对输入变量值的函数值。所述K个LUT支持不同的段大小,由第k个LUT(k是从1到K-1的自然数)支持的段大小大于第(k+1)个LUT支持的段大小,并且基于由第k个LUT提供的映射信息来访问第(k+1)个LUT。

本公开的又一方面提供了一种其中存储指令的计算机可读记录介质,所述指令在由计算机执行时使得所述计算机执行获得用于函数的输入变量值。所述指令还致使计算机基于所述输入变量值使用多层级查找表(LUT)执行提取用于所述函数的近似系数。所述多层级LUT包括K个LUT(K是2或更大的自然数)。所述指令还使得计算机执行使用所述近似系数计算针对所述输入变量值的函数值。所述K个LUT支持不同的段大小,由第k个LUT(k是从1到K-1的自然数)支持的段大小大于第(k+1)个LUT支持的段大小,并且基于由第k个LUT提供的映射信息来访问第(k+1)个LUT。

优势效果

如上所述,本发明提供了一种函数近似设备和方法,用于使用多层级LUT以多级方式来近似非线性函数的函数值,在所述多层级LUT中,根据非线性函数的变化量来不同地设置段长度。因此,该函数近似设备和方法使用小尺寸的LUT来减小近似误差。

附图说明

图1是根据本公开的实施例的配备有函数近似设备的系统的示意框图。

图2是根据本公开的实施例的函数近似设备的示意框图。

图3是示出根据本公开的实施例的使用两级查找表(LUT)的线性函数近似的示例性图。

图4是根据本公开的实施例的两级LUT的结构的示例性图。

图5是示出根据本公开的实施例的半精度浮点(FP)号的配置的示例性图。

图6是示出根据本公开的实施例的第二级LUT的映射信息的符号的示例性图。

图7是示出根据本公开的另一实施例的第二级LUT的映射信息的符号的示例性图。

图8是示出根据本公开的另一实施例的第二级LUT的映射信息的符号的示例性图。

图9是根据本公开的实施例的基于两级LUT的函数近似方法的流程图。

图10是根据本公开的实施例的基于多层级LUT的函数近似设备的示意性框图。

图11是根据本公开的实施例的基于多层级LUT的函数近似方法的流程图。

图12是根据本发明的实施例的基于线性近似生成两级LUT的方法的流程图。

图13是示出使用一个LUT的线性函数近似的示例性图。

图14是一个LUT的结构的示例性图。

图15是示出使用两个LUT的线性函数近似的示例性图。

图16是两个LUT的结构的示例性图。

具体实施方式

在下文中,将参考所附的说明性附图详细描述本公开的一些实施例。在以下描述中,尽管在不同的附图中示出了相同的元件,但是相同的附图标记优选地表示相同的元件。此外,在一些实施例的以下描述中,为了清楚和简洁的目的,将省略相关的已知组件和功能在被认为模糊本公开的主题时的详细描述。

另外,诸如第一、第二、A、B、(a)、(b)等的各种术语仅用于将一个部件与另一个部件区分开,而不是暗示或建议部件的实质、顺序或次序。在整个说明书中,当部件“包括”或“包含”一种组件时,该部件意味着进一步包括其它组件,除非有相反的具体说明,否则不排除其它组分。诸如“单元”、“模块”等术语是指用于处理至少一个功能或操作的一个或多个单元,其可以通过硬件、软件或其组合来实现。

以下将结合附图呈现的本公开的描述旨在描述本公开的示例性实施例,而不是旨在表示可以实践本公开的技术思想的仅有实施例。

本发明实施例公开了一种使用多层级查找表的函数近似设备及方法。更具体地说,本实施例提供了一种函数近似设备和方法,用于在基于分段线性近似或分段多项式近似来近似非线性函数值时,使用多层级查找表(LUT)来以多级方式近似函数的函数值。在多层级LUT中,为了减小近似误差,根据函数的变化量来不同地设置段长度。

用于神经网络的HW加速器通常包括专门执行诸如卷积运算的矩阵运算的引擎、执行诸如激活函数的非线性函数或池化函数的处理器、片上存储器、以及用于外部存储器访问的直接存储器访问(DMA)。本实施方式的函数近似设备能够在这些组件中的处理器上安装并操作。

在以下描述中,多层级LUT(下文中,与“多层级”LUT可互换地使用)是指包括在多层级LUT中的所有LUT。例如,2级LUT总体上指的是两个所包括的LUT。另外,在多层级LUT中,使用先前LUT的输出来生成后续LUT的输出。

包括在多层级LUT中的每个LUT被称为第一LUT、第二LUT等。

尽管如上所述的NVDLA包括两个LUT,但是包括在NVDLA中的LUT不对应于多层级LUT,因为第一LUT和第二LUT的输出是同时生成的。

以下,将作为分段近似的对象的原来的非线性函数称为“目标函数”或“函数”。

此外,区段和段具有相同的含义,因此可互换使用,因此,子区段和子段具有相同的含义,因此也可互换使用。

图1是根据本公开的实施例的配备有函数近似设备的系统的示意框图。

配备有函数近似设备的系统包括数据存储器110、程序存储器120和处理器130。处理器130可以使用数据存储器110和程序存储器120对目标函数执行函数近似。

处理器130包括控制器132、寄存器134、计算单元136和存储器访问单元138。寄存器134是存储计算单元136的计算输入和输出的地方,存储器访问单元138执行对数据存储器110和程序存储器120的访问,并且控制器132控制处理器130的操作(例如,功率管理、中断处理等)。计算单元136配备有根据本实施例的函数近似设备,并且以多级方式近似目标函数的函数值。

图2是根据本公开的实施例的函数近似设备的示意框图。

函数近似设备安装在计算单元136上,并且使用多层级LUT以多级方式近似函数的函数值,以便执行分段线性近似或分段多项式近似。图2是使用两级LUT的函数近似设备。函数近似设备包括输入单元202、索引生成器204、第一LUT 206、数字确定器208、第二LUT 212和函数值生成器214中的全部或一些。第一LUT 206和第二LUT 212可被包括在函数近似设备中的存储器220中,并且索引生成器204和数字确定器208可被包括在函数近似设备中的系数提取器230中。

图2示出了根据本实施例的示例性配置,可以根据索引生成器的操作、多层级LUT的结构、函数值生成器的操作和存储器的配置来实现包括其他组件或组件之间的不同连接的各种实现。

首先,使用图3和图4的示例来描述第一级的第一LUT 206和第二级的第二LUT 212的结构以及它们之间的关系。

如上所述,当使用2

图3是示出根据本公开的实施例的使用两级LUT的线性函数近似的示例性示图。

计算设备预先产生第二LUT 212的简要过程如下。计算设备使用第一LUT 206将整个输入区段划分为8个段S

在图3的示例中,其中目标函数的变化量相对小的段S

当给定输入变量值x时,函数近似设备使用输入变量值读取第一LUT 206的值,并确定读取值是否是线性近似系数或第二级LUT的映射信息(在下文中称为“映射信息”)。如果读取值是映射信息,则函数近似设备读取与第二LUT 212中的对应位置处的输入变量值对应的线性近似系数,然后计算近似值。如图3所示,两个LUT的总大小为20(8+(2+4+4+2))。因此,根据本实施例的函数近似设备可以使用比图16所示的LUT更小尺寸的LUT来近似函数。

图4是根据本发明的实施例的两级LUT的结构的示范性图示。

图4示出了当如图3中的示例那样应用多层级LUT时存储在每个LUT中的值。如上所述,当整个输入区段被划分为八个段时,第一LUT 206i)存储各个段的线性近似系数,或者ii)存储第二级LUT的映射信息。当通过将被映射到第二级LUT的单独的段划分为所需大小的子段来执行线性近似时,第二LUT 212存储相应的近似系数。

由于第一LUT 206中的位置[0]、[3]、[4]和[7]对应于未被映射到第二级LUT的段,所以存储了直线斜率的系数(图4的示例中的A和B)和用于区段的线性近似的偏移。

第一LUT 206中的位置[1]和[6]分别将该区段的两个子段进行细分,并且存储第二级LUT的映射信息BaseIndex和NumSeg。这里,基本索引BaseIndex指示第二LUT 212中的开始位置,并且子段的数量NumSeg指示从开始位置起的子段的数量。例如,在图4的示例中,第一LUT 206的[1]存储(BaseIndex,NumSeg)=(0,2)。根据这些值,可确定对应的段[1]被分成两个子段,且线性近似系数被存储在第二LUT 212中的位置[0]到[1]处。

第一LUT 206中的位置[2]和[5]细分为四个子段,并存储映射信息。例如,在图4的示例中,第一LUT 206的[2]存储(BaseIndex,NumSeg)=(2,4)。因此,可确定对应于[2]的段被再分为四个子段,且线性近似系数存储在第二LUT 212中的位置[2]到[5]处。

如上文所描述,第一LUT 206和第二LUT 212支持不同的段大小,且第一LUT 206所支持的段大小大于第二LUT 212所支持的段大小。另外,函数近似设备可以基于由第一LUT206提供的映射信息来访问第二LUT 212。

在下文中,描述函数近似设备的其余组件。

输入单元202获得用于目标函数的输入变量(值)x。这里,输入变量可以表示为计算系统中常用的浮点数(以下称为“FP数”)。FP数系统能够表示非常宽范围的尺寸。

半精度FP数(下文中称为“FP16”,即16位浮点数)由1位符号S、5位指数E和10位尾数(mantissa)M组成,如图5所示。这里,半精度FP数可以表示包括+/-0的正规数,或者取决于E字段和M字段的值的特殊值NaN(非数)、+/-Inf(无穷大)或次正规数。在图5的实例中,M

在LUT中存储与用于线性近似的斜率和偏移相对应的系数时,使用正规数和+/-0或+/-Inf作为数字,但是不使用诸如NaN的代码。因此,当两种类型的信息(线性近似系数或第二级LUT的映射信息)被存储在第一LUT 206中时,使用诸如NaN的代码,映射信息可被存储而没有额外的开销,其中NaN不被用作FP数系统中的数字。因此,可区分从第一LUT 206读取的值是线性近似系数还是映射信息。将第二级LUT的映射信息映射到NaN代码的方法将在后面解释。

索引生成器204根据输入变量生成用于访问第一LUT 206的第一索引。第一索引可以指示第一LUT 206中存储关于包括输入变量值的段的信息的位置。

当输入变量是FP数时,可以通过将FP数转换为整数并提取高N位来生成N位第一索引。当输入变量是整数形式时,如上所述,可以通过提取输入变量的高N位来生成第一索引。

函数近似设备基于第一索引提取第一LUT 206的输出。如上文所描述,输出可为第一LUT 206所支持的段的线性近似系数或第二LUT 212的映射信息。

数字确定器208确定第一LUT 206的输出是否为浮点数系统中的数字。

如果第一LUT 206的输出为数字,那么其表示所述段的线性近似系数,即,斜率和偏移。

另一方面,如果第一LUT 206的输出不是数字(例如,NaN代码),则第一LUT 206的输出表示第二LUT 212的映射信息,并且包括基本索引和子段的数量。

索引生成器204根据输入变量和映射信息生成用于访问第二LUT 212的第二索引。当子段的数量是2

函数近似设备基于第二索引提取第二LUT 212的输出。第二LUT 212的输出表示用于子段的线性近似系数。

函数值生成器214使用线性近似系数生成目标函数的近似值。此处,线性近似系数(即斜率A和偏移B)可为第一LUT 206或第二LUT 212的输出。函数的近似值可以计算为针对输入变量x的y=Ax+B。

在下文中,使用图6至图8描述在FP数系统中将第二级LUT的映射信息分配给NaN代码的方法。

在FP数系统中,NaN表示E字段的所有位都是1而M字段不是0的情况,如图5所示。因此,通过将非零值存储在NaN代码的M字段中作为第二级LUT的映射信息,可以区分存储在第二LUT 212中的值是否是映射信息。

基于映射信息中的段数总是大于0的事实,NaN代码可以用作映射信息。在图6的示例中,如果对于从第一LUT 206读取的值中的存储在位置B中的值,E字段的所有位都是1并且M字段中的值是非零的,则函数近似设备将存储在位置B处的值视为第二级LUT的映射信息。此外,函数近似设备使用存储在位置A和B处的FP数处的M字段中的值来检查映射信息BaseIndex和NumSeg。

同时,在图6所示的方法的情况下,为了确定M字段的值是否为0,需要使用HW逻辑,如上所述。然而,随着分配给M字段的位数的增加,根据逻辑的延迟可能增加。

为了减少这种延迟并实现更快的操作,在以NaN代码存储映射信息时,M字段中的预设位置的位值可以被固定为1。图7和图8的示例示出了将存储在第一LUT 206中的值中的M字段的最高有效位值固定为1,然后存储第二级LUT的映射信息的方法。在图7的示例中,可以使用存储在位置A处的值来检查是否包括映射信息,并且在图8的示例中,可以使用存储在位置B处的值来检查是否包括映射信息。

在根据本发明的另一实施例中,当FP数系统中的子正规数不用于表示近似系数时,可将第二级LUT的映射信息映射到子正规数代码。

在FP数系统中,如图5所示,子正规数表示E字段的所有位都为0而M字段不为0的情况。因此,通过将非零值存储在子正规数代码的M字段中作为第二级LUT的映射信息,可以区分存储在第二LUT 212中的值是否是映射信息。

基于映射信息中的段数总是大于0的事实,可以使用子正规数代码作为映射信息。换句话说,如果对于从第一LUT 206读取的值中的存储在位置B的值,E字段的所有位值都是0,并且M字段的值是非零的,则函数近似设备将存储在位置B的值视为第二级LUT的映射信息。

另外,为了快速操作,在将映射信息存储在子正规数代码中时,M个字段中的预设位置的位值可以被固定为1。

同时,在FP号系统中,NaN代码或子正规数代码的S字段具有“无关”的条件。

在根据本发明的另一实施例中,当第二级LUT的映射信息被存储在NaN代码或子正规数代码中时,相应代码的S字段可被设置为预设值,以指示其是映射信息。例如,根据预设规则,如果S字段是1,则M字段可以指示映射信息。

图9是根据本发明的实施例的基于两级LUT的函数近似方法的流程图。

函数近似设备获得目标函数的输入变量(值)(S900)。

函数近似设备根据输入变量生成第一索引以便访问第一LUT 206(S902)。第一索引可以指示第一LUT 206中存储关于包括输入变量值的段的信息的位置。

函数近似设备基于第一索引提取第一LUT 206的输出(S904)。如上文所描述,输出可为第一LUT 206所支持的段的线性近似系数,或第二LUT 212的映射信息。

函数近似设备确定第一LUT 206的输出是否是浮点数系统中的数字(S906)。

如果第一LUT 206的输出是数字(S906中的是),则第一LUT 206的输出表示该段的线性近似系数,即斜率和偏移量。

另一方面,如果第一LUT 206的输出不是数字(例如,NaN代码)(S906中的否),则第一LUT 206的输出表示第二LUT 212的映射信息,并且包括基本索引和子段的数量。

函数近似设备根据输入变量和映射信息生成第二索引,以便访问第二LUT 212(S908)。

函数近似设备基于第二索引提取第二LUT 212的输出(S910)。第二LUT 212的输出表示子段的线性近似系数。

函数近似设备使用线性近似系数生成函数的近似值(S912)。此处,线性近似系数(即斜率A和偏移B)可为第一LUT 206或第二LUT 212的输出。函数的近似值可以计算为针对输入变量x的y=Ax+B。

尽管已经针对基于两级LUT的线性近似描述了本实施例,但是本实施例的应用范围并不一定局限于此。在根据本公开的另一实施例中,当函数近似设备包括由K(K为自然数)个LUT组成的多层级LUT时,通过将如图2和图9所示的基于第一LUT 206生成用于第二LUT 212的映射信息的过程等同地应用于包括第三LUT的所有后续LUT,可以实现基于多层级LUT的线性近似。

图10是根据本发明的实施例的基于多层级LUT的函数近似设备的示意性框图。

基于多层级LUT的函数近似设备被安装在计算单元136上并且以与图2中所示的相同的方式实现,但是存储器220包括多层级LUT。

这里,多层级LUT包括K个LUT(K是2或更大的自然数)。K个LUT支持不同的段大小,并且由第k个LUT(其中k是从1到K-1的自然数)支持的段大小大于由第(k+1)个LUT支持的段大小。如上所述,K个LUT中的每一个都可以用浮点数系统来表示。

函数近似设备可基于由第k个LUT提供的映射信息来访问第(k+1)个LUT。因此,第k个LUT包括作为关于段的信息的线性近似系数或映射信息,并且作为最后一级的第K个LUT包括作为关于段的信息的线性近似系数。

映射信息是用于将第(k+1)个LUT支持的所有段中的t个段(其中t是自然数)中的每一个划分为子段的信息。这里,t个段中的每一个是其中函数的近似误差大于预设阈值的段。可以根据函数的t个段中的每一个的近似误差的大小来确定子段的数量。对于t个段中的每一个,映射信息可以包括作为第(k+1)个LUT中的起始位置的基本索引以及子段数。

同时,由于已经基于图5至图8描述了在浮点数系统中定义映射信息的方法,因此省略进一步的详细描述。

在图10的示例中,输入单元202获得目标函数的输入变量(值)。

系数提取器230基于输入变量使用多层级LUT来提取函数的线性近似系数。

首先,索引生成器204基于输入变量和映射信息生成第j个索引(其中j是从1到K的自然数)。这里,仅基于输入变量生成第一索引。

接下来,数字确定器208确定从第j个LUT提取的第j个输出是否是基于第j个索引的数字。

如果第j个输出是浮点数系统中的数字,则系数提取器230提取第j个输出作为线性近似系数,如果第j个输出是映射信息,则基于下一级的LUT使用映射信息重新提取线性近似系数。

函数值生成器214使用线性近似系数生成输入变量的函数值。

同时,图2或图10中所示的包括多层级LUT的存储器220可以如下实现。

在本发明的一个实施例中,包含在多层级LUT中的每一LUT可实施为物理上单独的存储器。当访问每个LUT时,函数近似设备可以基于流水线方式访问包括在单独的存储器中的每个LUT。这里,通过在每个流水线级布置数字确定器208和系数提取器230以生成用于访问每个LUT的索引,可以增加函数近似的吞吐量。

在根据本发明的另一个实施例中,为了减小HW的面积以用于函数近似,多层级LUT可以被存储在物理上相同的存储器中,其中包括在多层级LUT中的每个LUT在逻辑上是分开的。函数近似设备可基于每个LUT在存储器中的预存储的开始位置来生成索引以访问每个LUT。

图11是根据本发明的实施例的基于多层级LUT的函数近似方法的流程图。

函数近似设备获得输入变量(值),并将j(其中j是从1到K的自然数)初始化为1(S1100)。

函数近似设备基于输入变量和映射信息生成第j个索引(S1102)。这里,仅基于输入变量生成第一索引。

函数近似设备根据第j索引从第j个LUT生成第j个输出(S1104)。第j个输出可以是第j个LUT支持的段的线性近似系数,或者是下一级LUT的映射信息。

函数近似设备确定第j个输出是否是浮点数系统中的数字(1106)。

如果第j个输出是映射信息(S1106中的否),则函数近似设备将j加1(S1108),然后重复使用映射信息提取线性近似系数的处理(S1102至S1106)。若第j个输出为数字(S1106的是),则函数近似设备提取第j个输出作为线性近似系数。

函数近似设备使用线性近似系数生成函数的近似值(S1110)。

在下文中,描述了一种方法,其中计算设备以线性近似生成两级LUT,其中使用多层级LUT中的两级LUT,并且将每一级中的段数设置为2

图12是根据本发明的实施例的基于线性近似生成两级LUT的方法的流程图。

计算设备假设给定HW中可用的LUT大小(第一LUT或第二LUT支持的段的数量)。

计算设备通过将目标函数的整个输入范围划分为第一LUT的大小num_lut1来向目标函数应用分段线性近似,使得目标函数与近似函数之间的误差减小(S1200)。

计算设备将所计算的斜率和偏移的系数存储在第一LUT中(S1202)。这里,指示每个段没有被映射到第二LUT(link_info[],mapped=false(假))。

计算设备计算每个段的目标函数和近似函数之间的误差(S1204)。

将第二LUT中的尚未被填充值的区域的数量lut2_remained设置为第二LUT的大小(S1206)。

计算设备在从第一LUT的段中选择具有最大误差E

计算设备检查最大误差E

计算设备检查当前选择的段是否被映射到第二LUT(S1212)。如果当前选择的段被映射到第二LUT(S1212中的是),则计算设备将num_segment_lut2_cur设置为被映射到第二LUT的段数的两倍(S1214)。如果当前选择的段未被映射到第二LUT(S1212中的否),则计算设备将num_segment_lut2_cur设置为2(S1216)。

接着,计算设备检查num_segment_lut2_cur是否小于当前可用的lut2、lut2_remained的空余空间的数量(S1218)。如果不是(S1218中的否),计算设备结束划分成子段的过程。

如果num_segment_lut2_cur小于当前可用的lut2的空余空间的数量(S1218中的是),则计算设备将当前所选段划分成num_segment_lut2_cur以改变第二LUT的映射信息以用于线性近似,并从第二LUT的空余空间的数量中减去第二级LUT的附加使用的空间的数量。

计算设备对被分为两级的每个子段执行精确的线性近似,使得目标函数与近似函数之间的误差减小(S1220)。

计算设备将所计算的斜率和偏移的系数存储在第二LUT中(S1222)。

计算设备计算每个子段的目标函数和近似函数之间的误差(S1224)。

计算设备用针对第二LUT计算的误差中的最大误差替换针对在第一LUT中选择的段的近似误差E

如上所述,计算设备重复映射到第二LUT的过程(S1208到S1226),直到包括子段的所有段的近似误差变得小于阈值E

在根据本发明的另一实施例中,对于包括在多层级LUT中的K个LUT,计算设备可通过将图12中所示的基于线性近似生成两级LUT的方法应用于第k个LUT(其中k是从1到K-1的自然数)和第(k+1)个LUT,来基于线性近似生成多层级LUT。

尽管已经关于分段线性近似方法的应用描述了本实施例,但是也可以类似地应用分段多项式近似方法。在分段线性近似的情况下,使用可以存储两个系数的LUT,因为表示每个段的公式是y=Ax+B。当用P阶多项式应用分段近似时,表示每个段的公式为

由于图6至图8的示例示出了线性近似,因此在表示每个段中存在的两个系数时,例如,NaN代码用于指示用于存储下一级的LUT的映射信息的系数。由于(P+1)个系数用于多项式近似,因此使用NaN代码的方法被类似地扩展,使得下一级的LUT的映射信息可被存储在前一级的(P+1)个系数中的预设位置。

在下文中,将根据本实施例的多级方法中的两级分段线性近似方法的性能与现有的一级分段线性近似方法的性能进行比较。tanh和sigmoid函数的比较结果如表1所示,它们是神经网络中常用的激活函数。

[表1]

表1示出了当使用现有方法将分段线性近似应用于64个段时以及应用两级分段线性近似的情况下近似误差相似时的LUT大小(第一LUT和第二LUT的大小)。与现有方法相比,所提出的多层级LUT方法可以通过仅使用具有59.4%到75%大小的LUT来以类似的近似误差近似目标函数。

尽管各个流程图中的步骤被描述为顺序执行,但是这些步骤仅仅例示了本公开的一些实施例的技术思想。因此,本公开所属领域的普通技术人员可以通过改变在相应附图中描述的顺序或者通过并行地执行步骤中的两个或更多个来执行步骤。因此,各个流程图中的步骤不限于所示的时间顺序。

本文描述的系统和方法的各种实现方式可以通过数字电子电路、集成电路、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、计算机硬件、固件、软件和/或它们的组合来实现。这些各种实现方式可以包括在可编程系统上可执行的一个或多个计算机程序中实现的那些实现方式。该可编程系统包括至少一个可编程处理器,其被耦合以从存储系统接收数据和指令并向存储系统发送数据和指令;至少一个输入设备;以及至少一个输出设备,其中可编程处理器可以是专用处理器或通用处理器。计算机程序(也称为程序、软件应用或代码)包含用于可编程处理器的指令,并且被存储在“计算机可读记录介质”中。“

尽管为了说明的目的已经描述了本公开的实施例,但是本公开所属领域的普通技术人员应当理解,在不脱离本公开的思想和范围的情况下,各种修改、添加和替换是可能的。因此,为了简洁和清楚起见,已经描述了本公开的实施例。本公开的实施例的技术思想的范围不受图示的限制。因此,本公开所属领域的普通技术人员应当理解,本公开的范围不应当由以上明确描述的实施例限制,而是由权利要求及其等同物限制。

(附图标记)

130:处理器

132:控制器

134:寄存器

136:计算单元

138:存储器访问单元

202:输入单元

204:索引生成器

206:第一LUT

208:数字确定器

212:第二LUT

214:函数值生成器

220:存储器

230:系数提取器

相关申请的交叉引用

本申请要求于2021年7月19日提交的申请号为10-2021-0094365的韩国专利申请的优先权和权益,其全部公开内容通过引用合并于此。

相关技术
  • 用于使用查找表以固定点来近似非线性函数的方法和装置
  • 使用查找表以固定点来近似非线性函数
技术分类

06120116581986