CN112130807B - 张量浮点数据处理方法、装置、设备及存储介质 - Google Patents

张量浮点数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112130807B
CN112130807B CN202011335691.2A CN202011335691A CN112130807B CN 112130807 B CN112130807 B CN 112130807B CN 202011335691 A CN202011335691 A CN 202011335691A CN 112130807 B CN112130807 B CN 112130807B
Authority
CN
China
Prior art keywords
target
code
exponent
floating point
word length
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
Application number
CN202011335691.2A
Other languages
English (en)
Other versions
CN112130807A (zh
Inventor
石恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Suiyuan Technology Co ltd
Original Assignee
Shanghai Enflame Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202011335691.2A priority Critical patent/CN112130807B/zh
Publication of CN112130807A publication Critical patent/CN112130807A/zh
Application granted granted Critical
Publication of CN112130807B publication Critical patent/CN112130807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic 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)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种张量浮点数据处理方法、装置、设备及存储介质,根据张量中多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码;依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值;根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码;根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码,提高计算效率。

Description

张量浮点数据处理方法、装置、设备及存储介质
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种张量浮点数据处理方法、装置、设备及存储介质。
背景技术
随着机器学习技术的发展,深度学习神经网络的应用及其训练得到广泛应用。深度学习神经网络主要采用浮点数进行计算,浮点数例如IEEE754规定的FP16和FP32。
当神经网络训练对数值的动态范围以及相对精度的要求不高时,使用FP16和FP32等浮点数格式存在较多的冗余数据,冗余数据导致输入输出带宽增加,降低计算效率。此外,目前存在8比特的低精度浮点数,但在神经网络训练过程中,8比特浮点数由于其精度过低,导致很难扩展使用到大部分的神经网络训练场景中。可见FP16和FP32以及8比特浮点数存在各自的问题,如何在保证精度的同时降低带宽,以提高计算效率,成为亟待解决的问题。
发明内容
本发明提供一种张量浮点数据处理方法、装置、设备及存储介质,以实现在保证精度的同时降低带宽,提高计算效率。
第一方面,本发明实施例提供了一种张量浮点数据处理方法,包括:
获取张量数据,张量数据包括多个浮点数据;
根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,公共指数编码为多个浮点数据的共同使用的指数部;
依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,目标浮点数据为当前遍历的浮点数据;
根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,独立指数编码为目标浮点数据自用的指数编码;
根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;
根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;
根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码,预设编码长度为目标编码的长度;
当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。
第二方面,本发明实施例还提供了一种张量浮点数据处理方法,包括:
获取张量的编码数据,编码数据包括公共指数编码和多个目标编码,公共指数编码为多个浮点数据的共同使用的指数部,每个目标编码和公共指数编码用于表示一个目标浮点数据;
遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
根据公共指数编码和独立指数编码确定临时指数部;
根据字长编码首部的第一补位编码确定第二差值;
根据第二差值和临时指数部确定目标指数部;
根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;
根据目标指数部、标志位和还原字长部确定目标浮点数据;
当遍历完毕时,根据多个目标浮点数据确定张量数据。
第三方面,本发明实施例还提供了一种张量浮点数据处理装置,包括:
张量数据获取模块,用于获取张量数据,张量数据包括多个浮点数据;
公共指数编码确定模块,用于根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,公共指数编码为多个浮点数据的共同使用的指数部;
第一差值确定模块,用于依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,目标浮点数据为当前遍历的浮点数据;
独立指数编码确定模块,用于根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,独立指数编码为目标浮点数据自用的指数编码;
待裁剪字长确定模块,用于根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
字长长度确定模块,用于根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;
字长编码确定模块,用于根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;
目标编码确定模块,用于根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码,预设编码长度为目标编码的长度;
编码数据确定模块,用于当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。
第四方面,本申请实施例还提供了一种张量浮点数据处理装置,包括:
编码数据获取模块,用于获取张量的编码数据,编码数据包括公共指数编码和多个目标编码,公共指数编码为多个浮点数据的共同使用的指数部,每个目标编码和公共指数编码用于表示一个目标浮点数据;
遍历模块,用于遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
临时指数部确定模块,用于根据公共指数编码和独立指数编码确定临时指数部;
第二差值确定模块,用于根据字长编码首部的第一补位编码确定第二差值;
目标指数部确定模块,用于根据第二差值和临时指数部确定目标指数部;
还原字长部确定模块,用于根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;
浮点数据确定模块,用于根据目标指数部、标志位和还原字长部确定目标浮点数据;
张量数据确定模块,用于当遍历完毕时,根据多个目标浮点数据确定张量数据。
第五方面,本申请实施例还提供了一种浮点数据的处理设备,包括外部存储介质以及至少一个处理器集群,每个处理器集群包括多个处理器内核、缓存器Registers、多层内存memory以及直接存储器访问控制器;
当外部存储介质向处理器集群中的顶层内存传输张量数据时,直接存储器访问控制器根据第一方面所示的方法将张量数据转换为张量的编码数据;
在多层内存之间,由顶层内存向底层内存传输张量的编码数据;
当多层内存中的上层内存向底层内存传输张量的编码数据时,直接存储器访问控制器根据第二方面所示的方法将张量的编码数据转换为张量数据,以便处理器内核通过缓存器获取张量数据,根据张量数据进行计算,得到计算结果,上层内存为底层内存上一层的内存;
当缓存器向底层内存传输计算结果对应的张量数据时,直接存储器访问控制器根据第一方面的方法将张量数据转换为计算结果对应的张量的编码数据;
在多层内存之间,由底层内存向顶层内存传输计算结果对应的张量的编码数据;
当顶层内存向外部存储介质传输计算结果对应的张量数据时,直接存储器访问控制器根据第二方面所示的方法将计算结果对应的张量的编码数据转换为张量数据。
第六方面,本申请实施例还提供了一种浮点数据的处理设备,包括外部存储介质以及至少一个处理器集群,每个处理器集群包括多个处理器内核、缓存器Registers、多层内存memory以及直接存储器访问DMA控制器;
当外部存储介质向处理器集群中的顶层内存传输张量数据时,直接存储器访问控制器根据第一方面所示的方法将张量数据转换为张量的编码数据;
在多层内存之间,由顶层内存向底层内存传输张量的编码数据;
处理器内核通过缓存器获取张量的编码数据,根据张量的编码数据进行计算,得到结算结果对应的张量的编码数据;
在多层内存之间,由底层内存向顶层内存传输计算结果对应的张量的编码数据;
当顶层内存向外部存储介质传输计算结果对应的张量数据时,直接存储器访问控制器根据第二方面所示的方法将计算结果对应的张量的编码数据转换为张量数据。
第七方面,本申请实施例还提供了一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本申请实施例所示的张量浮点数据处理方法。
本申请实施例提供的张量浮点数处理方案,能够获取张量数据,张量数据包括多个浮点数据;根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码;依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值;根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码;根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码;当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。相对于目前使用无法同时保证精度和带宽,本申请能够使用公共指数编码和独立指数编码共同表示浮点数据的指数部,张量中的多个目标浮点数据使用同一个公共指数编码,每个浮点数据具有自身特有的独立指数编码,根据公共指数编码可以确定第一差值,基于第一差值可以将目标浮点数据的指数部与公共指数编码对齐,同时基于第一差值对目标字长部进行右移、裁剪之后得到字长编码,字长编码、标志位以及独立指数编码构成目标编码。对于一个张量中的N个浮点数,可以使用一个公共指数编码以及N个目标编码表示N个浮点数据。由于目标编码的长度可以为浮点数据长度的一半,进而达到使用原浮点数据一半的带宽,达到与原浮点数据精度近似精度,实现在保证精度的同时降低带宽。在传输甚至计算过程中,可以对目标编码进行传输或计算等处理,在处理完毕后进行还原,得到目标浮点数。因此传输或计算过程中可以使用带宽较低的目标编码,实现在保证精度的同时降低带宽,提高计算效率。
附图说明
图1是本发明实施例一中的张量浮点数据处理方法的流程图;
图2是本发明实施例二中的张量浮点数据处理方法的流程图;
图3是本发明实施例三中的张量浮点数据处理装置的结构示意图;
图4是本发明实施例四中的张量浮点数据处理装置的结构示意图;
图5是本发明实施例五中的张量浮点数据处理设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的张量浮点数据处理方法的流程图,本实施例可适用于对张量进行编码情况,该方法可以由进行浮点数处理的设备来执行,该设备可以为计算机设备或移动终端,计算机设备可以为个人电脑或服务器等,移动终端可以为智能手机、平板电脑等,该方法具体包括如下步骤:
步骤101、获取张量数据,张量数据包括多个浮点数据。
一个张量数据包含多个浮点数据。浮点数据具有相同的浮点数类型,例如fp32、bf16或fp16等。本申请实施例针对一个张量数据进行处理,当需要处理多个张量时,分别使用本申请提供的方法对每个张量进行处理,将张量中的浮点数据转换为长度更短的编码数据。
步骤102、根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码。
其中,公共指数编码为多个浮点数据的共同使用的指数部。公共指数编码可以为张量中多个浮点数据公用的指数部。预设公共指数编码长度可以由用户预先配置,预设公共指数编码长度小于等于张量中浮点数据指数部的长度。假设浮点数据指数部的长度为8比特,则预设公共指数编码长度小于等于8bits。
可选的,浮点数据为fp32,预设编码长度为16位;或者,浮点数据为bf16或fp16,预设编码长度为8位。
其中,预设编码长度为目标编码的长度。张量中浮点数据可通过公共指数编码和目标编码表示。在后续数据处理过程中,可以只传输目标编码,由于目标编码的长度小于浮点数据的长度,因此可以降低带宽。也可以只对目标编码进行计算,提高计算效率。下面会详细介绍目标编码的生成方式。
例如,fp16包括10比特的字长部、5比特的指数部和1比特的标志位,一个比特对应一位。fp32包括23比特的字长部、8比特的指数部和1比特的标志位。
可选的,根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,可通过下述方式实施:
步骤1.2.1、遍历多个浮点数据,根据每次遍历获取的目标浮点数据的指数部确定最大指数部。
其中,最大指数部为多个浮点数据中数值最大指数部。
遍历张量中的每个浮点数据,当前遍历的浮点数据为目标浮点数据。获取目标浮点数据的指数部。如果是首次读取浮点数据,则将目标浮点数据的指数部进行缓存。如果非首次读取浮点数据,则将目标浮点数据的指数部与缓存中的指数部的数值大小进行比较,若目标浮点数据大于缓存中的指数部,则将缓存中的指数部替换为目标浮点数据的指数部。直至遍历完张量中的全部浮点数据。此时,缓存中的指数部为最大指数部。
可选的,可以对缓存中的指数部进行初始化,例如将其初始化为0。获取目标浮点数据的指数部。将目标浮点数据的指数部与缓存中的指数部的数值大小进行比较,若目标浮点数据大于缓存中的指数部,则将缓存中的指数部替换为目标浮点数据的指数部。直至遍历完张量中的全部浮点数据。此时,缓存中的指数部为最大指数部。
步骤1.2.2、根据预设公共指数编码长度对最大指数部进行截取,得到公共指数编码。
根据预先配置的预设公共指数编码长度,从最大指数部的头部开始,截取与预设公共指数编码长度相同比特的内容作为公共指数编码。示例性的,fp16的5比特的最大指数部为10110,预设公共指数编码长度为3,则截取到的公共指数编码为101。其中,最大指数部的左侧为高位,右侧为低位,按照预设公共指数编码长度为3进行高位截取,得到公共指数编码为101。
进一步的, 在根据每次遍历获取的目标浮点数据的指数部确定最大指数部之前,还包括:
步骤1.2.1、将目标浮点数据的字长部转换为定点数。
可选的,将目标浮点数据的字长部右移一位;舍入字长部的末位;将高位隐藏的“1”移入字长部的首位。
若后续需要对浮点数据进行计算,可以使用定点计算器进行快速计算。但是,定点计算器可处理的数据必须为定点数。而浮点数据的字长部往往隐藏了“1”,将字长部首部隐藏的“1”移入字长部的首位,使字长部的数据表示一个定点数。当首部增加“1”使,由于字长部的长度不变,因此字长部的尾部舍入,使得首位为原隐藏的“1”的字长部的长度仍然是浮点数据标准所规定的长度。
示例性的,fp16浮点数为1100,0100,1110,1110,其中,从首位至末位依次为标志位“1”,指数部“10001”,字长部“0011101110”。将字长部高位隐藏的“1”移入字长部首位后,字长部为“1001110111”。
步骤1.2.2、将目标浮点数据的指数部加一。
由于首位插入了隐藏的“1”的字长部相当于先右移一位,然后增加隐藏的“1”,因此随着字长部右移一位,指数部加一。在上述实施例中,指数部加一之后,调整为“10010”。
上述实施例在将字长部转换为定点数时,将字长部首部隐藏的“1”移入字长部的首位,使字长部的数据表示一个定点数,进而为后续对目标编码进行快速计算,提高计算效率提供数据基础。
步骤103、依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值。
其中,目标浮点数据为当前遍历的浮点数据。
重新遍历张量中的各浮点数据,分别计算每个遍历到的目标浮点数据的第一差值。
可选的,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,可通过下述方式实施:
步骤1.3.1、在公共指数编码尾部补零,使得补零后的公共指数编码与目标指数部位数相同。
首先将公共指数编码的位数与目标浮点数据的目标指数部的位数相同,在位数相同的前提下,可以计算公共指数编码与目标浮点指数部的差值。示例性的,公共指数编码为101,fp16的目标浮点数据的指数部长度为5比特,因此在公共指数编码后补两个零,补零后的公共指数编码为10100。
步骤1.3.2、计算补零后的公共指数编码与目标指数部的第一差值。
使用补零后的公共指数编码减去目标指数部,得到第一差值。在上例中,若目标浮点数据的目标指数部为10001,则计算补零后的公共指数编码10100,与目标指数部10001的差。10100和10001为二进制数字,其差值为3,因此第一差值为3。
步骤104、根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码。
其中,独立指数编码为目标浮点数据自用的指数编码。
目标指数部为补领后的目标指数部。预设公共指数编码指定的公共指数编码的长度,将目标指数部中除预设公共指数编码长度以外的指数部内容作为独立指数编码。
可选的,根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,可通过下述方式实施:
步骤1.4.1、根据目标指数部的长度和预设公共指数编码长度确定目标指数部中的未覆盖字段。
目标指数部的长度减去预设公共指数编码长度,得到独立指数编码的长度。由于公共指数编码的编码位置覆盖从指数部首部开始预设公共指数编码长度的比特位,因此,将目标指数部的长度减去预设公共指数编码长度,可以得到公共指数编码未覆盖的目标指数部,即目标指数部中的未覆盖字段。
步骤1.4.1、根据未覆盖字段中的数据确定独立指数编码。
将覆盖字段中的数据作为独立指数编码。
示例性的,在上例中,fp16的目标浮点数据的目标指数部的长度为5比特,公共指数编码为101,预设公共指数编码长度为3bits。目标指数部为步骤103中补零后的指数部10100,则目标指数部的长度5减去预设公共指数编码长度3为2,则目标指数部中的未覆盖字段为末尾的00。
步骤105、根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部。
在步骤103确定第一差值后,将第一差值作为目标字长部的位移的位数。其原因在于目标指数部为补零的目标指数部,为了使目标指数部在预设公共指数编码长度内的数据与公共指数编码一致,需要将指数部增加第一差值,因此相应的字长部需要右移与第一差值相同的位数。
在右移过程中,目标字长部的首部补入第一补位编码。第一补位编码的内容与位移次数有关:首次右移,第一补位编码内容为1;非首次右移,第一补位编码内容为1。
在上例中,目标浮点数据的目标字长部为0011101110(长度为10bits),进行首次右移后目标字长部为10011101110(长度为11bits),进行第二次右移后目标字长部为010011101110(长度为12bits),进行第三次右移后目标字长部即待裁剪的目标字长部为0010011101110(长度为13bits)。
步骤106、根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度。
目标字长的长度由预设公共指数编码长度和预设编码长度决定。预设编码长度减去预设公共指数编码长度等于目标字长长度。在上例中,预设编码长度为8bits,预设公共指数编码长度为3bits,因此目标字长长度为预设编码长度8减去预设公共指数编码长度3,等于5bits。
步骤107、根据目标字长长度舍入待裁剪的目标字长部,得到字长编码。
字长编码的长度为目标字长长度。根据目标字长长度对待裁剪的目标字长部进行舍入,得到与目标字长长度比特数一致的字长编码。
可选的,根据目标字长长度舍入待裁剪的目标字长部,得到字长编码,可通过下述方式实施:
步骤1.7.1、根据目标字长长度截取待裁剪的目标字长部,得到准字长编码。
在确定目标字长长度后,从待裁剪的目标字长部的首部开始以目标字长长度为长度进行截取,得到准字长编码,未截取的部分称为冗余部。
步骤1.7.2、将超出目标字长长度的冗余部舍入至准字长编码,得到字长编码。
准字长编码的末位根据冗余部的取值进行舍入。具体为,根据冗余部的取值是否大于冗余部可表示的最大值的一半,如果大于等于,则进行舍入,准字长编码末位加一。若小于,则取消舍入,准字长编码末位不变。
示例性的,在上例中,待裁剪的目标字长部为0010011101110(长度为13bits),目标字长长度为5,因此使用5bits对待裁剪的目标字长部进行截取,准字长编码为00100,冗余部为11101110。由于冗余部为11101110大于其可表示最大值的一半(10000000),因此准字长编码的末位舍入加一,即00100末位加一,得到字长编码00101。
步骤108、根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码。
其中,预设编码长度为目标编码的长度。
将步骤104得到的独立指数编码、目标浮点数据的标志位以及步骤107得到的字长编码进行组合,得到目标浮点数据的目标编码。
可选的,根据独立指数编码、目标浮点数据的标志位、字长编码的顺序依次排列,得到目标编码。示例性的,在上例中,目标浮点数据为1100,0100,1110,1110,其独立指数编码为00,目标浮点数据的标志位为1,字长编码为00101,因此得到的目标编码为0010,0101。
步骤103至步骤108解释了对任意一个目标浮点数据的遍历过程中,如何得到目标浮点数据对应的目标编码。依次遍历张量中的每一个浮点数据,对当前遍历的目标浮点数据执行步骤103至步骤108,得到目标浮点数据对应的目标编码。
步骤109、当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。
当遍历完毕时,将步骤102得到的公共指数编码以及遍历得到的多个目标编码进行封装,得到张量的编码数据。
本申请实施例提供的浮点数处理方法,能够获取张量数据,张量数据包括多个浮点数据;根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码;依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值;根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码;根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码;当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。相对于目前使用无法同时保证精度和带宽,本申请能够使用公共指数编码和独立指数编码共同表示浮点数据的指数部,张量中的多个目标浮点数据使用同一个公共指数编码,每个浮点数据具有自身特有的独立指数编码,根据公共指数编码可以确定第一差值,基于第一差值可以将目标浮点数据的指数部与公共指数编码对齐,同时基于第一差值对目标字长部进行右移、裁剪之后得到字长编码,字长编码、标志位以及独立指数编码构成目标编码。对于一个张量中的N个浮点数,可以使用一个公共指数编码以及N个目标编码表示N个浮点数据。由于目标编码的长度可以为浮点数据长度的一半,进而达到使用原浮点数据一半的带宽,达到与原浮点数据精度近似精度,实现在保证精度的同时降低带宽。在传输甚至计算过程中,可以对目标编码进行传输或计算等处理,在处理完毕后进行还原,得到目标浮点数。因此传输或计算过程中可以使用带宽较低的目标编码,实现在保证精度的同时降低带宽,提高计算效率。
实施例二
图2为本发明实施例二提供的张量浮点数据处理方法的流程图,本实施例可适用于对张量的编码数据进行解码的情况,该方法可以由进行浮点数处理的设备来执行,该设备可以为计算机设备或移动终端,计算机设备可以为个人电脑或服务器等,移动终端可以为智能手机、平板电脑等,该方法与实施例一提供的浮点数据的编码方法相对应,用于对实施例一得到的编码数据进行解码,具体包括如下步骤:
步骤201、获取张量的编码数据。
编码数据包括公共指数编码和多个目标编码,公共指数编码为多个浮点数据的共同使用的指数部,每个目标编码和公共指数编码用于表示一个目标浮点数据。
进一步的,目标编码的长度为16位,目标浮点数据为fp32;或者,目标编码的长度为8位,目标浮点数据为bf16或fp16。
目标编码的长度可以为目标浮点数据长度一半。
步骤202、遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码。
对编码数据中包含的目标编码进行遍历,对于当前遍历的目标编码,获取其独立指数编码、标志位和字长编码。独立指数编码、标志位和字长编码在目标编码中的位置可以由实施例一决定,编码数据中每个比特位对应的字段是一致的。以实施例一中的示例为例,对于目标编码0010,0101,其中,独立指数编码为00,目标浮点数据的标志位为1,字长编码为00101。
步骤203、根据公共指数编码和独立指数编码确定临时指数部。
将公共指数编码与独立指数编码进行组合,得到临时指数部。示例性的,在上例中,公共指数编码为101,目标编码的独立指数编码为00,则二者组合成的临时指数部为10100。
步骤204、根据字长编码首部的第一补位编码确定第二差值。
在编码时,根据第一差值在目标字长部的首部补入了第一补位编码。在解码时,根据第一补位编码可推导出第二差值。第一差值的数值与第二差值的数值相同。
可选的,根据字长编码首部的第一补位编码确定第二差值,可通过下述方式实施:
步骤2.4.1、根据字符数值内容确定字长编码首部的第一补位编码。
步骤2.4.2、根据第一补位编码占用的位数确定第二差值。
由于第一补位编码具有首次为1,非首次为零的特性,因此根据字长编码中首部的比特位内容可以依次识别出第一补位编码。将识别到的第一部为编码的比特位数作为第二差值。示例性的,在上例中字长编码为00101,则识别到的第一补位编码为“0”、“0”、“1”,因此补位编码的比特位数为三,则第二差值为3。
步骤205、根据第二差值和临时指数部确定目标指数部。
在编码时第一差值由公共指数编码与补零后的指数部的差值决定。在解码时,将第二差值与临时指数部的差确定为目标指数部。示例性的,在上例中临时指数部为10100,第二差值为3(十进制),则临时指数部10100减去11(二进制表示的十进制3),得到目标指数部10001。
步骤206、根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部。
可选的,将字长编码进行第二差值数值相同次数的左移,左移时在字长编码的尾部使用零作为补位编码,得到目标浮点数据的还原字长部。
编码时,根据第一差值对字长部右移。在解码时,根据第二差值对字长编码左移。左移位数与第二差值相同。字长编码左移的过程中,尾部补入零。若进行第二差值次左移后,字长编码和补位编码的总长度小于目标浮点数据的字长部的长度,则继续补入零,使得补入的零、补入编码和字长编码的长度与目标浮点数据的字长部位数相同。
示例性的,在上例中字长编码为00101,第二差值为3,则左移3比特位。第一次左移后字长编码为001010,第二次左移后字长编码为0010100,第三次左移后,字长编码为00101000(8比特)。若目标浮点数据为fp16,浮点数据pf16的字长位长度为10比特。因此在字长编码00101000末尾再补00,使得到还原字长部0010100000。
步骤207、根据目标指数部、标志位和还原字长部确定目标浮点数据。
将目标指数部、标志位和还原字长部进行组合,得到目标浮点数据。示例性的,在上例中目标指数部为10001,标志位为1,还原字长部为0010100000,则目标浮点数据为1100,0100,1010,0000。由于指数位越靠近尾部其对整体数值的影响较小,因此本申请实施例还原的目标浮点数据与编码前张量中的浮点数据数值偏差较小,同时大幅降低的传输带宽。
进一步的,在得到目标浮点数据的还原字长部之后,还包括:
步骤2.7.1、若目标浮点数据的还原字长部为定点数,则将还原字长部转换为浮点数表示形式。
若编码是将目标浮点数据的目标字长部转换为定点数,解码时需将定点数转换为原格式。可选的,将还原字长部左移以为,舍去首部的“1”,还原字长部尾部补零。
步骤2.7.2、目标指数部减一。
当还原字长部左移时,目标指数部减一。
示例性的,假设还原字长部为1001110111,指数部为10010,则将还原字长部左移一位得到1001110111,指数部减一得到10001。
步骤202至步骤207解释了对任意一个目标编码的遍历过程中,如何得到目标浮点数据。依次遍历张量中的每一个目标编码,对当前遍历的目标编码执行步骤202至步骤207所示的方案,得到目标浮点数据。
步骤208、当遍历完毕时,根据多个目标浮点数据确定张量数据。
当遍历完毕时,将每次遍历得到的目标浮点数据的集合作为张量数据。
本申请实施例提供的浮点数处理方法,能够获取张量的编码数据,遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;根据公共指数编码和独立指数编码确定临时指数部;根据字长编码首部的第一补位编码确定第二差值;根据第二差值和临时指数部确定目标指数部;根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;根据目标指数部、标志位和还原字长部确定目标浮点数据;当遍历完毕时,根据多个目标浮点数据确定张量数据。相对于目前使用无法同时保证精度和带宽,本申请能够使用公共指数编码和独立指数编码共同表示浮点数据的指数部,张量中的多个目标浮点数据使用同一个公共指数编码,每个浮点数据具有自身特有的独立指数编码。在解码编码数据时,公共指数编码和独立指数编码组成临时指数部,根据第一补位编码和临时指数部可确定第二差值,基于第二差值和字长编码可得到还原字长部,进而根据还原字长部以及标志位等得到目标浮点数据。本申请实施例可以在向外部设备反馈数据时,将编码数据还原为浮点数据。对于一个张量中的N个浮点数,可以使用一个公共指数编码以及N个目标编码表示N个浮点数据。由于目标编码的长度可以为浮点数据长度的一半,进而达到使用原浮点数据一半的带宽,达到与原浮点数据精度近似精度,实现在保证精度的同时降低带宽。在传输甚至计算过程中,可以对目标编码进行传输或计算等处理,在处理完毕后进行还原,得到目标浮点数。因此传输或计算过程中可以使用带宽较低的目标编码,实现在保证精度的同时降低带宽,提高计算效率。
实施例三
图3是本申请实施例三提供的一种张量浮点数据处理装置的结构示意图,本实施例可适用于对张量进行编码情况,该装置可以位于进行浮点数处理的设备,该设备可以为计算机设备或移动终端,计算机设备可以为个人电脑或服务器等,移动终端可以为智能手机、平板电脑等,该装置具体包括:张量数据获取模块301、公共指数编码确定模块302、第一差值确定模块303、独立指数编码确定模块304、待裁剪字长确定模块305、字长长度确定模块306、字长编码确定模块307、目标编码确定模块308以及编码数据确定模块309。
张量数据获取模块301,用于获取张量数据,张量数据包括多个浮点数据;
公共指数编码确定模块302,用于根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,公共指数编码为多个浮点数据的共同使用的指数部;
第一差值确定模块303,用于依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,目标浮点数据为当前遍历的浮点数据;
独立指数编码确定模块304,用于根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,独立指数编码为目标浮点数据自用的指数编码;
待裁剪字长确定模块305,用于根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
字长长度确定模块306,用于根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;
字长编码确定模块307,用于根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;
目标编码确定模块308,用于根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码,预设编码长度为目标编码的长度;
编码数据确定模块309,用于当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。
在上述实施例的基础上,公共指数编码确定模块302用于:
遍历多个浮点数据,根据每次遍历获取的目标浮点数据的指数部确定最大指数部,最大指数部为多个浮点数据中数值最大指数部;
根据预设公共指数编码长度对最大指数部进行截取,得到公共指数编码。
在上述实施例的基础上还包括定点转换模块。定点转换模块用于:
将目标浮点数据的字长部转换为定点数;
将目标浮点数据的指数部加一。
在上述实施例的基础上,定点转换模块用于:
将目标浮点数据的字长部右移一位;
舍入字长部的末位;
将高位隐藏的“1”移入字长部的首位。
在上述实施例的基础上,第一差值确定模块303用于:
在公共指数编码尾部补零,使得补零后的公共指数编码与目标指数部位数相同;
计算补零后的公共指数编码与目标指数部的第一差值。
在上述实施例的基础上,字长编码确定模块307用于:
根据目标字长长度舍入待裁剪的目标字长部,得到准字长编码;
将超出目标字长长度的冗余部舍入至准字长编码,得到字长编码。
在上述实施例的基础上,独立指数编码确定模块304用于:
根据目标指数部的长度和预设公共指数编码长度确定目标指数部中的未覆盖字段;
根据未覆盖字段中的数据确定独立指数编码。
在上述实施例的基础上,浮点数据为fp32,预设编码长度为16位;或者,
浮点数据为bf16或fp16,预设编码长度为8位。
本申请实施例提供的浮点数处理装置,张量数据获取模块301获取张量数据,张量数据包括多个浮点数据;公共指数编码确定模块302根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码;依次遍历多个浮点数据,第一差值确定模块303根据目标浮点数据的目标指数部和公共指数编码确定第一差值;独立指数编码确定模块304根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码;待裁剪字长确定模块305根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;字长长度确定模块306根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;字长编码确定模块307根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;目标编码确定模块308根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码;当遍历完毕时,编码数据确定模块309根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。相对于目前使用无法同时保证精度和带宽,本申请能够使用公共指数编码和独立指数编码共同表示浮点数据的指数部,张量中的多个目标浮点数据使用同一个公共指数编码,每个浮点数据具有自身特有的独立指数编码,根据公共指数编码可以确定第一差值,基于第一差值可以将目标浮点数据的指数部与公共指数编码对齐,同时基于第一差值对目标字长部进行右移、裁剪之后得到字长编码,字长编码、标志位以及独立指数编码构成目标编码。对于一个张量中的N个浮点数,可以使用一个公共指数编码以及N个目标编码表示N个浮点数据。由于目标编码的长度可以为浮点数据长度的一半,进而达到使用原浮点数据一半的带宽,达到与原浮点数据精度近似精度,实现在保证精度的同时降低带宽。在传输甚至计算过程中,可以对目标编码进行传输或计算等处理,在处理完毕后进行还原,得到目标浮点数。因此传输或计算过程中可以使用带宽较低的目标编码,实现在保证精度的同时降低带宽,提高计算效率。
本发明实施例所提供的张量浮点数据处理装置可执行本发明任意实施例所提供的张量浮点数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4是本申请实施例四提供的一种张量浮点数据处理装置的结构示意图,本实施例可适用于对张量的编码数据进行解码的情况,该装置可以位于进行浮点数处理的设备,该设备可以为计算机设备或移动终端,计算机设备可以为个人电脑或服务器等,移动终端可以为智能手机、平板电脑等,该装置与实施例三提供的浮点数据的编码装置相对应,用于对实施例三得到的编码数据进行解码,该装置具体包括:编码数据获取模块401、遍历模块402、临时指数部确定模块403、第二差值确定模块404、目标指数部确定模块405、还原字长部确定模块406、浮点数据确定模块407、张量数据确定模块408。
编码数据获取模块401,用于获取张量的编码数据,编码数据包括公共指数编码和多个目标编码,公共指数编码为多个浮点数据的共同使用的指数部,每个目标编码和公共指数编码用于表示一个目标浮点数据;
遍历模块402,用于遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
临时指数部确定模块403,用于根据公共指数编码和独立指数编码确定临时指数部;
第二差值确定模块404,用于根据字长编码首部的第一补位编码确定第二差值;
目标指数部确定模块405,用于根据第二差值和临时指数部确定目标指数部;
还原字长部确定模块406,用于根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;
浮点数据确定模块407,用于根据目标指数部、标志位和还原字长部确定目标浮点数据;
张量数据确定模块408,用于当遍历完毕时,根据多个目标浮点数据确定张量数据。
在上述实施例的基础上,第二差值确定模块404用于:
根据字符数值内容确定字长编码首部的第一补位编码;
根据第一补位编码占用的位数确定第二差值。
在上述实施例的基础上,目标指数部确定模块405用于:
将第二差值与临时指数部的差确定为目标指数部。
在上述实施例的基础上,还原字长部确定模块406用于:
将字长编码进行第二差值数值相同次数的左移,左移时在字长编码的尾部使用零作为补位编码,得到目标浮点数据的还原字长部。
在上述实施例的基础上,还包括定点还原模块,定点还原模块用于:
若目标浮点数据的还原字长部为定点数,则将还原字长部转换为浮点数表示形式;
目标指数部减一。
在上述实施例的基础上,目标编码的长度为16位,目标浮点数据为fp32;或者,
目标编码的长度为8位,目标浮点数据为bf16或fp16。
本申请实施例提供的浮点数处理装置,编码数据获取模块401获取张量的编码数据,遍历模块402遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;临时指数部确定模块403根据公共指数编码和独立指数编码确定临时指数部;第二差值确定模块404根据字长编码首部的第一补位编码确定第二差值;目标指数部确定模块405根据第二差值和临时指数部确定目标指数部;还原字长部确定模块406根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;浮点数据确定模块407根据目标指数部、标志位和还原字长部确定目标浮点数据;张量数据确定模块408在遍历完毕时,根据多个目标浮点数据确定张量数据。相对于目前使用无法同时保证精度和带宽,本申请能够使用公共指数编码和独立指数编码共同表示浮点数据的指数部,张量中的多个目标浮点数据使用同一个公共指数编码,每个浮点数据具有自身特有的独立指数编码。在解码编码数据时,公共指数编码和独立指数编码组成临时指数部,根据第一补位编码和临时指数部可确定第二差值,基于第二差值和字长编码可得到还原字长部,进而根据还原字长部以及标志位等得到目标浮点数据。本申请实施例可以在向外部设备反馈数据时,将编码数据还原为浮点数据。对于一个张量中的N个浮点数,可以使用一个公共指数编码以及N个目标编码表示N个浮点数据。由于目标编码的长度可以为浮点数据长度的一半,进而达到使用原浮点数据一半的带宽,达到与原浮点数据精度近似精度,实现在保证精度的同时降低带宽。在传输甚至计算过程中,可以对目标编码进行传输或计算等处理,在处理完毕后进行还原,得到目标浮点数。因此传输或计算过程中可以使用带宽较低的目标编码,实现在保证精度的同时降低带宽,提高计算效率。
本发明实施例所提供的张量浮点数据处理装置可执行本发明任意实施例所提供的张量浮点数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本申请实施例五提供的一种浮点数据的处理设备的结构示意图,该装置包括外部存储510介质以及至少一个处理器集群520,每个处理器集群520包括多个处理器内核521、缓存器522Registers、多层内存memory以及直接存储器访问控制器524。如图5所示,浮点数据的处理设备的计算集群中包括三层内存,由底层至底层分别为第一层内存5231、第二层内存5232和第三层内存5233。第一层内存5231与缓存器522进行数据交互,第三层内存5233与外部存储510介质进行数据交互。需要说明的是,多层内存也可以只包括两层内存,分别为由底层至底层分别为第一层内存5231和第二层内存5232。多层内存也可以只包括四层或更多层。直接存储器访问控制器524控制涉及浮点数据与编码数据之间的转换。
外部存储510介质可以为计算机设备的闪存,或芯片中的存储模组等。直接存储器访问(Direct Memory Access,DMA)存储有用于数据转换的传输指令,在DMA控制器524中进行实现。在计算集群的直接存储器访问(DMA)中,Linear Copy,Reshape,Slice等传输方式之外,还支持用于转换BF16、FP16到BBF8(上述实施例中转换得到的长度为8比特的目标编码,简称为BBF8)的DMA指令,该指令用于实现上述实施例所示的方法。虽然同样的DMA指令因为转换功能的原因效率有所降低,但从该层级的DMA操作开始,后续的数据传输所需要的传输量都会大大降低。从而总体缓解计算过程中的带宽瓶颈,大大提升了综合算力利用率。
直接存储器访问控制器524用于:
当外部存储510介质向处理器集群520中的顶层内存传输张量数据时,根据实施例一所示的方法将张量数据转换为张量的编码数据。
在图5中,顶层内存为第三层内存5233。当外部存储510介质向第三层内存5233传输数据时,直接存储器访问控制器524根据用于实现实施例一的指令将张量数据转换为编码数据。
在多层内存之间,由顶层内存向底层内存传输张量的编码数据。
在第三层内存5233、第二层内存5232以及第一层内存5231之间传输编码数据。
当多层内存中的上层内存向底层内存传输张量的编码数据时,根据实施例二所示的方法将张量的编码数据转换为张量数据,以便处理器内核521通过缓存器522获取张量数据,根据张量数据进行计算,得到计算结果,上层内存为底层内存上一层的内存。
当编码数据由第二层内存5232传输到第一层内存5231时,在第一层内存5231中将张量的编码数据转换为张量数据。此时缓存器522可以通过第一层内存5231读取到张量数据。可见,可以在向缓存器522发送张量数据之前,在L1中记录编码数据对应的张量数据。或者,在第一层内存5231中存储编码数据,当缓存器522读取第一层内存5231中的编码数据时,DMA控制器524执行用于实现实施例二代码,将编码数据转换为张量数据,并将张量数据发送至缓存器522。可见数据的转换可以在第一层内存5231向缓存器522的数据传输过程中执行,此时第一层内存5231中无需存储编码数据对应的张量数据。
当缓存器522向底层内存传输计算结果对应的张量数据时,根据实施例一所示的方法将张量数据转换为计算结果对应的张量的编码数据。
缓存器522读取张量数据之后,将张量数据发送至处理器内核521进行计算,得到计算结果。处理器内核521将计算结果发送至缓存器522。当缓存器522向第一层内存5231发送张量数据时,直接存储器访问控制器524根据实施例一所示的方法将张量数据转换为计算结果对应的张量的编码数据。
在多层内存之间,由底层内存向顶层内存传输计算结果对应的张量的编码数据。
在第一层内存5231、第二层内存5232以及第三层内存5233之间传输编码数据。
当顶层内存向外部存储510介质传输计算结果对应的张量数据时,根据实施例二所示的方法将计算结果对应的张量的编码数据转换为张量数据。
当第三层内存5233向外部存储510介质传输计算结果时,执行用于实现实施例二所示的方法的代码,将计算结果对应的编码数据转换为张量数据。
上述设备在外部存储510介质与第三层内存5233传输过程中进行张量数据与编码数据的转换,在第三层内存5233至第二层内存5232,第二层内存5232至第一层内存5231使用编码后的编码数据进行传输。可选的,在L2至L1传输过程中,将编码数据转换为张量数据。可见只是在处理器集群520的多层内存之间进行编码数据的传输,其余环节仍然使用张量数据进行计算,因此可以在当前基于浮点数计算进行设计的芯片上直接使用,只需要在DMA 控制器524中支持数据转换模块(该模块用于实现上述实施例所示的张量浮点数据处理方法),而不需要额外的计算指令支持。由于多层内存之间使用编码数据进行传输,因此能够使用较小的带宽进行数据传输,提高数据处理效率。
实施例六
本申请实施例六提供了一种浮点数据的处理设备,该装置与实施例五提供的处理装置硬件相同,不同在于其所包含的直接存储器访问控制器524以及处理器内核521执行方式有所不同。具体的,该装置包括外部存储510介质以及至少一个处理器集群520,每个处理器集群520包括多个处理器内核521、缓存器522Registers、多层内存memory以及直接存储器访问控制器524。浮点数据的处理设备的计算集群中包括三层内存,由底层至底层分别为第一层内存5231、第二层内存5232和第三层内存5233。第一层内存5231与缓存器522进行数据交互,第三层内存5233与外部存储510介质进行数据交互。需要说明的是,多层内存也可以只包括两层内存,分别为由底层至底层分别为第一层内存5231和第二层内存5232。多层内存也可以只包括四层或更多层。直接存储器访问控制器524控制涉及浮点数据与编码数据之间的转换。
直接存储器访问控制器524用于:当外部存储510介质向处理器集群520中的顶层内存传输张量数据时,根据实施例一所示方法将张量数据转换为张量的编码数据。在多层内存之间,由顶层内存向底层内存传输张量的编码数据。当多层内存中的上层内存向底层内存传输张量的编码数据时,根据实施例二所示方法将张量的编码数据转换为张量数据,以便处理器内核521通过缓存器522获取张量数据,根据张量数据进行计算,得到计算结果,上层内存为底层内存上一层的内存。直接存储器访问控制器524用于:当外部存储510介质向处理器集群520中的顶层内存传输张量数据时,根据实施例一方法将张量数据转换为张量的编码数据;在多层内存之间,由顶层内存向底层内存传输张量的编码数据。
处理器内核521用于:通过缓存器522获取张量的编码数据,处理器内核521根据张量的编码数据进行计算,得到结算结果对应的张量的编码数据。
直接存储器访问控制器524用于:在多层内存之间,由底层内存向顶层内存传输计算结果对应的张量的编码数据;当顶层内存向外部存储510介质传输计算结果对应的张量数据时,根据实施例二所示方法将计算结果对应的张量的编码数据转换为张量数据。
可见,本申请实施例中,只在外部存储510介质与第三层内存5233之间数据传输中进行浮点数据与编码数据的转换。计算集群内的处理器内核521使用目标编码进行计算。此时,在处理器内核521中通过定点计算的形式复用浮点乘加器的计算模块,同时避免指数部的计算逻辑。相比于通常的浮点计算,能够相应的降低功耗,提升能耗比。
在上述实施例的基础上,处理器内核521用于:
步骤一、获取张量的编码数据中的目标编码。
当前处理的编码为目标编码。目标编码可以为一个或多个。
步骤二、将目标编码的字长编码部分进行右移,直至目标编码的独立指数编码与编码数据中最大的独立指数编码相同。
此时,编码数据中全部目标编码的独立指数编码相同。
步骤三、对目标编码中的字长编码进行补码编码转换,使得补码编码转换后的字长编码符合定点数编码格式中补码的标准编码。
目标编码中的字长编码为原码格式,但由于复用的定点计算器的输入数据格式应当为补码的标准编码格式,因此需要将目标编码中的字长编码进行补码编码转换,使得补码编码转换后的字长编码符合定点数编码格式中补码的标准编码。
步骤四、将补码编码转换后的字长编码、标志位和计算指令输入至定点计算器进行计算,得到定点计算结果,定点计算结果包括结果标志位和字长部计算结果,对字长部计算结果进行原码编码转换。
如果计算指令为一元计算,则按照步骤二进行独立指数编码对齐即可。
如果计算指令是多操作数的计算,如加法,乘加等包含规约操作的计算,则将多操作数的独立指数编码对齐,然后执行该计算指令。
如果计算指令是不包含规约操作的多操作数计算,比如按位置乘法,则根据计算规则可以从多个操作数的独立指数编码推算出输出结果的独立指数编码。如果出现进位需要将单独指数位的进位向公共指数位进行传输。
其中,字长部计算结果为补码编码格式,在得到字长部计算结果后,将补码编码格式的字长部计算结果转换为原码编码格式的字长部计算结果。
步骤五、根据目标字长长度对字长部计算结果进行截取和末位舍入,得到结果字长编码。
计算完成后,将字长部计算结果左移,字长部计算结果每左移一次,独立指数编码数值减一。直至独立指数编码为0,或者结果字长编码的首位为1。当满足上述条件时,对字长部计算结果进行截取,得到结果字长编码。
步骤六、根据结果标志位、结果字长编码以及独立指数编码确定结果编码。
按照独立指数编码、独立指数编码、结果字长编码的顺序组成结果编码。
步骤七、根据结果编码确定计算结果对应的张量的编码数据。
本申请实施例提供的浮点数据的处理装置,能够复用定点计算器对编码数据进行计算,从而降低计算部分的功耗。
实施例七
本发明实施例七还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种张量浮点数据处理方法,编码时,该方法包括:
获取张量数据,张量数据包括多个浮点数据;
根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,公共指数编码为多个浮点数据的共同使用的指数部;
依次遍历多个浮点数据,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,目标浮点数据为当前遍历的浮点数据;
根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,独立指数编码为目标浮点数据自用的指数编码;
根据第一差值对目标浮点数据的目标字长部进行右移,右移时目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
根据预设公共指数编码长度和预设编码长度确定目标字长部的目标字长长度;
根据目标字长长度舍入待裁剪的目标字长部,得到字长编码;
根据独立指数编码、目标浮点数据的标志位和字长编码确定目标浮点数据的目标编码,预设编码长度为目标编码的长度;
当遍历完毕时,根据公共指数编码以及多个浮点数据对应的多个目标编码确定张量的编码数据。
在上述实施例的基础上,根据多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,包括:
遍历多个浮点数据,根据每次遍历获取的目标浮点数据的指数部确定最大指数部,最大指数部为多个浮点数据中数值最大指数部;
根据预设公共指数编码长度对最大指数部进行截取,得到公共指数编码。
在上述实施例的基础上,在根据每次遍历获取的目标浮点数据的指数部确定最大指数部之前,还包括:
将目标浮点数据的字长部转换为定点数;
将目标浮点数据的指数部加一。
在上述实施例的基础上,将目标浮点数据的字长部转换为定点数,包括:
将目标浮点数据的字长部右移一位;
舍入字长部的末位;
将高位隐藏的“1”移入字长部的首位。
在上述实施例的基础上,根据目标浮点数据的目标指数部和公共指数编码确定第一差值,包括:
在公共指数编码尾部补零,使得补零后的公共指数编码与目标指数部位数相同;
计算补零后的公共指数编码与目标指数部的第一差值。
在上述实施例的基础上,根据目标字长长度舍入待裁剪的目标字长部,得到字长编码,包括:
根据目标字长长度截取待裁剪的目标字长部,得到准字长编码;
将超出目标字长长度的冗余部舍入至准字长编码,得到字长编码。
在上述实施例的基础上,根据目标浮点数据的目标指数部和预设公共指数编码长度确定独立指数编码,包括:
根据目标指数部的长度和预设公共指数编码长度确定目标指数部中的未覆盖字段;
根据未覆盖字段中的数据确定独立指数编码。
在上述实施例的基础上,浮点数据为fp32,预设编码长度为16位;或者,
浮点数据为bf16或fp16,预设编码长度为8位。
解码时,该方法包括:
获取张量的编码数据,编码数据包括公共指数编码和多个目标编码,公共指数编码为多个浮点数据的共同使用的指数部,每个目标编码和公共指数编码用于表示一个目标浮点数据;
遍历多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
根据公共指数编码和独立指数编码确定临时指数部;
根据字长编码首部的第一补位编码确定第二差值;
根据第二差值和临时指数部确定目标指数部;
根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部;
根据目标指数部、标志位和还原字长部确定目标浮点数据;
当遍历完毕时,根据多个目标浮点数据确定张量数据。
在上述实施例的基础上,根据字长编码首部的第一补位编码确定第二差值,包括:
根据字符数值内容确定字长编码首部的第一补位编码;
根据第一补位编码占用的位数确定第二差值。
在上述实施例的基础上,根据第二差值和临时指数部确定目标指数部,包括:
将第二差值与临时指数部的差确定为目标指数部。
在上述实施例的基础上,根据第二差值左移字长编码,并在字长编码的尾部补充第二补位编码,得到目标浮点数据的还原字长部,包括:
将字长编码进行第二差值数值相同次数的左移,左移时在字长编码的尾部使用零作为补位编码,得到目标浮点数据的还原字长部。
在上述实施例的基础上,在得到目标浮点数据的还原字长部之后,还包括:
若目标浮点数据的还原字长部为定点数,则将还原字长部转换为浮点数表示形式;
目标指数部减一。
在上述实施例的基础上,目标编码的长度为16位,目标浮点数据为fp32;或者,
目标编码的长度为8位,目标浮点数据为bf16或fp16。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的张量浮点数据处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (20)

1.一种张量浮点数据处理方法,其特征在于,包括:
获取张量数据,所述张量数据包括多个浮点数据;
根据所述多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,所述公共指数编码为所述多个浮点数据的共同使用的指数部;
依次遍历所述多个浮点数据,根据目标浮点数据的目标指数部和所述公共指数编码确定第一差值,所述目标浮点数据为当前遍历的浮点数据;
根据目标浮点数据的目标指数部和所述预设公共指数编码长度确定独立指数编码,所述独立指数编码为所述目标浮点数据自用的指数编码;
根据所述第一差值对所述目标浮点数据的目标字长部进行右移,右移时所述目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
根据所述预设公共指数编码长度和预设编码长度确定所述目标字长部的目标字长长度;
根据所述目标字长长度舍入所述待裁剪的目标字长部,得到字长编码;
根据所述独立指数编码、所述目标浮点数据的标志位和所述字长编码确定所述目标浮点数据的目标编码,所述预设编码长度为所述目标编码的长度;
当遍历完毕时,根据所述公共指数编码以及所述多个浮点数据对应的多个目标编码确定所述张量的编码数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,包括:
遍历所述多个浮点数据,根据每次遍历获取的所述目标浮点数据的指数部确定最大指数部,所述最大指数部为所述多个浮点数据中数值最大指数部;
根据预设公共指数编码长度对所述最大指数部进行截取,得到公共指数编码。
3.根据权利要求1所述的方法,其特征在于,在根据每次遍历获取的所述目标浮点数据的指数部确定最大指数部之前,还包括:
将所述目标浮点数据的字长部转换为定点数;
将所述目标浮点数据的指数部加一。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标浮点数据的字长部转换为定点数,包括:
将所述目标浮点数据的字长部右移一位;
舍入所述字长部的末位;
将高位隐藏的“1”移入所述字长部的首位。
5.根据权利要求1所述的方法,其特征在于,所述根据所述目标浮点数据的目标指数部和所述公共指数编码确定第一差值,包括:
在所述公共指数编码尾部补零,使得补零后的公共指数编码与所述目标指数部位数相同;
计算所述补零后的公共指数编码与所述目标指数部的第一差值。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标字长长度舍入所述待裁剪的目标字长部,得到字长编码,包括:
根据所述目标字长长度截取所述待裁剪的目标字长部,得到准字长编码;
将超出所述目标字长长度的冗余部舍入至所述准字长编码,得到字长编码。
7.根据权利要求1所述的方法,其特征在于,根据目标浮点数据的目标指数部和所述预设公共指数编码长度确定独立指数编码,包括:
根据所述目标指数部的长度和所述预设公共指数编码长度确定所述目标指数部中的未覆盖字段;
根据所述未覆盖字段中的数据确定独立指数编码。
8.根据权利要求1所述的方法,其特征在于,所述浮点数据为fp32,所述预设编码长度为16位;或者,
所述浮点数据为bf16或fp16,所述预设编码长度为8位。
9.一种张量浮点数据处理方法,其特征在于,包括:
获取张量的编码数据,所述编码数据包括公共指数编码和多个目标编码,所述公共指数编码为多个浮点数据的共同使用的指数部,每个所述目标编码和所述公共指数编码用于表示一个目标浮点数据;
遍历所述多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
根据所述公共指数编码和所述独立指数编码确定临时指数部;
根据所述字长编码首部的第一补位编码确定第二差值;
根据所述第二差值和所述临时指数部确定目标指数部;
根据所述第二差值左移所述字长编码,并在所述字长编码的尾部补充第二补位编码,得到所述目标浮点数据的还原字长部;
根据所述目标指数部、所述标志位和所述还原字长部确定所述目标浮点数据;
当遍历完毕时,根据多个所述目标浮点数据确定张量数据。
10.根据权利要求9所述的方法,其特征在于,所述根据所述字长编码首部的第一补位编码确定第二差值,包括:
根据字符数值内容确定所述字长编码首部的第一补位编码;
根据所述第一补位编码占用的位数确定第二差值。
11.根据权利要求9所述的方法,其特征在于,所述根据所述第二差值和所述临时指数部确定目标指数部,包括:
将所述第二差值与所述临时指数部的差确定为目标指数部。
12.根据权利要求9所述的方法,其特征在于,所述根据所述第二差值左移所述字长编码,并在所述字长编码的尾部补充第二补位编码,得到所述目标浮点数据的还原字长部,包括:
将所述字长编码进行所述第二差值数值相同次数的左移,左移时在所述字长编码的尾部使用零作为补位编码,得到所述目标浮点数据的还原字长部。
13.根据权利要求9所述的方法,其特征在于,在得到所述目标浮点数据的还原字长部之后,还包括:
若所述目标浮点数据的还原字长部为定点数,则将所述还原字长部转换为浮点数表示形式;
所述目标指数部减一。
14.根据权利要求9所述的方法,其特征在于,所述目标编码的长度为16位,所述目标浮点数据为fp32;或者,
所述目标编码的长度为8位,所述目标浮点数据为bf16或fp16。
15.一种张量浮点数据处理装置,其特征在于,包括:
张量数据获取模块,用于获取张量数据,所述张量数据包括多个浮点数据;
公共指数编码确定模块,用于根据所述多个浮点数据的指数部和预设公共指数编码长度确定公共指数编码,所述公共指数编码为所述多个浮点数据的共同使用的指数部;
第一差值确定模块,用于依次遍历所述多个浮点数据,根据目标浮点数据的目标指数部和所述公共指数编码确定第一差值,所述目标浮点数据为当前遍历的浮点数据;
独立指数编码确定模块,用于根据目标浮点数据的目标指数部和所述预设公共指数编码长度确定独立指数编码,所述独立指数编码为所述目标浮点数据自用的指数编码;
待裁剪字长确定模块,用于根据所述第一差值对所述目标浮点数据的目标字长部进行右移,右移时所述目标字长部首部补入第一补位编码,得到待裁剪的目标字长部;
字长长度确定模块,用于根据所述预设公共指数编码长度和预设编码长度确定所述目标字长部的目标字长长度;
字长编码确定模块,用于根据所述目标字长长度舍入所述待裁剪的目标字长部,得到字长编码;
目标编码确定模块,用于根据所述独立指数编码、所述目标浮点数据的标志位和所述字长编码确定所述目标浮点数据的目标编码,所述预设编码长度为所述目标编码的长度;
编码数据确定模块,用于当遍历完毕时,根据所述公共指数编码以及所述多个浮点数据对应的多个目标编码确定所述张量的编码数据。
16.一种张量浮点数据处理装置,其特征在于,包括:
编码数据获取模块,用于获取张量的编码数据,所述编码数据包括公共指数编码和多个目标编码,所述公共指数编码为多个浮点数据的共同使用的指数部,每个所述目标编码和所述公共指数编码用于表示一个目标浮点数据;
遍历模块,用于遍历所述多个目标编码,获取当前遍历的目标编码的独立指数编码、标志位和字长编码;
临时指数部确定模块,用于根据所述公共指数编码和所述独立指数编码确定临时指数部;
第二差值确定模块,用于根据所述字长编码首部的第一补位编码确定第二差值;
目标指数部确定模块,用于根据所述第二差值和所述临时指数部确定目标指数部;
还原字长部确定模块,用于根据所述第二差值左移所述字长编码,并在所述字长编码的尾部补充第二补位编码,得到所述目标浮点数据的还原字长部;
浮点数据确定模块,用于根据所述目标指数部、所述标志位和所述还原字长部确定所述目标浮点数据;
张量数据确定模块,用于当遍历完毕时,根据多个所述目标浮点数据确定张量数据。
17.一种浮点数据的处理设备,包括外部存储介质以及至少一个处理器集群,每个所述处理器集群包括多个处理器内核、缓存器、多层内存以及直接存储器访问控制器,其特征在于,所述直接存储器访问控制器用于:
当所述外部存储介质向所述处理器集群中的顶层内存传输张量数据时,根据权利要求1至7中任一项所述的方法将所述张量数据转换为张量的编码数据;
在所述多层内存之间,由顶层内存向底层内存传输所述张量的编码数据;
当所述多层内存中的上层内存向底层内存传输所述张量的编码数据时,根据权利要求9-14中任一项所述的方法将所述张量的编码数据转换为所述张量数据,以便所述处理器内核通过所述缓存器获取所述张量数据,根据所述张量数据进行计算,得到计算结果,所述上层内存为所述底层内存上一层的内存;
当所述缓存器向所述底层内存传输所述计算结果对应的张量数据时,根据权利要求1至7中任一项所述的方法将所述张量数据转换为计算结果对应的张量的编码数据;
在所述多层内存之间,由所述底层内存向所述顶层内存传输所述计算结果对应的张量的编码数据;
当所述顶层内存向所述外部存储介质传输计算结果对应的张量数据时,根据权利要求9-14中任一项所述的方法将所述计算结果对应的张量的编码数据转换为所述张量数据。
18.一种浮点数据的处理设备,包括外部存储介质以及至少一个处理器集群,每个所述处理器集群包括多个处理器内核、缓存器、多层内存以及直接存储器访问控制器;其特征在于,所述直接存储器访问控制器用于:
当所述外部存储介质向所述处理器集群中的顶层内存传输张量数据时,根据权利要求1至7中任一项所述的方法将所述张量数据转换为张量的编码数据;
在所述多层内存之间,由顶层内存向底层内存传输所述张量的编码数据;
所述处理器内核用于:通过所述缓存器获取所述张量的编码数据,根据所述张量的编码数据进行计算,得到计算结果对应的张量的编码数据;
所述直接存储器访问控制器用于:在所述多层内存之间,由所述底层内存向所述顶层内存传输所述计算结果对应的张量的编码数据;
当所述顶层内存向所述外部存储介质传输计算结果对应的张量数据时,根据权利要求9-14中任一项所述的方法将所述计算结果对应的张量的编码数据转换为所述张量数据。
19.根据权利要求18所述的设备,其特征在于,所述处理器内核用于:
获取所述张量的编码数据中的目标编码;
将所述目标编码的字长编码部分进行右移,直至所述目标编码的独立指数编码与所述编码数据中最大的独立指数编码相同;
对所述目标编码中的字长编码进行补码编码转换,使得补码编码转换后的字长编码符合定点数编码格式中补码的标准编码;
将补码编码转换后的字长编码、标志位和计算指令输入至定点计算器进行计算,得到定点计算结果,所述定点计算结果包括结果标志位和字长部计算结果,对所述字长部计算结果进行原码编码转换;
根据所述目标字长长度对所述字长部计算结果进行截取和末位舍入,得到结果字长编码;
根据所述结果标志位、所述结果字长编码以及所述独立指数编码确定结果编码;
根据所述结果编码确定计算结果对应的张量的编码数据。
20.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-14中任一所述的张量浮点数据处理方法。
CN202011335691.2A 2020-11-25 2020-11-25 张量浮点数据处理方法、装置、设备及存储介质 Active CN112130807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011335691.2A CN112130807B (zh) 2020-11-25 2020-11-25 张量浮点数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011335691.2A CN112130807B (zh) 2020-11-25 2020-11-25 张量浮点数据处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112130807A CN112130807A (zh) 2020-12-25
CN112130807B true CN112130807B (zh) 2021-02-26

Family

ID=73851946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011335691.2A Active CN112130807B (zh) 2020-11-25 2020-11-25 张量浮点数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112130807B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961744B2 (en) * 2001-05-25 2005-11-01 Sun Microsystems, Inc. System and method for generating an integer part of a logarithm of a floating point operand
CN105094744A (zh) * 2015-07-28 2015-11-25 成都腾悦科技有限公司 一种可变浮点数据微处理器
CN107526709A (zh) * 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
CN111191783A (zh) * 2018-11-15 2020-05-22 北京嘉楠捷思信息技术有限公司 一种自适应量化方法及装置、设备、介质
CN111444538A (zh) * 2020-03-25 2020-07-24 北京奇艺世纪科技有限公司 一种信息脱敏方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109886399B (zh) * 2019-02-13 2021-03-23 上海燧原智能科技有限公司 一种张量处理装置及方法
CN111860841B (zh) * 2020-07-28 2023-11-14 Oppo广东移动通信有限公司 量化模型的优化方法、装置、终端及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961744B2 (en) * 2001-05-25 2005-11-01 Sun Microsystems, Inc. System and method for generating an integer part of a logarithm of a floating point operand
CN105094744A (zh) * 2015-07-28 2015-11-25 成都腾悦科技有限公司 一种可变浮点数据微处理器
CN107526709A (zh) * 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
CN111191783A (zh) * 2018-11-15 2020-05-22 北京嘉楠捷思信息技术有限公司 一种自适应量化方法及装置、设备、介质
CN111444538A (zh) * 2020-03-25 2020-07-24 北京奇艺世纪科技有限公司 一种信息脱敏方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种高性能单精度浮点基-3蝶形运算单元的设计与实现;禹霁阳等;《仪器仪表学报》;20101215;第2675-2681页 *

Also Published As

Publication number Publication date
CN112130807A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
KR100969764B1 (ko) 메쉬 모델로 구현된 3차원 데이터의 부호화 및 복호화 방법
CN102970043B (zh) 一种基于gzip的压缩硬件系统及其加速方法
CN104199927A (zh) 数据处理方法及数据处理装置
CN110943744B (zh) 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置
CN116016606B (zh) 一种基于智慧云的污水处理运维数据高效管理系统
US6253222B1 (en) Compression of limited range floating point numbers
JP2003218703A (ja) データ符号化装置及びデータ復号装置
CN109428603A (zh) 一种数据编码方法、装置以及存储介质
CN109428602A (zh) 一种数据编码方法、装置以及存储介质
CN111796798B (zh) 一种定点与浮点转换器、处理器、方法以及存储介质
CN113765620B (zh) 分块压缩编码方法、装置、计算机设备及可读存储介质
US6057790A (en) Apparatus and method for data compression/expansion using block-based coding with top flag
JP6044292B2 (ja) データ処理装置、データ処理方法
CN112130807B (zh) 张量浮点数据处理方法、装置、设备及存储介质
CN110363291B (zh) 神经网络的运算方法、装置、计算机设备和存储介质
CN102646417B (zh) 用于编码和解码增强层的方法
US6240431B1 (en) Decompression of limited range floating point numbers
WO2012100596A1 (zh) 矢量联合编解码方法及编解码器
CN103746701A (zh) 一种用于Rice无损数据压缩的快速编码选项选择方法
CN103597828A (zh) 图像量化参数编码方法和图像量化参数解码方法
US10931303B1 (en) Data processing system
CN111832257B (zh) 编码数据的条件转码
CN114692077A (zh) 一种矩阵计算装置、方法、系统、电路、芯片及设备
CN111431539A (zh) 一种神经网络数据的压缩方法、装置及计算机可读存储介质
WO2023179464A1 (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
CP03 Change of name, title or address

Address after: Room 902c-5, 560 shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201209

Patentee after: Shanghai Suiyuan Technology Co.,Ltd.

Country or region after: China

Address before: Room 902c-5, 560 shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201209

Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address