CN109643327B - 用于使用查找表以固定点来近似非线性函数的方法和装置 - Google Patents
用于使用查找表以固定点来近似非线性函数的方法和装置 Download PDFInfo
- Publication number
- CN109643327B CN109643327B CN201780052874.3A CN201780052874A CN109643327B CN 109643327 B CN109643327 B CN 109643327B CN 201780052874 A CN201780052874 A CN 201780052874A CN 109643327 B CN109643327 B CN 109643327B
- Authority
- CN
- China
- Prior art keywords
- input variable
- determining
- value
- processor
- integer
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
-
- 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/544—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 for evaluating functions by calculation
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5354—Using table lookup, e.g. for digit selection in division by digit recurrence
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
在硬件或嵌入式系统中计算非线性函数f(x)可能是复杂且资源密集的。在本公开的一个或多个方面,提供了用于使用查找表(LUT)以及内插或外推来在硬件中准确且高效地计算非线性函数f(x)的方法、计算机可读介质、以及装备。该装备可以是处理器。该处理器关于输入变量x计算非线性函数f(x),其中f(x)=g(y(x),z(x))。该处理器通过确定输入变量x的最高有效位(MSB)的位置来确定整数n。另外,该处理器基于第一查找表和所确定的整数n来确定y(x)的值。而且,该处理器基于n和输入变量x以及基于第二查找表来确定z(x)的值。此外,该处理器基于y(x)和z(x)的所确定值来计算f(x)。
Description
相关申请的交叉引用
本申请要求于2016年9月1日提交的题为“APPROXIMATION OF NON-LINEARFUNCTIONS IN FIXED POINT USING LOOK-UP TABLES(使用查找表以固定点来近似非线性函数)”的美国专利申请No.15/255,015的权益,其通过援引全部明确纳入于此。
背景
领域
本公开一般涉及数学近似,尤其涉及使用查找表以固定点算术来近似非线性函数。
背景技术
在硬件或嵌入式系统中计算非线性函数f(x)可能是非常复杂且资源密集的。通常,泰勒级数展开被用来近似非线性函数。然而,使用泰勒级数展开近似非线性函数f(x)在计算上可能是低效的,因为这种近似可能需要显著的存储器和处理时间。当前存在对在硬件中更高效地计算任意非线性函数的技术的需要,其中此类技术提供对非线性函数的计算的增大的准确度,同时减少存储器使用和/或处理时间。
概述
以下给出了一个或多个方面的简要概述以提供对此类方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在标识出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是以简化形式给出一个或多个方面的一些概念以作为稍后给出的更详细描述之序言。
在硬件或嵌入式系统中计算非线性函数f(x)可能是非常复杂且资源密集的。通常,泰勒级数展开被用来近似非线性函数。然而,使用泰勒级数展开近似非线性函数f(x)在计算上可能是低效的,因为这种近似可能需要显著的存储器和处理时间。
本公开的一个或多个实施例可被用来使用查找表(LUT)以及内插或外推来在硬件中更准确且高效地计算非线性函数。确定任何值x的非线性函数f(x)的值可能需要时间和/或存储器空间。对于某些应用,本公开的各方面可降低用于计算某些非线性函数的计算时间和/或存储器要求。
在本公开的一方面,提供了方法、计算机可读介质、以及装备。该装备可以是处理器。该处理器关于输入变量x计算非线性函数f(x),其中f(x)=g(y(x),z(x))。该处理器通过确定输入变量x的最高有效位(MSB)的位置来确定整数n。另外,该处理器基于第一查找表和所确定的整数n来确定y(x)的值。另外,该处理器基于n和输入变量x以及基于第二查找表来确定z(x)的值。此外,该处理器基于y(x)和z(x)的所确定值来计算f(x)。
为了达成前述及相关目的,这一个或多个方面包括在下文充分描述并在权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或多个方面的某些解说性特征。然而,这些特征仅仅是指示了可采用各个方面的原理的各种方式中的若干种,并且本描述旨在涵盖所有此类方面及其等效方案。
附图简述
图1是解说单层神经网络的示图。
图2是解说配置成执行以固定点来近似非线性函数的方法的示例性系统的示图。
图3A是解说示例性非线性函数f(x)=tanh(x)的图形表示的示图。
图3B是解说具有基于由处理器定义的分段边界的分段标识符(ID)的非线性函数的输入变量的示图。
图4A是解说配置成执行使用样条重用的概念来近似某些非线性函数的方法的通用系统的示图。
图4B是解说以固定点域计的输入变量以及根据输入使用图4A的样条重用近似方法的实施例来计算变量的示图。
图4C是解说使用图4A的样条重用近似方法来计算非线性函数的示图。
图4D是解说以固定点域计的输入变量以及根据输入使用图4A的样条重用近似方法的另一实施例来计算变量的示图。
图4E是解说使用图4A的样条重用近似方法的另一实施例来计算非线性函数的示图。
图5是使用样条重用的概念来近似某些非线性函数的方法的流程图。
图6是解说示例性装备中的不同装置/组件之间的数据流的概念性数据流图。
图7是解说采用处理系统的装备的硬件实现的示例的示图。
详细描述
以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可以实践这些概念。在一些实例中,以框图形式示出众所周知的结构和组件以便避免淡化此类概念。
现在将参照各种系统给出数学近似方法的若干方面。这些系统和方法将在以下详细描述中进行描述并在附图中由各种块、组件、过程、算法等(统称为“元素”)来解说。这些元素可使用电子硬件、计算机软件、或其任何组合来实现。此类元素是实现成硬件还是软件取决于具体应用和加诸于整体系统上的设计约束。
作为示例,元素、或元素的任何部分、或者元素的任何组合可被实现为包括一个或多个处理器的“处理系统”。处理器的示例包括:微处理器、微控制器、图形处理单元(GPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SoC)、基带处理器、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立的硬件电路以及其他配置成执行本公开中通篇描述的各种功能性的合适硬件。处理系统中的一个或多个处理器可执行软件。软件应当被宽泛地解释成意为指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行件、执行的线程、规程、函数等,无论其是用软件、固件、中间件、微代码、硬件描述语言、还是其他术语来述及皆是如此。
相应地,在一个或多个示例实施例中,所描述的功能可以在硬件、软件、或其任何组合中实现。如果在软件中实现,则各功能可作为一条或多条指令或代码存储或编码在计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限制,此类计算机可读介质可包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其他磁性存储设备、上述类型的计算机可读介质的组合、或能够被用于存储可被计算机访问的指令或数据结构形式的计算机可执行代码的任何其他介质。
图1是解说单层神经网络100的示图。本公开的一个或多个实施例可被用来提高速度并降低用于重复计算的存储器需求。例如,如在图1中所示,在单层神经网络100中,初始输入(x1至xn)可以是静态信号(诸如图像),或者可以是动态信号(诸如视频或传感器数据),并且输出(Oj)可以是分类信号或重建信号。例如,在单层神经网络100中输入(x1至xn)至输出(Oj)的变换的共用元素可涉及传递函数102,继之以激活函数104。激活函数104可被设计成将传递函数102的结果迫使到有限范围(例如,{-1,1})内,。神经网络中的激活函数104的各示例是tanh(·)和S型(sigmoid)函数。在典型的多层神经网络中,单次通过所有层可能涉及应用了激活功能104的成千上万个实例。因此,在神经网络中,激活函数104的计算可能是网络等待时间的显著贡献者。
本公开的一个或多个实施例可被用于使用查找表(LUT)以及内插或外推来在硬件中更准确且高效地计算非线性函数。确定关于任何值x的非线性函数f(x)的值可能需要时间和/或存储器空间。对于某些应用,本公开的各方面可降低用于计算某些非线性函数的计算时间和/或存储器要求。作为示例而非限定,用作神经网络中的激活函数的f(x)=tanh(x)的计算将被用来解说本公开的各个方面。
通常,泰勒级数展开被用来近似非线性函数f(x)。然而,泰勒多项式可能仅在输入值的有限范围上提供各准确近似。而且,使用泰勒级数展开来近似非线性函数f(x)在计算上可能是低效的,因为这种近似可能需要显著的存储器和处理时间。替换地,包含非线性函数f(x)的预先计算结果的LUT结合使用来自LUT的f(x)的预先计算结果的内插/外推可被用来近似非线性函数f(x)。然而,内插/外推的结果可能无法提供足够的准确度。在一方面,样条内插可被用来近似非线性函数f(x)。然而,任何其他内插技术(例如有理内插、多元内插等等)也可被用于以固定点来近似非线性函数f(x)。
在一方面,非线性函数f(x)的样条内插可针对多个分段中用来近似非线性函数f(x)的每个分段采用低次多项式。对于给定的非线性函数f(x),x的较大输入范围可能比在x的较小输入范围上近似非线性函数时需要更多的分段以用某一准确度来近似非线性函数。在样条内插中,每个分段可通过多项式来近似。各分段的多项式可被选择成使得这些多项式平滑地拟合在一起。在一方面,可在样条内插中利用可被用来近似任何函数的三次样条(三次多项式)。
在一个方面,使用样条内插来近似具有较大输入范围的非线性指数f(x)可能需要大量样条/分段来覆盖该较大输入范围,并且可使用LUT来存储非线性函数f(x)中针对每个样条/分段的系数的预先计算的值。因此,在此类近似中,使用LUT可能需要较大的存储器空间来存储该LUT。在一方面,为了减少存储器空间,其中非线性函数f(x)的值不频繁地改变的一个或多个连续分段可被组合成由单个样条多项式表示的较大分段以减少分段的总数,这可能降低存储器需求。在一方面,各分段的边界可被限于2的幂,而不是使用具有相等大小或任意大小的分段。当分段的边界以2的幂出现时,对包含非线性函数f(x)的输入变量x的值的分段的标识可基于该非线性函数f(x)的输入变量x的固定点表示(例如,二进制表示),以较低的计算成本来确定。
在一个方面,与非线性函数f(x)的以指数方式间隔开的分段(例如,限于2的幂的分段的边界)相对应的LUT可允许对包括输入变量x的值的分段的降低复杂度查找。利用以指数方式间隔开的分段还可针对特定输入范围允许对非线性函数f(x)的较高精度计算,以及针对其他输入值允许对非线性函数f(x)的较低精度计算。例如,对于神经网络中的激活函数(例如,S型或tanh),最感兴趣的区域可接近于0。在神经网络中,激活函数将传递函数的结果迫使到有限范围{-1,1}内。
本公开的一个或多个实施例可被用于使用LUT以及样条内插或外推来在硬件中更准确且高效地计算非线性函数。
图2是解说配置成执行以固定点算术来近似非线性函数的方法的示例性系统200的示图。在一个示例中,非线性函数可以是f(x)=tanh(x)。在该实施例中,非线性函数f(x)使用LUT结合样条内插来近似,该LUT包含该非线性函数f(x)中针对f(x)的多个分段中的每个分段的系数的预先计算值。系统200包括用于对输入数据(例如,非线性函数f(x)的输入变量x的值)进行操作的处理器210、以及存储器220。处理器210可接收输入变量x并基于存储器220中所存储的一个或多个LUT来确定非线性函数f(x)。
图3A是解说示例性非线性函数f(x)=tanh(x)的图形表示的示图300。图3B是解说具有基于由处理器定义的分段边界的分段ID的非线性函数的输入变量的示图345。图3B具体解说了以定点二进制域表示的输入变量x=10.10110(360)。输入变量x可以按二进制、十进制、十六进制、或某种其他格式来接收。如果输入变量x是以除了二进制格式之外的格式来接收的,则处理器210可将该输入变量x转换成二进制格式。在一些实施例中,非线性函数f(x)及各对应的LUT可被预定义并且存储在存储器220中。
在一个方面,非线性函数f(x)可被划分成输入值/分段/样条的若干个范围,其中每个分段可通过多项式来近似。在一个实施例中,非线性函数f(x)的分段边界可被预定义并且存储在存储器220中。各分段的用于在f(x)的各预定义值之间进行内插的多项式可被选择成使得这些多项式平滑地拟合在一起。在一方面,可在样条内插中利用三次样条(三次多项式)。非线性函数f(x)中针对每个分段的三次方的系数被存储在对应的LUT中。
在一些实施例中,非线性函数f(x)的各分段可基于非线性函数的性质、感兴趣的输入变量x的范围、是否可针对x的某些范围(在该范围中应用对非线性函数f(x)不太感兴趣)来降低准确度等等来确定。例如,在神经网络中,激活函数可通过f(x)=tanh(x)来表示,其中函数的最感兴趣的部分在零附近的范围中,因为非线性函数tanh(x)的范围0<x<1具有函数值的较多变化,并且由此可能需要较高的计算准确度。另一方面,对于大于4的x的值,函数tanh(x)的值约为1。因此,对于x≥0,函数f(x)=tanh(x)可由如下三个分段来表示:
分段#1:0≤x<1(330)
分段#2:1≤x<4(340)
分段#3:4≤x<∞(350)
一旦确定了非线性函数f(x)的各分段,处理器210就标识包括输入变量x的值的非线性函数f(x)=tanh(x)的分段。例如,为了基于x来标识非线性函数f(x)=tanh(x)的分段,处理器210可确定输入变量x=10.10110的二进制表示的首个1的位置(从MSB侧起)。首个1的位置确定输入变量x的值所属的非线性函数f(x)的分段,在这一情形中是分段#2(340)。例如,在当前示例性实施例中,x=10.10110(360)以固定点二进制域计的二进制表示可以按十进制计写为x=2.6875,其落在分段#2(1≤x<4)内(340)。
接着,处理器210使用与分段#2(340)相对应的样条多项式以及包含非线性函数f(x)=tanh(x)中针对每个样条/分段的系数的预先计算值的LUT来计算f(x)=tanh(x)关于输入变量x=10.10110(360)的近似结果。例如,如果表示输入变量x的值所属的分段#2(340)的样条多项式是ax3+bx2+cx+d,则LUT可包含系数a、b、c和d的值。处理器310可以使用x的值结合来自式ax3+bx2+cx+d的系数a、b、c和d的值来计算f(x)=tanh(x)关于x=10.10110(360)的近似结果。
尽管可使用关于样条以指数方式间隔开的分段的概念来准确地近似任何非线性函数,但是如在图2、3A、3B的实施例中所公开的概念对于高效且准确地近似其输出在x的有限范围上快速变化的非线性函数f(x)也是有效的。例如,关于样条以指数方式间隔开的分段可被用来计算神经网络中的共用激活函数(例如,S型或tanh)。
本公开的另一方面可经由样条重用来计算非线性函数。对于某些函数类别,例如,在计算f(x)=xβ或f(x)=log x时,针对整个输入范围的多项式近似可能不是必要的。取而代之,针对较小输入范围定义的样条可被重用以供整个输入范围。此类非线性函数可通过重写x=y·z来分解。利用该分解,针对整个输入范围的较小范围定义的样条可被重用,以在x的整个输入范围上近似非线性函数。在样条重用近似方法的一个实施例中,样条分段可以不是以指数方式间隔开的。
图4A是解说配置成执行使用样条重用的概念来近似某些非线性函数的方法的通用系统400的示图。在一个示例中,非线性函数可以是f(x)=xβ或f(x)=logx。系统400包括用于对输入数据(例如,非线性函数f(x)的输入变量x(435)的值)进行操作的处理器410、以及存储器420。处理器410可接收输入变量x(435)并基于存储器420中所存储的一个或多个LUT来确定/计算(470)非线性函数f(x)。输入变量x可以按二进制、十进制、十六进制、或某种其他格式来接收。如果输入变量x是以除了二进制格式之外的格式来接收的,则处理器410可将该输入变量x转换成二进制格式。在一些实施例中,非线性函数f(x)(例如,f(x)=xβ或f(x)=log x等等)可被预定义并与用于近似的一个或多个LUT一起存储在存储器420中。处理器410可从存储器420访问非线性函数f(x)和LUT,以执行近似。
例如,在一个实施例中,为了使用样条重用的概念来近似(470)非线性函数f(x)=xβ(其中β是常数且x>0),可通过重写x=y·z或xβ=(y·z)β=yβ·zβ来对函数f(x)=xβ执行分解。因此,xβ可通过确定(450)yβ和zβ的值来确定。在这一示例中,y=2n(445),因此,yβ=(2n)β,(n∈I)且z∈(1.0,2.0)。在这一情形中,y是为2的幂的整数,并且z的值是为1与2的值之间的实数。因此,y的值可通过确定(460)n的值来确定(445)。一旦确定了(460)n,处理器410就根据输入变量x(435)的值来确定(440)z的值。上述分解对于近似xβ可能是有用的,因为这种分解仅使用两个LUT,一个LUT用于yβ且另一LUT用于zβ。用于zβ的LUT在有限输入范围上,这可以减少存储器空间,并由此改善处理时间。在一个实施例中,可使用三次样条近似来计算zβ。例如,对于z∈(1.0,2.0),可能存在四个均等间隔的样条:
1.0≤z<1.25
1.25≤z<1.5
1.5≤z<1.75
1.75≤z<2.0
用于zβ的LUT 494可包含三次多项式的针对每个分段的系数的预先计算值(例如,来自式ax3+bx2+cx+d的系数a、b、c和d的值)。
在这一示例性配置中,非线性函数f(x)=xβ、针对不同β值的用于yβ和zβ的LUT可被预定义并存储在存储器420中。在一些配置中,可通过存储器420来接收β的值。处理器410可从存储器420访问针对所接收到的β值的用于yβ和zβ的LUT,以使用样条重用的概念来执行近似。
图4B是解说以固定点域计的输入变量以及根据输入使用图4A的样条重用近似方法来计算变量的示图。图4C是解说使用图4A的样条重用近似方法来计算(470)非线性函数的示图。图4B具体解说了以固定点二进制域表示的输入变量x=10010.10110(435),以及根据输入变量x=10010.10110(435)(或即以十进制计x=18.6875)来计算(460)变量n。为了确定n,处理器410确定首个1(480)从MSB 475侧起在输入变量x 435中的位置以及小数点485在输入变量x 435中的位置。接着,处理器410通过计算在输入变量x 435中首个1(480)的位置与小数点485的位置之间的位数目(或移位数目)来确定(460)变量n。例如,在当前情形中,n=4。因此,输入变量x 435的二进制表示的首个1确定了2的幂,并且进而使用n的值确定了(445)y(其是为2n的整数值)。
图4C具体地解说了基于变量n,根据输入变量x=10010.10110(435)来计算(440)z490。一旦确定了(460)n,处理器410就通过将小数点485在输入变量x=10010.10110(435)中向左移动n个位置(即,移动到紧挨首个1(480))以获得z 490,来根据输入变量x 435的值确定(440)z 490的值。因此,如在图4C中所示,在当前示例性实施例中,值z=1.001010110(490)(以十进制计z=1.16796875,在1至2的范围中的值)。图4C还示出了通过计算yβ·zβ来计算(445)y、计算(450)yβ、zβ、以及计算(470)f(x)=xβ,因为xβ=yβ·zβ。
一旦由处理器410计算出n和z 490,处理器410就使用值n=4来确定(445)y的值,因为y=2n=24=16(以十进制计)。接着,处理器410根据用于yβ的LUT 492针对n=4来检索yβ的值,并根据用于zβ的LUT 494针对z=1.16796875来检索zβ的值。用于yβ的LUT 492仅包含有限范围的值,因为y是为2的幂的整数。用于zβ的LUT 494可被重用,也就是说,在有限范围上仅需要一个LUT以用于zβ。以下是针对β=2的两个示例性LUT,一个LUT用于yβ且另一LUT用于zβ。
用于Yβ的LUT
用于Zβ的LUT
需要用于yβ的LUT 492来覆盖输入x 435的足够宽的动态范围。LUT大小的线性增加对应于输入范围的指数增加。因为在这一情形中,y=2n,所以LUT是确切的,并且不需要近似来计算yβ。对于所有z∈(1.0,2.0),用于zβ的LUT 494提供对zβ的确切值的近似。
对于分解x=y·z,xβ=yβ·zβ,针对β的特定值(例如,β=2),处理器410通过计算yβ·zβ来计算(470)xβ的值。具体而言,处理器410使用yβ的LUT 492来计算(450)yβ的值,并且处理器410使用zβ的LUT 494来计算(450)zβ的值。处理器410随后将计算出的yβ和zβ的值相乘以计算(470)xβ的值。
可使用类似的分解技术以通过重写x=y·z来计算f(x)=log x的值。因此,log x=log y+log z。附加地,log x的值可通过使用上述技术确定y和z的值以及使用两个LUT(一个LUT用于log y且另一LUT用于log z)来计算。同样,log z也可使用样条来近似。
在通过样条重用和分解来计算非线性函数的另一方面,对输入变量x的替代分解可通过调整z的范围来在对函数xβ(其中β是常数,且x>0)的评估期间使用。如此,yβ=(2n)β(n=pm,m∈I),并且z∈(1.0,2.0p),p∈I。在这一情形中,值p=3,其可被预定义并存储在存储器420中。如此,y是为8的幂的整数,因为n的值是3的倍数(p=3),并且z的值是为1与8的值之间的实数。p的值可基于xβ曲线的形状来选择。例如,针对较小的β值(例如,0.001),可以选择较大的p值以覆盖zβ值的较宽范围。
在这一示例性配置中,非线性函数f(x)=xβ、针对不同β值的用于yβ和zβ的LUT可被预定义并存储在存储器420中。在一些配置中,可通过存储器420来接收β的值。处理器410可从存储器420访问针对所接收到的β值的用于yβ和zβ的LUT,以使用样条重用的概念来执行近似。
图4D是解说以固定点二进制域计的输入变量以及根据输入使用图4A的样条重用近似方法的另一实施例来计算变量的示图。图4D具体解说了以固定点二进制域表示的输入变量x=10010.10110(435)(或即以十进制计x=18.6875),以及根据输入变量x=10010.10110(435)来计算(460)变量n。一旦由处理器410从存储器420中检索到p的值,处理器410就确定首个1(480)从MSB 475侧起在输入变量x 435中的位置以及小数点485在输入变量x 435中的位置。如果假定首个1(480)在输入变量x 435中远离小数点485t个位置,则处理器410如下计算变量n:
在这一情形中,如果首个1(480)在小数点485的左侧,则t>0,而如果首个1(480)在小数点485的右侧,则t<0。在当前示例中,对于输入变量x=10010.10110(435)
图4E是解说使用图4A的样条重用近似方法的另一实施例来计算(470)非线性函数f(x)=xβ的示图。图4E具体解说了基于变量n=3,根据输入变量x=10010.10110(435)来计算(440)z 495。一旦确定了(460)n,处理器410就通过将小数点485在输入变量x=10010.10110(335)中向左移动n个位置(即,移动到紧挨首个1(480))来根据输入变量x 435的值确定(440)z 495的值。因此,如在图4E中所示,在当前示例性实施例中,值z=10.01010110(495)(以十进制计z=2.3359375)。图4E还示出了通过计算yβ·zβ来计算(445)y、计算(450)yβ、计算(450)zβ、以及计算(470)f(x)=xβ,因为xβ=yβ·zβ。
一旦由处理器410计算出n和z,处理器410就使用值n=3来确定(445)y的值,因为y=2n=23=8(以十进制计)。接着,处理器410根据用于yβ的LUT 496针对n=3来计算(450)yβ的值,并根据用于zβ的LUT 498针对z=2.3359375(十进制)来计算(450)zβ的值。用于yβ的LUT 496仅包含有限范围的值,因为y是为8的幂的整数。用于zβ的LUT 498也包含有限范围的值,因为z是为1与8的值之间的实数。用于zβ的LUT 498可被重用,也就是说,在有限范围上仅需要一个LUT以用于zβ。以下是针对β=2的两个示例性LUT,一个LUT用于yβ且另一LUT用于zβ。
用于Yβ的LUT
用于Zβ的LUT
用于yβ的LUT 496可覆盖足够宽的输入动态范围。LUT大小的线性增加对应于输入范围的指数增加。因为在这一情形中,y=2n=23=8,所以用于yβ的LUT 496不需要近似。对于所有z∈(1.0,2.0p),用于zβ的LUT 498提供对zβ的确切值的近似。
对于分解x=y·z,xβ=yβ·zβ,针对β的特定值(例如,β=2),处理器410通过计算yβ·zβ来计算(470)xβ的值。具体而言,处理器410使用yβ的LUT 496来计算(450)yβ的值,并且处理器410使用zβ的LUT 498来计算(450)zβ的值。处理器410随后将计算出的yβ和zβ的值相乘以计算xβ的值。可使用类似的分解技术以通过重写x=y·z来计算f(x)=log x的值。因此,log x=log y+log z。附加地,log x的值可通过使用上述技术确定y和z的值以及使用两个LUT(一个LUT用于log y且另一LUT用于log z)来计算。同样,log z也可通过使用样条来近似。
在一个或多个实施例中,样条重用可被用于各函数(诸如yβ或log x)的高效计算。例如,图4A-4E的样条重用方法可被用来计算通信调制解调器中的平方根x或DCN的归一化层中的实现样条重用的示例性方法需要设置一个以上LUT来执行计算。如果可在存储器中访问LUT,则可通过观察存在一个以上LUT来检测样本重用的示例性方法。还可以通过将x设置为2n并观察如何计算出xβ来检测样条重用的示例性方法。在采用样条重用的示例性方法的实现中,输出可能等于第一LUT中所存储的值之一。
图5是使用样条重用的概念来近似某些非线性函数(例如,f(x)=xβ)的方法的流程图500。该方法可由处理器(例如,图4A-4E的处理器410)来执行。在一种配置中,图5中所描述的流程图500可以是以上参照图4A-4E描述的方法。
在502,该处理器通过确定非线性函数f(x)的输入变量x(例如,图4B-4E中的435)的最高有效位(MSB)的位置来确定整数n(例如,在如图4B和4D中所示的460处)。在当前示例性配置中,非线性函数f(x)可被表示为f(x)=g(y(x),z(x))(例如,如有鉴于图4A-4E所讨论的xβ=yβ·zβ)。
例如,假定x=10010.10110,,如关于图4B-4E所讨论的。则在那一情形中,处理器410通过确定输入变量x=10010.10110的MSB的位置来确定整数n等于3。
在504,该处理器基于第一查找表和所确定的整数n来确定y(x)(例如,如图4A-4E的方法中的yβ)的值。在一种配置中,第一LUT(例如,图4E的yβ的LUT 496)可包含y(x)的不同值,并且可由处理器预先计算并存储在存储器(例如,图4A-4E的存储器420)中。在一个实施例中,y(x)=yβ=2nβ,其中y=2n,β是常数且 是实数集。在该情形中,第一查找表提供n或2n中的至少一者与2nβ之间的映射,并且处理器通过确定与n或2n中的至少一者相关联的2nβ的值来确定y(x)的值。
例如,参照图4C的针对n=4的LUT 492,对于p=1和LUT 492,处理器410可基于n=4来确定y(x)的值等于256。
作为另一示例,参照图4E的针对n=3的LUT 496,对于p=3和LUT 496,处理器410可基于n=3来确定y(x)的值等于64。
在506,该处理器基于n和输入变量x以及基于第二查找表来确定z(x)的值。在一种配置中,第二LUT(例如,图4E的zβ的LUT 498)可包含z(x)的不同值,并且可由处理器预先计算并存储在存储器中。在一种配置中,z(x)的值是基于输入变量x(例如,图4B-4E中的输入x435)的二进制表示来确定的。在一些配置中,z(x)是z的函数,其中z(x)=zβ,z∈(1.0,2.0),p是整数。在该情形中,第二查找表提供z与zβ之间的映射,并且处理器通过确定与z相关联的zβ的值来确定z(x)的值。
例如,参照如在图4C中所解说的LUT 494,处理器410可基于n=4、x=10010.10110以及LUT 498针对z=1.16796875(十进制)来确定z(x)的值等于1.36415100098(十进制)。在这一情形中,z(x)=zβ是z的函数,并且对于p=1,z∈(1.0,2.0)。
作为另一示例,参照如在图4E中所解说的LUT 498,处理器410可基于n=3、x=10010.10110以及LUT 498针对z=2.3359375(十进制)来确定z(x)的值等于5.45660400391(十进制)。在这一情形中,z(x)=zβ是z的函数,并且对于p=3,z∈(1.0,8.0)。
在508,该处理器基于y(x)和z(x)的所确定值来计算f(x)。
例如,如在图4E中所示,处理器410可通过将计算出的值yβ=64(十进制)和zβ=5.45660400391(十进制)相乘来确定f(x)=xβ的值等于349.22265625(十进制)。
在一种配置中,为了(在502)确定整数n,在510,该处理器确定小数点(例如,图4B-4E中的485)在输入变量x的二进制表示中的位置。
例如,如参照图4D所示,对于x=10010.10110,处理器410可确定小数点的位置在从MSB起向右第五位位置之后。
接着,在512,该处理器确定输入变量x的二进制表示的MSB的位置。在一种配置中,输入变量x的二进制表示的MSB的位置是首个1在该输入变量x的二进制表示中的位置(例如,在图4B-4E中,首个1(480)在输入x 435中的位置)。
例如,如参照图4D所示,对于x=10010.10110,处理器410可将MSB的位置或首个1的位置确定为输入变量x的最左边的位。
在514,该处理器将数字t(例如,如参照图4D的段落中所讨论的)确定为MSB的位置与小数点的位置之间的数位数目。
例如,如参照图4D的段落中所讨论的,处理器410可确定数字t等于4,为首个1的位置(第1位)与小数点的位置(第5位)之间的数位数目。
例如,如在图4D中所示,对于整数p=3,处理器410可确定整数n的值等于3。
在一种配置中,为了(在506)基于n和输入变量x来确定z(x)的值,在518,该处理器将小数点在输入变量x的二进制表示中向左移动n个位置(例如,在图4D和4E处的440处)。
例如,如参照图4E所示,对于n=3以及x=10010.10110(335),处理器410可确定z的值等于10.01010110(以十进制计2.3359375)。
接着,在520,该处理器基于所确定的z来在第二查找表(例如,图4E的zβ的LUT498)中查找z(x)(例如,在图4A-4E中的450处)。
例如,参照如在图4E中所解说的LUT 498,处理器410可根据LUT 498针对z=2.3359375(十进制)来确定z(x)的值等于5.45660400391(十进制)。
图6是解说示例性装备602中的不同装置/组件之间的数据流的概念性数据流图600。该装备可以是处理器。装备602包括通过确定非线性函数f(x)的输入变量x的最高有效位(MSB)的位置来确定整数n的n确定组件604。在当前示例性配置中,非线性函数f(x)可被表示为f(x)=g(y(x),z(x))。
装备602进一步包括基于第一LUT以及所确定的整数n来确定y(x)的值的Y确定组件606。在一种配置中,第一LUT可包含y(x)的不同值,并且可由Y确定组件606预先计算并存储在Y确定组件606中的存储器中。在一个实施例中,y(x)=2nβ,其中β是常数且 是实数集。在该情形中,第一LUT提供了n或2n中的至少一者与2nβ之间的映射,并且Y确定组件606通过确定与n或2n中的至少一者相关联的2nβ的值来确定y(x)的值。
装备602还包括基于n和输入变量x以及基于第二LUT来确定z(x)的值的Z确定组件608。在一种配置中,第二LUT可包含z(x)的不同值,并且可由Z确定组件608预先计算并存储在Z确定组件608中的存储器中。在一种配置中,z(x)的值是基于输入变量x的二进制表示来确定的。在一些配置中,z(x)是z的函数,其中z(x)=zβ,z∈(1.0,2.0p),p是整数。在该情形中,第二LUT提供z与zβ之间的映射,并且Z确定组件608通过确定与z相关联的zβ的值来确定z(x)的值。
附加地,装备602还包括基于y(x)和z(x)的所确定值来计算非线性函数f(x)的F确定组件610。
在一种配置中,为了确定整数n,n确定组件604确定小数点在输入变量x的二进制表示中的位置。接着,n确定组件604确定输入变量x的二进制表示的MSB的位置。在一种配置中,输入变量x的二进制表示的MSB的位置是该输入变量x的二进制表示中首个1的位置。接着,n确定组件604将数字t确定为MSB的位置与小数点的位置之间的数位数目。n确定组件604随后将整数n确定为其中p≥1且是整数。
在一种配置中,为了基于n和输入变量x来确定z(x)的值,Z确定组件将小数点在输入变量x的二进制表示中向左移动n个位置来确定z。接着,Z确定组件608基于所确定的z来在第二查找表中查找z(x)。
装备602可包括执行图5的前述流程图500中的算法的每个框的附加组件。如此,图5的前述流程图中的每个框可由一组件执行且该装备可包括那些组件中的一者或多者。各组件可以是专门配置成实施所述过程/算法的一个或多个硬件组件、由配置成执行所述过程/算法的处理器实现、存储在计算机可读介质中以供由处理器实现、或其某种组合。
图7是解说采用处理系统716的装备602'的硬件实现的示例的示图700。处理系统716可用由总线724一般化地表示的总线架构来实现。取决于处理系统716的具体应用和总体设计约束,总线724可包括任何数目的互连总线和桥接器。总线724将包括一个或多个处理器和/或硬件组件(由处理器712、n确定组件704、Y确定组件706、Z确定组件708、F确定组件710、以及计算机可读介质/存储器714表示)的各种电路链接在一起。总线724还可链接各种其他电路,诸如定时源、外围设备、稳压器和功率管理电路,这些电路在本领域中是众所周知的,且因此将不再进一步描述。
处理器712负责一般性处理,包括执行存储在计算机可读介质/存储器714上的软件。该软件在由处理器712执行时使处理系统716执行上文针对任何特定设备所描述的各种功能。计算机可读介质/存储器714还可被用于存储由处理器712在执行软件时操纵的数据。处理系统716进一步包括以下各组件中的至少一者:n确定组件704、Y确定组件706、Z确定组件708、以及F确定组件710。这些组件可以是在处理器712中运行的软件组件、驻留/存储在计算机可读介质/存储器714中的软件组件、耦合至处理器712的一个或多个硬件组件、或其某种组合。
在一种配置中,用于关于输入变量x计算非线性函数f(x)(其中f(x)=g(y(x),z(x)))的装备602/602'包括:用于通过确定输入变量x的最高有效位(MSB)的位置来确定整数n的装置;用于基于第一查找表和所确定的整数n来确定y(x)的值的装置;用于基于n和该输入变量x以及基于第二查找表来确定z(x)的值的装置;以及用于基于y(x)和z(x)的所确定值来计算f(x)的装置。装备602/602'进一步包括用于经由输入设备来接收输入变量x的值的装置。
在一种配置中,输入变量x的MSB的位置是该输入变量x的二进制表示的MSB的位置。在一些配置中,z(x)的值是基于输入变量x的二进制表示来确定的。在一种配置中,输入变量x的二进制表示的MSB的位置是该输入变量x的二进制表示中首个1的位置。
在一种配置中,用于确定整数n的装置被进一步配置成:确定小数点在输入变量x的二进制表示中的位置;确定该输入变量x的二进制表示的MSB的位置;以及将数字t确定为该MSB的位置与该小数点的位置之间的数位数目。
在一种配置中,用于基于n来确定z(x)的值的装置被进一步配置成:将小数点在输入变量x的二进制表示中向左移动n个位置来确定z;以及基于所确定的z来在第二查找表中查找z(x)。
在一种配置中,f(x)=y(x)*z(x),非线性函数f(x)等于xβ,其中x>0,β是常数且 是实数集。在一些其他配置中,y(x)=2nβ。在一种配置中,第一查找表提供n或2n中的至少一者与2nβ之间的映射,并且用于确定y(x)的值的装置被进一步配置成确定与n或2n中的至少一者相关联的2nβ的值。在一些配置中,z(x)=zβ,z∈(1.0,2.0p),p是整数。在一种配置中,第二查找表提供z与zβ之间的映射,并且用于确定z(x)的值的装置被进一步配置成确定与z相关联的zβ的值。在一些配置中,输入变量x是正实数。在一些其他配置中,f(x)=y(x)+z(x),非线性函数f(x)等于log2 x,其中x>0。
前述装置可以是装备602/602'的前述组件和/或装备602/602'的处理系统716中被配置成执行由前述装置叙述的功能的一个或多个组件。
应理解,所公开的过程/流程图中的各个框的具体次序或层次是示例性办法的解说。应理解,基于设计偏好,可以重新编排这些过程/流程图中的各个框的具体次序或层次。此外,一些框可被组合或被略去。所附方法权利要求以范例次序呈现各种框的要素,且并不意味着被限定于所呈现的具体次序或层次。
提供之前的描述是为了使本领域任何技术人员均能够实践本文中所描述的各种方面。对这些方面的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。因此,权利要求并非旨在被限定于本文中所示的方面,而是应被授予与语言上的权利要求相一致的全部范围,其中对要素的单数形式的引述除非特别声明,否则并非旨在表示“有且仅有一个”,而是“一个或多个”。措辞“示例性”在本文中用于意指“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。除非特别另外声明,否则术语“一些”指的是一个或多个。诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者、以及“A、B、C或其任何组合”之类的组合包括A、B和/或C的任何组合,并且可包括多个A、多个B或者多个C。具体地,诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”、以及“A、B、C或其任何组合”之类的组合可以是仅A、仅B、仅C、A和B、A和C、B和C、或者A和B和C,其中任何此类组合可包含A、B或C中的一个或多个成员。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文中所公开的任何内容都并非旨在贡献给公众,无论这样的公开是否在权利要求书中被显式地叙述。措辞“模块”、“机制”、“元素”、“设备”等等可以不是措辞“装置”的代替。如此,没有任何权利要求元素应被解释为装置加功能,除非该元素是使用短语“用于……的装置”来明确叙述的。
Claims (49)
1.一种在处理器中关于输入变量x计算非线性函数f(x)的方法,其中f(x)=g(y(x),z(x)),所述方法包括:
通过确定所述输入变量x的最高有效位(MSB)的位置来确定整数n;
基于第一查找表和所确定的整数n来确定y(x)的值;
基于n和所述输入变量x以及基于第二查找表来确定z(x)的值;以及
基于y(x)和z(x)的所确定值来计算f(x)。
2.如权利要求1所述的方法,其特征在于,所述输入变量x的所述MSB的位置是所述输入变量x的二进制表示的所述MSB的位置。
3.如权利要求2所述的方法,其特征在于,所述输入变量x的所述二进制表示的所述MSB的位置是所述输入变量x的所述二进制表示中首个1的位置。
4.如权利要求3所述的方法,其特征在于,确定所述整数n包括:
确定小数点在所述输入变量x的所述二进制表示中的位置;
确定所述输入变量x的所述二进制表示的所述MSB的位置;以及
将数字t确定为所述MSB的位置与所述小数点的位置之间的数位数目。
7.如权利要求2所述的方法,其特征在于,基于n来确定所述z(x)的值包括:
将小数点在所述输入变量x的所述二进制表示中向左移动n个位置来确定z;以及
基于所确定的z来在所述第二查找表中查找z(x)。
8.如权利要求1所述的方法,其特征在于,所述z(x)的值是基于所述输入变量x的二进制表示来确定的。
9.如权利要求1所述的方法,其特征在于,进一步包括由所述处理器经由输入设备来接收所述输入变量x的值。
11.如权利要求10所述的方法,其特征在于,y(x)=2nβ。
12.如权利要求11所述的方法,其特征在于,所述第一查找表提供n或2n中的至少一者与2nβ之间的映射,并且确定所述y(x)的值包括确定与所述n或2n中的至少一者相关联的2nβ的值。
13.如权利要求10所述的方法,其特征在于,z(x)=zβ,z∈(1.0,2.0p),p是整数。
14.如权利要求13所述的方法,其特征在于,所述第二查找表提供z与zβ之间的映射,并且确定所述z(x)的值包括确定与z相关联的zβ的值。
15.如权利要求1所述的方法,其特征在于,所述输入变量x是正实数。
16.如权利要求1所述的方法,其特征在于,f(x)=y(x)+z(x),所述非线性函数f(x)等于log2x,其中x>0。
17.一种关于输入变量x计算非线性函数f(x)的装置,其中f(x)=g(y(x),z(x)),所述装置包括:
存储器;以及
至少一个处理器,其被耦合至所述存储器并被配置成:
通过确定所述输入变量x的最高有效位(MSB)的位置来确定整数n;
基于第一查找表和所确定的整数n来确定y(x)的值;
基于n和所述输入变量x以及基于第二查找表来确定z(x)的值;以及
基于y(x)和z(x)的所确定值来计算f(x)。
18.如权利要求17所述的装置,其特征在于,所述输入变量x的所述MSB的位置是所述输入变量x的二进制表示的所述MSB的位置。
19.如权利要求18所述的装置,其特征在于,所述输入变量x的所述二进制表示的所述MSB的位置是所述输入变量x的所述二进制表示中首个1的位置。
20.如权利要求19所述的装置,其特征在于,所述至少一个处理器通过以下操作来确定所述整数n:
确定小数点在所述输入变量x的所述二进制表示中的位置;
确定所述输入变量x的所述二进制表示的所述MSB的位置;以及
将数字t确定为所述MSB的位置与所述小数点的位置之间的数位数目。
23.如权利要求18所述的装置,其特征在于,所述至少一个处理器通过以下操作基于n来确定所述z(x)的值:
将小数点在所述输入变量x的所述二进制表示中向左移动n个位置来确定z;以及
基于所确定的z来在所述第二查找表中查找z(x)。
24.如权利要求17所述的装置,其特征在于,所述z(x)的值是基于所述输入变量x的二进制表示来确定的。
25.如权利要求17所述的装置,其特征在于,所述至少一个处理器被进一步配置成:
经由输入设备来接收所述输入变量x的值。
27.如权利要求26所述的装置,其特征在于,y(x)=2nβ。
28.如权利要求27所述的装置,其特征在于,所述第一查找表提供n或2n中的至少一者与2nβ之间的映射,并且所述至少一个处理器通过确定与所述n或2n中的至少一者相关联的2nβ的值来确定所述y(x)的值。
29.如权利要求26所述的装置,其特征在于,z(x)=zβ,z∈(1.0,2.0p),p是整数。
30.如权利要求29所述的装置,其特征在于,所述第二查找表提供z与zβ之间的映射,并且所述至少一个处理器通过确定与z相关联的zβ的值来确定所述z(x)的值。
31.如权利要求17所述的装置,其特征在于,所述输入变量x是正实数。
32.如权利要求17所述的装置,其特征在于,f(x)=y(x)+z(x),所述非线性函数f(x)等于log2x,其中x>0。
33.一种关于输入变量x计算非线性函数f(x)的装备,其中f(x)=g(y(x),z(x)),所述装备包括:
用于通过确定所述输入变量x的最高有效位(MSB)的位置来确定整数n的装置;
用于基于第一查找表和所确定的整数n来确定y(x)的值的装置;
用于基于n和所述输入变量x以及基于第二查找表来确定z(x)的值的装置;以及
用于基于y(x)和z(x)的所确定值来计算f(x)的装置。
34.如权利要求33所述的装备,其特征在于,所述输入变量x的所述MSB的位置是所述输入变量x的二进制表示的所述MSB的位置。
35.如权利要求34所述的装备,其特征在于,所述输入变量x的所述二进制表示的所述MSB的位置是所述输入变量x的所述二进制表示中首个1的位置。
36.如权利要求35所述的装备,其特征在于,用于确定所述整数n的装置被进一步配置成:
确定小数点在所述输入变量x的所述二进制表示中的位置;
确定所述输入变量x的所述二进制表示的所述MSB的位置;以及
将数字t确定为所述MSB的位置与所述小数点的位置之间的数位数目。
39.如权利要求34所述的装备,其特征在于,用于基于n来确定所述z(x)的值的装置被进一步配置成:
将小数点在所述输入变量x的所述二进制表示中向左移动n个位置来确定z;以及
基于所确定的z来在所述第二查找表中查找z(x)。
40.如权利要求33所述的装备,其特征在于,所述z(x)的值是基于所述输入变量x的二进制表示来确定的。
41.如权利要求33所述的装备,其特征在于,进一步包括用于经由输入设备来接收所述输入变量x的值的装置。
43.如权利要求42所述的装备,其特征在于,y(x)=2nβ。
44.如权利要求43所述的装备,其特征在于,所述第一查找表提供n或2n中的至少一者与2nβ之间的映射,并且用于确定所述y(x)的值的装置被进一步配置成确定与所述n或2n中的至少一者相关联的2nβ的值。
45.如权利要求42所述的装备,其特征在于,z(x)=zβ,z∈(1.0,2.0p),p是整数。
46.如权利要求45所述的装备,其特征在于,所述第二查找表提供z与zβ之间的映射,并且用于确定所述z(x)的值的装置被进一步配置成确定与z相关联的zβ的值。
47.如权利要求33所述的装备,其特征在于,所述输入变量x是正实数。
48.如权利要求33所述的装备,其特征在于,f(x)=y(x)+z(x),所述非线性函数f(x)等于log2x,其中x>0。
49.一种存储计算机可执行代码以在至少一个处理器上执行的计算机可读介质,包括用于以下操作的代码:
通过确定输入变量x的最高有效位(MSB)的位置来确定整数n;
基于第一查找表和所确定的整数n来确定y(x)的值;
基于n和所述输入变量x以及基于第二查找表来确定z(x)的值;以及
基于y(x)和z(x)的所确定值来计算非线性函数f(x)=g(y(x),z(x))。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/255,015 | 2016-09-01 | ||
US15/255,015 US10037306B2 (en) | 2016-09-01 | 2016-09-01 | Approximation of non-linear functions in fixed point using look-up tables |
PCT/US2017/045622 WO2018044505A2 (en) | 2016-09-01 | 2017-08-04 | Approximation of non-linear functions in fixed point using look-up tables |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643327A CN109643327A (zh) | 2019-04-16 |
CN109643327B true CN109643327B (zh) | 2020-04-24 |
Family
ID=59714099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780052874.3A Active CN109643327B (zh) | 2016-09-01 | 2017-08-04 | 用于使用查找表以固定点来近似非线性函数的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10037306B2 (zh) |
EP (1) | EP3507707A2 (zh) |
CN (1) | CN109643327B (zh) |
WO (1) | WO2018044505A2 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10262259B2 (en) * | 2015-05-08 | 2019-04-16 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
GB2568087B (en) * | 2017-11-03 | 2022-07-20 | Imagination Tech Ltd | Activation functions for deep neural networks |
GB2568084B (en) * | 2017-11-03 | 2022-01-12 | Imagination Tech Ltd | Error allocation format selection for hardware implementation of deep neural network |
US10880531B2 (en) * | 2018-01-31 | 2020-12-29 | Nvidia Corporation | Transfer of video signals using variable segmented lookup tables |
WO2019194734A1 (en) * | 2018-04-03 | 2019-10-10 | Absolicon Solar Collector Ab | Method of forecasting heat output of solar collectors |
US11468147B1 (en) * | 2019-07-22 | 2022-10-11 | Habana Labs Ltd. | Activation function approximation in deep neural networks using rectified-linear-unit function |
TWI698759B (zh) * | 2019-08-30 | 2020-07-11 | 創鑫智慧股份有限公司 | 曲線函數裝置及其操作方法 |
US20220046254A1 (en) | 2020-08-05 | 2022-02-10 | Facebook, Inc. | Optimizing memory reads when computing video quality metrics |
TWI748679B (zh) * | 2020-10-08 | 2021-12-01 | 大陸商星宸科技股份有限公司 | 神經網路計算裝置、資料處理方法及裝置 |
US20220180177A1 (en) * | 2020-12-08 | 2022-06-09 | International Business Machines Corporation | An efficient method for vlsi implementation of useful neural network activation functions |
CN112651496A (zh) * | 2020-12-30 | 2021-04-13 | 深圳大普微电子科技有限公司 | 一种处理激活函数的硬件电路及芯片 |
CN113379031B (zh) * | 2021-06-01 | 2023-03-17 | 北京百度网讯科技有限公司 | 神经网络的处理方法、装置、电子设备和存储介质 |
US11868304B1 (en) * | 2021-09-20 | 2024-01-09 | Meta Platforms, Inc. | Auto-configuration of hardware non-linear function acceleration |
WO2024067954A1 (en) * | 2022-09-27 | 2024-04-04 | Axelera Ai Bv | Accelerating artificial neural networks using hardware-implemented lookup tables |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366748B1 (en) | 2000-06-30 | 2008-04-29 | Intel Corporation | Methods and apparatus for fast argument reduction in a computing system |
US7509362B2 (en) | 2003-06-18 | 2009-03-24 | Broadcom Corporation | Non-linear function approximation using finite order polynomial in fixed-point arithmetic |
US7657589B2 (en) | 2005-08-17 | 2010-02-02 | Maxim Integrated Products | System and method for generating a fixed point approximation to nonlinear functions |
US9069686B2 (en) | 2008-11-28 | 2015-06-30 | Intel Corporation | Digital signal processor having instruction set with one or more non-linear functions using reduced look-up table with exponentially varying step-size |
US9170776B2 (en) | 2009-01-30 | 2015-10-27 | Intel Corporation | Digital signal processor having instruction set with a logarithm function using reduced look-up table |
US9207910B2 (en) | 2009-01-30 | 2015-12-08 | Intel Corporation | Digital signal processor having instruction set with an xK function using reduced look-up table |
WO2013170116A2 (en) | 2012-05-10 | 2013-11-14 | Massachusetts Institute Of Technology | Fixed point, piece-wise-linear fitting technique and related circuits |
EP2834732B1 (en) * | 2012-11-07 | 2015-07-15 | Koninklijke Philips N.V. | Computing device storing look-up tables for computation of a function |
US9495291B2 (en) * | 2013-09-27 | 2016-11-15 | Qualcomm Incorporated | Configurable spreading function for memory interleaving |
-
2016
- 2016-09-01 US US15/255,015 patent/US10037306B2/en active Active
-
2017
- 2017-08-04 WO PCT/US2017/045622 patent/WO2018044505A2/en unknown
- 2017-08-04 CN CN201780052874.3A patent/CN109643327B/zh active Active
- 2017-08-04 EP EP17758318.4A patent/EP3507707A2/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20180060278A1 (en) | 2018-03-01 |
US10037306B2 (en) | 2018-07-31 |
WO2018044505A2 (en) | 2018-03-08 |
EP3507707A2 (en) | 2019-07-10 |
WO2018044505A3 (en) | 2018-05-11 |
CN109643327A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643327B (zh) | 用于使用查找表以固定点来近似非线性函数的方法和装置 | |
CN106951962B (zh) | 用于神经网络的复合运算单元、方法和电子设备 | |
CN112292816B (zh) | 处理核心数据压缩和存储系统 | |
KR102647858B1 (ko) | 컨볼루션 신경망 계산을 위한 저전력 하드웨어 가속 방법 및 시스템 | |
US20180262205A1 (en) | Techniques for floating-point number conversion | |
Piñeiro et al. | Faithful powering computation using table look-up and a fused accumulation tree | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
US20210295134A1 (en) | Artificial neural network activation function | |
JP2020507844A (ja) | 入力オペランド値を処理するための装置及び方法 | |
US20220092399A1 (en) | Area-Efficient Convolutional Block | |
EP2940576B1 (en) | Approximating functions | |
KR100847934B1 (ko) | 스케일링된 정수를 사용하는 부동 소수점 연산 | |
CN107220025B (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
CN111047007B (zh) | 一种针对量化后的lstm的激活函数计算单元 | |
Arya et al. | READ: A fixed restoring array based accuracy-configurable approximate divider for energy efficiency | |
CN112889025A (zh) | 利用硬件计算效率优化神经网络 | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
Jothin et al. | High performance modified static segment approximate multiplier based on significance probability | |
US20220171602A1 (en) | Integrated circuit for constant multiplication and device including the same | |
WO2005079435A2 (en) | Fast method for calculating powers of two as a floating point data type | |
Cao et al. | A piecewise cubic polynomial interpolation algorithm for approximating elementary function | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
Wasef et al. | Hardware implementation of Multi-Rate input SoftMax activation function | |
US20090094306A1 (en) | Cordic rotation angle calculation | |
TWI815404B (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 |