CN120803395B - 处理器、电子设备 - Google Patents
处理器、电子设备Info
- Publication number
- CN120803395B CN120803395B CN202511299546.6A CN202511299546A CN120803395B CN 120803395 B CN120803395 B CN 120803395B CN 202511299546 A CN202511299546 A CN 202511299546A CN 120803395 B CN120803395 B CN 120803395B
- Authority
- CN
- China
- Prior art keywords
- tensor
- scaling factor
- storage module
- floating
- quantized
- 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
Links
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
一种处理器、电子设备。该处理器包括计算单元和内存,计算单元包括张量核,张量核配置为执行使用缩放因子的矩阵乘操作,计算单元还包括缩放因子处理模块,配置为确定及缓存矩阵乘操作相关的各个张量的缩放因子,以及将各个张量由第一浮点数格式量化为第二浮点数格式,计算单元还包括在张量核和内存之间的数据通路上设置的至少一个存储模块,至少一个存储模块在张量核执行张量相关操作时被张量核独占,缩放因子处理模块设置在至少一个存储模块上。目前缩放因子和浮点数量化由向量计算核完成,导致性能下降,延迟变高,本发明提供的设置在计算单元内的存储模块上的缩放因子处理模块,可提高使用缩放因子的低精度矩阵乘法的整体执行效率。
Description
技术领域
本公开的实施例涉及一种处理器、电子设备。
背景技术
浮点数量化是指对高精度浮点数格式(例如FP16, BF16, FP32等)进行格式转换为低精度浮点数格式(例如FP4,FP8等)。低精度浮点数格式可大幅度提高计算效率,尤其是人工智能(Artificial Intelligence,简称AI)模型所需要的通用矩阵乘(General MatrixMultiplication,简称GEMM)运算。然而低精度矩阵乘法会带来精度损失,从而降低AI模型的预测和生成效果。因此,在AI模型的低精度计算过程里通常会在浮点数量化的过程中从当前数据中计算出对应的缩放因子(Scaling Factor)来缩放数据的表达范围,从而降低计算结果的精度损失。
目前缩放因子和浮点数量化由向量计算核完成,而向量计算核还需要执行其它与向量相关的算子,而计算缩放因子会抢占其他向量相关的算子的计算资源,导致性能下降。此外,传输缩放因子至张量核的路径上会堵塞其他张量数据的传输,例如占用了共享内存的缓存,并需要和其他数据争抢路径上的传输带宽,导致整体吞吐率下降,延迟变高。
发明内容
本发明申请提供一种处理器,其中,所述处理器包括计算单元和内存,所述计算单元包括张量核,所述张量核配置为执行使用缩放因子的矩阵乘操作,所述计算单元还包括缩放因子处理模块,配置为确定及缓存所述矩阵乘操作相关的各个张量的缩放因子,以及将所述各个张量由第一浮点数格式量化为第二浮点数格式,所述缩放因子用于在对应的张量从所述第一浮点数格式转换为所述第二浮点数格式时来缩放数据的表达范围,所述第一浮点数格式的浮点数精度高于所述第二浮点数格式的浮点数精度,所述计算单元还包括在所述张量核和所述内存之间的数据通路上设置的至少一个存储模块,所述至少一个存储模块在所述张量核执行张量相关操作时被所述张量核独占,所述缩放因子处理模块设置在所述至少一个存储模块上。
例如,在本发明申请提供的处理器中,所述缩放因子处理模块包括算术逻辑单元和缓存区,所述算术逻辑单元配置为接收所述第一浮点数格式的各个张量,执行所述各个张量的缩放因子的计算操作,以及对所述各个张量进行浮点数量化,得到所述各个张量对应的经过所述浮点数量化后的量化后张量,其中,所述量化后张量为所述第二浮点数格式;所述缓存区配置为缓存所述各个张量的缩放因子。
例如,在本发明申请提供的处理器中,对于所述缩放因子处理模块接收的所述第一浮点数格式的任一个张量,所述任一个张量被分成多个张量块,每个张量块包括多个张量元素,每个张量块对应一个缩放因子参数,所述多个张量元素共用所述一个缩放因子参数,所述算术逻辑单元执行接收所述各个张量,执行所述各个张量的缩放因子的计算操作时,包括执行以下操作:针对每个张量块:确定所述多个张量元素的绝对值中的最大值与预设浮点数的加和结果;确定所述加和结果和预设常数的乘积结果,其中,所述预设常数为1与所述第二浮点数格式的精度表达范围的最大值的商;将所述乘积结果转换为所述任一个张量的缩放因子规定的精度,得到所述张量块对应的所述缩放因子参数。
例如,在本发明申请提供的处理器中,所述算术逻辑单元执行对所述各个张量进行浮点数量化,得到所述各个张量对应的经过所述浮点数量化后的量化后张量时,包括执行以下操作:针对所述张量块:基于所述缩放因子参数,确定除法查找表;基于所述除法查找表,分别确定所述多个张量元素与所述缩放因子参数的商,并将所述商量化为所述第二浮点数格式,以得到所述多个张量元素分别对应的量化后张量元素。
例如,在本发明申请提供的处理器中,所述算术逻辑单元和所述缓存区设置在同一个存储模块上。
例如,在本发明申请提供的处理器中,使用所述缩放因子的矩阵乘操作包括结合第一张量的缩放因子和第二张量的缩放因子,执行所述第一张量和所述第二张量的矩阵乘法,并结合第三张量的缩放因子,确定所述矩阵乘法的操作结果与所述第三张量的加和结果,得到作为所述矩阵乘操作的操作结果的第四张量,所述缓存区包括第一缓存区和第二缓存区,所述第一缓存区配置为缓存所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,所述第二缓存区配置为缓存所述第四张量的缩放因子,所述至少一个存储模块包括第一存储模块和第二存储模块,所述第一存储模块距离所述张量核的距离比所述第二存储模块距离所述张量核的距离更近,所述算术逻辑单元和所述第二缓存区设置在所述第二存储模块上,所述第一缓存区设置在所述第一存储模块上。
例如,在本发明申请提供的处理器中,所述算术逻辑单元计算的所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,经由所述第二存储模块和所述第一存储模块之间的数据通路,传输并缓存在所述第一缓存区中,所述算术逻辑单元处理得到所述第一张量、所述第二张量和所述第三张量分别对应的经过所述浮点数量化后的第一量化后张量、第二量化后张量和第三量化后张量,经由所述第二存储模块和所述第一存储模块之间的数据通路,传输并缓存在所述第一存储模块中,所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,以及所述第一量化后张量、所述第二量化后张量和所述第三量化后张量,经由所述第一存储模块和所述张量核之间的数据通路,传输至所述张量核中以进行使用所述缩放因子的所述矩阵乘操作。
例如,在本发明申请提供的处理器中,所述第四张量经所述第一存储模块和所述张量核之间的数据通路,传输至所述第一存储模块,并经由所述第一存储模块和所述第二存储模块之间的数据通路,传输至所述第二存储模块的算术逻辑单元,所述算术逻辑单元还配置为根据所述第四张量,确定所述第四张量的缩放因子并缓存在所述第二缓存区,并对所述第四张量进行所述浮点数量化,得到所述第四张量对应的经过所述浮点数量化后的所述第二浮点数格式的第四量化后张量。
例如,在本发明申请提供的处理器中,使用所述缩放因子的矩阵乘操作包括结合第一张量的缩放因子和第二张量的缩放因子,执行所述第一张量和所述第二张量的矩阵乘法,并结合第三张量的缩放因子,确定所述矩阵乘法的操作结果与所述第三张量的加和结果,得到作为所述矩阵乘操作的操作结果的第四张量,其中,所述第四张量直接经由所述张量核至所述内存之间的传输通路传输至其它计算单元或所述内存。
例如,在本发明申请提供的处理器中,所述至少一个存储模块包括所述计算单元中的张量核数据处理单元和共享内存中的至少一个,所述张量核数据处理单元专用于所述张量核的相关数据预处理,所述共享内存为由所述计算单元中的所有线程共享的存储区。
本发明申请提供一种电子设备,包括如本发明申请的实施例所述的处理器。
在至少一个实施例中,通过在计算单元中设置额外的硬件模块,即缩放因子处理模块,来提高缩放因子的传输效率,减少缓存容量不够造成的延迟,缓解向量计算核的计算压力,提高其他向量算子的效率,降低向量计算核的算力来节省硬件面积,从而提高使用缩放因子的低精度矩阵乘法的整体执行效率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种通用图形处理器(GPGPU)的示意性结构图;
图2为一种缩放因子在处理器中的数据流向示意图;
图3为本公开至少一实施例提供的处理器的示意性结构图;
图4为本公开至少一实施例提供的缩放因子处理模块的内部结构示意图;
图5为本公开一实施例提供的计算单元的示意性结构图;
图6为本公开至少一实施例提供的图形处理器的示意性结构图;
图7为本公开一实施例提供的一种电子设备的示意性框图;
图8为本公开至少一实施例提供的另一种电子设备的具体结构示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
浮点数(float point,FP)主要用于表示小数,通常由三部分组成,即符号(sign)位、指数(exponent)部分和尾数(mantissa)部分,该指数部分也可以称为阶码部分。例如,浮点数V通常可以表示为如下形式:
其中,符号位s可以为1比特,决定浮点数V是负数还是正数;M表示尾数部分,尾数部分可以包括多个比特位,其为一个二进制小数形式,定义了该浮点数的精度;E表示指数(也称阶码值),用于对浮点数加权,体现了浮点数V中小数点的位置,定义了该浮点数的取值范围。
传统的浮点数通常包括三种格式,即半精度浮点数(FP16)、单精度浮点数(FP32)和双精度浮点数(FP64),它们的指数部分和尾数部分具有不同的位数。
AI加速器等已经广泛用于深度学习模型训练。针对深度学习模型中常见的卷积操作,在软硬件设计时都做了特别优化以加速计算,例如对于人工智能或深度学习等领域优化发展了多种浮点数的数据格式,例如BF16(brain floating point 16,位宽为16比特)、BF24(brain floating point 24,位宽为24比特)、TF32(Tensor Float 32,位宽为19比特)等,这些数据格式可以大幅降低计算处理,尤其是矩阵乘法或卷积乘法运算等所需的运算资源和功耗。此外,处理器还支持一些常规浮点数类型,例如半精度浮点数(FP16,位宽为16比特)或单精度浮点数(FP32,位宽为32比特)等。
低精度矩阵乘法在AI大模型的训练和推理中逐渐被广泛地应用起来,因其能在可接受精度损失的情况下带来的巨大的性能收益。在GPU(图形处理器)或GPGPU中,矩阵乘法在硬件中通常由张量核来执行。其中,低精度张量核是高精度张量核算力的数倍,带来更高的计算效率。此外,低精度张量本身的数据量也比高精度张量的数据量少数倍,带来更高的数据传输效率。因此,低精度张量计算所带来的端到端效率也是几乎数倍的提升。例如,FP4的张量核算力可以是FP8的2~8倍、是FP16/BF16的4~16倍,甚至更高。并且,数据量是FP8的1/2、是FP16/BF16的1/4。
为了降低精度损失,低精度矩阵乘法会引入缩放因子(Scaling Factor)来最大化低精度张量的数值表达能力。
对于矩阵乘法D=A×B+C,A、B、C和D均为高精度张量。针对该矩阵乘法的使用缩放因子的通用矩阵乘操作可描述为:
D→D’,γ
其中,⊙表示元素乘法,表示外积,×表示矩阵乘法,α为张量A的缩放因子,β为张量B的缩放因子,σ为张量C的缩放因子,γ为张量D的缩放因子,量化后张量A’、量化后张量B’、量化后张量C’和量化后张量D’分别为张量A、张量B、张量C、张量D进行浮点数量化后的低精度张量。例如,各个参数的数据尺寸如下所示:
A:[m,s×k],B:[s×k,n],C:[m,n],D:[m,n],α: [m,s],β: [s,n],σ: [m,r] 或[r,n],γ: [m,r] 或[r,n]。
其中,m、n、s、k、r均为正整数。例如,对于张量A中的任一行,该行中的每k个张量元素共用一个缩放因子参数,对于张量B中的任一列,该列中的每k个张量元素共用一个缩放因子参数。
图1为一种通用图形处理器(GPGPU)的示意性结构图。
如图1所示,通用图形处理器实际上是一个可编程多处理器的阵列,例如,可编程多处理器可以是流式处理器簇(Streaming Processor Cluster,简称SPC),例如包括图1所示的流式处理器簇1、...、流式处理器簇M,M为大于1的正整数。在通用图形处理器中,1个流式处理器簇处理一个计算任务,或者多个流式处理器簇处理一个计算任务。多个流式处理器簇之间通过全局缓存或全局内存进行数据共享。
如图1所示,以流式处理器簇1为例,1个流式处理器簇包括多个计算单元,例如图1中的计算单元1、计算单元2、...、计算单元N,N为正整数。一个计算单元中包括多个核心(core,也称计算核或计算核心,图1中未示出),每个计算核包括算术逻辑单元(ALU)、浮点计算单元等,计算核用于执行具体的计算任务。
如图1所示,每个计算单元还提供有张量核(Tensor Core),用于进行张量相关计算,例如,进行GEMM算子的矩阵乘法运算。张量是深度学习中非常重要的数据结构,它是标量、向量、矩阵的高维推广,张量运算是目前深度学习等模型的训练推理中额常用运算,张量核可以加速矩阵乘法运算。多个计算单元中的张量核可以统一调度、控制。
如图1所示,每个计算单元还提供有向量计算核(Vector Core Engine)。向量计算核用于执行与向量相关的计算,例如向量相关的算术逻辑运算,如累加、规约、常规的加法、减法、乘法、除法等。
此外,计算单元还包括寄存器堆(图中未示出)、共享内存和张量数据存储单元(Tensor Core Memory),用于存储计算任务相关的源数据和目的数据。一个计算单元中的共享内存用于在该计算单元的核心之间共享数据。张量数据存储单元是与张量核紧密相关的存储资源,用于存储张量核执行张量运算(如矩阵乘法)时的中间数据,并且,可以对要进行张量运算的张量数据进行数据格式处理,以使得从外部加载进来的数据符合张量核的数据格式要求。
在并行计算中,计算任务一般通过多个线程(thread)执行。这些线程在通用图形处理器(或称为并行计算处理器)中执行前被划分成多个线程块(thread block),然后经由线程块分发模块(图1中未示出)将多个线程块分发到各个计算单元。一个线程块中的所有线程必须要分配到同一个计算单元上执行。同时,线程块会被拆分成最小执行线程束(或简称线程束,warp),每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。
在每个计算单元中,线程束调度/分发模块(图1中未示出)对线程束进行调度、分配,以便该计算单元的多个计算核运行线程束。根据计算单元中计算核的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。内存执行指令会被发射到计算单元中的共享内存或进一步发射到中间级缓存或全局缓存或全局内存中以进行读写操作等。
图2为一种缩放因子在处理器中的数据流向示意图。
如图2所示,目前,各个张量的缩放因子的计算需要在向量计算核中进行。
例如,如图2所示,从内存等位置加载进计算单元的高精度(例如BF16、FP16等)的张量A、张量B、张量C,先进入向量计算核,在向量计算核中计算张量A的缩放因子α、张量B的缩放因子β、张量C的缩放因子σ,并对张量A、张量B、张量C进行浮点数量化,将其量化为低精度(例如FP4、FP8等)的量化后张量A’、量化后张量B’、量化后张量C’。之后,缩放因子α、缩放因子β、缩放因子σ,以及量化后张量A’、量化后张量B’、量化后张量C’,沿图2中实线所示的路径,经张量数据存储单元传入共享内存,再进入张量核,在张量核中进行使用缩放因子的通用矩阵乘操作,得到高精度的计算结果,即张量D。
之后,张量D沿图2中虚线所示的通路进入向量计算核,在向量计算核中进行D的缩放因子γ的计算,并对D进行浮点数量化得到量化后张量D’,最后由向量计算核输出张量D的缩放因子γ和量化后张量D’。
如图2所示,目前,需要使用向量计算核来完成缩放因子的计算以及张量的浮点数量化,而向量计算核还需要执行其它与向量相关的算子,而计算缩放因子会抢占其他向量相关的算子的计算资源,导致性能下降。此外,传输缩放因子至张量核的路径上会堵塞其他张量数据的传输,例如占用了共享内存的缓存,并需要和其他数据争抢路径上的传输带宽,导致整体吞吐率下降,延迟变高。
本公开至少一实施例提供一种缩放因子处理模块,用于确定及缓存处理器中的矩阵乘操作相关的各个张量的缩放因子,以及将各个张量由第一浮点数格式量化为第二浮点数格式,缩放因子用于指示当对应的张量从第一浮点数格式转换为第二浮点数格式时的缩放数据表达范围,第一浮点数格式的浮点数精度高于第二浮点数格式的浮点数精度,其中,处理器包括计算单元和内存,计算单元包括张量核,张量核配置为执行使用缩放因子的矩阵乘操作,张量核和内存之间的数据通路上设置有至少一个存储模块,至少一个存储模块在张量核执行张量操作时被张量核独占,缩放因子处理模块设置在至少一个存储模块上。
在至少一个实施例中,通过在计算单元的存储模块中设置额外的硬件模块,即缩放因子处理模块,来提高缩放因子的传输效率,减少缓存容量不够造成的延迟,缓解向量计算核的计算压力,提高其他向量算子的效率,降低向量计算核的算力来节省硬件面积,从而提高使用缩放因子的低精度矩阵乘法的整体执行效率。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。图3为本公开至少一实施例提供的处理器的示意性结构图。
例如,如图3所示,处理器100包括计算单元110和内存120,计算单元110包括张量核102,张量核102配置为执行使用缩放因子的矩阵乘操作。如前所述,该使用缩放因子的矩阵乘操作可表示为,或者。
关于计算单元110、内存120、张量核102的相关描述可以参考前述图1的介绍,这里不再赘述。
计算单元还包括缩放因子处理模块101,用于确定处理器100中的矩阵乘操作相关的各个张量的缩放因子,以及缓存各个张量的缩放因子,此外,对各个张量进行浮点数量化,将各个张量由第一浮点数格式量化为第二浮点数格式。
缩放因子用于在对应的张量从第一浮点数格式转换为第二浮点数格式时来缩放数据的表达范围,缩放因子可以扩展低精度数据的表达能力。
例如,第一浮点数格式的浮点数精度高于第二浮点数格式的浮点数精度。例如,第一浮点数格式的位宽大于第二浮点数格式的位宽,例如,第一浮点数格式为BF16,第二浮点数格式为FP4。
在反量化时,A’×α ≈ A,也就是说,A’乘以缩放因子α约等于原先的高精度张量A。
如图3所示,张量核102和内存120之间的数据通路上设置有至少一个存储模块103,且至少一个存储模块103位于计算单元110内部。需要说明的是,图3所示为一个存储模块,但本领域技术可以知晓的是,数据通路上还可以设置有多个存储模块,这里不再重复示出。
至少一个存储模块103在张量核102执行张量操作时被张量核102独占,缩放因子处理模块101设置在该至少一个存储模块103上,至少一个存储模块103在张量核102执行张量相关操作时被张量核102独占。例如,张量相关操作可以是任何与张量相关的操作,例如矩阵乘操作。
例如,存储模块103包括与张量核102相关的存储模块103,例如张量核102能够直接使用的存储模块。
例如,存储模块103可包括专用于张量核102的存储模块,例如专用于张量核102相关数据预处理的张量数据存储单元。
例如,存储模块103可不专用于张量核102,但在张量核102执行张量操作时被张量核102独占,也即在张量核102执行张量相关操作时其它计算模块(例如向量计算核等)无法使用。例如,存储模块103包括共享内存,共享内存为由该计算单元中的所有线程共享的存储区,当张量核在执行张量相关操作时,共享内存专用于张量核,此时向量计算核不能使用共享内存。
关于张量数据存储单元和共享内存的描述可以参考前述图1的相关介绍,这里不再赘述。
图4为本公开至少一实施例提供的缩放因子处理模块的内部结构示意图。
如图4所示,缩放因子处理模块包括算术逻辑单元(Arithmetic Logic Unit,简称ALU)1011和缓存区(buffer)1012。
算术逻辑单元1011配置为接收第一浮点数格式的各个张量,执行各个张量的缩放因子的计算操作,以及对各个张量进行浮点数量化,得到各个张量对应的经过浮点数量化后的量化后张量,其中,量化后张量为第二浮点数格式。
缓存区1012配置为缓存各个张量的缩放因子。
如图4所示,算术逻辑单元1011接收第一浮点数格式的高精度张量,也即第一张量A、第二张量B和第三张量C,执行第一张量A、第二张量B和第三张量C的缩放因子的计算操作,得到第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ,并且,将缩放因子α、缩放因子β和缩放因子σ缓存至缓存区1012。
此外,算术逻辑单元1011还根据缩放因子对各个张量进行浮点数量化,得到第一量化后张量A’,第二量化后张量B’以及第三量化后张量C’。
缩放因子α、缩放因子β和缩放因子σ和第一量化后张量A’,第二量化后张量B’以及第三量化后张量C’传输至张量核102,由张量核102执行使用缩放因子的矩阵乘操作,例如描述为:,或者。
张量核102在执行完上述矩阵乘操作后,将使用缩放因子的矩阵乘操作的计算结果,也即第四张量D,传输至算术逻辑单元。第四张量D为高精度张量。
例如,第四张量D的精度可以与第一张量A、第二张量B和第三张量C相同,或者,也可以与第一张量A、第二张量B和第三张量C不同。也就是说,对于第四张量D,其可以对应一套与第一张量等不同的第一浮点数格式和第二浮点数格式。例如,在一个实施例中,第一张量A等的浮点数格式为FP16,第一量化后张量A’等的浮点数格式为FP4,第四张量D的浮点数格式为BF16,第四量化后张量D’的浮点数格式为FP8;例如,在另一个实施例中,第一张量A、第四张量D等的浮点数格式均为FP16,第一量化后张量A’、第四量化后张量D’等的浮点数格式均为FP4,本领域技术人员可根据需要自行设置,本公开对此不作具体限制。
算术逻辑单元1011对第四张量D进行浮点数量化,得到第四量化后张量D’,第四量化后张量D’为低精度张量。并且,计算第四张量D的缩放因子γ,并将其存储在缓存区1012中。
当然,在另一些实施例中,也可以将张量核计算得到的第四张量D输出至后续的其他模块,而无需利用缩放因子处理模块进行相关操作。也就是说,对于第四张量D的浮点数量化及缩放因子计算是可选的,在无需对第四张量D进行浮点数量化及缩放因子计算时,第四张量直接经由张量核至内存之间的传输通路传输至其它计算单元或内存中。
在本公开至少一实施例中,通过设置算术逻辑单元,专用于执行缩放因子的计算操作和浮点数量化,从而将向量计算核中的相关计算操作转移到计算单元中的存储模块上设置的算术逻辑单元中来,避免由于计算缩放因子带来的对向量计算核计算资源的占用,提高其他向量算子的效率,可降低向量计算单元的算力来节省硬件面积。
此外,通过设置额外的缓存区来缓存各个张量的缩放因子,例如缓存区可专用于缓存缩放因子,避免在传输路径对存储模块原本有限的存储资源的占用,减少缓存容量不够造成的延迟,提高缩放因子的传输效率,提高整体的吞吐率和张量核执行使用缩放因子的低精度矩阵乘操作的整体执行效率。
例如,对于缩放因子处理模块101接收的第一浮点数格式的任一个张量,任一个张量被分成多个张量块,每个张量块包括多个张量元素,每个张量块对应一个缩放因子参数,多个张量元素共用一个缩放因子参数。
例如,以第一浮点数格式的张量A为例,A的形状尺寸为[m,s×k],张量A的缩放因子的形状尺寸为[m,s]。例如,A中每一行的s×k个元素分成s组,每连续的k个元素作为一个张量块,也即每个张量块包括k个张量元素,该k个张量元素对应一个缩放因子参数。
例如,算术逻辑单元1011执行接收各个张量,执行各个张量的缩放因子的计算操作时,包括执行以下操作:针对每个张量块:确定多个张量元素的绝对值中的最大值与预设浮点数的加和结果;确定加和结果和预设常数的乘积结果,其中,预设常数为1与第二浮点数格式的精度表达范围的最大值的商;将乘积结果转换为任一个张量的缩放因子规定的精度,得到张量块对应的缩放因子参数。
例如,以上述的张量A中的一个张量块为例具体说明上述操作。例如该张量块X包括张量A中某一行中第1个至第k个张量元素,例如X=[X0,X1,...,Xk-1],X0,X1,...,Xk-1分别表示该k个张量元素。
首先参考如下公式确定加和结果:
X_max=max(abs(X))+t
当X_max等于0时,X_max() += t
X_max表示加和结果,abs()表示取绝对值函数,max()表示取最大值函数,t为极小的浮点数(例如 t=1e-12)用于防止除以零的场景。
然后参考如下公式确定张量块X对应的缩放因子参数S:
其中,q_max是预先已知的,1/q_max是预先计算好的预设常数,q_max表示第二浮点数格式的精度表达范围的最大值,例如第二浮点数格式为FP4,则q_max可以是6;sType表示将X_max×(1/q_max)转换成缩放因子规定的期望精度,例如缩放因子的精度指定为FP8。
需要说明的是,缩放因子的精度不要求与第二浮点数格式相同,X_max×(1/q_max)的结果的精度例如可以高于缩放因子的精度。
例如,参考上述过程获得各个张量块对应的缩放因子参数,由此得到第一张量A的缩放因子,重复之处不再赘述。
对于第二张量B、第二张量C、第二张量D的确定缩放因子的过程与第一张量A的确定缩放因子的过程相似,这里不再赘述。
在算术逻辑单元获得缩放因子后,算术逻辑单元执行对各个张量进行浮点数量化,得到各个张量对应的经过浮点数量化后的量化后张量时,包括执行以下操作:针对张量块:基于缩放因子参数,确定除法查找表;基于除法查找表,确定多个张量元素与缩放因子参数的商,并将商量化为第二浮点数格式,以得到多个张量元素分别对应的浮点数量化后的第二浮点数格式的量化后张量元素。
例如,可参考如下公式进行浮点数量化:
其中,Xq表示张量块X对应的量化后张量块,其中包括了与张量块X中的k个张量元素一一对应的k个第二浮点数格式的量化后张量元素,表示基于缩放因子参数确定的除法查找表,qType()表示将参数量化为矩阵乘操作的目标精度,即第二浮点数格式。
例如,参考上述过程对第一张量A中的各个张量块进行浮点数量化,由此得到第一量化张量A,重复之处不再赘述。
对于第二张量B、第二张量C、第二张量D的浮点数量化的过程与第一张量A的浮点数量化的过程相似,这里不再赘述。
例如,在一些实施例中,算术逻辑单元1011和缓存区1012设置在同一个存储模块103上。例如,算术逻辑单元1011和缓存区1012都设置在共享内存上,或者,算术逻辑单元1011和缓存区1012都设置在张量数据存储单元上。
例如,在另一些实施例中,算术逻辑单元和缓存区设置在不同的存储模块上。
例如,使用缩放因子的矩阵乘操作包括结合第一张量A的缩放因子α和第二张量B的缩放因子β,执行第一张量A和第二张量B的矩阵乘法,并结合第三张量C的缩放因子γ,确定矩阵乘法的操作结果与第三张量C的加和结果,得到作为矩阵乘操作的操作结果的第四张量D。
例如,在一些实施例中,缓存区包括第一缓存区和第二缓存区,第一缓存区配置为缓存第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ,第二缓存区配置为缓存第四张量D的缩放因子γ。
例如,至少一个存储模块包括第一存储模块和第二存储模块,第一存储模块距离张量核的距离比第二存储模块距离张量核的距离更近。
例如,在一些实施例中,第一存储模块为共享内存,第二存储模块为张量数据存储单元。例如,在另一些实施例中,第一存储模块为张量数据存储单元,第二存储模块为共享内存。第一存储模块和第二存储模块可以根据硬件架构确定,本公开对此不作具体限制。
例如,第二缓存区和第一缓存区可以设置在不同的存储模块上,第二缓存区和算术逻辑单元设置在同一个存储模块上。例如,算术逻辑单元和第二缓存区设置在第二存储模块上,第一缓存区设置在第一存储模块上。
图5为本公开一实施例提供的计算单元的示意性结构图。
如图5所示,内存120和张量核102之间的数据通路上设置有多个存储模块,其中包括第一存储模块和第二存储模块,第一存储模块和第二存储模块位于计算单元内部,并且在张量核执行张量操作时被张量核独占,第一存储模块距离张量核102的距离更近。关于第一存储模块和第二存储模块可以参考前述内容,这里不再赘述。
如图5所示,第二缓存区和算术逻辑单元设置在第二存储模块上,第一缓存区设置在第一存储模块上。
如图5所示,第一张量A、第二张量B和第三张量C为高精度的张量,例如BF16、FP16等,其可以来自于内存或其它计算单元或当前计算单元的前次输出等,本公开对此不作具体限制。
第一张量A、第二张量B和第三张量C进入算术逻辑单元,由算术逻辑单元确定第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ,并且,对第一张量A、第二张量B和第三张量C进行量化,得到第一量化后张量A’、第二量化后张量B’、第三量化后张量C’。确定缩放因子和浮点数量化的具体过程可以参考前述内容,这里不再赘述。
之后,算术逻辑单元计算的第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ,经由第二存储模块和第一存储模块之间的数据通路,传输并缓存在第一缓存区中;算术逻辑单元处理得到第一张量A、第二张量B和第三张量C分别对应的经过浮点数量化后的第一量化后张量A’、第二量化后张量B’和第三量化后张量C’,经由第二存储模块和第一存储模块之间的数据通路,传输并缓存在第一存储模块中。经过浮点数量化后的第一量化后张量A’、第二量化后张量B’和第三量化后张量C’为低精度张量,例如为FP4或FP8格式等。
由此,第一量化后张量A’、第二量化后张量B’和第三量化后张量C’仍然存储在共享内存中,而第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ缓存在第一缓存区中,减少增加的缓存区的容量及带来的硬件面积,并且可以提高数据传输效率并减少缓存容量不够造成的延迟。
之后,第一张量A的缩放因子α、第二张量B的缩放因子β和第三张量C的缩放因子σ,以及第一量化后张量A’、第二量化后张B’量和第三量化后张量C’,经由第一存储模块和张量核之间的数据通路,传输至张量核中以进行使用缩放因子的矩阵乘操作,例如执行或者等,本公开对使用缩放因子的矩阵乘操作的具体执行过程不作限制。
张量核在执行完使用缩放因子的矩阵乘操作后,得到第四张量D。如图5所示,张量核将第四张量D经第一存储模块和张量核之间的数据通路,传输至第一存储模块,并经由第一存储模块和第二存储模块之间的数据通路,传输至第二存储模块的算术逻辑单元。
算术逻辑单元还配置为根据第四张量D,确定第四张量的缩放因子γ并缓存在第二缓存区,并对第四张量D进行浮点数量化,得到第四张量对应的经过浮点数量化后的第二浮点数格式的第四量化后张量D’。第四量化后张量D’也是低精度格式,例如为FP4或FP8格式等。
之后,第四量化后张量D’和第四张量的缩放因子γ被传输至其它相关的模块。例如,传输至其它计算单元、内存或再次进入当前计算单元进行下一轮的操作。
在图5中未示出的一种实施例,张量核在确定第四张量D后,将第四张量经由第一存储模块、第二存储模块直接输出,而不进行第四张量D的缩放因子计算和浮点数量化,此时第二缓存区仍设置在第二存储模块中。
例如,在另一些实施例中,无需进行第四张量的量化,此时可不设置第二缓存区,直接将第四张量D经由第一存储模块、第二存储模块传输至其它相关模块,这里不再赘述。
例如,在另一些实施例中,矩阵乘操作可以不进行与第三张量C的相加,仅包括计算A×B,具体过程与上述矩阵乘操作相似,也即无需执行关于第三张量C的浮点数量化和缩放因子计算,具体过程这里不再赘述。
在本公开至少一实施例中,通过在计算单元中设置额外的硬件模块,即缩放因子处理模块,来提高缩放因子的传输效率,减少缓存容量不够造成的延迟,缓解向量计算核的计算压力,提高其他向量算子的效率,降低向量计算核的算力来节省硬件面积,从而提高使用缩放因子的低精度矩阵乘法的整体执行效率。
在本公开至少一实施例中,处理器可以是图形处理器、张量处理器、数据处理器等任意架构的处理器。下面以图形处理器为例,描述本公开至少一实施例提供的图形处理器的示意性结构。
图6为本公开至少一实施例提供的图形处理器的示意性结构图。如图6所示,图形处理器200包括多个流式处理器簇和内存,每个流式处理器簇包括多个计算单元。关于流式处理器簇、计算单元和内存的相关描述可以参考前述图1的相关记载,这里不再赘述。
如图6所示,每个计算单元包括张量核、存储模块,例如存储模块可以包括共享内存、张量数据处理单元中的至少一个。
如图6所示,每个计算单元的存储模块上还设置有缩放因子处理模块101。缩放因子处理模块101用于确定及缓存处理器中的矩阵乘操作相关的各个张量的缩放因子,以及将各个张量由第一浮点数格式量化为第二浮点数格式。缩放因子用于在对应的张量从第一浮点数格式转换为第二浮点数格式时来缩放数据的表达范围,第一浮点数格式的浮点数精度高于第二浮点数格式的浮点数精度。关于缩放因子处理模块101的更多详细描述,可以参考如前所述的缩放因子处理模块101的相关记载,重复之处不再赘述。
例如,算术逻辑单元和缓存区设置在同一个存储模块上,例如,均设置在共享内存上,或者,均设置在张量数据处理单元上。
例如,算术逻辑单元和缓存区设置在不同的存储模块上。
例如,缓存区包括第一缓存区和第二缓存区,第一缓存区配置为缓存第一张量的缩放因子、第二张量的缩放因子和第三张量的缩放因子,第二缓存区配置为缓存第四张量的缩放因子。
至少一个存储模块包括第一存储模块和第二存储模块,第一存储模块距离张量核的距离比第二存储模块距离张量核的距离更近。算术逻辑单元和第二缓存区设置在第二存储模块上,第一缓存区设置在第一存储模块上。
例如,在一个实施例中,第一存储模块为共享内存,第二存储模块为张量数据处理单元,此时第一缓存区设置在共享内存上,第二缓存区和算术逻辑单元设置在张量数据处理单元上。例如,在另一个实施例中,第一存储模块为张量数据处理单元,第二存储模块为共享内存,此时第一缓存区设置在张量数据处理单元上,第二缓存区和算术逻辑单元设置在共享内存上。
更多关于缩放因子处理模块的内容以及与图形处理器中其它单元的交互,可参考前述缩放因子处理模块的相关描述,重复之处不再赘述。
在至少一个实施例中,通过在图形处理器的计算单元中设置额外的硬件模块,即缩放因子处理模块,来提高缩放因子的传输效率,减少缓存容量不够造成的延迟,缓解向量计算核的计算压力,提高其他向量算子的效率,降低向量计算核的算力来节省硬件面积,从而提高使用缩放因子的低精度矩阵乘法的整体执行效率。
此外,应当注意,图6所示的图形处理器200的组件只是示例性的,而非限制性的,根据实际应用需要,该图形处理器200还可以具有其他组件。
图7示出了本公开至少一实施例提供的一种电子设备的示意图。
例如,如图7所示,该电子设备300包括处理器200。例如,处理器200可以采用图6中所示的结构实现。例如,该电子设备300可以是包括具有计算功能的任何电子设备,例如可以笔记本电脑、平板电脑、台式计算机、网络服务器等,本公开的实施例对此不作限制。
例如,该电子设备还可以包括中央处理单元(Central Processing Unit,CPU)、数字信号处理器(DSP)等具有数据处理能力和/或指令执行能力的其它形式的处理单元、存储单元等,该电子设备上还安装有操作系统、应用程序编程接口(例如,OpenGL(OpenGraphics Library)、Metal等)等。例如,该电子设备还可以包括例如显示部件的输出部件,该显示部件例如为液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(OrganicLight Emitting Diode,OLED)显示屏、量子点发光二极管(Quantum Dot Light EmittingDiode,QLED)显示屏等,本公开的实施例对此不作限制。
需要说明的是,为表示清楚、简洁,本公开实施例并没有给出该电子设备300的全部组成单元。为实现电子设备300的必要功能,本领域技术人员可以根据具体需要提供、设置其他未示出的组成单元,本公开的实施例对此不作限制。
下面参考图8,其示出了适于用来实现包括本公开实施例的处理器的电子设备(例如,终端设备或服务器)300的一种具体结构示意图。
本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。例如,电子设备可为服务器形式,用于深度学习与人工智能、科学计算、图形渲染与视频编辑、虚拟现实与游戏开发、云服务等多种应用场景,例如电子设备可以是部署有深度学习训练、大规模数据分析、高性能计算等任务的数据中心、云计算等专用服务器。
图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,该电子设备300可以包括处理装置301,处理装置301例如包括前述的处理器200,其可以根据存储在存储器中的非暂时性计算机可读指令执行各种适当的动作和处理,以实现各种功能。处理装置301还可以包括中央处理单元(CPU)、张量处理器(TPU)等具有指令优化能力和/或程序执行能力的器件。中央处理器(CPU)可以为X86、ARM、RISC-V架构等。GPU可以直接集成到SOC中、直接集成到主板上,又或者内置于主板的北桥芯片中。
如图8所示,例如,存储器可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)303和/或高速缓冲存储器(cache)等,例如,计算机可读指令可以从存储装置308加载到随机存取存储器(RAM)303中以运行计算机可读指令。非易失性存储器例如可以包括只读存储器(ROM)302、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如风格图像、以及应用程序使用和/或产生的各种数据等。
例如,处理装置301、只读存储器(ROM)302以及随机存取存储器(RAM)303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至输入/输出(I/O)接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘、闪存等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备300,但应理解的是,并不要求实施或具备所有示出的装置,电子设备300可以替代地实施或具备更多或更少的装置。例如,处理装置301可以控制电子设备300中的其它组件以执行期望的功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种处理器,其特征在于,所述处理器包括计算单元和内存,所述计算单元包括张量核,所述张量核配置为执行使用缩放因子的矩阵乘操作,
所述计算单元还包括缩放因子处理模块,配置为确定及缓存所述矩阵乘操作相关的各个张量的缩放因子,以及将所述各个张量由第一浮点数格式量化为第二浮点数格式,所述缩放因子用于在对应的张量从所述第一浮点数格式转换为所述第二浮点数格式时来缩放数据的表达范围,所述第一浮点数格式的浮点数精度高于所述第二浮点数格式的浮点数精度,
所述计算单元还包括在所述张量核和所述内存之间的数据通路上设置的至少一个存储模块,所述至少一个存储模块在所述张量核执行张量相关操作时被所述张量核独占,
所述缩放因子处理模块设置在所述至少一个存储模块上。
2.根据权利要求1所述的处理器,其特征在于,所述缩放因子处理模块包括算术逻辑单元和缓存区,
所述算术逻辑单元配置为接收所述第一浮点数格式的各个张量,执行所述各个张量的缩放因子的计算操作,以及对所述各个张量进行浮点数量化,得到所述各个张量对应的经过所述浮点数量化后的量化后张量,其中,所述量化后张量为所述第二浮点数格式;
所述缓存区配置为缓存所述各个张量的缩放因子。
3.根据权利要求2所述的处理器,其特征在于,对于所述缩放因子处理模块接收的所述第一浮点数格式的任一个张量,所述任一个张量被分成多个张量块,每个张量块包括多个张量元素,每个张量块对应一个缩放因子参数,所述多个张量元素共用所述一个缩放因子参数,
所述算术逻辑单元执行接收所述各个张量,执行所述各个张量的缩放因子的计算操作时,包括执行以下操作:
针对每个张量块:
确定所述多个张量元素的绝对值中的最大值与预设浮点数的加和结果;
确定所述加和结果和预设常数的乘积结果,其中,所述预设常数为1与所述第二浮点数格式的精度表达范围的最大值的商;
将所述乘积结果转换为所述任一个张量的缩放因子规定的精度,得到所述张量块对应的所述缩放因子参数。
4.根据权利要求3所述的处理器,其特征在于,所述算术逻辑单元执行对所述各个张量进行浮点数量化,得到所述各个张量对应的经过所述浮点数量化后的量化后张量时,包括执行以下操作:
针对所述张量块:
基于所述缩放因子参数,确定除法查找表;
基于所述除法查找表,分别确定所述多个张量元素与所述缩放因子参数的商,并将所述商量化为所述第二浮点数格式,以得到所述多个张量元素分别对应的量化后张量元素。
5.根据权利要求2所述的处理器,其特征在于,所述算术逻辑单元和所述缓存区设置在同一个存储模块上。
6.根据权利要求2所述的处理器,其特征在于,使用所述缩放因子的矩阵乘操作包括结合第一张量的缩放因子和第二张量的缩放因子,执行所述第一张量和所述第二张量的矩阵乘法,并结合第三张量的缩放因子,确定所述矩阵乘法的操作结果与所述第三张量的加和结果,得到作为所述矩阵乘操作的操作结果的第四张量,
所述缓存区包括第一缓存区和第二缓存区,所述第一缓存区配置为缓存所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,所述第二缓存区配置为缓存所述第四张量的缩放因子,
所述至少一个存储模块包括第一存储模块和第二存储模块,所述第一存储模块距离所述张量核的距离比所述第二存储模块距离所述张量核的距离更近,
所述算术逻辑单元和所述第二缓存区设置在所述第二存储模块上,所述第一缓存区设置在所述第一存储模块上。
7.根据权利要求6所述的处理器,其特征在于,所述算术逻辑单元计算的所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,经由所述第二存储模块和所述第一存储模块之间的数据通路,传输并缓存在所述第一缓存区中,
所述算术逻辑单元处理得到所述第一张量、所述第二张量和所述第三张量分别对应的经过所述浮点数量化后的第一量化后张量、第二量化后张量和第三量化后张量,经由所述第二存储模块和所述第一存储模块之间的数据通路,传输并缓存在所述第一存储模块中,
所述第一张量的缩放因子、所述第二张量的缩放因子和所述第三张量的缩放因子,以及所述第一量化后张量、所述第二量化后张量和所述第三量化后张量,经由所述第一存储模块和所述张量核之间的数据通路,传输至所述张量核中以进行使用所述缩放因子的所述矩阵乘操作。
8.根据权利要求6所述的处理器,其特征在于,所述第四张量经所述第一存储模块和所述张量核之间的数据通路,传输至所述第一存储模块,并经由所述第一存储模块和所述第二存储模块之间的数据通路,传输至所述第二存储模块的算术逻辑单元,
所述算术逻辑单元还配置为根据所述第四张量,确定所述第四张量的缩放因子并缓存在所述第二缓存区,并对所述第四张量进行所述浮点数量化,得到所述第四张量对应的经过所述浮点数量化后的所述第二浮点数格式的第四量化后张量。
9.根据权利要求2所述的处理器,其特征在于,使用所述缩放因子的矩阵乘操作包括结合第一张量的缩放因子和第二张量的缩放因子,执行所述第一张量和所述第二张量的矩阵乘法,并结合第三张量的缩放因子,确定所述矩阵乘法的操作结果与所述第三张量的加和结果,得到作为所述矩阵乘操作的操作结果的第四张量,
其中,所述第四张量直接经由所述张量核至所述内存之间的传输通路传输至其它计算单元或所述内存。
10.根据权利要求2-9任一项所述的处理器,其特征在于,所述至少一个存储模块包括所述计算单元中的张量数据存储单元和共享内存中的至少一个,
所述张量数据存储单元专用于所述张量核的相关数据预处理,
所述共享内存为由所述计算单元中的所有线程共享的存储区。
11.一种电子设备,其特征在于,包括如权利要求1-10任一项所述的处理器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511299546.6A CN120803395B (zh) | 2025-09-12 | 2025-09-12 | 处理器、电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511299546.6A CN120803395B (zh) | 2025-09-12 | 2025-09-12 | 处理器、电子设备 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN120803395A CN120803395A (zh) | 2025-10-17 |
| CN120803395B true CN120803395B (zh) | 2025-11-18 |
Family
ID=97319979
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202511299546.6A Active CN120803395B (zh) | 2025-09-12 | 2025-09-12 | 处理器、电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120803395B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120805999B (zh) * | 2025-09-09 | 2025-11-11 | 上海壁仞科技股份有限公司 | 缩放因子处理模块、处理器、电子设备 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114492771A (zh) * | 2020-11-13 | 2022-05-13 | 联发科技股份有限公司 | 神经网络处理单元及系统 |
| CN119883375A (zh) * | 2024-12-31 | 2025-04-25 | 摩尔线程智能科技(北京)股份有限公司 | 处理器、芯片产品、计算机设备及张量计算方法 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11347511B2 (en) * | 2019-05-20 | 2022-05-31 | Arm Limited | Floating-point scaling operation |
| US20230133360A1 (en) * | 2021-10-28 | 2023-05-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute-In-Memory-Based Floating-Point Processor |
| US20250045572A1 (en) * | 2023-08-04 | 2025-02-06 | Texas Instruments Incorporated | Quantization for neural networks |
-
2025
- 2025-09-12 CN CN202511299546.6A patent/CN120803395B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114492771A (zh) * | 2020-11-13 | 2022-05-13 | 联发科技股份有限公司 | 神经网络处理单元及系统 |
| CN119883375A (zh) * | 2024-12-31 | 2025-04-25 | 摩尔线程智能科技(北京)股份有限公司 | 处理器、芯片产品、计算机设备及张量计算方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN120803395A (zh) | 2025-10-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11275561B2 (en) | Mixed precision floating-point multiply-add operation | |
| US20220067530A1 (en) | Fine-grained per-vector scaling for neural network quantization | |
| CN111708511B (zh) | 用于神经网络的数据压缩 | |
| CN117785480B (zh) | 处理器、归约计算方法及电子设备 | |
| CN114118347A (zh) | 用于神经网络量化的细粒度每向量缩放 | |
| JP2020074099A (ja) | 処理装置と処理方法 | |
| CN119312003B (zh) | 数据处理方法及装置、处理器、电子设备和存储介质 | |
| CN110569019B (zh) | 数值的随机修约 | |
| CN120803395B (zh) | 处理器、电子设备 | |
| CN113570053B (zh) | 一种神经网络模型的训练方法、装置以及计算设备 | |
| CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
| CN114787823B (zh) | 灵活精度的神经推理处理单元 | |
| CN118170347B (zh) | 精度转换装置、数据处理方法、处理器、电子设备 | |
| CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
| CN120562507A (zh) | 训练方法、数据处理方法、电子设备和计算机可读存储介质 | |
| KR102796774B1 (ko) | 트랜스포머 기반 언어 서비스 가속화를 위한 저비용 다중 fpga 가속 시스템 | |
| CN120317289A (zh) | 数据处理方法及装置、处理器、电子设备及存储介质 | |
| US20240160406A1 (en) | Low-precision floating-point datapath in a computer processor | |
| WO2020256836A1 (en) | Sparse convolutional neural network | |
| CN109635238B (zh) | 矩阵运算方法、装置、设备及可读介质 | |
| CN120805999B (zh) | 缩放因子处理模块、处理器、电子设备 | |
| CN121116207A (zh) | 基于查找表的数据量化电路、数据处理方法、处理器、设备及介质 | |
| CN117827386A (zh) | 调度方法、调度装置、电子设备及存储介质 | |
| CN120803396B (zh) | 张量核、处理器、数据处理方法、电子设备和存储介质 | |
| CN120872284B (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 |