CN114327365A - 数据处理方法、装置、设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114327365A CN114327365A CN202111514621.8A CN202111514621A CN114327365A CN 114327365 A CN114327365 A CN 114327365A CN 202111514621 A CN202111514621 A CN 202111514621A CN 114327365 A CN114327365 A CN 114327365A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- bit
- mantissa
- multiplication
- 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.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本申请实施例提供一种数据处理方法、装置、设备及计算机可读存储介质,其中,方法包括:对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。通过本申请,能够以最小的硬件资源开销完成混合数据精度的乘法运算操作,降低设计成本。
Description
技术领域
本申请实施例涉及计算机技术领域,涉及但不限于一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
目前,在混合精度乘法运算的硬件运算电路中,主要是以最高位宽数据需要的资源为基准,并按照其余精度数据的位宽来拆分/组合标准的运算单元进行基础乘法运算,从而达到并行和复用资源的目的,优化芯片面积。
但是,目前的混合精度乘法运算方式,硬件资源复用效率不高,在较低精度(较小位宽)数据运算时,由于使用为匹配更高精度数据而设计的较大位宽的标准硬件单元,会造成资源浪费,从芯片整体看会极大地提高设计成本。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及计算机可读存储介质,能够以最小的硬件资源开销完成混合数据精度的乘法运算操作,较大幅度地优化了硬件运算电路芯片的面积效能比以及功耗,降低设计成本。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据处理方法,所述方法包括:
对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;
对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;
对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;
对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
本申请实施例提供一种数据处理装置,所述装置包括:
解码模块,用于对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;
乘法模块,用于对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;
加法模块,用于对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;
归一化模块,用于对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
本申请实施例提供一种数据处理设备,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述数据处理方法。
本申请实施例提供一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;其中,计算机设备的处理器从所述计算机可读存储介质中读取所述计算机指令,所述处理器用于执行所述计算机指令,实现上述的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现上述数据处理方法。
本申请实施例具有以下有益效果:通过对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;然后对第一解码数据中的第一尾数位数据和第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;对第一解码数据中的第一指数位数据和第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;最后对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。如此,由于整形乘法处理和整形加法处理能够适用于不同数据精度类型的数据,从而能够以最小的硬件资源开销完成混合数据精度的乘法运算操作,较大幅度地优化了硬件运算电路芯片的面积效能比以及功耗,降低设计成本。
附图说明
图1A是相关技术中的一种乘法运算电路的硬件运算电路图;
图1B是相关技术中的另一种乘法运算电路的硬件运算电路图;
图2是本申请实施例提供的数据处理系统的一个可选的架构示意图;
图3是本申请实施例提供的数据处理设备的结构示意图;
图4是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图5是本申请实施例提供的数据处理方法的另一个可选的流程示意图;
图6是浮点数二进制数的表示形式;
图7是浮点数FP16、BF16以及FP32的格式;
图8是本申请实施例提供的数据处理装置的基本框图;
图9是本申请实施例提供的输入解码模块的功能示意图;
图10是本申请实施例提供的乘法模块的基本单元示意图;
图11是本申请实施例提供的数据精度为FP16/BF16时的尾数切分示意图;
图12是本申请实施例提供的数据精度为int8时的尾数切分示意图;
图13是本申请实施例提供的乘法模块整体框图;
图14是本申请实施例提供的数据精度为FP32时的尾数切分示意图;
图15是本申请实施例提供的加法模块的整体框图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在说明本申请实施例的方案之前,首先对本申请实施例涉及的名词进行解释:
(1)乘法器(即乘法计算器):是在获取文本框的内容(字符串)后,用于将获取的内容转换成数字类型进行乘法运算,并将计算结果用科学计数法表示的装置。
(2)数据精度:包括但不限于FP16、BF16、FP32、Int8(包括有符号sint8和无符号uint8)等精度。其中,FP32是单精度浮点数,用8bit表示指数,23bit表示尾数;FP16是半精度浮点数,用5bit表示指数,10bit表示尾数;BF16是对FP32单精度浮点数的截断数据,即用8bit表示指数,7bit表示尾数。
在解释本申请实施例的数据处理方法之前,首先对相关技术中的方法进行说明。
图1A是相关技术中的一种乘法运算电路的硬件运算电路图,如图1A所示,该乘法运算电路中包括:输入选择器101、输出选择器102和5个具有不同精度的乘法器,其中,乘法器分别是53位(53-bit)乘法器、两个24位(24-bit)乘法器和两个11位(11-bit)乘法器,不同精度的乘法器用于对不同精度的数据进行乘法运算。图1B是相关技术中的另一种乘法运算电路的硬件运算电路图,如图1B所示,该乘法运算电路中包括:输入选择器103和2个具有不同精度的乘法器,其中,乘法器分别是53位(53-bit)乘法器和24位(24-bit)乘法器,不同精度的乘法器用于对不同精度的数据进行乘法运算。
在相关技术中,混合精度乘法硬件运算电路的实现主要以最高位宽数据需要的资源为基准,也就是说,是按照输入数据中最高位宽的数据的位宽来确定乘法硬件运算电路所需的资源,例如图1A和图1B中,最高位宽的乘法器是53位,那么就最大可以对53位的输入数据进行乘法运算。另外,相关技术中还会按照其余精度数据的位宽来拆分/组合标准的运算单元进行基础乘法运算,达到并行和复用资源的目的,从而优化芯片面积。但是,对于低精度的输入数据运算时,利用率就会比较低效。由此可见,相关技术中,硬件资源复用效率不高,在较低精度(较小位宽)数据运算时,由于使用为匹配更高精度数据而设计的较大位宽的标准硬件单元,会造成资源浪费,从芯片整体看会极大地提高设计成本。
基于相关技术中所存在的上述问题,本申请实施例提供一种数据处理方法和数据处理装置,该方法通过优化标准运算单元的配置和组合,设计出适配混合数据精度乘法运算的硬件电路,有针对性地解决了相关技术中所存在的上述问题,硬件资源达到了高效利用。并且,该数据处理装置可以是处理器芯片,在处理器芯片设计中,以最小的硬件资源开销完成目前业界主流混合数据精度的乘法运算操作,较大幅度地优化了芯片的面积/效能比以及功耗。
本申请实施例提供的数据处理方法中,首先,对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;然后,对第一解码数据中的第一尾数位数据和第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;对第一解码数据中的第一指数位数据和第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;最后,对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。如此,由于整形乘法处理和整形加法处理能够适用于不同数据精度类型的数据,从而能够以最小的硬件资源开销完成混合数据精度的乘法运算操作,较大幅度地优化了硬件运算电路芯片的面积效能比以及功耗,降低设计成本。
下面说明本申请实施例的数据处理设备的示例性应用,在一种实现方式中,本申请实施例提供的数据处理设备可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能机器人、智能家电和车载终端等任意的具备数据处理功能和数据运算需求的终端;在另一种实现方式中,本申请实施例提供的数据处理设备还可以实施为服务器。下面,将说明数据处理设备实施为服务器时的示例性应用。
参见图2,图2是本申请实施例提供的数据处理系统10的一个可选的架构示意图,为实现对待处理数据组中的第一待处理数据和第二待处理数据进行乘法处理,实现对待处理内容所对应的数据的准确处理,本申请实施例提供的数据处理系统10中至少包括终端100、网络200和服务器300。其中,终端100上运行有业务应用,该业务应用可以是任意一种能够实现终端业务的应用,终端100通过网络200将业务请求对应的待处理数据组发送给服务器300,服务器300获取到待处理数据组中的第一待处理数据和第二待处理数据,然后对第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;对第一解码数据中的第一尾数位数据和第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;对第一解码数据中的第一指数位数据和第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;最后对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。在得到数据处理结果之后,通过网络200将数据处理结果发送给终端100。在其他实施例中,服务器300还可以根据数据处理结果确定出业务请求对应的业务响应结果,将业务响应结果反馈给终端100。
在一些实施例中,服务器300在实现上述数据处理方法的过程时,可以通过服务器中的处理器芯片来进行数据运算处理,完成上述数据处理方法的流程。
本申请实施例所提供的数据处理方法还可以基于云平台并通过云技术来实现,例如,上述服务器300可以是云端服务器,通过云端服务器对待处理数据组中的第一待处理数据和第二待处理数据进行乘法处理。在一些实施例,还可以具有云端存储器,可以将对第一待处理数据和第二待处理数据进行乘法处理后得到的最终数据处理结果存储至云端存储器中,以便于后续对应用数据进行再次处理时,可以从云端存储器直接获取应用数据。
这里需要说明的是,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
图3是本申请实施例提供的数据处理设备的结构示意图,图3所示的数据处理设备包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。数据处理设备中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可采用软件方式实现,图3示出了存储在存储器350中的一种数据处理装置354,该数据处理装置354可以是数据处理设备中的数据处理装置,其可以是程序和插件等形式的软件,包括以下软件模块:解码模块3541、乘法模块3542、加法模块3543和归一化模块3544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
下面将结合本申请实施例提供的数据处理设备的示例性应用和实施,说明本申请实施例提供的数据处理方法,其中,该数据处理设备可以是任意一种具备数据处理功能和数据运算需求的终端,或者也可以是服务器,即本申请实施例的数据处理方法可以通过终端来执行,也可以通过服务器来执行,或者还可以通过终端与服务器进行交互来执行。
参见图4,图4是本申请实施例提供的数据处理方法的一个可选的流程示意图,下面将结合图4示出的步骤进行说明,需要说明的是,图4中的数据处理方法是通过服务器作为执行主体来实现的数据处理方法。
步骤S401,对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据。
这里,待处理数据组中包括第一待处理数据和第二待处理数据,第一待处理数据与第二待处理数据可以具有相同或不同的数据类型,其中数据类型包括但不限于:浮点型、定点型、实数等任意一种类型。第一待处理数据与第二待处理数据可以具有相同或不同的数据精度,其中数据精度包括但不限于:FP16、BF16、FP32、Int8(包括有符号sint8和无符号uint8)等精度。在数据表示范围上,FP32和BF16表示的整数范围是一样的,尾数部分表示不一样,存在舍入误差;FP32和FP16表示的数据范围不一样。
本申请实施例中,分别对第一待处理数据和第二待处理数据进行解码处理,对应得到第一解码数据和第二解码数据。其中,解码处理可以是对第一待处理数据和第二待处理数据进行符号位的正负(0为正,1为负)判断、定点数反码转换、浮点数指数和尾数部分拆分等处理。这里以浮点数为例,当第一待处理数据和第二待处理数据为浮点数时,对第一待处理数据和第二待处理数据进行解码处理可以是将第一待处理数据和第二待处理数据的指数和尾数分别拆分出来,得到对应于第一待处理数据的第一尾数位数据和第一指数位数据,以及,得到对应于第二待处理数据的第二尾数位数据和第二指数位数据。
步骤S402,对第一解码数据中的第一尾数位数据和第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果。
这里,整形乘法处理是指在进行乘法运算的同时进行整形处理,也就是说,针对于多位数据计算时,对每一位上数据的计算结果进行整形处理,得到最终对应于计算数据的准确的计算结果。整形加法处理是指在进行加法运算的同时进行整形处理。
本申请实施例中,第一尾数位数据和第二尾数位数据均为多位数据,在多个数据位上均具有数值,在进行第一尾数位数据和第二尾数位数据的计算时,是将第一尾数位数据和第二尾数位数据中每个数据位上的数值均进行计算,因此,在计算之后需要对计算结果进行整形处理,以保证所得到的结果是对应于多位数据乘法运算或加法运算的运算结果。举例来说,整形乘法处理是指在进行乘法运算时,对乘法运算结果同时进行整形处理,此时,可以是对每一位上数据分别计算后的结果进行移位处理,或者对每一位上数据分别计算后的结果进行进位处理等。整形加法处理是指在进行加法运算时,对加法运算结果同时进行整形处理,可以是对每一位上数据分别计算后的结果进行进位处理等。
步骤S403,对第一解码数据中的第一指数位数据和第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果。
这里,第一指数位数据是第一待处理数据的指数对应的数据,第二指数位数据是第二待处理数据的指数对应的数据。加法处理可以是对第一指数位数据和第二指数位数据中的每一位上的数据分别进行加和,得到最终的加法运算结果。
步骤S404,对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。
这里,归一化处理可以是对乘法运算结果和加法运算结果进行进位操作、移位操作和舍入操作等,从而保证最终的数据处理结果是第一待处理数据和第二待处理数据的准确的乘法结果。
本申请实施例提供的数据处理方法,通过对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;然后对第一解码数据中的第一尾数位数据和第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;对第一解码数据中的第一指数位数据和第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;最后对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。如此,由于整形乘法处理和整形加法处理能够适用于不同数据精度类型的数据,从而能够以最小的硬件资源开销完成混合数据精度的乘法运算操作,较大幅度地优化了硬件运算电路芯片的面积效能比以及功耗,降低设计成本。
本申请实施例提供一种数据处理装置,该数据处理装置包括:解码模块、乘法模块、加法模块和归一化模块。
其中,解码模块,用于实现对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;乘法模块,用于对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;加法模块,用于对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;归一化模块,用于对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
在一些实施例中,所述乘法模块包括至少一个乘法基本单元;乘法基本单元包括至少一个整形乘法器和至少一个整形加法器。其中,每一整形乘法器,用于将第一尾数位数据分割后的一个第一运算位数据、和第二尾数位数据分割后的一个第二运算位数据进行整形乘法处理,对应得到一个整形乘法结果;每一整形加法器,用于对至少一个整形乘法器处理得到的整形乘法结果进行整形加法处理,得到乘法运算结果。
在一些实施例中,待处理数据组的数量为至少一个,每一待处理数据组均由一个第一待处理数据和一个第二待处理数据构成;其中,在进行整形乘法处理和整形加法处理时,是对全部待处理数据组对应的第一解码数据和第二解码数据同时进行整形乘法处理和整形加法;且,在进行加法处理时,是对全部待处理数据组对应的第一解码数据和第二解码数据同时进行加法处理。
当待处理数据组的数量为一个时,第一待处理数据和第二待处理数据的位宽小于等于数据处理装置的最大位宽,或者第一待处理数据和第二待处理数据的位宽小于等于乘法模块的最大位宽。当第一待处理数据和第二待处理数据的位宽小于数据处理装置或者乘法模块的最大位宽时,数据处理装置可以同时支持多组待处理数据组的处理过程。
当待处理数据组的数量为多个时,数据处理装置中的乘法模块具有多个乘法基本单元,每组待处理数据组中的第一待处理数据和第二待处理数据的位宽小于乘法基本单元的最大位宽,且全部的乘法基本单元的位宽之和大于等于全部待处理数据组的待处理数据组中的第一待处理数据和第二待处理数据的位宽之和。也就是说,可以通过多个乘法基本单元并行对多组待处理数据组中的第一待处理数据和第二待处理数据进行乘法运算。
在一些实施例中,步骤S401中,对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据,可以通过以下步骤实现:
步骤S4011,对第一待处理数据和第二待处理数据分别进行数据拆分,得到对应于第一待处理数据的第一尾数位数据和第一指数位数据,以及,得到对应于第二待处理数据的第二尾数位数据和第二指数位数据。
这里数据拆分是指将浮点数的指数和尾数拆分开,对于第一待处理数据和第二待处理数据来说,是将第一待处理数据和第二待处理数据的指数和尾数拆分开,得到第一待处理数据的第一尾数位数据(即尾数)和第一指数位数据(即指数),以及,得到对应于第二待处理数据的第二尾数位数据(即尾数)和第二指数位数据(即指数)。
步骤S4012,将第一尾数位数据和第一指数位数据确定为第一解码数据。
本申请实施例中,第一解码数据包括第一尾数位数据和第一指数位数据。
步骤S4013,将第二尾数位数据和第二指数位数据确定为第二解码数据。本申请实施例中,第二解码数据包括第二尾数位数据和第二指数位数据。
在其他实施例中,步骤S401中,对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据,还可以通过以下方式一至方式五中的任意一种方式实现:
方式一:确定第一待处理数据和第二待处理数据的符号位以及符号位的符号类型,将符号类型对应确定为第一解码数据和第二解码数据。
这里,符号类型包括正和负,可以设置“0”表示正,“1”表示负,这样,将第一待处理数据的符号类型对应的0或1确定为第一解码数据,将第二待处理数据的符号类型对应的0或1确定为第二解码数据。
方式二:当确定出第一待处理数据的数据类型为定点数时,对第一待处理数据进行定点数反码转换处理。
方式三:当确定出第二待处理数据的数据类型为定点数时,对第二待处理数据进行定点数反码转换处理。
这里,反码转换处理是指求第一待处理数据的反码。其中反码是计算机中表示二进制数的一种方法,左边第一位为符号位,“0”表示正,“1”表示负。正数的反码与原码一样,负数的反码,其数值部分按原码的每位求反,即将原码中的“0”变为“1”,而将“1”变成“0”。如-1010,可表示为:10101。
方式四:当确定出第一待处理数据的数据类型为浮点数时,对第一待处理数据进行数据拆分。
方式五:当确定出第二待处理数据的数据类型为浮点数时,对第二待处理数据进行数据拆分。
这里,数据拆分可以是对浮点数进行指数和尾数部分的拆分,得到浮点数的指数部分和尾数部分。
图5是本申请实施例提供的数据处理方法的另一个可选的流程示意图,如图5所示,方法包括以下步骤:
步骤S501,对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据。
步骤S502,确定第一待处理数据和第二待处理数据的数据精度。
这里,数据精度包括但不限于:FP16、BF16、FP32、Int8(包括有符号sint8和无符号uint8)等精度。其中,FP32是单精度浮点数,用8bit表示指数,23bit表示尾数;FP16是半精度浮点数,用5bit表示指数,10bit表示尾数;BF16是对FP32单精度浮点数的截断数据,即用8bit表示指数,7bit表示尾数。在数据表示范围上,FP32和BF16表示的整数范围是一样的,尾数部分表示不一样,存在舍入误差;FP32和FP16表示的数据范围不一样。
举例来说,当第一待处理数据和第二待处理数据为浮点数(即浮点型数据)时,浮点型数据的精度取决于浮点小数结构,其中,32位单精度浮点数的二进制位的第0-22位为2进制小数尾值,决定了该32位单精度浮点数的精度在2的负23次方,即1/(2^23)=0.0000001;64位双精度浮点数的二进制位的第0-52位为2进制小数尾值,决定了该64位双精度浮点数的精度在2的负52次方,即1/(2^52)=2.2e-16。
步骤S503,根据数据精度,分别对第一尾数位数据和第二尾数位数据进行数位分割,得到对应于第一尾数位数据的至少两个第一运算位数据、和对应于第二尾数位数据的至少两个第二运算位数据。
本申请实施例中,对于不同数据精度的尾数位数据,对应不同的数据分割方式。在一些实施例中,步骤S503可以通过以下方式六至方式八中的任意一种方式实现:
方式六:当数据精度为FP16或者BF16时,将第一尾数位数据的第11位至第8位分割为第一个第一运算位数据,将第一尾数位数据的第7位至第0位分割为第二个第一运算位数据;将第二尾数位数据的第11位至第8位分割为第一个第二运算位数据,将第二尾数位数据的第7位至第0位分割为第二个第二运算位数据。
方式七:当数据精度为FP32时,将第一尾数位数据的第23位至第12位分割为第一个第一运算位数据,将第一尾数位数据的第12位至第0位分割为第二个第一运算位数据;将第二尾数位数据的第23位至第12位分割为第一个第二运算位数据,将第二尾数位数据的第23位至第12位分割为第二个第二运算位数据。
方式八:当待处理数据组中的待处理数据的数据精度为int8时,待处理数据组的数量为至少两个。此时,根据数据精度,分别对第一尾数位数据和第二尾数位数据进行数位分割,得到对应于第一尾数位数据的至少两个第一运算位数据、和对应于第二尾数位数据的至少两个第二运算位数据,可以通过以下方式实现:
针对于第一个待处理数据组中的第一待处理数据对应的第一尾数位数据,将第一尾数位数据的第7位至第4位分割为第一个第一运算位数据,将第一尾数位数据的第7位至第0位分割为第二个第一运算位数据,将第一尾数位数据的第3位至第0位分割为第三个第一运算位数据;针对于第一个待处理数据组中的第二待处理数据对应的第二尾数位数据,将第二尾数位数据的第7位至第4位分割为第一个第二运算位数据,将第二尾数位数据的第3位至第0位分割为第二个第二运算位数据,将第二尾数位数据的第7位至第0位分割为第三个第二运算位数据。
针对于第二个待处理数据组中的第一待处理数据对应的第一尾数位数据,将第一尾数位数据的第7位至第0位分割为第一个第一运算位数据;针对于第二个待处理数据组中的第二待处理数据对应的第二尾数位数据,将第二尾数位数据的第7位至第0位分割为第一个第二运算位数据。
步骤S504,对至少两个第一运算位数据与至少两个第二运算位数据进行整形乘法处理,得到至少四个整形乘法结果。
本申请实施例中,对应上上述三种数据分割方式,对于不同数据精度的尾数位数据,可以通过以下方式九至方式十一中的任意一种方式进行整形乘法处理:
方式九(对应于上述方式六):本申请实施例中,当数据精度为FP16或者BF16时,可以将第一个第一运算位数据与第一个第二运算位数据进行整形乘法处理(即整形乘法运算)、将第二个第一运算位数据与第一个第二运算位数据进行整形乘法处理、将第一个第一运算位数据与第二个第二运算位数据进行整形乘法处理、将第二个第一运算位数据与第二个第二运算位数据进行整形乘法处理,这样,对应得到四个整形乘法结果,进而可以对这四个整形乘法结果进行整形加法处理。
方式十(对应于上述方式七):本申请实施例中,当数据精度为FP32时,可以将第一个第一运算位数据与第一个第二运算位数据进行整形乘法处理、将第二个第一运算位数据与第一个第二运算位数据进行整形乘法处理、将第一个第一运算位数据与第二个第二运算位数据进行整形乘法处理、将第二个第一运算位数据与第二个第二运算位数据进行整形乘法处理,这样,对应得到四个整形乘法结果,进而可以对这四个整形乘法结果进行整形加法处理。
方式十一(对应于上述方式八):当待处理数据组中的待处理数据的数据精度为int8时,待处理数据组的数量为至少两个。此时,根据数据精度,分别对第一尾数位数据和第二尾数位数据进行数位分割,得到对应于第一尾数位数据的至少两个第一运算位数据、和对应于第二尾数位数据的至少两个第二运算位数据,并且可以通过以下方式进行整形乘法处理:
当待处理数据组中的待处理数据的数据精度为int8时,针对于第一个待处理数据组的尾数位数据的乘法运算,可以是:将第一个第一运算位数据与第一个第二运算位数据进行整形乘法处理、将第二个第一运算位数据与第二个第二运算位数据进行整形乘法处理、将第三个第一运算位数据与第三个第二运算位数据进行整形乘法处理,这样,对应得到三个整形乘法结果,进而可以对这三个整形乘法结果进行整形加法处理。
当待处理数据组中的待处理数据的数据精度为int8时,针对于第二个待处理数据组的尾数位数据的乘法运算,可以是:将第一个第一运算位数据与第一个第二运算位数据进行整形乘法处理,得到一个整形乘法结果,并将该整形乘法结果作为本次乘法运算的输出结果。
步骤S505,对至少四个整形乘法结果进行整形加法处理,得到乘法运算结果。
步骤S506,当第一待处理数据和第二待处理数据的数据类型为浮点数时,对第一指数位数据和第二指数位数据进行求和,并将求和结果确定为加法运算结果。
这里,对于指数位数据可以直接进行加法求和,并将求和结果确定为加法运算结果。
步骤S507,当第一待处理数据和第二待处理数据的数据类型为定点数时,分别确定出第一待处理数据的第一补码数据和第二待处理数据的第二补码数据。
这里,第一补码数据是第一待处理数据的补码,第二补码数据是第二待处理数据的补码。其中,补码是用来解决负数在计算机中的表示问题的,正数的补码就是该正数本身;负数的补码是在该负数的原码的基础上,符号位不变,其余各位取反,最后+1得到的(即在反码的基础上+1)。补码这个编码方案要解决的是如何在机器中表示负数,其本质意义为用一个正数来表示这个正数对应的负数。
步骤S508,对第一补码数据和第二补码数据进行加法处理,得到加法运算结果。
步骤S509,对乘法运算结果和加法运算结果进行归一化处理,得到数据处理结果。
本申请实施例中,步骤S509中对乘法运算结果和加法运算结果进行归一化处理,可以通过以下步骤实现:根据第一待处理数据和第二待处理数据的数据类型,对乘法运算结果和加法运算结果依次进行移位处理和舍入处理,得到数据处理结果。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种数据处理方法和数据处理装置,该数据处理装置在实现该数据处理方法时,可以对应一处理器芯片,在该处理器芯片的设计中,可以以最小的硬件资源开销完成目前业界主流混合数据精度的乘法运算操作,较大幅度地优化了芯片的面积/效能比以及功耗。
在人工智能云端推理/训练的处理器芯片设计中,运算单元的硬件资源占芯片总面积的绝大部分比重,处理器芯片的设计方案的优劣将直接影响着芯片的算力和成本。本申请实施例至少可以应用于人工智能云端推理/训练的处理器或通用处理器(CPU、GPU、DSP)芯片中的算术运算单元硬件设计中。特别是对于人工智能处理器这种计算力密集型的设备,能够有效地优化芯片面积/算力比,显著降低成本。
下面对本申请实施例的处理器芯片设计方案进行说明。
图6是浮点数二进制数的表示形式,参见图6,根据IEEE754标准,浮点数二进制表示为符号位601、指数位602和尾数位603。
对于任意一个浮点数n,可以表示为以下公式(1):
n=(-1)s×f×2e (1);
由上述公式(2)可知,浮点数的乘法运算中包含了定点数的乘法和加法,即需要对指数部分进行加法操作,对尾数部分进行乘法操作。另外,由于浮点数的符号位只有1位,因此对乘积的符号处理可以使用简单的逻辑比较而不是算数(加法)运算。
目前云端推理/训练的处理器芯片高频使用的数据格式主要有:FP16、BF16、FP32、Int8(包括有符号sint8和无符号uint8),其中浮点数FP16、BF16以及FP32的格式如图7所示,FP32的符号位占1-bit,指数位占8-bit,尾数位占23-bit;FP16的符号位占1-bit,指数位占5-bit,尾数位占10-bit;BF16的符号位占1-bit,指数位占8-bit,尾数位占7-bit。
本申请实施例可以针对以上精度的数据混合使用。
图8是本申请实施例提供的数据处理装置的基本框图,如图8所示,整个数据处理装置包括输入解码模块801(即解码模块)、乘法模块802、加法模块803和归一化模块804。下面对每个模块进行说明。
本申请实施例中,对于输入解码模块801,主要功能是对输入的不同类型的数据进行分类解码,至少完成以下一种或多种操作:判断符号位的正负(0为正,1为负)、定点数反码转换、浮点数指数和尾数部分拆分,如图9所示,是本申请实施例提供的输入解码模块的功能示意图。输入解码模块801能够并行实现输入数据符号位比较901、浮点数据指数尾数拆分902、定点数据反码转换903,对应得到正/负的符号位、指数和尾数、反码。然后,将得到的正/负的符号位、指数和尾数、反码等数据输入至多路复用器904中,通过多路复用器904将多个信息流(即数据)传送到乘法模块802和加法模块803中。
本申请实施例中,对于乘法模块802,为达到硬件资源利用率最高的目的,乘法模块可以设计为支持8组int8型数据,或支持4组FP16/BF16型数据,或支持一组FP32型数据的乘法运算的模块。乘法模块的基本单元1如图10所示,包括4位×4位整形乘法器1001、4位×8位整形乘法器1002、4位×8位整形乘法器1003、8位×8位整形乘法器1004、8位+4位整形加法器1005、12位+12位+8位整形加法器1006。其中,每个整形乘法器用于对输入数据的尾数的部分位进行整形乘法运算,得到整形乘法结果;每个整形加法器用于对整形乘法结果进行整形加法运算,得到乘法模型的最终运算结果。
本申请实施例中,每个基本单元1支持1组FP16/BF16的尾数乘法运算或2组int8的乘法运算。当输入数据(以输入乘数1和乘数2为例)的数据精度为FP16/BF16时,相应乘数切分如图11所示:
通过4位×4位整形乘法器1001,对乘数2的第11位至第8位和乘数1的第11位至第8位进行运算;通过4位×8位整形乘法器1002,对乘数2的第7位至第0位和乘数1的第11位至第8位进行运算;通过4位×8位整形乘法器1003,对乘数2的第11位至第8位和乘数1的第7位至第0位进行运算;通过8位×8位整形乘法器1004,对乘数2的第7位至第0位和乘数1的第7位至第0位进行运算。之后,再将4个整形乘法器的运算结果输入至8位+4位整形加法器1005和12位+12位+8位整形加法器1006中,通过8位+4位整形加法器1005和12位+12位+8位整形加法器1006进行整形加法处理,分别得到最终乘法运算结果的乘积的第23位至第16位、乘积的第15位至第8位,其中,乘积的第7位至第0位是由8位×8位整形乘法器1004直接计算得到。
在一些实施例中,当输入数据的数据精度为int8时,每个基本单元1支持2组int8的乘法运算,此时,输入数据以输入的乘数1、乘数2、乘数3和乘数4为例,其中,乘数1与乘数2构成一组待处理数据,乘数3与乘数4构成一组待处理数据。则相应乘数切分如图12所示:
通过4位×4位整形乘法器1001,对乘数4的第7位至第4位和乘数3的第7位至第4位进行运算;通过4位×8位整形乘法器1002,对乘数4的第7位至第0位和乘数3的第3位至第0位进行运算;通过4位×8位整形乘法器1003,对乘数4的第3位至第0位和乘数3的第7位至第0位进行运算;通过8位×8位整形乘法器1004,对乘数2的第7位至第0位和乘数1的第7位至第0位进行运算。之后,再将4个整形乘法器的运算结果输入至8位+4位整形加法器1005和12位+12位+8位整形加法器1006中,通过8位+4位整形加法器1005和12位+12位+8位整形加法器1006进行整形加法处理,分别得到乘数1与乘数2、乘数3与乘数4的最终乘法运算结果。其中,最终乘法运算结果中,乘数1与乘数2的乘积2的第15位至第8位由8位+4位整形加法器1005得到,乘积2的第7位至第0位由12位+12位+8位整形加法器1006得到;乘数3与乘数4的乘积1的第15位至第0位是由8位×8位整形乘法器1004直接计算得到。
基于上述的基本单元1,本申请实施例的乘法模块整体框图如图13所示,包括:四个基本单元1、24位+12位整形加法器1301和24位+24位+12位整形加法器1302。这里,整形加法器用于对基本单元1输出的结构进行整形加法处理,其中这里的整形加法处理包括但不限于整形处理和拼接处理,以通过整形处理和拼接处理使得最终的结果为输入的待处理数据的准确乘积。
在一些实施例中,当输入数据的数据精度为FP32时,每个基本单元支持一组FP32数据(例如可以是乘数1和乘数2)的部分数据位上的数据的乘法运算。则相应乘数切分如图14所示:
通过第一个基本单元141,对乘数2的第23位至第12位和乘数1的第23位至第12位进行运算;通过第二个基本单元142,对乘数2的第12位至第0位和乘数1的第23位至第12位进行运算;通过第三个基本单元143,对乘数2的第23位至第12位和乘数1的第12位至第0位进行运算;通过第四个基本单元144,对乘数2的第12位至第0位和乘数1的第12位至第0位进行运算。之后,再将4个基本单元的运算结果输入至24位+12位整形加法器145和24位+24位+12位整形加法器146中,通过24位+12位整形加法器145和24位+24位+12位整形加法器146进行整形加法处理,分别得到乘数1与乘数2的最终乘法运算结果的乘积的第47位至第24位和乘积的第23位至第12位;其中,乘积的第11位至第0位是由第四个基本单元144直接计算得到。
本申请实施例中,对于加法模块803,图15是本申请实施例提供的加法模块的整体框图,其中,加法模块包括至少4个8位+8位整形加法器,如图15中的8位+8位整形加法器151、8位+8位整形加法器152、8位+8位整形加法器153、8位+8位整形加法器154。每一整形加法器用于对一组8位以内的数据进行整形加法处理。例如,可以对输入数据的指数位数据进行整形加法处理,得到加法运算结果。
本申请实施例中,加法模块的功能可以至少包括以下一种或多种:a)当做浮点数乘法时进行指数位加和的操作;b)当进行(有符号)定点数乘法时进行计算输入乘数补码的操作(反码加1)。本申请实施例中,加法模块在设计时,面积占比很小且设计方案较为简单。
本申请实施例中,对于归一化模块804,主要功能是对之前运算好的乘积数据基于浮点及整型数据的标准格式进行移位操作和舍入操作。其中,移位操作和舍入操作后的数据格式标准可以参考IEEE754标准实现。
下表1是本申请实施例的方案与相关技术方案的硬件实现面积对比表,参见表1,相关技术中的方案硬件电路面积为1080平方微米,而本申请实施例方案的硬件电路面积为720平方微米,显然,相比于相关技术,本申请实施例的方案能够显著的降低硬件电路面积。
表1
实现方式 | 硬件电路面积(单元:平方微米) |
相关技术方案 | 1080 |
本申请方案 | 720 |
需要指出的是,在云端推理/训练芯片设计中,实际的乘法运算单元的数量较大。以某网站的TPU为例,其规格为128×128×2,如果基于此规格按上表优化数值折算,相当于同等性能下芯片面积减小了11796480平方微米。由此可见,相比于相关技术中的设计方案,本申请实施例能够显著的降低硬件电路面积,从而降低设计成本。
下面继续说明本申请实施例提供的数据处理装置354实施为软件模块的示例性结构,在一些实施例中,如图3所示,数据处理装置354包括:
解码模块3541,用于对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;
乘法模块3542,用于对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;
加法模块3543,用于对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;
归一化模块3544,用于对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
在一些实施例中,所述乘法模块包括至少一个乘法基本单元;所述乘法基本单元包括至少一个整形乘法器和至少一个整形加法器;每一所述整形乘法器,用于将所述第一尾数位数据分割后的一个第一运算位数据、和所述第二尾数位数据分割后的一个第二运算位数据进行整形乘法处理,对应得到一个整形乘法结果;每一所述整形加法器,用于对所述至少一个整形乘法器处理得到的整形乘法结果进行整形加法处理,得到所述乘法运算结果。
在一些实施例中,所述待处理数据组的数量为至少一个,每一所述待处理数据组均由一个第一待处理数据和一个第二待处理数据构成;其中,所述乘法模块在进行所述整形乘法处理和所述整形加法处理时,是所述乘法模块对全部待处理数据组对应的第一解码数据和第二解码数据同时进行所述整形乘法处理和所述整形加法;且,所述加法模块在进行所述加法处理时,是所述加法模块对全部待处理数据组对应的第一解码数据和第二解码数据同时进行所述加法处理。
在一些实施例中,所述解码模块还用于:对所述第一待处理数据和所述第二待处理数据分别进行数据拆分,得到对应于所述第一待处理数据的第一尾数位数据和第一指数位数据,以及,得到对应于所述第二待处理数据的第二尾数位数据和第二指数位数据;将所述第一尾数位数据和所述第一指数位数据确定为所述第一解码数据;将所述第二尾数位数据和所述第二指数位数据确定为所述第二解码数据。
在一些实施例中,所述解码模块还用于:确定所述第一待处理数据和所述第二待处理数据的符号位以及所述符号位的符号类型,将所述符号类型对应确定为所述第一解码数据和所述第二解码数据;当确定出所述第一待处理数据的数据类型为定点数时,对所述第一待处理数据进行定点数反码转换处理;当确定出所述第二待处理数据的数据类型为定点数时,对所述第二待处理数据进行定点数反码转换处理;当确定出所述第一待处理数据的数据类型为浮点数时,对所述第一待处理数据进行所述数据拆分;当确定出所述第二待处理数据的数据类型为浮点数时,对所述第二待处理数据进行所述数据拆分。
在一些实施例中,所述乘法模块还用于:确定所述第一待处理数据和所述第二待处理数据的数据精度;根据所述数据精度,分别对所述第一尾数位数据和所述第二尾数位数据进行数位分割,得到对应于所述第一尾数位数据的至少两个第一运算位数据、和对应于所述第二尾数位数据的至少两个第二运算位数据;对所述至少两个第一运算位数据与所述至少两个第二运算位数据进行整形乘法处理,得到至少四个整形乘法结果;对所述至少四个整形乘法结果进行整形加法处理,得到所述乘法运算结果。
在一些实施例中,所述乘法模块还用于以下至少之一:当所述数据精度为FP16或者BF16时,将所述第一尾数位数据的第11位至第8位分割为第一个第一运算位数据,将所述第一尾数位数据的第7位至第0位分割为第二个第一运算位数据;将所述第二尾数位数据的第11位至第8位分割为第一个第二运算位数据,将所述第二尾数位数据的第7位至第0位分割为第二个第二运算位数据;
当所述数据精度为FP32时,将所述第一尾数位数据的第23位至第12位分割为第一个第一运算位数据,将所述第一尾数位数据的第12位至第0位分割为第二个第一运算位数据;将所述第二尾数位数据的第23位至第12位分割为第一个第二运算位数据,将所述第二尾数位数据的第23位至第12位分割为第二个第二运算位数据。
在一些实施例中,当所述待处理数据组中的待处理数据的数据精度为int8时,所述待处理数据组的数量为至少两个;所述乘法模块还用于:针对于第一个待处理数据组中的第一待处理数据对应的第一尾数位数据,将所述第一尾数位数据的第7位至第4位分割为第一个第一运算位数据,将所述第一尾数位数据的第7位至第0位分割为第二个第一运算位数据,将所述第一尾数位数据的第3位至第0位分割为第三个第一运算位数据;针对于第一个待处理数据组中的第二待处理数据对应的第二尾数位数据,将所述第二尾数位数据的第7位至第4位分割为第一个第二运算位数据,将所述第二尾数位数据的第3位至第0位分割为第二个第二运算位数据,将所述第二尾数位数据的第7位至第0位分割为第三个第二运算位数据;针对于第二个待处理数据组中的第一待处理数据对应的第一尾数位数据,将所述第一尾数位数据的第7位至第0位分割为第一个第一运算位数据;针对于第二个待处理数据组中的第二待处理数据对应的第二尾数位数据,将所述第二尾数位数据的第7位至第0位分割为第一个第二运算位数据。
在一些实施例中,所述加法模块还用于:当所述第一待处理数据和所述第二待处理数据的数据类型为浮点数时,对所述第一指数位数据和所述第二指数位数据进行求和,并将求和结果确定为所述加法运算结果。
在一些实施例中,所述加法模块还用于:当所述第一待处理数据和所述第二待处理数据的数据类型为定点数时,分别确定出所述第一待处理数据的第一补码数据和所述第二待处理数据的第二补码数据;对所述第一补码数据和所述第二补码数据进行所述加法处理,得到所述加法运算结果。
在一些实施例中,所述归一化处理至少包括移位处理和舍入处理;所述归一化模块还用于:根据所述第一待处理数据和所述第二待处理数据的数据类型,对所述乘法运算结果和所述加法运算结果依次进行移位处理和舍入处理,得到所述数据处理结果。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的方法。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图4示出的方法。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (14)
1.一种数据处理方法,其特征在于,所述方法包括:
对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;
对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;
对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;
对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
2.根据权利要求1所述的方法,其特征在于,所述待处理数据组的数量为至少一个,每一所述待处理数据组均由一个第一待处理数据和一个第二待处理数据构成;
其中,在进行所述整形乘法处理和所述整形加法处理时,是对全部待处理数据组对应的第一解码数据和第二解码数据同时进行所述整形乘法处理和所述整形加法;且,
在进行所述加法处理时,是对全部待处理数据组对应的第一解码数据和第二解码数据同时进行所述加法处理。
3.根据权利要求1所述的方法,其特征在于,所述对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据,包括:
对所述第一待处理数据和所述第二待处理数据分别进行数据拆分,得到对应于所述第一待处理数据的第一尾数位数据和第一指数位数据,以及,得到对应于所述第二待处理数据的第二尾数位数据和第二指数位数据;
将所述第一尾数位数据和所述第一指数位数据确定为所述第一解码数据;
将所述第二尾数位数据和所述第二指数位数据确定为所述第二解码数据。
4.根据权利要求3所述的方法,其特征在于,所述对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据,还包括以下至少之一:
确定所述第一待处理数据和所述第二待处理数据的符号位以及所述符号位的符号类型,将所述符号类型对应确定为所述第一解码数据和所述第二解码数据;
当确定出所述第一待处理数据的数据类型为定点数时,对所述第一待处理数据进行定点数反码转换处理;
当确定出所述第二待处理数据的数据类型为定点数时,对所述第二待处理数据进行定点数反码转换处理;
当确定出所述第一待处理数据的数据类型为浮点数时,对所述第一待处理数据进行所述数据拆分;
当确定出所述第二待处理数据的数据类型为浮点数时,对所述第二待处理数据进行所述数据拆分。
5.根据权利要求1所述的方法,其特征在于,所述对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果,包括:
确定所述第一待处理数据和所述第二待处理数据的数据精度;
根据所述数据精度,分别对所述第一尾数位数据和所述第二尾数位数据进行数位分割,得到对应于所述第一尾数位数据的至少两个第一运算位数据、和对应于所述第二尾数位数据的至少两个第二运算位数据;
对所述至少两个第一运算位数据与所述至少两个第二运算位数据进行整形乘法处理,得到至少四个整形乘法结果;
对所述至少四个整形乘法结果进行整形加法处理,得到所述乘法运算结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据精度,分别对所述第一尾数位数据和所述第二尾数位数据进行数位分割,得到对应于所述第一尾数位数据的至少两个第一运算位数据、和对应于所述第二尾数位数据的至少两个第二运算位数据,包括以下至少之一:
当所述数据精度为FP16或者BF16时,
将所述第一尾数位数据的第11位至第8位分割为第一个第一运算位数据,将所述第一尾数位数据的第7位至第0位分割为第二个第一运算位数据;
将所述第二尾数位数据的第11位至第8位分割为第一个第二运算位数据,将所述第二尾数位数据的第7位至第0位分割为第二个第二运算位数据;
当所述数据精度为FP32时,
将所述第一尾数位数据的第23位至第12位分割为第一个第一运算位数据,将所述第一尾数位数据的第12位至第0位分割为第二个第一运算位数据;
将所述第二尾数位数据的第23位至第12位分割为第一个第二运算位数据,将所述第二尾数位数据的第23位至第12位分割为第二个第二运算位数据。
7.根据权利要求5所述的方法,其特征在于,当所述待处理数据组中的待处理数据的数据精度为int8时,所述待处理数据组的数量为至少两个;
所述根据所述数据精度,分别对所述第一尾数位数据和所述第二尾数位数据进行数位分割,得到对应于所述第一尾数位数据的至少两个第一运算位数据、和对应于所述第二尾数位数据的至少两个第二运算位数据,包括:
针对于第一个待处理数据组中的第一待处理数据对应的第一尾数位数据,将所述第一尾数位数据的第7位至第4位分割为第一个第一运算位数据,将所述第一尾数位数据的第7位至第0位分割为第二个第一运算位数据,将所述第一尾数位数据的第3位至第0位分割为第三个第一运算位数据;
针对于第一个待处理数据组中的第二待处理数据对应的第二尾数位数据,将所述第二尾数位数据的第7位至第4位分割为第一个第二运算位数据,将所述第二尾数位数据的第3位至第0位分割为第二个第二运算位数据,将所述第二尾数位数据的第7位至第0位分割为第三个第二运算位数据;
针对于第二个待处理数据组中的第一待处理数据对应的第一尾数位数据,将所述第一尾数位数据的第7位至第0位分割为第一个第一运算位数据;
针对于第二个待处理数据组中的第二待处理数据对应的第二尾数位数据,将所述第二尾数位数据的第7位至第0位分割为第一个第二运算位数据。
8.根据权利要求1所述的方法,其特征在于,所述对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果,包括:
当所述第一待处理数据和所述第二待处理数据的数据类型为浮点数时,对所述第一指数位数据和所述第二指数位数据进行求和,并将求和结果确定为所述加法运算结果。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述方法还包括:
当所述第一待处理数据和所述第二待处理数据的数据类型为定点数时,分别确定出所述第一待处理数据的第一补码数据和所述第二待处理数据的第二补码数据;
对所述第一补码数据和所述第二补码数据进行所述加法处理,得到所述加法运算结果。
10.根据权利要求1至8任一项所述的方法,其特征在于,所述归一化处理至少包括移位处理和舍入处理;所述对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果,包括:
根据所述第一待处理数据和所述第二待处理数据的数据类型,对所述乘法运算结果和所述加法运算结果依次进行移位处理和舍入处理,得到所述数据处理结果。
11.一种数据处理装置,其特征在于,所述装置包括:
解码模块,用于对待处理数据组中的第一待处理数据和第二待处理数据分别进行解码处理,对应得到第一解码数据和第二解码数据;
乘法模块,用于对所述第一解码数据中的第一尾数位数据和所述第二解码数据中的第二尾数位数据,依次进行整形乘法处理和整形加法处理,得到乘法运算结果;
加法模块,用于对所述第一解码数据中的第一指数位数据和所述第二解码数据中的第二指数位数据进行加法处理,得到加法运算结果;
归一化模块,用于对所述乘法运算结果和所述加法运算结果进行归一化处理,得到数据处理结果。
12.根据权利要求11所述的装置,其特征在于,所述乘法模块包括至少一个乘法基本单元;
所述乘法基本单元包括至少一个整形乘法器和至少一个整形加法器;
每一所述整形乘法器,用于将所述第一尾数位数据分割后的一个第一运算位数据、和所述第二尾数位数据分割后的一个第二运算位数据进行整形乘法处理,对应得到一个整形乘法结果;
每一所述整形加法器,用于对所述至少一个整形乘法器处理得到的整形乘法结果进行整形加法处理,得到所述乘法运算结果。
13.一种数据处理设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至10任一项所述的数据处理方法。
14.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现权利要求1至10任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111514621.8A CN114327365A (zh) | 2021-12-13 | 2021-12-13 | 数据处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111514621.8A CN114327365A (zh) | 2021-12-13 | 2021-12-13 | 数据处理方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327365A true CN114327365A (zh) | 2022-04-12 |
Family
ID=81050425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111514621.8A Pending CN114327365A (zh) | 2021-12-13 | 2021-12-13 | 数据处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327365A (zh) |
-
2021
- 2021-12-13 CN CN202111514621.8A patent/CN114327365A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115934030B (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US20230108799A1 (en) | Chip, terminal, floating-point operation control method, and related apparatus | |
CN112204516B (zh) | 增强的低精度二进制浮点格式化 | |
US20070266072A1 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
Zhang et al. | New flexible multiple-precision multiply-accumulate unit for deep neural network training and inference | |
US10657442B2 (en) | Deep learning accelerator architecture with chunking GEMM | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
CN111290732B (zh) | 基于posit数据格式的浮点数乘法运算电路 | |
US20220334798A1 (en) | Floating-point number multiplication computation method and apparatus, and arithmetic logic unit | |
TW202109281A (zh) | 帶正負號多字乘法器 | |
US7814138B2 (en) | Method and apparatus for decimal number addition using hardware for binary number operations | |
US20240037179A1 (en) | Data processing method and apparatus | |
GB2376773A (en) | Display and/or precision operations of numerical values in binary systems | |
CN114327365A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
CN116306709A (zh) | 数据处理方法、介质及电子设备 | |
CN115827555A (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
KR102348795B1 (ko) | 부동 소수점 방식에서 고정 소수점 방식으로의 변환 수행시 비트 폭 최적화 방법 | |
JP2022024080A (ja) | ニューラルネットワークの積和演算方法及び装置 | |
CN110795299A (zh) | 浮点验证数据空间压缩方法 | |
CN111310909A (zh) | 一种浮点数转换电路 | |
CN117785113B (zh) | 计算装置及方法、电子设备和存储介质 | |
CN111313905B (zh) | 一种浮点数转换方法及装置 | |
US20210334635A1 (en) | Neural network accelerator configured to perform operation on logarithm domain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067548 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |