CN112817559A - 计算装置以及用于浮点数计算的方法 - Google Patents
计算装置以及用于浮点数计算的方法 Download PDFInfo
- Publication number
- CN112817559A CN112817559A CN202110214311.8A CN202110214311A CN112817559A CN 112817559 A CN112817559 A CN 112817559A CN 202110214311 A CN202110214311 A CN 202110214311A CN 112817559 A CN112817559 A CN 112817559A
- Authority
- CN
- China
- Prior art keywords
- floating point
- point number
- vector
- precision
- mantissa
- 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
- 238000000034 method Methods 0.000 title claims abstract description 29
- 239000013598 vector Substances 0.000 claims abstract description 134
- 238000006243 chemical reaction Methods 0.000 claims abstract description 51
- 238000004364 calculation method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
Images
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/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
- G06F7/523—Multiplying only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本公开的实施例涉及计算装置和用于浮点数计算的方法,涉及计算机领域。计算装置包括:第一输入端口,被配置为接收第一向量和第二向量,第一向量中的每个第一浮点数和第二向量中的每个第二浮点数均具有第一浮点精度;转换模块,与第一输入端口相耦接,被配置为将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,第一四元组和第二四元组的点积等于第一浮点数和第二浮点数的乘积,第二浮点精度小于第一浮点精度;以及点积运算模块,与转换模块相耦接,被配置为对第三向量和第四向量进行点积运算,以生成点积运算结果。由此,能够以相对低的硬件成本实现高精度浮点数计算。
Description
技术领域
本公开的实施例总体涉及计算机领域,具体涉及计算装置以及用于浮点数计算的方法。
背景技术
通用矩阵乘(General Matrix Multiply,GEMM)在人工智能应用中扮演重要角色。BF16最近成为GEMM浮点数实现的工业标准,其具有1个符号位、8个指数位和7个尾数位。但是一些训练模型要求比BF16更高的浮点精度。另一方面,FP32(其具有1个符号位、8个指数位和23个尾数位)在GEMM实现中具有相当高的硬件成本。
发明内容
提供了一种计算装置、计算设备以及用于计算设备中的数据加载和执行的可编程调度的方法,能够增强灵活性、吞吐量和整体性能。
根据本公开的第一方面,提供了一种计算装置。该计算装置包括:第一输入端口,被配置为接收第一向量和第二向量,第一向量中的每个第一浮点数和第二向量中的每个第二浮点数均具有第一浮点精度;转换模块,与第一输入端口相耦接,被配置为将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,第一四元组和第二四元组的点积等于第一浮点数和第二浮点数的乘积,第二浮点精度小于第一浮点精度;以及点积运算模块,与转换模块相耦接,被配置为对第三向量和第四向量进行点积运算,以生成点积运算结果。
根据本公开的第二方面,提供了用于浮点数计算的方法。该方法包括:使用第一输入端口接收第一向量和第二向量,第一向量中的每个第一浮点数和第二向量中的每个第二浮点数均具有第一浮点精度;使用转换模块,将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,第一四元组和第二四元组的点积等于第一浮点数和第二浮点数的乘积,第二浮点精度小于第一浮点精度;以及使用点积运算模块,对第三向量和第四向量进行点积运算,以生成点积运算结果。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的实施例的计算装置100的示意图。
图2示出了根据本公开的实施例的转换模块200的示意框图。
图3示出了根据本公开的实施例的用于浮点数计算的方法300的示意图。
图4示出了根据本公开的实施例的用于将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组的方法400的示意图。
图5示出了根据本公开的实施例的用于将第三浮点数转换为具有第二浮点精度的第一二元组的方法500的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,一方面一些训练模型需要比BF16更高的精度,另一方面FP32的硬件成本又很高。
为了解决上述问题,本公开提供了一种计算装置和用于浮点数计算的方法,能够以较低成本实现高精度浮点数计算。
图1示出了根据本公开的实施例的计算装置100的示意框图。如图1所示,计算设备100包括第一输入端口110、转换模块120和点积运算模块130。
关于第一输入端口110,其可以被配置为接收第一向量和第二向量,第一向量中的每个第一浮点数和第二向量中的每个第二浮点数均具有第一浮点精度。第一向量中的浮点数数量与第二向量中的浮点数数量可以相同,例如均为1个、2个、3个、4个等等。第一浮点精度例如包括但不限于FP32。应当理解,FP32仅是举例说明,第一浮点精度也可以是其他浮点精度,例如FP64,本公开的范围在此不受限制。
关于转换模块120,其与第一输入端口110相耦接。转换模块120可以被配置为将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,第一四元组和第二四元组的点积等于第一浮点数和第二浮点数的乘积,第二浮点精度小于第一浮点精度。
四元组为四个元素组成的序列,例如4个浮点数组成的序列。四元组也可以称为四元数组或者包括4个元素的向量,例如包括4个浮点数的数组或向量。具有第二浮点精度的第一四元组包括具有第二浮点精度的4个浮点数,例如(a0,a1,a2,a3),类似地,具有第二浮点精度的第二四元组也包括具有第二浮点精度的4个浮点数,例如(b0,b1,b2,b3)。第一四元组和第二四元组的点积可以表示为第一四元组中的每个浮点数与第二四元组中对应的浮点数的乘积累加的结果。第二浮点精度例如包括但不限于BF16。
生成第一四元组和第二四元组之后,将第一浮点数和第二浮点数分别替换为第一四元组和第二四元组,可以生成第三向量和第四向量。
关于点积运算模块130,其与转换模块120相耦接。点积运算模块130可以被配置为对第三向量和第四向量进行点积运算,以生成点积运算结果。
由此,能够使用较低精度(例如BF16)的点积运算模块实现较高精度(例如FP32)的浮点数向量的点积运算,从而能够以较低成本实现高精度浮点数计算。
在一些实施例中,计算装置110还可以包括第二输入端口140和复用器150。
关于第二输入端口140,其可以被配置为接收第五向量和第六向量,第五向量中的每个浮点数和第六向量中的每个浮点数均具有第二浮点精度。第五向量和第六向量中包括的浮点数数量与第三向量和第四向量中包括的浮点数数量相同,为第一向量和第二向量中包括的浮点数数量的4倍。例如,第一向量和第二向量中均包括2个浮点数,则第五向量和第六向量中均包括8个浮点数。
关于复用器150(Multiplexer,MUX),其与转换模块120、第二输入端口140和点积运算模块130相耦接。复用器150可以被配置为根据控制指令选择输出第三向量和第四向量到点积运算模块130进行点积运算,或者选择输出第五向量和第六向量到点积运算模块130进行点积运算。在复用器150选择输出第三向量和第四向量到点积运算模块130的情况下,点积运算模块130对第三向量和第四向量进行点积运算,在复用器150选择输出第五向量和第六向量到点积运算模块130的情况下,点积运算模块130对第五向量和第六向量进行点积运算。
由此,计算装置能够统一实现高精度向量的点积(例如2x2)或者低精度向量的点积(例如8x8)。
在一些实施例中,转换模块120可以被配置为将第一浮点数和第二浮点数分别转换为均具有第三浮点精度的第三浮点数和第四浮点数。例如,将浮点精度为FP32的第一浮点数和第二浮点数转换为浮点精度为BF24的第三浮点数和第四浮点数。
具体来说,转换模块120可以被配置为将第一浮点数的尾数(mantissa)按照第三浮点精度截断,以生成第三浮点数。例如,浮点精度为FP32的第一浮点数具有23位尾数(不包含1位隐藏尾数),可以按照BF24(其具有15位尾数,不包含1位隐藏尾数)截取23位尾数中的前15位尾数,并结合第一浮点数的符号位和指数,生成第三浮点数(其具有浮点精度BF24)。对于第二浮点数也可以类似处理,不再赘述。
得到第三浮点数和第四浮点数之后,转换模块120还可以被配置为将第三浮点数和第四浮点数分别转换为均具有第二浮点精度的第一二元组和第二二元组,第一二元组的元素之和等于第三浮点数,第二二元组的元素之和等于第四浮点数。二元组是包括两个元素的序列,例如包括两个浮点数的序列。例如,BF24的第三浮点数A转换为BF16的第一二元组(A1,A2),A=A1+A2,BF24的第四浮点数B转换为BF16的第二二元组(B1,B2),B=B1+B2。
具体来说,转换模块120可以被配置为将第三浮点数的尾数按照第二浮点精度划分为前部尾数和后部尾数。例如,浮点精度为BF24的第三浮点数具有15位尾数,可以按照BF16(其具有7位尾数,不包含1位隐藏尾数,实际为8位)将15位尾数划分为7位前部尾数(与1位隐藏尾数一起一共8位)和8位后部尾数。
转换模块120还可以被配置为基于前部尾数以及第三浮点数的符号位和指数,生成第一二元组中的一个浮点数。例如,将7位前部尾数和第三浮点数的符号位(1位)和指数(8位)组合,生成BF16的浮点数。
转换模块120还可以被配置为基于后部尾数以及第三浮点数的符号位和指数,生成第一二元组中的另一个浮点数。具体来说,转换模块120可以被配置为对后部尾数和指数进行向左规格化,以生成经规格化的尾数和指数。例如,对于8位后部尾数,由于其位于小数点后第8位,需要先向左移动8位,使得后部尾数中的第1位在小数点之前,如果该第1位为1,则得到规格化的尾数,如果该第1位为0,则继续左移,直至小数点前为1,也就是1.M的尾数表示形式,从而得到规格化的尾数。从指数中减去左移的总位数得到经规格化的指数。转换模块120还可以被配置为基于经规格化的尾数和指数以及符号位,生成另一个浮点数。
对于第四浮点数也可以类似处理,不再赘述。
得到第一二元组和第二二元组之后,转换模块120还可以被配置为将第一二元组和第二二元组分别扩展成第一四元组和所述第二四元组,第一四元组和第二四元组的点积等于第三浮点数和第四浮点数的乘积。例如,第一二元组中的两个浮点数A1和A2按照重叠方式扩展成第一四元组(A1,A1,A2,A2),第二二元组中的两个浮点数B1和B2按照交叉方式扩展成第二四元组(B1,B2,B1,B2),或者反之亦然。
下面结合图2举例说明。图2示出了根据本公开的实施例的转换模块200的示意框图。如图2所示,第一向量为(A0,B0),第二向量为(C0,D0),精度为FP32。转换模块200包括精度转换模块201、211、221和231,二元组生成模块202、212、222、232,以及扩展模块203、213、223、233。
关于精度转换模块201、211、221和231,其被配置为分别将A0、B0、C0和D0转换为BF24的A1、B2、C1和D1。可以认为A0=A1,B0=B1,C0=C1,D0=D1。应当理解,本文所说的不同精度的浮点数“相等”、“等于”或者“=”会涉及精度损失。
关于二元组生成模块202、222,其被配置为将BF24的A1和C1转换为BF16的第一二元组(A2,A3)和第二二元组(C2,C3),其中A1=A2+A3,C1=C2+C3,由于A1*C1=(A2+A3)*(C2+C3)=A2*C2+A2*C3+A3*C2+A3*C3,也就是(A2,A3)和(C2,C3)的点积。
关于扩展模块203、223,其被配置为将BF16的第一二元组(A2,A3)和第二二元组(C2,C3)扩展为第一四元组(A2,A2,A3,A3)和第二四元组(C2,C3,C2,C3)。
关于二元组生成模块212、232,其被配置为将BF24的B1和D1转换为BF16的第一二元组(B2,B3)和第二二元组(D2,D3),其中B1=B2+B3,D1=D2+D3,由于B1*D1=(B2+B3)*(D2+D3)=B2*D2+B2*D3+B3*D2+B3*D3,也就是(B2,B3)和(D2,D3)的点积。
关于扩展模块213、233,其被配置为将BF16的第一二元组(B2,B3)和第二二元组(D2,D3)扩展为第一四元组(B2,B2,B3,A3)和第二四元组(D2,D3,D2,D3)。
因而可以得到第三向量(A2,A2,A3,A3,B2,B2,B3,B3)和第四向量(C2,C3,C2,C3,D2,D3,D2,D3),使得第一向量和第二向量的点积等于第三向量和第四向量的点积。
由此,能够将高精度的浮点数向量转化为低精度的浮点数向量,并通过低精度的浮点数向量的点积运算实现高精度的浮点数向量的点积,从而降低硬件成本。
图3示出了根据本公开的实施例的用于浮点数计算的方法300的示意图。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框302处,使用第一输入端口110接收第一向量和第二向量,第一向量中的每个第一浮点数和第二向量中的每个第二浮点数均具有第一浮点精度。
在框304处,使用转换模块120,将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,第一四元组和第二四元组的点积等于第一浮点数和第二浮点数的乘积,第二浮点精度小于所述第一浮点精度。
在框306处,使用点积运算模块130,对第三向量和第四向量进行点积运算,以生成点积运算结果。
由此,能够使用较低精度(例如BF16)的点积运算模块实现较高精度(例如FP32)的浮点数向量的点积运算,从而能够以较低成本实现高精度浮点数计算。
在一些实施例中,方法300还可以包括使用第二输入端口140,接收第五向量和第六向量,第五向量中的每个浮点数和第六向量中的每个浮点数均具有第二浮点精度。
随后,使用复用器150,根据控制指令选择输出第三向量和第四向量到点积运算模块进行点积运算,或者选择输出第五向量和第六向量到点积运算模块进行点积运算。
由此,计算装置能够统一实现高精度向量的点积(例如2x2)或者低精度向量的点积(例如8x8)。
图4示出了根据本公开的实施例的用于将第一浮点数和第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组的方法400的示意图。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,使用转换模块120,将第一浮点数和第二浮点数分别转换为均具有第三浮点精度的第三浮点数和第四浮点数。
具体来说,可以使用转换模块120,将第一浮点数的尾数按照第三浮点精度截断,以生成第三浮点数。对于第二浮点数也可以类似处理,步骤赘述。
在框404处,使用转换模块120,将第三浮点数和第四浮点数分别转换为均具有第二浮点精度的第一二元组和第二二元组,第一二元组的元素之和等于第三浮点数,第二二元组的元素之和等于第四浮点数。
在框406处,使用转换模块120,将第一二元组和第二二元组分别扩展成第一四元组和第二四元组,第一四元组和第二四元组的点积等于第三浮点数和第四浮点数的乘积。具体过程可参见上文,这里不再赘述。
由此,能够将来自两个高精度向量的两个对应浮点数转化为低精度的两个四元组,使得两个四元组之间的点积等于两个浮点数之间的乘积,以便通过低精度向量的点积运算实现高精度向量的点积,从而降低硬件成本。
图5示出了根据本公开的实施例的用于将第三浮点数转换为具有第二浮点精度的第一二元组的方法500的示意图。应当理解的是,方法500还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框502处,使用转换模块120,将第三浮点数的尾数按照第二浮点精度划分为前部尾数和后部尾数。
在框504处,使用转换模块120,基于前部尾数以及第三浮点数的符号位和指数,生成第一二元组中的一个浮点数。
在框506处,使用转换模块120,基于后部尾数以及第三浮点数的符号位和指数,生成第一二元组中的另一个浮点数。
具体来说,可以使用转换模块120,对后部尾数和指数进行向左规格化,以生成经规格化的尾数和指数。随后,可以使用转换模块120,基于经规格化的尾数和指数以及符号位,生成另一个浮点数。具体可以参见上文,这里不再赘述。
由此,能够将高精度的浮点数转换为低精度的二元组,使得二元组的元素之和等于浮点数,便于将高精度向量转化为低精度向量来进行点积运算。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
本文中以上描述的装置、模块和方法的各种实施方式可以在数字电子电路系统、集成电路系统、可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、场可编程门阵列(FPGA)、电可编程逻辑设备(EPLD)、电可擦除可编程逻辑设备(EEPLD)、逻辑单元阵列(LCA)、颗粒度可重构结构(CGRA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。
Claims (14)
1.一种计算装置,包括:
第一输入端口,被配置为接收第一向量和第二向量,所述第一向量中的每个第一浮点数和所述第二向量中的每个第二浮点数均具有第一浮点精度;
转换模块,与所述第一输入端口相耦接,被配置为将所述第一浮点数和所述第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,所述第一四元组和所述第二四元组的点积等于所述第一浮点数和所述第二浮点数的乘积,所述第二浮点精度小于所述第一浮点精度;以及
点积运算模块,与所述转换模块相耦接,被配置为对所述第三向量和所述第四向量进行点积运算,以生成点积运算结果。
2.根据权利要求1所述的计算装置,其中所述转换模块还被配置为:
将所述第一浮点数和所述第二浮点数分别转换为均具有第三浮点精度的第三浮点数和第四浮点数;
将所述第三浮点数和所述第四浮点数分别转换为均具有所述第二浮点精度的第一二元组和第二二元组,所述第一二元组的元素之和等于所述第三浮点数,所述第二二元组的元素之和等于所述第四浮点数;以及
将所述第一二元组和所述第二二元组分别扩展成所述第一四元组和所述第二四元组,所述第一四元组和所述第二四元组的点积等于所述第三浮点数和所述第四浮点数的乘积。
3.根据权利要求2所述的计算装置,其中所述转换模块还被配置为:
将所述第一浮点数的尾数按照第三浮点精度截断,以生成所述第三浮点数。
4.根据权利要求2所述的计算装置,其中所述转换模块还被配置为:
将所述第三浮点数的尾数按照所述第二浮点精度划分为前部尾数和后部尾数;
基于所述前部尾数以及所述第三浮点数的符号位和指数,生成所述第一二元组中的一个浮点数;以及
基于所述后部尾数以及所述第三浮点数的符号位和指数,生成所述第一二元组中的另一个浮点数。
5.根据权利要求4所述的计算装置,其中所述转换模块还被配置为:
对所述后部尾数和所述指数进行向左规格化,以生成经规格化的尾数和指数;以及
基于经规格化的尾数和指数以及所述符号位,生成所述另一个浮点数。
6.根据权利要求1所述的计算装置,还包括:
第二输入端口,被配置为接收第五向量和第六向量,所述第五向量中的每个浮点数和所述第六向量中的每个浮点数均具有所述第二浮点精度;以及
复用器,与所述转换模块、所述第二输入端口和所述点积运算模块相耦接,被配置为根据控制指令选择输出所述第三向量和所述第四向量到所述点积运算模块进行点积运算,或者选择输出所述第五向量和所述第六向量到所述点积运算模块进行点积运算。
7.根据权利要求1所述的方法,其中所述第一浮点精度包括FP32,以及所述第二浮点精度包括BF16。
8.一种用于浮点数计算的方法,包括:
使用第一输入端口接收第一向量和第二向量,所述第一向量中的每个第一浮点数和所述第二向量中的每个第二浮点数均具有第一浮点精度;
使用转换模块,将所述第一浮点数和所述第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组,以生成第三向量和第四向量,所述第一四元组和所述第二四元组的点积等于所述第一浮点数和所述第二浮点数的乘积,所述第二浮点精度小于所述第一浮点精度;以及
使用点积运算模块,对所述第三向量和所述第四向量进行点积运算,以生成点积运算结果。
9.根据权利要求8所述的方法,其中将所述第一浮点数和所述第二浮点数分别转换为均具有第二浮点精度的第一四元组和第二四元组包括:
使用转换模块,将所述第一浮点数和所述第二浮点数分别转换为均具有第三浮点精度的第三浮点数和第四浮点数;
使用转换模块,将所述第三浮点数和所述第四浮点数分别转换为均具有所述第二浮点精度的第一二元组和第二二元组,所述第一二元组的元素之和等于所述第三浮点数,所述第二二元组的元素之和等于所述第四浮点数;以及
使用转换模块,将所述第一二元组和所述第二二元组分别扩展成所述第一四元组和所述第二四元组,所述第一四元组和所述第二四元组的点积等于所述第三浮点数和所述第四浮点数的乘积。
10.根据权利要求9所述的方法,其中将所述第一浮点数转换为具有第三浮点精度的第三浮点数包括:
使用转换模块,将所述第一浮点数的尾数按照第三浮点精度截断,以生成所述第三浮点数。
11.根据权利要求9所述的方法,其中将所述第三浮点数转换为具有所述第二浮点精度的第一二元组包括:
使用转换模块,将所述第三浮点数的尾数按照所述第二浮点精度划分为前部尾数和后部尾数;
使用转换模块,基于所述前部尾数以及所述第三浮点数的符号位和指数,生成所述第一二元组中的一个浮点数;以及
使用转换模块,基于所述后部尾数以及所述第三浮点数的符号位和指数,生成所述第一二元组中的另一个浮点数。
12.根据权利要求11所述的方法,其中生成所述第一二元组中的另一个浮点数包括:
使用转换模块,对所述后部尾数和所述指数进行向左规格化,以生成经规格化的尾数和指数;以及
使用转换模块,基于经规格化的尾数和指数以及所述符号位,生成所述另一个浮点数。
13.根据权利要求8所述的方法,还包括:
使用第二输入端口,接收第五向量和第六向量,所述第五向量中的每个浮点数和所述第六向量中的每个浮点数均具有所述第二浮点精度;以及
使用复用器,根据控制指令选择输出所述第三向量和所述第四向量到所述点积运算模块进行点积运算,或者选择输出所述第五向量和所述第六向量到所述点积运算模块进行点积运算。
14.根据权利要求8所述的方法,其中所述第一浮点精度包括FP32,以及所述第二浮点精度包括BF16。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214311.8A CN112817559B (zh) | 2021-02-25 | 2021-02-25 | 计算装置以及用于浮点数计算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214311.8A CN112817559B (zh) | 2021-02-25 | 2021-02-25 | 计算装置以及用于浮点数计算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817559A true CN112817559A (zh) | 2021-05-18 |
CN112817559B CN112817559B (zh) | 2022-09-13 |
Family
ID=75865676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110214311.8A Active CN112817559B (zh) | 2021-02-25 | 2021-02-25 | 计算装置以及用于浮点数计算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817559B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
US20030154227A1 (en) * | 2002-02-08 | 2003-08-14 | Intel Corporation | Multi-threaded multiply accumulator |
US20060149803A1 (en) * | 2004-11-10 | 2006-07-06 | Nvidia Corporation | Multipurpose functional unit with multiply-add and format conversion pipeline |
US9164728B1 (en) * | 2012-05-15 | 2015-10-20 | Altera Corporation | Ternary DSP block |
US10101966B1 (en) * | 2013-01-29 | 2018-10-16 | Altera Corporation | Digital signal processing blocks with embedded arithmetic circuits |
CN108694038A (zh) * | 2017-04-12 | 2018-10-23 | 英特尔公司 | 专用处理块中的混合精度浮点运算电路 |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
CN111177647A (zh) * | 2018-11-09 | 2020-05-19 | 英特尔公司 | 实行16位浮点矩阵点积指令的系统和方法 |
CN111767516A (zh) * | 2019-03-30 | 2020-10-13 | 英特尔公司 | 用于利用所选择的舍入来执行浮点加法的系统和方法 |
CN112074806A (zh) * | 2018-05-04 | 2020-12-11 | 微软技术许可有限责任公司 | 使用减小的位宽向量的块浮点计算 |
-
2021
- 2021-02-25 CN CN202110214311.8A patent/CN112817559B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
US6163791A (en) * | 1998-02-02 | 2000-12-19 | International Business Machines Corporation | High accuracy estimates of elementary functions |
US20030154227A1 (en) * | 2002-02-08 | 2003-08-14 | Intel Corporation | Multi-threaded multiply accumulator |
US20060149803A1 (en) * | 2004-11-10 | 2006-07-06 | Nvidia Corporation | Multipurpose functional unit with multiply-add and format conversion pipeline |
US9164728B1 (en) * | 2012-05-15 | 2015-10-20 | Altera Corporation | Ternary DSP block |
US10101966B1 (en) * | 2013-01-29 | 2018-10-16 | Altera Corporation | Digital signal processing blocks with embedded arithmetic circuits |
CN108694038A (zh) * | 2017-04-12 | 2018-10-23 | 英特尔公司 | 专用处理块中的混合精度浮点运算电路 |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
CN112074806A (zh) * | 2018-05-04 | 2020-12-11 | 微软技术许可有限责任公司 | 使用减小的位宽向量的块浮点计算 |
CN111177647A (zh) * | 2018-11-09 | 2020-05-19 | 英特尔公司 | 实行16位浮点矩阵点积指令的系统和方法 |
CN111767516A (zh) * | 2019-03-30 | 2020-10-13 | 英特尔公司 | 用于利用所选择的舍入来执行浮点加法的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112817559B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468331B (zh) | 独立的浮点转换单元 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
EP3853713A1 (en) | Multiply and accumulate circuit | |
US11042360B1 (en) | Multiplier circuitry for multiplying operands of multiple data types | |
JPH02196328A (ja) | 浮動小数点演算装置 | |
EP0356153B1 (en) | Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction | |
US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
WO2019182943A1 (en) | Stochastic rounding logic | |
CN112711441A (zh) | 用于转换数据类型的转换器、芯片、电子设备及其方法 | |
CN112817559B (zh) | 计算装置以及用于浮点数计算的方法 | |
US11119731B2 (en) | Apparatus and method for rounding | |
GB2262637A (en) | Padding scheme for optimized multiplication. | |
US5289399A (en) | Multiplier for processing multi-valued data | |
US9563400B2 (en) | Optimized structure for hexadecimal and binary multiplier array | |
US7840628B2 (en) | Combining circuitry | |
US20220075598A1 (en) | Systems and Methods for Numerical Precision in Digital Multiplier Circuitry | |
US11281428B2 (en) | Conversion circuitry | |
Hassan et al. | Design and implementation of fast floating point units for FPGAs | |
EP4275113A1 (en) | Numerical precision in digital multiplier circuitry | |
Fiolhais et al. | An efficient exact fused dot product processor in FPGA | |
RU2477513C1 (ru) | Ячейка однородной вычислительной среды, однородная вычислительная среда и устройство для конвейерных арифметических вычислений по заданному модулю | |
JPH11296346A (ja) | 浮動小数点2進4倍長語フォ―マット乗算命令装置 | |
Liang et al. | An innovative Booth algorithm | |
JP3137131B2 (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |