CN118259873A - 计算电路、芯片、计算设备 - Google Patents
计算电路、芯片、计算设备 Download PDFInfo
- Publication number
- CN118259873A CN118259873A CN202410692416.8A CN202410692416A CN118259873A CN 118259873 A CN118259873 A CN 118259873A CN 202410692416 A CN202410692416 A CN 202410692416A CN 118259873 A CN118259873 A CN 118259873A
- Authority
- CN
- China
- Prior art keywords
- data
- intermediate value
- square root
- processed
- floating point
- 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.)
- Granted
Links
- 238000007667 floating Methods 0.000 claims abstract description 68
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 21
- 230000003321 amplification Effects 0.000 claims description 14
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 14
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 18
- 238000010606 normalization Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012886 linear function Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
-
- 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/52—Multiplying; Dividing
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本公开实施例公开了一种计算电路、芯片、计算设备,其中,该计算电路包括平方根倒数计算单元和存储单元。平方根倒数计算单元用于在待处理数据的数据类型为浮点型时,将待处理数据确定为目标浮点数,以读取有符号整数的第一数据读取规格读取目标浮点数,得到第一中间值,并按照预设移位数对第一中间值进行右移位,得到第二中间值,并基于第一预设参数与第二中间值的减法运算结果,确定待处理数据的平方根倒数;存储单元用于存储待处理数据的平方根倒数。
Description
技术领域
本公开涉及数据处理技术,尤其是一种计算电路、芯片、计算设备。
背景技术
平方根倒数是指给定一个数,求出该数的平方根的倒数。在现代科学和工程领域中,计算平方根倒数是一项关键的数学运算。数据的平方根倒数在许多领域中,例如物理学、工程学、金融学以及计算机科学等领域,都有着广泛的应用。例如,在计算机图像学中,需要通过计算平方根倒数来确定三维(3D)模型在变换和渲染中的法线向量长度,以及确定3D图形中的光照和投影效果的正规化向量。另外,在确定深度神经网络(Deep NeuralNetworks,DNN)中的批量归一化(BatchNorm)、层归一化(LayerNormalization)、实例归一化(Instance Normalization)和组归一化(Group Normalization)等时,也需要使用平方根倒数运算。同时上述应用在实际应用时,通常每秒需要进行上百万次的平方根倒数的运算,由此平方根倒数的计算速度决定了上述应用处理数据的效率。
在实现本公开的过程中,本发明人通过研究发现,相关技术中,常用的平方根倒数的计算方法包括牛顿迭代法和二分法计算,而通过牛顿迭代法或二分法计算平方根倒数时,均需要多次的迭代运算,使得硬件的运算量大,导致确定平方根倒数所需的时间较长,降低了计算系统整体的工作性能。
发明内容
为了解决上述技术问题,本公开实施例提供一种计算电路、芯片、计算设备。
本公开实施例的一个方面,提供了一种计算电路,所述计算电路包括平方根倒数计算单元、数据类型转换单元和存储单元;所述平方根倒数计算单元,用于在待处理数据的数据类型为浮点型时,将所述待处理数据确定为目标浮点数,以读取有符号整数的第一数据读取规格读取所述目标浮点数,得到第一中间值,并按照预设移位数对所述第一中间值进行右移位,得到第二中间值,并基于第一预设参数与所述第二中间值的减法运算结果,确定所述待处理数据的平方根倒数;所述数据类型转换单元,用于在所述待处理数据的数据类型为N位有符号整数类型时,将第二预设参数与所述待处理数据进行拼接,得到第三中间值,以读取浮点数的第二数据读取规格读取所述第三中间值,得到第四中间值,并基于所述第四中间值与第三预设参数的减法运算结果,确定所述目标浮点数,其中,1≤N≤23;所述存储单元,用于存储所述平方根倒数。
在一些实施例中,所述数据类型转换单元包括第一加法器和第一减法器;所述第一加法器,用于对所述待处理数据和所述第二预设参数进行按位或运算,以将所述待处理数据与所述第二预设参数拼接,得到所述第三中间值;所述第一减法器,用于以所述第二数据读取规格读取所述第三中间值,得到所述第四中间值,并将所述第四中间值与所述第三预设参数的减法运算结果确定为所述目标浮点数。
在一些实施例中,所述平方根倒数计算单元包括移位寄存器和第二减法器;所述移位寄存器,用于以所述第一数据读取规格读取所述目标浮点数,得到所述第一中间值,按照所述预设移位数对所述第一中间值进行右移位,得到第二中间值;所述第二减法器,用于确定所述第一预设参数与所述第二中间值的减法运算结果,并以读取浮点数的第二数据读取规格读取所述减法运算结果,得到所述平方根倒数。
在一些实施例中,所述平方根倒数计算单元还包括第一乘法器;所述第一乘法器,用于对预设放大系数和所述平方根倒数进行乘法运算,以对所述平方根倒数进行数值放大;所述存储单元,还用于存储数值放大后的平方根倒数。
在一些实施例中,所述计算电路还包括迭代单元;所述迭代单元,用于在所述平方根倒数不满足预设数值精度时,将所述平方根倒数确定为初始值,并对所述初始值进行预设迭代轮次的迭代处理,得到所述平方根倒数。
在一些实施例中,所述迭代单元包括第二乘法器和第三减法器;所述第二乘法器和所述第三减法器用于执行所述预设迭代轮次的如下操作:所述第二乘法器确定所述初始值的平方值与第四预设参数的乘法运算结果,并将所述乘法运算结果作为第五中间值输入到所述第三减法器,所述第三减法器确定第五预设参数与所述第五中间值的减法运算结果,并将所述减法运算结果作为第六中间值输入到所述第二乘法器,所述第二乘法器确定所述初始值与所述第六中间值的乘法运算结果,以完成对所述初始值的一次迭代处理,所述初始值与所述第六中间值的乘法运算结果作为下一次迭代处理的初始值参与下一次迭代处理,直至进行所述预设迭代轮次的迭代处理,得到所述平方根倒数。
在一些实施例中,所述N的取值包括以下任一项:4、8和16。
在一些实施例中,所述待处理数据的数值范围包括0到8388608的整数。
在一些实施例中,所述待处理数据的数据类型为浮点型时,所述待处理数据为32位浮点数。
本公开实施例的另一个方面,提供了一种芯片,所述芯片上述计算电路。
本公开实施例的另一个方面,提供了一种计算设备,所述计算设备包括上述芯片。
在本公开实施例中,在待处理数据的数据类型为浮点型时,通过计算电路中的平方根倒数计算单元将待处理数据确定为目标浮点数,之后以读取有符号整数的第一数据读取规格,读取目标浮点数,得到第一中间值,对第一中间值进行右移位,得到第二中间值,并基于第二中间值与第一预设参数的减法运算结果,确定平方根倒数,并将该平方根倒数存储到存储单元。由此,在保证得到的平方根倒数的精确性的情况下,避免了多次迭代运算,降低了硬件的运算量,提高了计算系统整体的工作性能。另外,由于避免了多次迭代运算,也极大的提高了获得平方根倒数的效率。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是本公开一示例性实施例提供的计算电路的结构示意图;
图2是本公开另一示例性实施例提供的计算电路的结构示意图;
图3是本公开一示例性实施例提供的数据类型转换单元的结构示意图;
图4是本公开一示例性实施例提供的平方根倒数计算单元示意图;
图5是本公开另一示例性实施例提供的平方根倒数计算单元示意图;
图6是本公开又一示例性实施例提供的计算电路的结构示意图;
图7是本公开一示例性实施例提供的迭代单元的结构示意图;
图8是对数函数与线性函数的示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
在实现本公开的过程中,发明人发现,通过目前主流的用于计算平方根倒数的方式计算平方根倒数时,均需要进行大量的迭代运算,这就导致硬件运算量大,获得平方根倒数的效率低。
例如,在通过牛顿迭代法确定平方根倒数时,需要先选取一个初始值,之后利用牛顿迭代对该初始数值进行迭代运算。因此选取合适的初始值是通过牛顿迭代法获得平方根倒数的关键。然而目前并没有一个合适的初始值选取方法,要得到精确的平方根倒数,通常是需要对初始值进行多轮的迭代运算,因此增加了硬件的运算量,使得获取平方根倒数需要较长的时间,且也会降低计算系统的整体工作性能。
通过二分法确定平方根倒数时,先使用二分法确定平方根,之后对该平方根取倒数,得到平方根倒数。然在通过二分法确定平方根时,需要进行多轮的迭代运算,以保证得到的平方根的准确性。因此,在通过二分法确定平方根倒数时,也需要进行大量迭代运算,由此也增加了硬件的运算量,进而导致获得平方根倒数的效率低。
图1是本公开一示例性实施例提供的计算电路的结构示意图。该计算电路包含的各个组成部分可以集成到一个芯片中,也可以设置到不同的芯片或电路板中,这些芯片或电路板之间建立数据通信的链路。
如图1所示,该计算电路100包括平方根倒数计算单元110和存储单元120。
平方根倒数计算单元110用于在待处理数据的数据类型为浮点型时,将待处理数据确定为目标浮点数,以读取有符号整数的第一数据读取规格读取目标浮点数,得到第一中间值,并按照预设移位数对第一中间值进行右移位,得到第二中间值,并基于第一预设参数与第二中间值的减法运算结果,确定待处理数据的平方根倒数。
在一个可选实施方式中,待处理数据可以存储在存储单元120中,或存储在单独的累加器(Accumulator)或存储器中。在待处理数据传输到计算电路100之前,可以对待处理数据的数据类型进行识别,确定出待处理数据的类型。
在一个具体实现方式中,平方根倒数计算单元110可以以读取第一预设位数有符号整数的第一数据读取规格,读取存储单元120中的待处理数据。其中,第一预设位数可以为16、32或64等,即第一数据读取规格可以为读取16位有符号整数、32位有符号整数或64有符号整数的数据读取规格。
需要注意的是,本公开实施例中,第一预设位数大于或等于目标浮点数的位数,即第一数据读取规格规定读取的有符号整数的位数大于或等于目标浮点数的位数。
存储单元120用于存储待处理数据的平方根倒数。
其中,存储单元120可以为累加器或存储器。
在本公开实施例中,平方根倒数计算单元以第一数据读取规格读取目标浮点数,得到第一中间值,对第一中间值进行右移位,得到第二中间值,之后对第二中间值与第一预设参数进行减法运算,得到待处理数据的平方根倒数。由此,在保证得到的平方根倒数的精确性的情况下,避免了多次迭代运算,降低了硬件的运算量,提高了计算系统整体的工作性能。另外,由于避免了多次迭代运算,也极大的提高了获得平方根倒数的效率。
在一些可选实施方式中,待处理数据的数值范围包括0到8388608的整数。其中,在待处理数据的数据类型为浮点型时,待处理数据可以是[0,8388608)中任一整数的32位浮点数。
在一些可选实施方式中,当待处理数据的数据类型为浮点型时,待处理数据可以为32位浮点数(Float32),相应的,目标浮点数也为32位浮点数。
图2是本公开另一示例性实施例提供的计算电路的结构示意图。在一些实施例方式中,如图2所示,计算电路100还包括数据类型转换单元130。
数据类型转换单元130用于在待处理数据的数据类型为N位有符号整数类型时,将第二预设参数与待处理数据进行拼接,得到第三中间值,以读取浮点数的第二数据读取规格读取第三中间值,得到第四中间值,并基于第四中间值与第三预设参数的减法运算结果,确定目标浮点数。
其中,1≤N≤23。在一个具体实现方式中,N的取值包括以下任一项:4、8和16。即,当N=4时,待处理数据为4位有符号整数(INT4),当N=8时,待处理数据为8位有符号整数(INT8),当N=16时,待处理数据为16位有符号整数(INT16)。
在一个具体实现方式中,在待处理数据的数据类型为N位有符号整数类型时,待处理数据可以是[0,8388608)中任一整数的N位有符号整数。例如,待处理数据可以为[0,8388608)中任一整数的4位有符号整数、8位有符号整数或16位有符号整数等。
在一个具体实现方式中,数据类型转换单元130可以在存储单元120中读取待处理数据。第二数据读取规格例如可以包括但不限于:读取16位浮点数的数据读取规格,读取32位浮点数的数据读取规格,或读取64位浮点数的数据读取规格。
在本公开实施例,通过将数据类型为N位有符号整数的待处理数据与第二预设参数进行拼接,得到第三中间值,之后以第二数据读取规格读取第三中间值,得到第四中间值,并基于第四中间值与第三预设参数的减法运算结果,确定目标浮点数,由此简化了数据从有符号整数类型转换为浮点数型的运算过程,提高了数据类型转换效率。
图3是本公开一示例性实施例提供的数据类型转换单元的结构示意图。在一些实施例方式中,如图3所示,数据类型转换单元130包括第一加法器131和第一减法器132。
第一加法器131用于对待处理数据和第二预设参数进行按位或运算,以将待处理数据与第二预设参数拼接,得到第三中间值。
其中,第一加法器131可以通过式(1)对待处理数据和第二预设参数进行按位或运算,以将待处理数据与第二预设参数拼接,得到第三中间值;
式(1)
其中,为数据类型为N位有符号整数类型的待处理数据,为第三中间值,“|”为按位或预算符,为第二预设参数。为8388608的16进制数值,其为8388608在IEEE 754(二进制浮点数算术标准)标准下的32位浮点数的表示形式。例如,当N=16时,即待处理数据的数据类型为16位有符号整数类型时,则式(1)为。为16位有符号整数类型的待处理数据。
示例性的,假设待处理数据为147,待处理数据的数据类型为16位有符号整数类型,可将待处理数据表示为INT16_147,通过式(1)计算第三中间值;
其中的为第三中间值(INT32_147)的16进制数值,1258291347为第三中间值的10进制数值。
第一减法器132用于以第二数据读取规格读取第三中间值,得到第四中间值,并将第四中间值与第三预设参数的减法运算结果确定为目标浮点数。
其中,第二数据读取规格可以为读取32位浮点数的数据读取规格。第一减法器132可以通过式(2)确定目标浮点数;
式(2)
其中,为目标浮点数,8388608为第三预设参数,表示将第三中间值视为32位浮点数,即表示以读取32位浮点数的数据读取规格(第二数据读取规格)读取第三中间值。
示例性的,还以上述通过式(1)获得的第三中间值的示例为例说明,通过式(2)确定目标浮点数的方式如下所示;
其中,表示147的目标浮点数,为147的16进制数值,为147在IEEE 754标准下的32位浮点数的表示形式。
图4是本公开一示例性实施例提供的平方根倒数计算单元示意图。在一些实施例方式中,如图4所示,平方根倒数计算单元110包括移位寄存器111和第二减法器112。
移位寄存器111用于以第一数据读取规格读取目标浮点数,得到第一中间值,按照预设移位数对第一中间值进行右移位,得到第二中间值。
第二减法器112用于确定第一预设参数与第二中间值的减法运算结果,并以第二数据读取规格读取该减法运算结果,得到待处理数据的平方根倒数。
其中,预设移位数可以为1。移位寄存器111可以通过式(3)确定第一中间值,可以通过式(4)确定第二中间值。第二减法器112可以通过式(4)-(5)确定平方根倒数;
式(3)
式(4)
式(5)
其中,为第一中间值,表示将目标浮点数视为32位有符号整数,即表示以读取32位有符号整数的数据读取规格(第一数据读取规格)读取目标浮点数。表示对第一中间值向右移1位,通过得到的右移位结果即为第二中间值。为第一预设参数,为1597308761的16进制数值。 表示第一预设参数与第二中间值的减法运算结果。为平方根倒数。表示将第一预设参数与第二中间值的减法运算结果视为32位浮点数,即表示以读取32位浮点数的数据读取规格(第二数据读取规格)读取第一预设参数与第二中间值的减法运算结果。
示例性的,还以上述通过式(1)获得的第三中间值的示例为例说明。以下为基于147的目标浮点数,通过式(3)-(5)确定147的平方根倒数的方式;
其中,表示以读取32位有符号整数的数据读取规格(第一数据读取规格)读取147的目标浮点数,1125318656为第一中间值的十进制数值。1034649433为第一预设参数与第二中间值的减法运算结果的十进制数值。0.08373899为147的平方根倒数。
在一个具体实现方式中,可以通过如下方式实现在避免多次迭代运算的前提下,获取精确的平方根倒数。该方式具体包括:
假设一个输入值x和输出值y,令输出值y为输入值x的平方根倒数。输入值和输出值均为32位浮点数,即,。其中,B1为指数偏置,L为正则化系数,Ex为输入值x的阶码,Ey为输出值y的阶码,Mx为输入值x的尾数,My为输出值y的尾数。
由于y=x-1/2,则y2=x-1。对输入值和输出值两边取对数,得到式(6)。之后将输入值和输出值代入式(6)中,得到式(7)。通过对式(7)简化变形,得到式(8);
2log2y=-log2 x 式(6)
式(7)
式(8)
假设线性函数为z1=k+δ,假设对数函数z2=log2(1+k),可以用k近似表示,即log2(1+k)≈k,选用δ来调和与k之间的误差其中,k和δ均为常数,0≤k<1。图8是对数函数与线性函数的示意图。在图8中,直角坐标系的水平轴代表k,竖直轴代表z。上述的线性函数z1=k+δ对应图8中的直线Z1,对数函数z2=log2(1+k)对应图8中的曲线Z2。如图8所示,当k在[0,1]中变化时,只要给定一个合理的δ,直线Z1与曲线Z2可以非常接近,即log2(1+k)≈k+δ。
基于此,由于式(8)中的,因此可将近似为。同理,由于,因此可将近似为。由此式(8)可以表示为式(9)的形式。对式(9)进行简化变形,得到式(10);
式(9)
式(10)
将EyL+My表示为Iy,Iy为以读取32位有符号整数的数据读取规格读取输出值y所得到的整数。将ExL+Mx表示为Ix,Ix为以读取32位有符号整数的数据读取规格读取输入值x所得到的整数。基于此,可以设。将R、Iy和Ix代入到式(10)中,得到式(11)。通过对式(11)进行变形,得到式(12)。通过式(12)可得到,在确定出R后即可以得到Iy;
式(11)
式(12)
可以通过确定均方误差的方式确定R值。假设需要计算n个32位浮点数的平方根倒数,每个32位浮点数的尾数为mi,其中,0≤mi≤1,0≤i≤n-1。可以将δ作为f(mi)=log2(1+mi)的近似表示。则,均方误差可以通过式(13)确定;
式(13)
由于可将mi视为在区间[0,1]上随机分布,并且在计算的过程中,需要对于所有的mi遍历求和,这样n=+∞,由此对无求多项求和的操作就变成了积分操作,即对mi的整个区间值长度求平均值。由此,式(13)可以转换为式(14),其中,m表示将mi的离散值转换为区间内的连续值;
式(14)
获取在取最小值时的δ值,具体包括:
令,通过式(15)计算得到δ≈0.05730495911103659264。将δ代入到R中,得到。将R值代入到式(12)中,即获得用于确定平方根倒数的运算式;
式(15)
将上述公式转换为计算机设备可以执行的运算式,即得到式(3)-(5)。
图5是本公开另一示例性实施例提供的平方根倒数计算单元示意图。在一些实施例方式中,如图5所示,平方根倒数计算单元110还包括第一乘法器113。
第一乘法器113用于对预放大放系数和平方根倒数进行乘法运算,以对平方根倒数进行数值放大。
存储单元120还用于存储数值放大后的平方根倒数。
其中,第一乘法器113确定预设放大系数与平方根倒数的乘法运算结果,并将该乘法运算结果存储到存储单元120中。在一个具体实现方式中,预设放大系数满足可以将平方根倒数放大到大于或等于1的数值。即预设放大系数与平方根倒数的乘法运算结果大于或等于1。
0到8388608中的任一整数的平方根倒数均是分布在[0,1]之间的小数。由于受到存储空间的限制,在存储小数时,会对小数进行四舍五入处理,由此降低了数据的存储精度。在本公开实施例中,第一乘法器通过预设放大系数对平方根倒数进行数值放大,之后将数值放大后的平方根倒数存储到存储单元中,由此提高数据的存储精度,另外还便于计算资源受限的设备进行运算。
图6是本公开又一示例性实施例提供的计算电路的结构示意图。在一些实施例方式中,如图6所示,计算电路100还包括迭代单元140。
迭代单元140用于在待处理数据的平方根倒数不满足预设数值精度时,将该平方根倒数确定为初始值,并对初始值进行预设迭代轮次的迭代处理,得到待处理数据的平方根倒数。
在一个具体实现方式中,当待处理数据的平方根倒数的小数点后的位数小于第二预设位数,例如,第二预设位数可以为大于或等于7的整数,确定平方根倒数不满足预设数值精确度,当待处理数据的平方根倒数的小数点后的位数大于或等于第二预设位数,确定平方根倒数满足预设数值精确度。
存储单元120还用于存储迭代后的平方根倒数。
在本公开实施例中,通过对不满足预设数值精度的平方根倒数进行预设迭代轮次的迭代处理,以提高平方根倒数的精确度。
图7是本公开一示例性实施例提供的迭代单元的结构示意图。在一些实施例方式中,如图7所示,迭代单元140包括第二乘法器141和第三减法器142。
第二乘法器141和第三减法器142用于执行预设迭代轮次的如下操作:第二乘法器141确定初始值的平方值与第四预设参数的乘法运算结果,并将该乘法运算结果作为第五中间值输入到第三减法器142,第三减法器142确定第五预设参数与第五中间值的减法运算结果,并将该减法运算结果作为第六中间值输入到第二乘法器141,第二乘法器141确定初始值与第六中间值的乘法运算结果,以完成对初始值的一次迭代处理,初始值与第六中间值的乘法运算结果作为下一次迭代处理的初始值参与下一次迭代处理,直至进行预设迭代轮次的迭代处理,得到待处理数据的平方根倒数。
其中,第二乘法器141和第三减法器142可以通式(16)对初始值进行预设迭代轮次的迭代;
式(16)
其中,M为大于或等于1的整数,表示当前进行迭代处理的迭代次数。在平方根倒数不满足预设数值精度时,对应初始值;为第四预设参数,其表示目标浮点数的1/2;为第五预设参数;为经过第M迭代轮次迭代后的平方根倒数。
的运算结果为第五中间值,的运算结果为第六中间值。
在一个具体实现方式中,预设迭代轮次可以为2。在预设迭代轮次为2为时,可以通过式(16)推导出式(17)和(18)。第二乘法器141和第三减法器142可以通过式(17)和(18)对初始值进行2次迭代处理;
式(17)
式(18)
其中,为初始值的第一次迭代处理结果;为初始值的第二次迭代处理结果。
示例性的,还以上述通过式(1)获得的第三中间值的示例为例说明。第二乘法器141和第三减法器142可以通过式(17)和(18)对初始值进行2次迭代。
将147的平方根倒数0.08373899作为初始值。第二乘法器141和第三减法器142通过式(17)进行第一次迭代处理,得到第一次迭代处理结果=0.08244957235366601。之后,第二乘法器141和第三减法器142通过式(18)进行第二次迭代处理,得到第二次迭代结果=0.08247859455154359,即=0.08247859455154359就为147最终的平方根倒数。
以下为本公开实施例的计算电路的一个应用实例。
在利用DNN完成图像任务分类时,需要预选对图像数据进行归一化处理。对于RGB(Red、Green、Blue,红绿蓝)图像,该图像的特征数据为[0,255],其在计算机中的数据形式为8位有符号整数类型(INT8)。
假设该图像的一组特征数据为X={x1,x2,x3,…,xL},可以通过如下方式对该组特征数据X进行归一化处理,L≥1。
先通过确定该组特征数据X的平均值。之后,通过确定该该组特征数据X的图像方差。之后,通过确定该组特征数据X归一化结果,其中,在确定时,可以利用计算电路100,基于式(3)-(5)获得中的,同时还可以通(17)和(18)对通过(3)-(5)获得结果进行2轮次的迭代处理,以提高的精确性。
另外,本公开的实施例还提供了一种利用上述计算电路计算待处理数据的平方根倒数的方法,包括:
在待处理数据的数据类型为浮点型时,平方根倒数计算单元将待处理数据确定为目标浮点数,以读取有符号整数的第一数据读取规格读取目标浮点数,得到第一中间值,并按照预设移位数对第一中间值进行右移位,得到第二中间值,并基于第一预设参数与第二中间值的减法运算结果,确定待处理数据的平方根倒数;
将待处理数据的平方根倒数存储到存储单元。
在一些可选实施实施方式中,所述方法还包括:在待处理数据的数据类型为N位有符号整数类型时,数据类型转换单元将第二预设参数与待处理数据进行拼接,得到第三中间值,以读取浮点数的第二数据读取规格读取第三中间值,得到第四中间值,并基于第四中间值与第三预设参数的减法运算结果,确定目标浮点数,其中,1≤N≤23。
本公开的实施例还提供了一种芯片,芯片上集成了计算电路,计算电路的技术细节如图1-图7和相关描述所示,此处不再展开描述。
本公开的实施例还提供了一种计算设备,该计算设备包括上述实施例描述的芯片。
此外,该计算设备还可以包括输入装置、输出装置以及必要的存储器等。其中,输入装置可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入待计算的数据。输出装置可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等等,用于输出上述实施例描述的乘加结果。存储器用于存储上述输入装置输入的数据,以及存内乘加计算电路运行过程中产生的数据。存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。
本公开实施例的芯片和计算设备,分别与本公开上述计算电路的实施例之间相互对应,相关内容可以相互参考,此处不再赘述。本公开实施例的芯片和计算设备,分别与本公开上述计算电路的实施例之间相互对应,相关内容可以相互参考,此处不再赘述。
本公开实施例的芯片和计算设备的示例性实施例对应的有益技术效果可以参见上述对应的计算电路中的示例性部分的相应有益技术效果,此处不再赘述。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (11)
1.一种计算电路,其特征在于,所述计算电路包括平方根倒数计算单元、数据类型转换单元和存储单元;
所述平方根倒数计算单元,用于在待处理数据的数据类型为浮点型时,将所述待处理数据确定为目标浮点数,以读取有符号整数的第一数据读取规格读取所述目标浮点数,得到第一中间值,并按照预设移位数对所述第一中间值进行右移位,得到第二中间值,并基于第一预设参数与所述第二中间值的减法运算结果,确定所述待处理数据的平方根倒数;
所述数据类型转换单元,用于在所述待处理数据的数据类型为N位有符号整数类型时,将第二预设参数与所述待处理数据进行拼接,得到第三中间值,以读取浮点数的第二数据读取规格读取所述第三中间值,得到第四中间值,并基于所述第四中间值与第三预设参数的减法运算结果,确定所述目标浮点数,其中,1≤N≤23;
所述存储单元,用于存储所述平方根倒数。
2.根据权利要求1所述的计算电路,其特征在于,所述数据类型转换单元包括第一加法器和第一减法器;
所述第一加法器,用于对所述待处理数据和所述第二预设参数进行按位或运算,以将所述待处理数据与所述第二预设参数拼接,得到所述第三中间值;
所述第一减法器,用于以所述第二数据读取规格读取所述第三中间值,得到所述第四中间值,并将所述第四中间值与所述第三预设参数的减法运算结果确定为所述目标浮点数。
3.根据权利要求1或2所述的计算电路,其特征在于,所述平方根倒数计算单元包括移位寄存器和第二减法器;
所述移位寄存器,用于以所述第一数据读取规格读取所述目标浮点数,得到所述第一中间值,按照所述预设移位数对所述第一中间值进行右移位,得到第二中间值;
所述第二减法器,用于确定所述第一预设参数与所述第二中间值的减法运算结果,并以读取浮点数的第二数据读取规格读取所述减法运算结果,得到所述平方根倒数。
4.根据权利要求1或2所述的计算电路,其特征在于,所述平方根倒数计算单元还包括第一乘法器;
所述第一乘法器,用于对预设放大系数和所述平方根倒数进行乘法运算,以对所述平方根倒数进行数值放大;
所述存储单元,还用于存储数值放大后的平方根倒数。
5.根据权利要求1或2所述的计算电路,其特征在于,所述计算电路还包括迭代单元;
所述迭代单元,用于在所述平方根倒数不满足预设数值精度时,将所述平方根倒数确定为初始值,并对所述初始值进行预设迭代轮次的迭代处理,得到所述平方根倒数。
6.根据权利要求5所述的计算电路,其特征在于,所述迭代单元包括第二乘法器和第三减法器;
所述第二乘法器和所述第三减法器用于执行所述预设迭代轮次的如下操作:
所述第二乘法器确定所述初始值的平方值与第四预设参数的乘法运算结果,并将所述乘法运算结果作为第五中间值输入到所述第三减法器,所述第三减法器确定第五预设参数与所述第五中间值的减法运算结果,并将所述减法运算结果作为第六中间值输入到所述第二乘法器,所述第二乘法器确定所述初始值与所述第六中间值的乘法运算结果,以完成对所述初始值的一次迭代处理,所述初始值与所述第六中间值的乘法运算结果作为下一次迭代处理的初始值参与下一次迭代处理,直至进行所述预设迭代轮次的迭代处理,得到所述平方根倒数。
7.根据权利要求1所述的计算电路,其特征在于,所述N的取值包括以下任一项:4、8和16。
8.根据权利要求1所述的计算电路,其特征在于,所述待处理数据的数值范围包括0到8388608的整数。
9.根据权利要求1所述的计算电路,其特征在于,所述待处理数据的数据类型为浮点型时,所述待处理数据为32位浮点数。
10.一种芯片,其特征在于,所述芯片包括权利要求1- 9中任一所述的计算电路。
11.一种计算设备,其特征在于,所述计算设备包括权利要求10所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410692416.8A CN118259873B (zh) | 2024-05-30 | 2024-05-30 | 计算电路、芯片、计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410692416.8A CN118259873B (zh) | 2024-05-30 | 2024-05-30 | 计算电路、芯片、计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118259873A true CN118259873A (zh) | 2024-06-28 |
CN118259873B CN118259873B (zh) | 2024-08-13 |
Family
ID=91602881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410692416.8A Active CN118259873B (zh) | 2024-05-30 | 2024-05-30 | 计算电路、芯片、计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118259873B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150363169A1 (en) * | 2014-06-16 | 2015-12-17 | Apple Inc. | Multiplier unit with speculative rounding for use with division and square-root operations |
CN112907711A (zh) * | 2019-11-15 | 2021-06-04 | 英特尔公司 | 使用用于向量归一化的单个指令集架构(isa)指令 |
CN113407235A (zh) * | 2021-06-28 | 2021-09-17 | 珠海市一微半导体有限公司 | 一种基于硬件加速的运算电路系统及芯片 |
CN115034373A (zh) * | 2022-05-30 | 2022-09-09 | 清华大学 | Adam算法加速系统及方法 |
CN116700665A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种确定浮点数平方根倒数的方法及装置 |
WO2023199440A1 (ja) * | 2022-04-13 | 2023-10-19 | 日本電気株式会社 | 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム |
-
2024
- 2024-05-30 CN CN202410692416.8A patent/CN118259873B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150363169A1 (en) * | 2014-06-16 | 2015-12-17 | Apple Inc. | Multiplier unit with speculative rounding for use with division and square-root operations |
CN112907711A (zh) * | 2019-11-15 | 2021-06-04 | 英特尔公司 | 使用用于向量归一化的单个指令集架构(isa)指令 |
CN113407235A (zh) * | 2021-06-28 | 2021-09-17 | 珠海市一微半导体有限公司 | 一种基于硬件加速的运算电路系统及芯片 |
CN116700665A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种确定浮点数平方根倒数的方法及装置 |
WO2023199440A1 (ja) * | 2022-04-13 | 2023-10-19 | 日本電気株式会社 | 符号付き整数の剰余積計算装置、符号付き整数の剰余積計算方法及び、プログラム |
CN115034373A (zh) * | 2022-05-30 | 2022-09-09 | 清华大学 | Adam算法加速系统及方法 |
Non-Patent Citations (1)
Title |
---|
程竟然;: "计算机三维图形中一个平方根倒数算法的数学证明及优化", 数值计算与计算机应用, no. 04, 14 December 2013 (2013-12-14), pages 266 - 278 * |
Also Published As
Publication number | Publication date |
---|---|
CN118259873B (zh) | 2024-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021537B (zh) | 一种基于硬件平台的softmax函数计算方法 | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
CN110888623B (zh) | 数据转换方法、乘法器、加法器、终端设备及存储介质 | |
US7711764B2 (en) | Pipelined real or complex ALU | |
CN116466910A (zh) | 一种基于浮点数的查表方法、装置、电子设备及存储介质 | |
CN107220025B (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
US6847986B2 (en) | Divider | |
JP5229314B2 (ja) | Cordic演算回路及び方法 | |
CN113608718B (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
CN118259873B (zh) | 计算电路、芯片、计算设备 | |
CN116545621B (zh) | 密钥交换过程中椭圆曲线多标量乘快速实现方法及系统 | |
CN110119265A (zh) | 乘法运算实现方法、装置、计算机存储介质及电子设备 | |
CN111984226A (zh) | 一种基于双曲cordic的立方根求解装置及求解方法 | |
CN108595148B (zh) | 除法函数实现方法、电路、芯片以及系统 | |
CN116166217A (zh) | 执行浮点操作的系统和方法 | |
WO2011036746A1 (ja) | 演算装置 | |
CN113625990B (zh) | 浮点转定点装置、方法、电子设备及存储介质 | |
Altamimi et al. | Novel seed generation and quadrature-based square rooting algorithms | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN112783470A (zh) | 一种用于执行浮点对数运算的装置和方法 | |
Kawamura et al. | Efficient algorithms for sign detection in RNS using approximate reciprocals | |
JP5589628B2 (ja) | 内積演算装置および内積演算方法 | |
CN113127802B (zh) | 基于cordic算法的复对数实现方法、装置、设备及计算机存储介质 | |
Cao et al. | A piecewise cubic polynomial interpolation algorithm for approximating elementary function | |
AU2020425196B2 (en) | Secure computation apparatus, secure computation method, and program |
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 |