CN115269003A - 数据处理方法及装置、处理器、电子设备、存储介质 - Google Patents

数据处理方法及装置、处理器、电子设备、存储介质 Download PDF

Info

Publication number
CN115269003A
CN115269003A CN202210909761.3A CN202210909761A CN115269003A CN 115269003 A CN115269003 A CN 115269003A CN 202210909761 A CN202210909761 A CN 202210909761A CN 115269003 A CN115269003 A CN 115269003A
Authority
CN
China
Prior art keywords
sub
input
precision
tensors
tensor
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
Application number
CN202210909761.3A
Other languages
English (en)
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 Biren Intelligent Technology Co Ltd
Original Assignee
Shanghai Biren Intelligent 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 Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202210909761.3A priority Critical patent/CN115269003A/zh
Publication of CN115269003A publication Critical patent/CN115269003A/zh
Priority to US17/984,236 priority patent/US20240037179A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)

Abstract

一种数据处理方法、数据处理装置、处理器、电子设备和非瞬时性存储介质。该数据处理方法包括:获取作为计算处理的输入参数的多个输入张量;针对每个输入张量,利用M个输入子张量组合表示输入张量;针对每个输入张量,使用M个输入子张量的组合替代输入张量,执行计算处理,得到计算结果。该数据处理方法扩大了计算处理的适用场景,有效利用原本所提供的低精度浮点数本身强大的算力,大幅提高计算的总体效率。

Description

数据处理方法及装置、处理器、电子设备、存储介质
技术领域
本公开的实施例涉及一种数据处理方法、数据处理装置、处理器、电子设备和非瞬时性计算机可读存储介质。
背景技术
张量(Tensor)是一个定义在一些向量空间和一些对偶空间的笛卡尔积上的多重线性映射,例如,标量可以看作0维张量,向量可以看作一维张量,矩阵可以看作二维张量。张量操作在并行处理器等处理器中广泛使用。
随着人工智能及机器学习的发展,对以并行处理器(例如,多核处理器、图形处理器、数字信号处理器等)为代表的众多并行处理器设备提出了新的要求。并行处理器的张量操作可以包括通用的矩阵乘法(General Matrix Multiplication,简称GEMM)或卷积乘法运算。例如,在人工智能等领域中经常使用的神经网络处理中,例如,卷积神经网络,经常需要执行矩阵乘累加(MACC,Matrix multiply and Accumulation)计算,矩阵乘累加计算也属于一种张量操作,例如,矩阵乘累加计算包括将两个矩阵中对应位置元素相乘,再将相乘结果累加得到一个计算结果。
发明内容
本公开至少一实施例提供一种数据处理方法,包括:获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;针对每个输入张量,利用M个输入子张量组合表示所述输入张量,其中,所述M个输入子张量具有至少两种不同的精度类型,所述至少两种精度类型均与所述第一精度类型不同,M为大于1的整数;针对每个所述输入张量,使用组合表示所述输入张量的所述M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果。
例如,在本公开至少一实施例提供一种数据处理方法中,针对每个输入张量,所述M个输入子张量与所述输入张量的形状相同,针对每个所述输入张量,利用所述M个输入子张量组合表示所述输入张量,包括:针对所述输入张量中的每个参数元素,将所述参数元素拆分为M个子元素,其中,所述M个子元素分别为所述M个输入子张量中与所述参数元素在所述输入张量中位置相同的元素,所述参数元素表示为所述M个子元素的加和形式。
例如,在本公开至少一实施例提供一种数据处理方法中,针对所述输入张量中的每个参数元素,将所述参数元素拆分为M个子元素,包括:确定所述M个子元素中的第一子元素的指数、符号位与所述参数元素的指数、符号位相同,以及所述第一子元素的尾数部分与所述参数元素的尾数有效位中靠前的高位有效位部分相同;确定所述M个子元素中除所述第一子元素以外的其他M-1个子元素,其中,所述其他M-1个子元素之和为所述参数元素与所述第一子元素的差值。
例如,在本公开至少一实施例提供一种数据处理方法中,所述至少两种精度类型包括第二精度类型,所述第一子元素的精度类型为所述第二精度类型,所述第二精度类型的比特位总数为N2,N2为正整数,所述第一子元素的二进制表示为所述参数元素的二进制表示的前N2位。
例如,在本公开至少一实施例提供一种数据处理方法中,所述参数元素的尾数有效位中除所述靠前的高位有效位部分之外的其他尾数有效位被划分为连续的M-1个分段,所述其他M-1个子元素分别对应于所述M-1个分段,其中,每个分段包括的有效位的个数小于或等于所述分段对应的子元素的尾数有效位的个数,确定所述M个子元素中除所述第一子元素以外的其他M-1个子元素,包括:确定所述其他M-1个子元素中每个子元素的尾数有效位分别为所述M-1个分段;确定所述其他M-1个子元素中每个子元素的指数为P-Qi,其中,P为所述参数元素的指数,Qi为所述子元素对应的分段的最高位与所述参数元素的尾数有效位的最高位之间的位数差,P和Qi为整数。
例如,在本公开至少一实施例提供一种数据处理方法中,所述第一精度类型的尾数有效位个数为F1,所述至少两种精度类型包括第二精度类型和第三精度类型,所述第二精度类型的尾数有效位个数为F2,所述第三精度类型的尾数有效位个数为F3,F1、F2和F3为正整数,所述其他M-1个子元素包括第二子元素,所述第二子元素的精度类型为所述第三精度类型,其中,确定所述其他M-1个子元素分别采用所述M-1个分段作为各自的尾数,包括:响应于F1-F2小于或等于F3,确定M-1为1,并确定所述第二子元素的二进制表示的尾数中高F1-F2位与所述参数元素的二进制表示的尾数部分中第F1-F2-1位至第0位相同;响应于F1-F2大于F3,确定所述第二子元素的二进制表示的尾数与所述参数元素的二进制表示的尾数部分中第F1-F2-F3-1至第F1-F2-1位相同。
例如,在本公开至少一实施例提供一种数据处理方法中,响应于F1-F2大于F3,F1等于所述M个子元素各自的精度类型中尾数有效位个数之和。
例如,在本公开至少一实施例提供一种数据处理方法中,所述计算处理至少包括卷积运算或矩阵乘法运算,所述第一精度类型的尾数有效位个数为F1,F1为正整数,所述至少两种精度类型包括第二精度类型和第三精度类型,针对每个输入张量,使用组合表示所述输入张量的M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果,包括:根据所述计算处理,将所述计算处理中的每个输入张量替换为组合表示所述输入张量的M个输入子张量的加和形式,展开得到L个第一中间结果,其中,每个第一中间结果表示为两个输入子张量相乘或卷积的形式,L为大于1的正整数;确定所述L个第一中间结果分别对应的L个指数以及所述L个指数中的最大指数;根据所述L个指数,从所述L个第一中间结果中选择至少一个第一中间结果,其中,所述至少一个第一中间结果的指数与所述最大指数之差的绝对值小于或小于等于F1;将所述至少一个第一中间结果的加和作为所述计算结果。
例如,在本公开至少一实施例提供一种数据处理方法中,所述计算处理至少包括卷积运算或矩阵乘法运算,所述第一精度类型的尾数有效位个数为F1,F1为正整数,所述至少两种精度类型包括第二精度类型和第三精度类型,针对每个输入张量,使用组合表示所述输入张量的M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果,包括:根据所述计算处理,将所述计算处理中的每个输入张量替换为组合表示所述输入张量的M个输入子张量的加和形式,展开得到L个第一中间结果,其中,每个第一中间结果表示为两个输入子张量相乘或卷积的形式;针对所述L个第一中间结果中类型为所述第二精度类型的至少部分输入子张量中的每个输入子张量,利用类型为所述第三精度类型的W个中间子张量组合表示所述类型为所述第二精度类型的输入子张量,以得到U个第二中间结果,L和U为正整数;确定所述U个第二中间结果分别对应的U个指数以及所述U个指数中的最大指数;根据所述U个指数,从所述U个第二中间结果中选择至少一个第二中间结果,其中,所述至少一个第二中间结果的指数与所述最大指数之差的绝对值小于或小于等于F1;将所述至少一个第二中间结果的加和作为所述计算结果。
例如,在本公开至少一实施例提供一种数据处理方法中,针对所述L个第一中间结果中类型为所述第二精度类型的至少部分输入子张量中的每个输入子张量,利用类型为所述第三精度类型的W个中间子张量组合表示所述类型为所述第二精度类型的输入子张量,以得到U个第二中间结果,包括:确定所述L个第一中间结果分别对应的L个指数;从所述L个指数中选择最大值,确定所述L个第一中间结果中除所述最大值对应的第一中间结果以外的L-1个第一中间结果;针对所述L-1个第一中间结果中包括类型为所述第二精度类型的输入子张量的V个第一中间结果,对所述V个第一中间结果中的每个第一中间结果内类型为所述第二精度类型的输入子张量,利用类型为所述第三精度类型的W个中间子张量的加和形式替代,展开得到所述V个第一中间结果中每个第一中间结果对应的W个第三中间结果,其中,所述第三中间结果表示为类型为所述第三精度类型的输入子张量和中间子张量相乘或卷积的形式,V为正整数;将所述V个第一中间结果对应的所有第三中间结果、所述最大值对应的第一中间结果和所述L-1个第一中间结果中除所述V个第一中间结果以外的其他L-1-V个第一中间结果作为所述U个第二中间结果。
例如,在本公开至少一实施例提供一种数据处理方法中,所述第一精度类型和所述至少两种精度类型均为浮点数类型。
例如,在本公开至少一实施例提供一种数据处理方法中,所述第一精度类型中的阶码位数与所述至少两种精度类型中的阶码位数均相同。
例如,在本公开至少一实施例提供一种数据处理方法中,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
例如,在本公开至少一实施例提供一种数据处理方法中,所述第一精度类型为FP32,所述至少两种精度类型包括BF16和BF24,所述BF16的阶码部分的位数为8,所述BF16的尾数部分的有效位个数为8,所述BF24的阶码部分的位数为8,所述BF24的尾数部分的有效位个数为16,每个所述输入张量由1个类型为BF16的输入子张量和1个类型为BF24的输入子张量组合表示。
本公开至少一实施例还提供一种数据处理方法,包括:接收第一数据,其中,所述第一数据为第一精度类型;将所述第一数据用M个子数据的组合表示;使用所述M个子数据的组合替代所述第一数据用于后续处理,其中,所述M个数据具有至少两种不同的精度类型,所述至少两种精度类型均与所述第一精度类型不同,M为大于1的整数,所述第一精度类型和所述至少两种精度类型均为浮点数类型,所述第一精度类型中的阶码位数与所述至少两种精度类型中的阶码位数均相同,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
本公开至少一实施例还提供一种数据处理装置,包括:获取模块,配置为获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;第一处理模块,配置为针对每个输入张量,利用M个输入子张量组合表示所述输入张量,其中,所述M个输入子张量具有至少两种不同的精度类型,所述至少两种精度类型均与所述第一精度类型不同,M为大于1的整数;第二处理模块,配置为针对每个所述输入张量,使用组合表示所述输入张量的所述M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果,其中,所述第一精度类型和所述至少两种精度类型均为浮点数类型,所述第一精度类型中的阶码位数与所述至少两种精度类型中的阶码位数均相同,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
本公开至少一实施例还提供一种处理器,包括如本公开任一实施例所述的数据处理装置。
本公开至少一实施例还提供一种数据处理方法,包括:接收数据计算指令,其中,所述数据计算指令包括作为计算输入参数的多个输入张量,解析所述数据计算指令之后使用数据处理单元执行所述数据计算指令,其中,使用所述数据处理单元执行所述数据计算指令,包括:获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;针对每个输入张量,利用M个输入子张量组合表示所述输入张量,其中,所述M个输入子张量具有至少两种不同的精度类型,所述至少两种精度类型均与所述第一精度类型不同,M为大于1的整数;针对每个所述输入张量,使用组合表示所述输入张量的所述M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果,其中,所述第一精度类型和所述至少两种精度类型均为浮点数类型,所述第一精度类型中的阶码位数与所述至少两种精度类型中的阶码位数均相同,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
本公开至少一实施例还提供一种处理器,包括指令解析单元和数据处理单元,其中,所述指令解析单元用于接收和解析数据计算指令,其中,所述数据计算指令包括作为计算输入参数的多个输入张量,所述数据处理单元在所述指令解析单元解析所述数据计算指令之后,执行根据本公开任一实施例所述的数据处理方法。
本公开至少一实施例还提供一种电子设备,包括:存储器,非瞬时性地存储有计算机可执行指令;处理器,配置为运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时实现根据本公开任一实施例所述的数据处理方法。
本公开至少一实施例还提供一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据本公开任一实施例所述的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开至少一实施例提供的数据处理方法的示意性流程图;
图2A为本公开至少一实施例提供的参数元素的数据格式示意性;
图2B为本公开至少一实施例提供的参数元素的数据格式示意性;
图3为本公开至少一实施例提供的参数元素与子元素关系的示意图;
图4A为本公开至少一实施例提供的步骤S30的示意性流程图;
图4B为本公开至少一实施例提供的混合精度模拟处理过程的示意图;
图5A为本公开至少一实施例提供的步骤S30的示意性流程图;
图5B为本公开至少一实施例提供的混合精度模拟的处理过程示意图;
图6为本公开至少一实施例提供的一种数据处理方法的流程图;
图7A为本公开至少一实施例提供的一种数据处理装置的示意性框图;
图7B为本公开至少一实施例提供的一种数据处理器的示意性框图;
图8为本公开至少一实施例提供的处理器的示意性结构图;
图9为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图;
图10为本公开一实施例提供的一种电子设备的示意性框图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
浮点数(float point,FP)主要用于表示小数,通常由三部分组成,即符号(sign)位、指数(exponent)部分和尾数(mantisa)部分,该指数部分也可以称为阶码部分。例如,浮点数V通常可以表示为如下形式:
V=(-1)s×M×2E
其中,符号位s可以为1比特,决定浮点数V是负数还是正数;M表示尾数部分,尾数部分可以包括多个比特位,其为一个二进制小数形式,定义了该浮点数的精度;E表示指数(也称阶码值),用于对浮点数加权,体现了浮点数V中小数点的位置,定义了该浮点数的取值范围。
例如,传统的浮点数通常包括三种格式,即半精度浮点数(FP16)、单精度浮点数(FP32)和双精度浮点数(FP64),它们的阶码部分和尾数部分具有不同的位数。
对于规格化的浮点数,其尾数有效位的个数为尾数部分位数加1,例如,对于单精度浮点数,其尾数部分包括23比特,其尾数有效位为24比特,最高位为1。
GPU(Graphic Process Unit,图形处理单元)、AI加速器等已经广泛用于深度学习模型训练。针对深度学习模型中常见的张量(tensor)操作,GPU厂商在软硬件设计时都做了特别优化以加速计算。例如,一些GPU、AI加速器厂商提供了专门的数据处理装置以优化张量计算。例如,数据处理装置可以包括Tensor Core,Tensor Core的使用大幅增加了数据吞吐率,提升了计算效率。
例如,以Tensor Core为例的数据处理装置支持多种计算处理,例如常规数值运算、矩阵乘法、卷积乘法等。并且,数据处理装置对于人工智能/深度学习等领域优化发展了多种浮点数的数据格式,例如BF16(brain floating point 16,位宽为16比特)、BF24(brain floating point 24,位宽为24比特)、TF32(Tensor Float 32,位宽为19比特)等,这些数据格式可以大幅降低计算处理,尤其是矩阵乘法或卷积乘法运算等所需的运算资源和功耗。此外,数据处理装置还支持一些常规浮点数类型,例如半精度浮点数(FP16,位宽为16比特)或双精度浮点数(FP64,位宽为64比特)等。
但是,类似于单精度浮点数(FP32,位宽为32比特)是一种常见数据类型,而数据处理装置,例如Tensor Core,其不直接支持单精度浮点数格式,但使用单精度浮点数执行计算处理是人工智能、数据分析等高性能计算中非常重要的一种基本运算,若GPU、AI加速器等无法支持这类运算会影响这些装置的适用性。
本公开至少一实施例提供一种数据处理方法、数据处理装置、处理器、电子设备和非瞬时性计算机可读存储介质。该数据处理方法包括:获取作为计算处理的输入参数的多个输入张量,其中,多个输入张量均为第一精度类型;针对每个输入张量,利用M个输入子张量组合表示输入张量,其中,M个输入子张量具有至少两种不同的精度类型,至少两种精度类型均与第一精度类型不同,M为大于1的整数;针对每个输入张量,使用组合表示输入张量的M个输入子张量替代输入张量,执行计算处理,得到计算结果。
在本公开上述至少一实施例提供的数据处理方法中,使用混合精度类型的多种低精度的输入子张量来模拟高精度的输入张量,从而使得使用该数据处理方法的处理器等支持原本可能不支持的高精度的数据格式的计算,扩大了计算处理的适用场景,提高了应用该数据处理方法的处理器等的适用性,有效利用原本所提供的低精度浮点数本身强大的算力,既不会增加计算处理的总体计算时间,还能够大幅提高计算的总体效率;并且,在数据处理方法的执行过程中,其对上层应用软件,例如人工智能应用等解耦,上层应用并不感知数据处理方法的具体过程,从而可以极大降低软件适配的成本。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图1为本公开至少一实施例提供的数据处理方法的示意性流程图。
如图1所示,本公开实施例提供的数据处理方法包括步骤S10至S30。
在步骤S10,获取作为计算处理的输入参数的多个输入张量。
例如,多个输入张量均为第一精度类型。
例如,输入张量可以是通过计算指令的输入参数读取得到,或者也可以通过读取预先存储的数据作为输入张量等,本公开对此不作具体限制。
例如,输入张量既可以是0维张量,也即单个浮点数,也可以是1维张量,即类型为浮点数的标量(数组),或者2维张量(矩阵)或更高维张量,本公开对此不作具体限制。
在步骤S20,针对每个输入张量,利用M个输入子张量的组合表示输入张量。
例如,M个输入子张量具有至少两种不同的精度类型,该至少两种精度类型均与第一精度类型不同,M为大于1的整数。
在步骤S30,针对每个输入张量,使用M个输入子张量的组合替代输入张量,执行计算处理,得到计算结果。
例如,计算处理可以包括矩阵乘法运算、卷积运算、常规算术运算等,本公开的实施例对此不作具体限制。例如,在输入张量为二维张量时,计算处理可以是矩阵乘法运算;在输入张量为多维张量时,计算处理可以是卷积运算;常规算术运算可以包括相加、相减等等。
根据计算处理的不同,输入张量的数量也可以随之调整。例如,输入张量的数量可以是两个,计算处理可以是执行两个输入张量的卷积运算。当然,输入张量的数量可以更多,例如,计算处理可以是执行两个输入张量的卷积运算,并将卷积结果与其他输入张量相加等等,本公开的实施例对此不作具体限制。
例如,第一精度类型和上述至少两种精度类型均为浮点数类型,第一精度类型中的指数位数(也即指数部分或阶码部分的位数)与该至少两种精度类型中的指数位数均相同,第一精度类型的精度高于上述至少两种精度类型中任一种精度类型的精度。
例如,由于第一精度类型中的阶码位数与上述至少两种精度类型中的阶码位数均相同,从而其能够表示的数据范围也相同,不会出现数据溢出问题。
例如,“第一精度类型的精度”高于上述“至少两种精度类型中任一种精度类型的精度”表示,第一精度类型的尾数部分的尾数有效位个数大于该至少两种精度类型中任一种精度类型的尾数部分的尾数有效位个数。
例如,至少两种不同的精度类型表示,假设至少两种不同的精度类型包括n种精度类型,这n种精度类型的阶码部分的位数相同,但这n种精度类型的尾数部分的尾数有效位个数均不同,这里,n为正整数且大于等于2。
当然,第一精度类型和该至少两种精度类型也必然是不同的数据格式。
例如,第一精度类型可以是单精度浮点数FP32,对应地,上述至少两种精度类型包括BF24和BF16,其数据格式如下表1所示:
表1数据格式
数据格式 比特位总数 符号位 指数部分 尾数部分 尾数有效位个数
FP32 32 1 8 23 24
BF24 24 1 8 15 16
BF16 16 1 8 7 8
如表1所示,第一精度类型为FP32,其比特位总数为32位,包括1个符号位,指数部分(也即阶码)包括8位,尾数部分包括23位,尾数有效位个数为23+1=24位。该至少两种精度类型包括BF24和BF16,其中,BF24比特位总数为24位,包括1个符号位,指数部分(也即阶码)包括8位,尾数部分包括15位,尾数有效位个数为15+1=16位;BF16比特位总数为16位,包括1个符号位,指数部分(也即阶码)包括8位,尾数部分包括7位,尾数有效位个数为7+1=8位。
当然,本公开实施例并不不限于此,例如,第一精度类型可以是FP32,该至少两种精度类型可以包括BF16和TF32等。在本公开中,第一精度类型、以及模拟第一精度类型的多种低精度类型可以采用任意可行的满足如上所述的第一精度类型和该至少两种精度类型格式要求的浮点数类型组合,本公开对此不作具体限制。
在本公开至少一实施例提供的数据处理方法中,使用多种低精度的浮点数张量模拟高精度的浮点数张量,从而扩大了计算处理的适用场景,提高了应用该数据处理方法的处理器的适用性,有效利用原本所提供的低精度浮点数本身强大的算力,既不会增加计算处理的总体计算时间,还能够大幅提高计算的总体效率。
下面结合附图,具体说明本公开至少一实施例提供的数据处理方法的执行过程。
例如,针对每个输入张量,组合表示该输入张量的M个输入子张量与该输入张量的形状相同,也即他们的维度相同,每个维度上轴的长度相同。例如,输入张量为二维张量,则输入张量和M个输入子张量均为a行b列的矩阵形式,a和b为正整数且均大于1。
步骤S20可以包括:针对输入张量中的每个参数元素,将参数元素拆分为M个子元素,其中,M个子元素分别为M个输入子张量中与参数元素在输入张量中位置相同的元素,参数元素表示为M个子元素的加和形式。需要指出的是,在本公开的至少一个实施例中,A和B“加和”可以包括A+B,也包括A-B,对于后者而言,等价于A+(-B)。
例如,对于多个输入张量中的输入张量A,将其拆分为A=A1+A2+...+AM,其中,A1,A2,...,AM为组合表示输入张量A的M个输入子张量,A1,A2,...,AM具有至少两种不同的精度类型,例如,A1,A2,...,AM可以具有M种不同的精度类型,即它们各自的精度类型彼此不同,又例如,A1,A2具有第二精度类型,其他输入子张量具有第三精度类型等,本公开的实施例对此不作具体限制。
例如,若输入张量A为二维张量,也即输入张量A为a行b列的矩阵形式,则将输入张量A中位于第i行第j列的参数元素pij,拆分成M个子元素,M个子元素为输入子张量A1中位于第i行第j列的元素p1ij,输入子张量A2中位于第i行第j列的元素p2ij,...,输入子张量AM中位于第i行第j列的元素pMij,且参数元素pij=p1ij+p2ij+...+pMij,这里,i为正整数小于等于a,j为正整数小于等于b。
例如,针对输入张量中的每个参数元素,将参数元素拆分为M个子元素,可以包括:确定M个子元素中的第一子元素的指数、符号位与参数元素的指数、符号位相同,以及第一子元素的尾数部分与参数元素的尾数有效位中靠前的高位有效位部分相同;确定M个子元素中除第一子元素以外的其他M-1个子元素,这里,其他M-1个子元素之和为参数元素与所述第一子元素的差值。
例如,该至少两种精度类型包括第二精度类型,第一子元素的精度类型为第二精度类型,第二精度类型的比特位总数为N2,N2为正整数,第一子元素的二进制表示为参数元素的二进制表示的前N2位。
例如,第一精度类型的比特位总数为N1,N1为正整数,若元素p1ij为第一子元素,则第一子元素p1ij可以通过如下公式得到:
p1ij=pij&A (公式1)
其中,“&”表示与(即按位与)计算,A=“0b111...100...0”表示其为二进制表示,且由位于高位且连续的N2个1和位于低位且连续的N1-N2个0组成,A的总比特位数为N1。
例如,参数元素的前N2位包括1个符号位,c个用于指示参数元素的指数的阶码位,以及尾数有效位中位于高位的d个尾数有效位,也即高位有效位部分,N2=1+c+d。例如,提取参数元素的二进制表示的前N2位作为第一子元素,由于第一精度类型和第二精度类型的阶码位数相同,则第一子元素的符号位与参数元素的符号位相同,第一子元素的指数与参数元素的指数相同(也即第一子元素的阶码部分的c个比特位和参数元素的阶码部分的c个比特位相同),第一子元素的尾数与参数元素的尾数有效位中靠前的高位有效位部分相同,也即第一子元素的尾数部分d个尾数有效位与参数元素中靠前的位于高位的d个尾数有效位相同。
例如,参数元素的尾数有效位中除靠前的高位有效位部分之外的其他尾数有效位被划分为连续的M-1个分段,该其他M-1个子元素分别对应于M-1个分段,其中,每个分段包括的有效位的个数小于或等于分段对应的子元素的尾数有效位的个数。也就是说,将参数元素的其他尾数有效位按照该至少两种精度类型的尾数有效位个数进行分段,将各个分段作为对应的子元素的尾数部分。并且,在本公开的实施例中,需满足M个子元素的尾数有效位个数之和大于或等于参数元素的尾数有效位个数。
例如,确定M个子元素中除第一子元素以外的其他M-1个子元素,可以包括:确定其他M-1个子元素中每个子元素的尾数有效位分别为M-1个分段;确定其他M-1个子元素中每个子元素的指数为P-Qi,其中,P为参数元素的指数,Qi为子元素对应的分段的最高位与参数元素的尾数有效位的最高位之间的位数差,P和Qi为整数。
例如,第一精度类型的尾数有效位个数为F1,M个子元素对应的至少两种精度类型包括第二精度类型和第三精度类型,第二精度类型的尾数有效位个数为F2,第三精度类型的尾数有效位个数为F3,F1、F2和F3为正整数,其他M-1个子元素包括第二子元素,第二子元素的精度类型为第三精度类型。
例如,确定其他M-1个子元素中每个子元素的尾数有效位分别为M-1个分段,可以包括:响应于F1-F2小于或等于F3,确定M-1为1,并确定第二子元素的二进制表示的尾数中高F1-F2位与参数元素的二进制表示的尾数部分中第F1-F2-1位至第0位相同;响应于F1-F2大于F3,确定第二子元素的二进制表示的尾数与参数元素的二进制表示的尾数部分中第F1-F2-F3-1至第F1-F2-1位相同。
例如,在一些实施例中,响应于F1-F2大于F3,F1等于M个子元素各自的精度类型中尾数有效位个数之和。此时,各个分段包括的有效位的个数等于该分段对应的子元素中尾数有效位的个数。例如,在一个具体示例中,参数元素的数据格式如图2A所示,其包括1个符号位、c个阶码位以及32个尾数有效位,即F1=32;M=3,第二精度类型的尾数有效位个数F2=16,第三精度类型的尾数有效位个数F3=8,此时,图2A中的第16位至第31位作为高位有效位部分,包括尾数有效位中第8位至第15位的分段1作为类型为第三精度类型的一个子元素的尾数部分,包括尾数有效位中第0位至第7位的分段2作为类型为第三精度类型的另一个子元素的尾数部分。
例如,在另一些实施例中,F1-F2大于F3,但F1不恰好等于M个子元素各自的精度类型中尾数有效位个数之和,此时M-1个分段中有一个分段包括的有效位的个数小于该分段对应的子元素的尾数有效位的个数。例如,在一个具体示例中,如图2B所示,M=3,并且F1=24,F2=11,F3=8,此时,图2B中的第13位至第23位作为高位有效位部分,包括尾数有效位中第2位至第12位的分段1作为类型为第二精度类型的子元素的尾数部分,包括尾数有效位中第1位至第0位的分段2作为类型为第三精度类型的子元素的尾数部分的第F3-1位至第F3-2位。
例如,在F1-F2大于F3时,M大于2,也即M个子元素还可能包括第三子元素、第四子元素等,第三子元素等可以是第二精度类型,也可以是第三精度类型,当然,也可以是与第二精度类型、第三精度类型不同的其他低于第一精度类型的精度,本公开实施例对此不作具体限制。
例如,在另一些实施例中,若F1-F2小于等于F3,则M=2,也即M个子元素包括第一子元素和第二子元素。在F1-F2=F3时,第二子元素的尾数与参数元素的第0位至第F3-1位相同,在F1-F2小于F3时,第二子元素的尾数有效位中的高F1-F2位(也即第F3-1位至第F3-1-(F1-F2)位)与参数元素的第F1-F2-1位至第0位相同。简单来说,此时第二子元素为参数元素与第一子元素的差值。
由于子元素实际表示的是参数元素的尾数有效位中的一部分,其指数也需要适应性改变。例如,子元素的指数为P-Qi,这里,P为参数元素的指数,Qi为子元素对应的分段的最高位与参数元素的尾数有效位的最高位之间的位数差。例如,以图2A为例,分段1对应的子元素的Qi为分段1的最高位(也即第15位)与参数元素的尾数有效位的最高位(也即第31位)之间的位数差31-15=16,因此,分段1对应的子元素的指数为P-16。类似的,分段2对应的子元素的指数为P-(31-7)=P-24。通常处理器在执行计算处理时还会对子元素的指数做进一步的调整以使得尾数有效位的最高位为1,若尾数比特位全为0,则将指数调整为0。
图3为本公开至少一实施例提供的参数元素与子元素关系的示意图。下面结合图3,具体说明子元素的确定过程。
如图3所示,参数元素pij包括N1位,其中,N1=1+c+F1,即参数元素pij包括1个符号位,c个阶码位和F1个尾数有效位。例如,如图3所示,符号位为参数元素的最高位,例如第N1-1位,尾数有效位的最后一位为参数元素的最低位,例如第0位。当然,图3所示的是一种示意,根据参数元素中尾数、阶码和符号位的位置不同也可以适应性调整,本公开对此不作限制。
如图3所示,参数元素pij可以分成M个子元素,包括第一子元素p1ij、第二子元素p2ij、第三子元素p3ij……等,当然,根据需要则还可以包括更多的子元素,或者仅包括第一子元素和第二子元素(M=2),本公开的实施例对此不作具体限制。
例如,第一子元素p1ij的二进制表示为参数元素pij的二进制表示的前N2位,也即将参数元素pij的符号位作为第一子元素p1ij的符号位,将参数元素pij的阶码部分作为第一子元素的阶码部分,将参数元素pij的尾数有效位中的靠近高位的F2个尾数有效位作为第一子元素p1ij的尾数。
例如,除第一子元素pij以外的其他M-1个子元素用于表示参数元素与第一子元素之差。
例如,将参数元素pij中除高位有效位部分以外的F1-F2个尾数有效位划分成M-1个分段,M-1个分段与该M-1个子元素一一对应,并且,每个分段包括的有效位的个数小于或等于该分段对应的子元素的尾数有效位的个数。
例如,如图3所示,F1-F2大于F3,将参数元素pij的二进制表示的尾数部分中第F1-F2-F3-1至第F1-F2-1位作为分段1,将分段1作为第二子元素p2ij的尾数,也即第二子元素的尾数部分与参数元素的二进制表示的尾数部分中第F1-F2-F3-1至第F1-F2-1位相同。
例如,如图3所示,M个子元素还包括类型为第四精度类型的第三子元素p3ij,第四精度类型的尾数有效位个数为F4,F4为正整数。假设F1-F2-F3=F4,则可以将参数元素pij的二进制表示的尾数部分中第F4-1至第0位作为分段2,将分段2作为第三子元素p3ij的尾数,也即第三子元素p3ij的尾数部分与参数元素pij的二进制表示的尾数部分中第F4-1至第0位相同。
与前述内容相同,每个子元素的指数也进行适应性调整。例如,对于图2中的第二子元素,其Qi=F2,从而第二子元素的指数应为P-F2。例如,对于图3中的第三子元素,其Qi=F3+F2,从而第二子元素的指数应为P-F2-F3。例如,对于图3中的第四子元素,其Qi=F3+F2+F4,从而第二子元素的指数应为P-F2-F3-F4。
例如,若以公式来表示,当参数元素pij由第一子元素p1ij、第二子元素p2ij和第三子元素p3ij组合表示时,第一子元素p1ij、第二子元素p2ij和第三子元素p3ij的计算公式如下所示:
Figure BDA0003773615730000161
公式2的参数“&”和“A”的含义与公式1类似,这里不再赘述。
例如,在一个具体示例中,若第一精度类型为FP32,第二精度类型为BF24,第三精度类型为BF16,则F1=24,F2=16,F3=8,从而F1=F2+F3,参数元素可以由两个子元素表示,第一子元素类型可以是BF24,第二子元素类型可以是BF16,当然,也可以第一子元素类型是BF16,第二子元素类型可以是BF24。
例如,此时第一子元素p1ij和第一子元素p2ij可以使用如下公式3计算得到:
p1ij=pij&0xFFFFFF00
p2ij=pij-p1ij (公式3)
也即第一子元素的二进制表示为参数元素二进制表示的前24位,第二子元素为参数元素和第一子元素之差。
需要说明的是,根据所采用的低精度浮点数类型的不同,以及第一精度类型不同,可以使用不同种低精度浮点数类型的多个子元素的组合来表示输入张量,本公开对所采用的至少两种不同精度类型的种类、以及组合表示输入张量的输入子张量数量M不作具体限制,根据实际需要可以自行设定。
在本公开上述实施例提供的数据处理方法中,利用多种低精度的浮点数混合模拟高精度的浮点数,从而提高计算处理的适用性,使得应用该数据处理方法的处理器、芯片等具有更广阔的适用场景;并且能够充分利用数据处理装置原本提供的低精度的浮点数的处理性能,提升模拟高精度数据格式的算力和计算效率。
例如,矩阵乘法运算和卷积运算是张量操作中两种常见的计算处理。在参数元素拆分为多个子元素后,部分子元素相乘的乘积结果的指数非常小,去掉这部分子元素的相乘计算不仅对计算结果没有影响,还能降低乘法次数,提高算力和处理效率。
图4A为本公开至少一实施例提供的步骤S30的示意性流程图。
如图4A所示,步骤S30可以包括步骤S301-S304。
在步骤S301,根据计算处理,将计算处理中的每个输入张量替换为组合表示输入张量的M个输入子张量的加和形式,展开得到L个第一中间结果。
例如,每个第一中间结果表示为两个输入子张量相乘或卷积的形式,L为大于1的正整数。
在步骤S302,确定L个第一中间结果分别对应的L个指数以及L个指数中的最大指数。
在步骤S303,根据L个指数,从L个第一中间结果中选择至少一个第一中间结果,其中,至少一个第一中间结果的指数与最大指数之差的绝对值小于或小于等于F1。
在步骤S304,将至少一个第一中间结果的加和作为计算结果。
例如,下面以输入张量包括输入张量A和输入张量B为例,说明步骤S301-S304的具体执行过程。当然,本公开不限于此,还可以类似计算更多的输入张量相乘、卷积等。
对于矩阵乘法运算或卷积运算,计算结果C=A×B,这里,×表示根据输入张量维度的不同,可以表示矩阵乘法或者卷积乘法,本公开对此不作具体限制。
例如,根据步骤S20,可以得到组合表示输入张量A的M个输入子张量A1,...,AM,以及组合表示输入张量B的M个输入子张量B1,...,BM,具体过程如步骤S20所述,这里不再赘述。
首先,在步骤S301,将计算处理A×B中的输入张量A替换为A1+...+AM,输入张量B替换为B1+...+BM,也即C=A×B=(A1+...+AM)×(B1+...+BM),展开得到C=A1×B1+..+A1×BM+..+AM×B1+..+AM×BM,共L个第一中间结果,例如,A1×B1、A1×BM、AM×B1、AM×BM均为第一中间结果,展开得到了L个第一中间结果的加和形式。
之后,在步骤S302,计算L个第一中间结果分别对应的L个指数以及L个指数中的最大指数。
例如,若A1是输入张量A中的参数元素对应的第一子元素所组成的输入子张量,B1是输入张量B中的参数元素对应的第一子元素所组成的输入子张量,则第一中间结果A1×B1对应的指数为最大指数。
需要说明的是,由于本公开所关心的是指数之间的相对大小关系,因此本公开中可以从元素的角度来描述指数。例如,令输入张量A中任一参数元素的指数为g,输入张量B中任一参数元素的阶码值为h,则A1×B1的指数可以表示为g+h。下文概念与这里类似,不再重复说明。
之后,在步骤S303,从A1×B1、...、A1×BM、AM×B1、...、AM×BM中选择指数与最大指数之差的绝对值小于或小于等于F1的一个或多个第一中间结果。
例如,若选择指数与最大指数之差的绝对值小于等于F1的第一中间结果,则基于这些第一中间结果得到的计算结果基本不存在精度损失,对精度所可能会造成的影响也仅限于2-F1对应的10进制大小范围内,与真实计算结果的差距可以忽略不计,即使忽略指数与最大指数之差的绝对值等于F1的第一中间结果,也基本不会影响最终结果的精度。
最后,在步骤S304,计算选择的这些第一中间结果的加和作为计算结果C。
图4B为本公开至少一实施例提供的混合精度模拟处理过程的示意图。
如图4B所示,在一个具体示例中,若M=2,且第一精度类型为FP32,第二精度类型为BF24,第三精度类型为BF16,参考如前所述的内容,经过步骤S20,可以得到输入张量A对应的两个输入子张量A1
Figure BDA00037736157300001811
例如,输入子张量A1为第二精度类型,输入子张量
Figure BDA0003773615730000187
为第三精度类型,A1=A&0xFFFFFF00,
Figure BDA0003773615730000188
类似的,也可以得到输入张量B对应的两个输入子张量B1
Figure BDA0003773615730000189
通过步骤S301,计算得到4个第一中间结果,分别是A1×B1
Figure BDA00037736157300001810
Figure BDA00037736157300001812
通过步骤S302,得到4个第一中间结果的指数,如表2所示:
表2第一中间结果的指数
Figure BDA0003773615730000181
例如,参考步骤S20的描述,
Figure BDA0003773615730000182
的指数为h-16,从而
Figure BDA0003773615730000183
的指数为g+h-16;类似的,
Figure BDA0003773615730000184
的指数为g-16,
Figure BDA0003773615730000185
的指数为h-16,从而
Figure BDA0003773615730000186
的指数为g+h-32。
通过步骤S303,选择指数与最大指数g+h之差的绝对值小于或小于等于24的第一中间结果A1×B1
Figure BDA0003773615730000191
最后,在步骤S304,计算
Figure BDA0003773615730000192
从而得到计算结果C。
由此,在本公开至少一实施例提供的数据处理方法中,使用1次BF24乘法和2次BF24同BF16混合精度乘法即可模拟得到FP32乘法的精度,从而可以执行FP32乘法的计算,扩大了计算处理的适用场景;并且,有效利用原本所提供的低精度浮点数BF16和BF24本身强大的算力,既不会增加计算处理的总体计算时间,还能够大幅提高计算的总体效率,资源消耗少,算力高,性能好。
在一些数据处理装置中,例如,在Tensor core中,BF24同BF16混合精度乘法的算力消耗介于BF16的乘法和BF24的乘法的算力消耗之间。
因此,为进一步提高计算效率,可以将第一中间结果中类型为第二精度类型的输入子张量进一步拆分成多个类型为第三精度类型的中间子张量,例如,可以将混合精度乘法中的第二精度类型的输入子张量进一步拆分为多个类型为第三精度类型的中间子张量。此时,第二精度类型的精度高于第三精度类型的精度,也即第二精度类型的尾数有效位个数大于第三精度类型的尾数有效位个数。当然,若第二精度类型的精度低于第三精度类型的精度,也即第二精度类型的尾数有效位个数小于第三精度类型的尾数有效位个数,则可以将第一中间结果中类型为第三精度类型的输入子张量进一步拆分成多个类型为第二精度类型的中间子张量,本公开对此不作具体限制。
图5A为本公开至少一实施例提供的步骤S30的示意性流程图。
如图5A所示,在另一些实施例中,步骤S30包括步骤S305-S309。
在步骤S305,根据计算处理,将计算处理中的每个输入张量替换为组合表示输入张量的M个输入子张量的加和形式,展开得到L个第一中间结果。
例如,每个第一中间结果表示为两个输入子张量相乘或卷积的形式。
在步骤S306,针对L个第一中间结果中类型为第二精度类型的至少部分输入子张量中的每个输入子张量,利用类型为第三精度类型的W个中间子张量组合表示类型为第二精度类型的输入子张量,以得到U个第二中间结果,L和U为正整数。
在步骤S307,确定U个第二中间结果分别对应的U个指数以及U个指数中的最大指数。
在步骤S308,根据U个指数,从U个第二中间结果中选择至少一个第二中间结果,其中,至少一个第二中间结果的指数与最大指数之差的绝对值小于或小于等于F1。
在步骤S309,将至少一个第二中间结果的加和作为计算结果。
例如,在一些实施例中,可以将L个第一中间结果中类型为第二精度类型的部分输入子张量替换为W个类型为第三精度类型的输入子张量的加和形式。
此时,步骤S306可以包括:确定L个第一中间结果分别对应的L个指数;从L个指数中选择最大值,确定L个第一中间结果中除最大值对应的第一中间结果以外的L-1个第一中间结果;针对L-1个第一中间结果中包括类型为第二精度类型的输入子张量的V个第一中间结果,对V个第一中间结果中的每个第一中间结果内类型为第二精度类型的输入子张量,利用类型为第三精度类型的W个中间子张量的加和形式替代,展开得到V个第一中间结果中每个第一中间结果对应的W个第三中间结果,其中,第三中间结果表示为类型为第三精度类型的输入子张量和中间子张量相乘或卷积的形式,V为正整数;将V个第一中间结果对应的所有第三中间结果、最大值对应的第一中间结果和L-1个第一中间结果中除V个第一中间结果以外的其他L-1-V个第一中间结果作为U个第二中间结果。
例如,在另一些实施例中,可以将L个第一中间结果中类型为第二精度类型的输入子张量均替换为W个类型为第三精度类型的输入子张量的加和形式。
例如,下面仍以输入张量包括输入张量A和输入张量B为例,说明执行计算A×B时步骤S305-S309的具体执行过程。
首先,通过步骤S305得到L个第一中间结果A1×B1、A1×BM、AM×B1、AM×BM等,具体过程可以参考步骤S301,重复之处不再赘述。
之后,在步骤S306,将L个第一中间结果中除具有指数最大值的A1×B1以外的L-1个第一中间结果中,类型为第二精度类型的输入子张量利用W个中间子张量的加和形式来替代。例如,假设A1和B1为第二精度类型,其他M-1的输入子张量均为第三精度类型,则参考步骤S20的过程,得到组合表示A1的W个中间子张量A’1、...、A’w,以及组合表示B1的W个中间子张量B’1、...、B’w,A’1、...、A’w和B’1、...、B’w均为第三精度类型。针对除A1×B1以外的L-1个第一中间结果中包括A1和B1的V个第一中间结果,将这些第一中间结果中的A1用A’1+...+A’w替代,B1用B’1+...+B’w替代,展开得到V个第一中间结果中每个中间结果对应的第三中间结果。以A1×BM为例,将A1替换为A’1+...+A’w,从而A1×BM=(A’1+...+A’w)×BM=A’1×BM+...+A’w×BM,由此得到第一中间结果A1×BM对应的W个第三中间结果A’1×BM、...、A’w×BM
将第一中间结果A1×B1,V个包括A1和B1的第一中间结果对应的V*W个第三中间结果,以及L个中间结果中既不包括A1也不包括B1的L-1-V个第一中间结果,作为U个第二中间结果,这里U=V*W+L-V。
之后,在步骤S307,确定U个第二中间结果对应的U个指数以及其中的最大指数,具体过程可以参考步骤S302,这里不再赘述。
之后,在步骤S308,从U个第二中间结果中选择指数与最大指数之差的绝对值小于或小于等于F1的至少一个第二中间结果。
最后,在步骤S309,计算该至少一个第二中间结果之和,作为最终的计算结果。
由此,相比于步骤S301-S304得到的计算结果,步骤S305-S309计算过程去除了混合精度乘法,将原有的混合精度乘法都替换成了相同类型精度的乘法,由此在不影响精度的前提下进一步提升了算力,提高计算效率,减少资源消耗。并且,由于保留了对应最大指数的两个第二精度类型的乘法运算,将其他的第一中间结果中的第二精度类型的输入子张量都替换成了第三精度类型的中间子张量的加和形式,从而可以利用两个第二精度类型的乘法运算,完成W*W个第三精度类型的乘法运算,从而减少了乘法执行次数,相比于将所有输入子张量都替换成第三精度类型的中间子张量的加和形式,进一步提升了算力,提高了计算效率,降低了资源消耗。
图5B为本公开至少一实施例提供的混合精度模拟的处理过程示意图。
如图5B所示,在一个具体示例中,若第一精度类型为FP32,第二精度类型为BF24,第三精度类型为BF16,参考如前所述的内容,经过步骤S20,可以得到输入张量A对应的两个输入子张量A1
Figure BDA0003773615730000211
例如,输入子张量A1为第二精度类型,输入子张量
Figure BDA0003773615730000212
为第三精度类型。类似的,也可以得到输入张量B对应的两个输入子张量B1
Figure BDA0003773615730000213
通过步骤S305,计算得到4个第一中间结果,分别是A1×B1
Figure BDA0003773615730000214
Figure BDA0003773615730000221
通过步骤S306,得到4个第一中间结果的指数,如表2所示。参考步骤S20,得到组合表示A1的2个类型为BF16的中间子张量
Figure BDA0003773615730000222
Figure BDA0003773615730000223
其中,
Figure BDA0003773615730000224
类似地,得到组合表示B1的2个类型为BF16的中间子张量
Figure BDA0003773615730000225
Figure BDA0003773615730000226
接着,将
Figure BDA0003773615730000227
中的A1
Figure BDA0003773615730000228
替代,B1
Figure BDA0003773615730000229
替代,展开得到如下公式4:
Figure BDA00037736157300002210
从而得到6个第二中间结果,分别是A1B1
Figure BDA00037736157300002211
Figure BDA00037736157300002212
之后,在步骤S306,确定6个第二中间结果的指数,如表3所示:
表3第二中间结果的指数
Figure BDA00037736157300002213
例如,参考步骤S20的描述,
Figure BDA00037736157300002214
的指数为g,
Figure BDA00037736157300002215
的指数为h-16,从而
Figure BDA00037736157300002216
的指数为g+h-16;类似的,
Figure BDA00037736157300002217
的指数为g-16,
Figure BDA00037736157300002218
的指数为h-8,从而
Figure BDA00037736157300002219
的指数为g+h-24。
之后,在步骤S308,从6个第二中间结果中选择指数与最大指数之差的绝对值小于或小于等于F1的至少一个第二中间结果。例如,如前所述,由于FP32尾数部分的有效位个数为24,所以指数小于等于g+h-24的第二中间结果对最终的计算结果基本没有影响,从而可以选择A1×B1
Figure BDA00037736157300002220
Figure BDA00037736157300002221
用于最终的计算,既可以保障精度,又能够进一步减少乘法数量,在计算精度和算力之间达到平衡。
最后,在步骤S309,计算
Figure BDA00037736157300002222
从而得到最终计算结果C。
由此,在本公开至少一实施例提供的数据处理方法中,使用1次BF24乘法和2次BF16乘法即可模拟得到FP32乘法的精度,进一步降低了资源消耗,提升算力,提升性能。
例如,在一些芯片或处理器中,BF24乘法的算力消耗为BF16的两倍,也即执行一次BF24乘法相当于执行了两次BF16的乘法,若将第一中间结果中的A1和B1均拆分为两个BF16的中间子张量的加和形式,则最终需要执行6次BF16的乘法,而本公开中利用一个BF24乘法替代了4次BF16乘法,即使BF24乘法的算力消耗为BF16的两倍,本公开提供的处理处理方法也降低了计算处理的资源消耗,效率更高,性能更好,理论算力更强。
本公开至少一实施例还提供一种数据处理方法;图6为本公开至少一实施例提供的一种数据处理方法的流程图。
如图6所示,该数据处理方法至少包括步骤S40-S60。
在步骤S40,接收第一数据。例如,第一数据为第一精度类型。
在步骤S50,将第一数据用M个子数据的组合表示。
例如,第一数据为M个子数据的加和形式。
例如,M个数据具有至少两种不同的精度类型,该至少两种精度类型均与第一精度类型不同,M为大于1的整数,第一精度类型和该至少两种精度类型均为浮点数类型,第一精度类型中的阶码位数与该至少两种精度类型中的阶码位数均相同,第一精度类型的精度高于该至少两种精度类型中任一种精度类型的精度。
关于步骤S50的具体执行过程可以参考前述步骤S20的相关描述,重复之处不再赘述。
在步骤S60,使用M个子数据的组合替代第一数据用于后续处理。
例如,这里后续处理可以包括前述的计算处理,或者,后续处理还可以包括其他在使用第一数据过程中所需要的任何处理,本公开对“后续处理”的具体操作不作限制。
在本公开上述至少一实施例提供的数据处理方法中,使用混合精度类型的多种低精度的子数据来模拟高精度的第一数据,从而使得使用该数据处理方法的处理器等支持原本可能不支持的高精度的数据格式的计算,扩大了计算处理的适用场景,提高了应用该数据处理方法的处理器等的适用性,有效利用原本所提供的低精度浮点数本身强大的算力,既不会增加计算处理的总体计算时间,还能够大幅提高计算的总体效率。
本公开至少一实施例还提供一种数据处理装置。图7A为本公开至少一实施例提供的一种数据处理装置的示意性框图。
如图7A所示,数据处理装置100包括获取模块101、第一处理模块102和第二处理模块103。
例如,获取模块101配置为获取作为计算处理的输入参数的多个输入张量,其中,多个输入张量均为第一精度类型;
例如,第一处理模块102配置为针对每个输入张量,利用M个输入子张量组合表示输入张量,其中,M个输入子张量具有至少两种不同的精度类型,该至少两种精度类型均与第一精度类型不同,M为大于1的整数;
例如,第二处理模块103配置为针对每个输入张量,使用组合表示输入张量的M个输入子张量替代输入张量,执行所述计算处理,得到计算结果。
例如,第一精度类型和该至少两种精度类型均为浮点数类型,第一精度类型中的阶码位数与该至少两种精度类型中的阶码位数均相同,第一精度类型的精度高于该至少两种精度类型中任一种精度类型的精度。
例如,计算结果可以直接从数据处理装置100中输出,传输至其他需要使用计算结果的部件,如存储装置或其他计算装置等。
例如,获取模块101、第一处理模块102和第二处理模块103包括存储在存储器中的代码和程序,获取模块101、第一处理模块102和第二处理模块103例如实现为中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,处理单元可以是通用处理器,并且也为单片机、微处理器、数字信号处理器、专用的图像处理芯片、或现场可编程逻辑阵列等,获取模块101、第一处理模块102和第二处理模块103执行该代码和程序以实现如上所述的获取模块101、第一处理模块102和第二处理模块103的一些或全部功能。例如,获取模块101、第一处理模块102和第二处理模块103可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本申请实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。
需要说明的是,获取模块101可以用于实现图1所示的步骤S10,第一处理模块102可以用于实现图1所示的步骤S20,第二处理模块103可以用于实现图1所示的步骤S30。从而关于获取模块101、第一处理模块102和第二处理模块103能够实现的功能的具体说明可以参考上述数据处理方法的实施例中的步骤S10至步骤S30的相关描述,重复之处不再赘述。此外,数据处理装置100可以实现与前述数据处理方法相似的技术效果,在此不再赘述。
需要注意的是,在本公开的至少一个实施例中,该数据处理装置100可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路或单元的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
例如,在一些实施例中,数据处理装置100例如可以为张量计算核(Tensor Core),当然,数据处理装置100还可以实现为其他需要进行计算处理的芯片、处理器等,包括但不限于图像处理单元(GPU)、数据处理单元(DPU)、张量处理单元(TPU)、神经网络处理单元(NPU)、AI加速器等,本公开对此不作具体限制。
本公开至少一实施例还提供一种处理器。图7B为本公开至少一实施例提供的一种数据处理器的示意性框图。
如图7B所示,该处理器200包括如本公开任一实施例所述的数据处理装置201。关于数据处理装置201的结构、功能、技术效果参考如前所述的数据装置100,这里不再赘述。
例如,处理器200还可以包括存储装置202,存储装置202配置为将多个输入张量输入获取模块101。
例如,存储装置203还配置为接收并存储计算结果。
例如,存储装置203可以包括内存、缓存等能够存储数据功能的任意结构的存储装置。
当然,根据实际需要,处理器200还可以包括更多的其他部件用于执行计算结果的后续处理,本公开对此不作具体限制。
例如,处理器200根据实际需要,可以实现为单芯片封装(例如SOC芯片)、多芯片封装(例如Chiplet)等,本公开对此不作限制。
例如,在一种实施例中,数据处理200可以为GPU,数据处理装置201可以为计算核(tensor core)。
本公开至少一实施例还提供一种数据处理方法。例如,该数据处理方法包括:接收数据计算指令,其中,数据计算指令包括作为计算输入参数的多个输入张量;解析数据计算指令之后使用数据处理单元执行数据计算指令。
例如,使用数据处理单元执行数据计算指令,包括:获取作为计算处理的输入参数的多个输入张量,其中,多个输入张量均为第一精度类型;针对每个输入张量,利用M个输入子张量组合表示输入张量,其中,M个输入子张量具有至少两种不同的精度类型,至少两种精度类型均与第一精度类型不同,M为大于1的整数;针对每个输入张量,使用组合表示输入张量的M个输入子张量替代输入张量,执行计算处理,得到计算结果。
例如,第一精度类型和所述至少两种精度类型均为浮点数类型,所述第一精度类型中的阶码位数与所述至少两种精度类型中的阶码位数均相同,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
例如,本公开至少一实施例提供的数据处理方法可以应用于图7A所示的处理器200。
例如,在本公开至少一实施例提供的数据处理方法中,提供数据计算指令,数据计算指令包括作为计算处理的输入参数的多个张量。例如,处理器接收数据计算指令后,解析数据计算指令,例如对数据计算指令进行译码,产生微指令并将微指令发送给指令分配单元;指令分配单元根据微指令类别,将其发送给相应的调度队列;响应于微指令,当多个输入张量(全部或所需的部分)被准备好之后,由数据处理单元读取数据并执行数据计算指令的相关操作。
关于使用数据处理单元执行数据计算指令的具体过程,可以参考如前所述的数据处理方法中的步骤S10-S30,重复之处不再赘述。
图8为本公开至少一实施例提供的处理器的示意性结构图。如图8所示,处理器300包括指令解析单元301和数据处理单元302。
例如,指令解析单元301用于接收和解析数据计算指令,其中,数据计算指令包括作为计算输入参数的多个输入张量。
例如,数据处理单元302在指令解析单元解析数据计算指令之后,执行根据本公开任一实施例所述的数据处理方法。
具体的,当基于处理器的上层软件(比如,AI应用、HPC应用和科学计算应用等)可以通过统一封装的函数库向处理器(例如CPU或GPU)发送用于计算处理的数据计算指令,数据计算指令中可以携带输入张量;当处理器接收到该数据计算指令时,指令解析单元301解析数据计算指令,得到输入张量,处理器调度数据处理单元来执行对输入张量的计算任务。例如,处理器在解析数据计算指令后,可以将数据计算指令中的输入张量存入寄存器或内存,从而当数据处理单元在执行计算处理时,可以从寄存器或内存中获取作为计算输入参数的多个输入张量。
关于使用数据处理单元执行数据计算指令的具体过程,可以参考如前所述的数据处理方法中的步骤S10-S30,重复之处不再赘述。
图9为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。例如,如图9所示,存储介质400可以为非瞬时性计算机可读存储介质,在存储介质400上可以非暂时性地存储一个或多个计算机可读指令401。例如,当计算机可读指令401由处理器执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
例如,该存储介质400可以应用于上述处理器200中,例如,该存储介质400可以包括处理器200中的存储装置202。
例如,存储装置可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机可读指令,处理器可以运行所述计算机可读指令,以实现处理器的各种功能。在存储介质中还可以存储各种应用程序和各种数据等。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
图10为本公开一实施例提供的一种电子设备的示意性框图。如图10所示,该电子设备500例如适于用来实施本公开实施例提供的数据处理方法。应当注意,图10所示的电子设备500的组件只是示例性的,而非限制性的,根据实际应用需要,该电子设备500还可以具有其他组件。
如图10所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在存储器中的非暂时性计算机可读指令执行各种适当的动作和处理,以实现各种功能。
例如,计算机可读指令被处理装置501运行时可以执行根据上述任一实施例所述的数据处理中的一个或多个步骤。需要说明的是,关于数据处理的处理过程的详细说明可以参考上述数据处理的实施例中的相关描述,重复之处不再赘述。
例如,存储器可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)503和/或高速缓冲存储器(cache)等,例如,计算机可读指令可以从存储装置508加载到随机存取存储器(RAM)503中以运行计算机可读指令。非易失性存储器例如可以包括只读存储器(ROM)502、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如风格图像、以及应用程序使用和/或产生的各种数据等。
例如,处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘、闪存等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他电子设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备500,但应理解的是,并不要求实施或具备所有示出的装置,电子设备500可以替代地实施或具备更多或更少的装置。例如,处理器501可以控制电子设备500中的其它组件以执行期望的功能。处理器501可以是中央处理单元(CPU)、张量处理器(TPU)或者图形处理器GPU等具有数据处理能力和/或程序执行能力的器件。中央处理器(CPU)可以为X86、ARM、RISC-V架构等。GPU可以直接集成到SOC中、直接集成到主板上,又或者内置于主板的北桥芯片中。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (21)

1.一种数据处理方法,包括:
获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;
针对每个输入张量,利用M个输入子张量的组合表示所述输入张量,其中,所述M个输入子张量具有至少两种精度类型,所述至少两种精度类型与所述第一精度类型彼此不同,M为大于1的整数;
针对每个所述输入张量,使用所述M个输入子张量的组合替代所述输入张量,执行所述计算处理,得到计算结果。
2.根据权利要求1所述的数据处理方法,其中,针对每个输入张量,所述M个输入子张量与所述输入张量的形状相同,
针对每个所述输入张量,利用所述M个输入子张量的组合表示所述输入张量,包括:
针对所述输入张量中的每个参数元素,将所述参数元素拆分为M个子元素,
其中,所述M个子元素分别为所述M个输入子张量中与所述参数元素在所述输入张量中位置相同的元素,所述参数元素表示为所述M个子元素的加和形式。
3.根据权利要求2所述的数据处理方法,其中,针对所述输入张量中的每个参数元素,将所述参数元素拆分为M个子元素,包括:
确定所述M个子元素中的第一子元素的指数、符号位与所述参数元素的指数、符号位相同,以及所述第一子元素的尾数有效位与所述参数元素的尾数有效位中靠前的高位有效位部分相同;
确定所述M个子元素中除所述第一子元素以外的其他M-1个子元素,其中,所述其他M-1个子元素之和为所述参数元素与所述第一子元素的差值。
4.根据权利要求3所述的数据处理方法,其中,所述至少两种精度类型包括第二精度类型,
所述第一子元素的精度类型为所述第二精度类型,所述第二精度类型的比特位总数为N2,N2为正整数,
所述第一子元素的二进制表示为所述参数元素的二进制表示的前N2位。
5.根据权利要求3所述的数据处理方法,其中,所述参数元素的尾数有效位中除所述靠前的高位有效位部分之外的其他有效位部分被划分为连续的M-1个分段,
所述其他M-1个子元素分别对应于所述M-1个分段,其中,每个分段包括的有效位的个数小于或等于所述分段对应的子元素的尾数有效位的个数,
确定所述M个子元素中除所述第一子元素以外的其他M-1个子元素,包括:
确定所述其他M-1个子元素中每个子元素的尾数有效位分别为所述M-1个分段;
确定所述其他M-1个子元素中每个子元素的指数为P-Qi,其中,P为所述参数元素的指数,Qi为所述子元素对应的分段的最高位与所述参数元素的尾数有效位的最高位之间的位数差,P和Qi为整数。
6.根据权利要求5所述的数据处理方法,其中,所述第一精度类型的尾数有效位个数为F1,
所述至少两种精度类型包括第二精度类型和第三精度类型,所述第二精度类型的尾数有效位个数为F2,所述第三精度类型的尾数有效位个数为F3,F1、F2和F3为正整数,
所述其他M-1个子元素包括第二子元素,所述第二子元素的精度类型为所述第三精度类型,
其中,确定所述其他M-1个子元素中每个子元素的尾数有效位分别为所述M-1个分段,包括:
响应于F1-F2小于或等于F3,确定M-1为1,并确定所述第二子元素的二进制表示的尾数有效位中高F1-F2位与所述参数元素的二进制表示的尾数有效位中第F1-F2-1位至第0位相同;
响应于F1-F2大于F3,确定所述第二子元素的二进制表示的尾数有效位与所述参数元素的二进制表示的尾数有效位中第F1-F2-F3-1位至第F1-F2-1位相同。
7.根据权利要求6所述的数据处理方法,其中,响应于F1-F2大于F3,F1等于所述M个子元素各自的精度类型中尾数有效位个数之和。
8.根据权利要求1所述的数据处理方法,其中,所述计算处理至少包括卷积运算或矩阵乘法运算,
所述第一精度类型的尾数有效位个数为F1,F1为正整数,
所述至少两种精度类型包括第二精度类型和第三精度类型,
针对每个输入张量,使用所述M个输入子张量的组合替代所述输入张量,执行所述计算处理,得到计算结果,包括:
根据所述计算处理,将所述计算处理中的每个输入张量替换为所述M个输入子张量的加和形式,得到L个第一中间结果,其中,每个第一中间结果表示为两个输入子张量相乘或卷积的形式,L为大于1的正整数;
确定所述L个第一中间结果分别对应的L个指数以及所述L个指数中的最大指数;
根据所述L个指数,从所述L个第一中间结果中选择至少一个第一中间结果,其中,所述至少一个第一中间结果的指数与所述最大指数之差的绝对值小于或小于等于F1;
将所述至少一个第一中间结果的加和作为所述计算结果。
9.根据权利要求1所述的数据处理方法,其中,所述计算处理至少包括卷积运算或矩阵乘法运算,
所述第一精度类型的尾数有效位个数为F1,F1为正整数,
所述至少两种精度类型包括第二精度类型和第三精度类型,
针对每个输入张量,使用所述M个输入子张量的组合替代所述输入张量,执行所述计算处理,得到计算结果,包括:
根据所述计算处理,将所述计算处理中的每个输入张量替换为所述M个输入子张量的加和形式,得到L个第一中间结果,其中,每个第一中间结果表示为两个输入子张量相乘或卷积的形式;
针对所述L个第一中间结果中类型为所述第二精度类型的至少部分输入子张量中的每个输入子张量,利用类型为所述第三精度类型的W个中间子张量的组合表示所述类型为所述第二精度类型的输入子张量,以得到U个第二中间结果,L和U为正整数;
确定所述U个第二中间结果分别对应的U个指数以及所述U个指数中的最大指数;
根据所述U个指数,从所述U个第二中间结果中选择至少一个第二中间结果,其中,所述至少一个第二中间结果的指数与所述最大指数之差的绝对值小于或小于等于F1;
将所述至少一个第二中间结果的加和作为所述计算结果。
10.根据权利要求9所述的数据处理方法,其中,针对所述L个第一中间结果中类型为所述第二精度类型的至少部分输入子张量中的每个输入子张量,利用类型为所述第三精度类型的W个中间子张量的组合表示所述类型为所述第二精度类型的输入子张量,以得到U个第二中间结果,包括:
确定所述L个第一中间结果分别对应的L个指数;
从所述L个指数中选择最大值,确定所述L个第一中间结果中除所述最大值对应的第一中间结果以外的L-1个第一中间结果;
针对所述L-1个第一中间结果中包括类型为所述第二精度类型的输入子张量的V个第一中间结果,使用所述W个中间子张量的加和形式替代所述V个第一中间结果中的每个第一中间结果内类型为所述第二精度类型的输入子张量,得到所述V个第一中间结果中每个第一中间结果对应的W个第三中间结果,其中,所述第三中间结果表示为类型为所述第三精度类型的输入子张量和中间子张量相乘或卷积的形式,V为正整数;
将所述V个第一中间结果对应的所有第三中间结果、所述最大值对应的第一中间结果和所述L-1个第一中间结果中除所述V个第一中间结果以外的其他L-1-V个第一中间结果作为所述U个第二中间结果。
11.根据权利要求1-10任一项所述的数据处理方法,其中,所述第一精度类型和所述至少两种精度类型均为浮点数类型。
12.根据权利要求1-10任一项所述的数据处理方法,其中,所述第一精度类型中的指数位数与所述至少两种精度类型中的指数位数均相同。
13.根据权利要求1-10任一项所述的数据处理方法,其中,所述第一精度类型的精度高于所述至少两种精度类型中任一种精度类型的精度。
14.根据权利要求1-10任一项所述的数据处理方法,其中,所述第一精度类型为FP32,所述至少两种精度类型包括BF16和BF24,所述BF16的指数位数为8,所述BF16的尾数有效位个数为8,所述BF24的指数位数为8,所述BF24的尾数有效位个数为16,
每个所述输入张量由1个类型为BF16的输入子张量和1个类型为BF24的输入子张量的组合表示。
15.一种数据处理方法,包括:
接收第一数据,其中,所述第一数据为第一精度类型;
将所述第一数据用M个子数据的组合表示;
使用所述M个子数据的组合替代所述第一数据用于后续处理,
其中,所述M个数据具有至少两种精度类型,所述至少两种精度类型均与所述第一精度类型彼此不同,M为大于1的整数。
16.一种数据处理装置,包括:
获取模块,配置为获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;
第一处理模块,配置为针对每个输入张量,利用M个输入子张量的组合表示所述输入张量,其中,所述M个输入子张量具有至少两种精度类型,所述至少两种精度类型均与所述第一精度类型彼此不同,M为大于1的整数;
第二处理模块,配置为针对每个所述输入张量,使用所述M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果。
17.一种处理器,包括如权利要求16所述的数据处理装置。
18.一种数据处理方法,包括:
接收数据计算指令,其中,所述数据计算指令包括作为计算输入参数的多个输入张量,
解析所述数据计算指令之后使用数据处理单元执行所述数据计算指令,
其中,使用所述数据处理单元执行所述数据计算指令,包括:
获取作为计算处理的输入参数的多个输入张量,其中,所述多个输入张量均为第一精度类型;
针对每个输入张量,利用M个输入子张量的组合表示所述输入张量,其中,所述M个输入子张量具有至少两种精度类型,所述至少两种精度类型均与所述第一精度类型彼此不同,M为大于1的整数;
针对每个所述输入张量,使用所述M个输入子张量替代所述输入张量,执行所述计算处理,得到计算结果。
19.一种处理器,包括指令解析单元和数据处理单元,其中,
所述指令解析单元用于接收和解析数据计算指令,其中,所述数据计算指令包括作为计算输入参数的多个输入张量,
所述数据处理单元在所述指令解析单元解析所述数据计算指令之后,执行根据权利要求1-15任一项所述的数据处理方法。
20.一种电子设备,包括:
存储器,非瞬时性地存储有计算机可执行指令;
处理器,配置为运行所述计算机可执行指令,
其中,所述计算机可执行指令被所述处理器运行时实现根据权利要求1-15任一项所述的数据处理方法。
21.一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,
所述计算机可执行指令被处理器执行时实现根据权利要求1-15任一项所述的数据处理方法。
CN202210909761.3A 2022-07-29 2022-07-29 数据处理方法及装置、处理器、电子设备、存储介质 Pending CN115269003A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210909761.3A CN115269003A (zh) 2022-07-29 2022-07-29 数据处理方法及装置、处理器、电子设备、存储介质
US17/984,236 US20240037179A1 (en) 2022-07-29 2022-11-10 Data processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210909761.3A CN115269003A (zh) 2022-07-29 2022-07-29 数据处理方法及装置、处理器、电子设备、存储介质

Publications (1)

Publication Number Publication Date
CN115269003A true CN115269003A (zh) 2022-11-01

Family

ID=83746518

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210909761.3A Pending CN115269003A (zh) 2022-07-29 2022-07-29 数据处理方法及装置、处理器、电子设备、存储介质

Country Status (2)

Country Link
US (1) US20240037179A1 (zh)
CN (1) CN115269003A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785113A (zh) * 2024-02-07 2024-03-29 北京壁仞科技开发有限公司 计算装置及方法、电子设备和存储介质
CN117785113B (zh) * 2024-02-07 2024-05-17 北京壁仞科技开发有限公司 计算装置及方法、电子设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785113A (zh) * 2024-02-07 2024-03-29 北京壁仞科技开发有限公司 计算装置及方法、电子设备和存储介质
CN117785113B (zh) * 2024-02-07 2024-05-17 北京壁仞科技开发有限公司 计算装置及方法、电子设备和存储介质

Also Published As

Publication number Publication date
US20240037179A1 (en) 2024-02-01

Similar Documents

Publication Publication Date Title
US10127014B2 (en) Round for reround mode in a decimal floating point instruction
KR100597930B1 (ko) 라운드 및 시프트를 갖는 simd 정수 곱셈 하이
US20170199726A1 (en) Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions
US8745111B2 (en) Methods and apparatuses for converting floating point representations
EP3719639A2 (en) Systems and methods to perform floating-point addition with selected rounding
Mallasén et al. PERCIVAL: Open-source posit RISC-V core with quire capability
US10546044B2 (en) Low precision convolution operations
CN109871235A (zh) 响应指令执行舍入运算
KR20150041540A (ko) 수치 연산을 처리하는 장치 및 방법
EP4356243A1 (en) Data conversion to/from selected data type with implied rounding mode
CN116700663A (zh) 一种浮点数处理方法及装置
US6233595B1 (en) Fast multiplication of floating point values and integer powers of two
US7647368B2 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
KR20060103920A (ko) 스케일링된 정수를 사용하는 부동 소수점 연산
CN111752605A (zh) 使用浮点乘法-累加结果的模糊-j位位置
CN115269003A (zh) 数据处理方法及装置、处理器、电子设备、存储介质
CN114296682A (zh) 浮点数处理装置、方法、电子设备、存储介质及芯片
US11704092B2 (en) High-precision anchored-implicit processing
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
WO2022204620A2 (en) Systems and methods for efficient accumulate and multiply-accumulate operations of floating-point numbers in a unified register file
Ardaya-Lieb Floating-Point Units: Capabilities of Current Architectures and Approaches for Future Developments
CN115718586A (zh) 像素颜色混合操作方法、图形绘制方法、装置和设备
CN116795324A (zh) 混合精度浮点乘法装置和混合精度浮点数处理方法
CN116997888A (zh) 矩阵乘法运算的矩阵的近似
CN116225363A (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
CB02 Change of applicant information

Country or region after: China

Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Applicant after: Shanghai Bi Ren Technology Co.,Ltd.

Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CB02 Change of applicant information