CN117370722A - 并行计算硬件中矩阵乘法运算的处理方法及相关设备 - Google Patents
并行计算硬件中矩阵乘法运算的处理方法及相关设备 Download PDFInfo
- Publication number
- CN117370722A CN117370722A CN202311376164.XA CN202311376164A CN117370722A CN 117370722 A CN117370722 A CN 117370722A CN 202311376164 A CN202311376164 A CN 202311376164A CN 117370722 A CN117370722 A CN 117370722A
- Authority
- CN
- China
- Prior art keywords
- matrix
- precision
- difference
- initial
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 1109
- 238000003672 processing method Methods 0.000 title abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims description 53
- 238000004364 calculation method Methods 0.000 claims description 41
- 230000003321 amplification Effects 0.000 claims description 36
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 36
- 238000009825 accumulation Methods 0.000 claims description 20
- 238000012360 testing method Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 9
- 230000000903 blocking effect Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000007689 inspection Methods 0.000 claims description 4
- 230000009467 reduction Effects 0.000 claims description 4
- 230000000630 rising effect Effects 0.000 description 34
- 238000007667 floating Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 16
- 238000013473 artificial intelligence Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000012795 verification Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 238000010200 validation analysis Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例提供了一种并行计算硬件中矩阵乘法运算的处理方法及相关设备,通过获取第一初始矩阵和第二初始矩阵;然后基于单精度数据类型进行半精度处理,得到第一初始矩阵的第一半精度矩阵,以及第二初始矩阵的第二半精度矩阵;再基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵;最后,累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,从而在仅支持半精度乘法运算的硬件设备上得到一个精准度较高的单精度乘法运算结果。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及并行计算硬件中矩阵乘法运算的处理方法及相关设备。
背景技术
近些年,随着机器学习、人工智能等领域的蓬勃发展,极大增加了矩阵乘法运算的数量的同时,也极大的加速了专门用于并行计算的专用硬件的发展。随之而来的是,提高矩阵乘法运算的精准度也成为了最需要注意的地方。
在相关技术中,针对于单精度矩阵的乘法运算中,可以使用支持单精度计算的计算芯片来计算,但支持单精度计算的计算芯片其成本较高。除此之外通常在使用仅支持半精度计算的计算芯片中,将待乘的单精度矩阵转换为半精度矩阵,然后再将半精度进行乘法运算,但是通过这种方案得到的结果的精准度较低。
发明内容
本申请实施例的提供了一种并行计算硬件中矩阵乘法运算的处理方法及相关设备,能够在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度。
为实现上述目的,本申请实施例的第一方面提出了一种并行计算硬件中矩阵乘法运算的处理方法,包括:
获取第一初始矩阵和第二初始矩阵;其中,所述第一初始矩阵和所述第二初始矩阵均为单精度矩阵;
基于单精度数据类型进行半精度处理,得到所述第一初始矩阵的第一半精度矩阵,以及所述第二初始矩阵的第二半精度矩阵;
基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,以及基于所述第二初始矩阵和所述第二半精度矩阵的差值得到第二差值矩阵;其中,所述第一差值矩阵和所述第二差值矩阵均为半精度矩阵;
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,并将所述第一单精度目标矩阵作为所述第一初始矩阵和所述第二初始矩阵进行矩阵乘法运算的结果。
在一些实施例,所述基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,包括:
将所述第一半精度矩阵进行单精度处理,得到第一中间矩阵;
对所述第一初始矩阵与所述第一中间矩阵的差值进行半精度处理,得到所述第一差值矩阵。
在一些实施例,所述累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,包括:
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一加成项;
根据所述第一差值矩阵和所述第二差值矩阵的乘积,得到第二加成项;
累加所述第一加成项和所述第二加成项,得到所述第一单精度目标矩阵。
在一些实施例,所述第一半精度矩阵中元素包括尾数;所述累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,还包括:
获取根据所述尾数的位数确定的预设乘值;
利用预设乘值乘以所述第一差值矩阵,得到第一放大矩阵,并利用所述预设乘值乘以所述第二差值矩阵,得到第二放大矩阵;
累加所述第一半精度矩阵和所述第二放大矩阵的乘积、所述第二半精度矩阵和所述第一放大矩阵的乘积,得到中间放大矩阵;
将所述中间放大矩阵除以所述预设乘值,得到中间缩小矩阵;
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积以及所述中间缩小矩阵,得到所述第一单精度目标矩阵。
在一些实施例,所述获取第一初始矩阵和第二初始矩阵,包括:
获取第一目标矩阵和第二目标矩阵;
获取所述并行计算硬件的最大矩阵乘法运算阶数;
基于所述最大矩阵乘法运算阶数,将所述第一目标矩阵进行划分得到至少一个第一初始矩阵,并将所述第二目标矩阵进行划分得到至少一个第二初始矩阵。
在一些实施例,当所述第一初始矩阵和所述第二初始矩阵为多个时,所述方法还包括:
根据所述第一初始矩阵在所述第一目标矩阵中的分块位置在所述第二目标矩阵中选取所述第二初始矩阵,并生成多个矩阵序列;每个所述矩阵序列中包括多个所述矩阵组,每个所述矩阵组包括所述第一初始矩阵和所述第二初始矩阵;
将每个所述矩阵组中所述第一半精度矩阵和所述第二半精度矩阵的乘积进行累加,得到所述矩阵序列的第一累积矩阵,将每个所述矩阵组中所述第一半精度矩阵和所述第二差值矩阵的乘积和所述第二半精度矩阵和所述第二差值矩阵的乘积的和进行累加,得到所述矩阵序列的第二累积矩阵;
根据所述第一累积矩阵和所述第二累积矩阵,得第二单精度目标矩阵,并将所述第二单精度目标矩阵作为所述第一目标矩阵和所述第二目标矩阵进行矩阵乘法运算的结果。
在一些实施例,所述方法还包括:
基于单精度数据类型进行双精度处理,得到所述第一目标矩阵的第一双精度矩阵、所述第二目标矩阵的第二双精度矩阵以及所述第二单精度目标矩阵的检验矩阵;
将所述第一双精度矩阵和所述第二双精度矩阵进行乘法运算得到评估矩阵;
基于所述检验矩阵和所述评估矩阵得到检验结果;
将所述检验结果与预设检验阈值进行对比,并基于对比结果输出所述第二单精度目标矩阵。
为实现上述目的,本申请实施例的第二方面提出了一种矩阵乘法运算装置,包括:
获取模块,用于获取第一初始矩阵和第二初始矩阵;其中,所述第一初始矩阵和所述第二初始矩阵均为单精度矩阵;
半精度转换模块,用于基于单精度数据类型进行半精度处理,得到所述第一初始矩阵的第一半精度矩阵,以及所述第二初始矩阵的第二半精度矩阵;
差值处理模块,用于基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,以及基于所述第二初始矩阵和所述第二半精度矩阵的差值得到第二差值矩阵;其中,所述第一差值矩阵和所述第二差值矩阵均为半精度矩阵;
计算模块,用于累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,并将所述第一单精度目标矩阵作为所述第一初始矩阵和所述第二初始矩阵进行矩阵乘法运算的结果。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的并行计算硬件中矩阵乘法运算的处理方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的并行计算硬件中矩阵乘法运算的处理方法。
本申请实施例提出的并行计算硬件中矩阵乘法运算的处理方法及相关设备,通过获取第一初始矩阵和第二初始矩阵;其中,第一初始矩阵和第二初始矩阵均为单精度矩阵;然后基于单精度数据类型进行半精度处理,得到第一初始矩阵的第一半精度矩阵,以及第二初始矩阵的第二半精度矩阵;再基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵;其中,第一差值矩阵和第二差值矩阵均为半精度矩阵;最后,累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,并将第一单精度目标矩阵作为第一初始矩阵和第二初始矩阵进行矩阵乘法运算的结果。本申请实施例针对与在支持半精度矩阵乘法运算的设备上进行单精度矩阵乘法运算中,利用第一差值矩阵保存第一初始矩阵转化到第一半精度矩阵后的误差,以及利用第二差值矩阵保存第二初始矩阵转化到第二半精度矩阵后的误差,从而在第一半精度矩阵和第二半精度矩阵的乘法运算中增加误差补偿项以进行相应的半精度乘法运算,进而在仅支持半精度乘法运算的硬件设备上得到一个精准度较高的单精度乘法运算结果。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
图1是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的流程图。
图2是图1中的步骤S101的流程图。
图3是本申请一实施例提供的矩阵分块的结构示意图。
图4是本申请一实施例提供的浮点数数据结构示意图。
图5是图1中的步骤S103的流程图。
图6是图1中的步骤S104的流程图。
图7是图1中的步骤S104的又一流程图。
图8是本申请一实施例提供的一种矩阵分块乘法运算的流程示意图。
图9是本申请一实施例提供的一种矩阵分块乘法运算的又一流程示意图。
图10是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的又一流程图。
图11是本申请一实施例提供的矩阵分块乘法运算的改进流程示意图。
图12是本申请一实施例提供的矩阵分块乘法运算的又一改进流程示意图。
图13是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的又一流程图。
图14是本申请一实施例提供的昇腾AI处理器的芯片结构示意图。
图15是本申请一实施例提供的分块并行运算的执行示意图。
图16是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的精准度对比仿真图。
图17是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的工作效率对比仿真图。
图18是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的工作效率的仿真数据表图。
图19是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的又一精准度对比仿真图。
图20是本申请一实施例提供的矩阵乘法运算装置的结构示意图。
图21是本申请一实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
单精度矩阵乘法运算是指两个单精度浮点数类型的矩阵相乘的运算。单精度浮点数类型通常用32位二进制数来表示一个浮点数,其中1位用于符号位,8位用于指数,23位用于尾数。假设矩阵A的大小为m×n,矩阵B的大小为n×p,那么它们的乘积C的大小为m×p,其中矩阵C的每个元素C[i][j]的值为矩阵A第i行的元素与矩阵B第j列的元素的乘积之和。
与单精度矩阵乘法运算类似的,半精度矩阵乘法运算是指两个半精度浮点数类型的矩阵相乘的运算。半精度浮点数类型通常用16位二进制数来表示一个浮点数,其中1位用于符号位,5位用于指数,10位用于尾数。由于半精度浮点数类型的精度较低,因此在实际应用中,半精度矩阵乘法通常用于需要较少精度的场景,例如神经网络中的计算。
IEEE-754是一种二进制数的浮点表示法,它是由电气和电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)制定的一种国际标准。该标准规定了浮点数在计算机中的二进制表示方法,包括表示符号位、指数位和尾数位等。
并行计算硬件指的是一种可以同时执行多个计算任务的硬件设备。这些硬件设备通常具有高度的并行计算能力和高效的计算资源管理能力,可以实现高效的计算和数据处理。
近些年,随着机器学习、人工智能等领域的蓬勃发展,极大增加了矩阵乘法运算的数量的同时,也极大的加速了专门用于并行计算的专用硬件的发展。随之而来的是,提高矩阵乘法运算的精准度也成为了最需要注意的地方。
在相关技术中,针对于单精度矩阵的乘法运算中,可以使用支持单精度计算的计算芯片来计算,但支持单精度计算的计算芯片其成本较高。除此之外通常在使用仅支持半精度计算的计算芯片中,将待乘的单精度矩阵转换为半精度矩阵,然后再将半精度进行乘法运算,但是通过这种方案得到的结果的精准度较低。
基于此,本申请实施例提供了一种并行计算硬件中矩阵乘法运算的处理方法及相关设备,能够在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度。并行计算硬件中矩阵乘法运算的处理方法主要通过获取第一初始矩阵和第二初始矩阵;其中,第一初始矩阵和第二初始矩阵均为单精度矩阵;然后基于单精度数据类型进行半精度处理,得到第一初始矩阵的第一半精度矩阵,以及第二初始矩阵的第二半精度矩阵;再基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵;其中,第一差值矩阵和第二差值矩阵均为半精度矩阵;最后,累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,并将第一单精度目标矩阵作为第一初始矩阵和第二初始矩阵进行矩阵乘法运算的结果。本申请实施例针对与在支持半精度矩阵乘法运算的设备上进行单精度矩阵乘法运算中,利用第一差值矩阵保存第一初始矩阵转化到第一半精度矩阵后的误差,以及利用第二差值矩阵保存第二初始矩阵转化到第二半精度矩阵后的误差,从而在第一半精度矩阵和第二半精度矩阵的乘法运算中增加误差补偿项以进行相应的半精度乘法运算,进而在仅支持半精度乘法运算的硬件设备上得到一个精准度较高的单精度乘法运算结果。
本申请实施例提供并行计算硬件中矩阵乘法运算的处理方法及相关设备,具体通过如下实施例进行说明,首先描述本申请实施例中的并行计算硬件中矩阵乘法运算的处理方法。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法,涉及人工智能技术领域,尤其涉及数据计算处理领域。本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的计算机程序。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地应用程序(Application,APP),即需要在操作系统中安装才能运行的程序,也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。其中,终端通过网络与服务器进行通信。该并行计算硬件中矩阵乘法运算的处理方法可以由终端或服务器执行,或由终端和服务器协同执行。
在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机或者智能手表等。此外,终端还可以是智能车载设备。该智能车载设备应用本实施例的并行计算硬件中矩阵乘法运算的处理方法提供相关的服务,提升驾驶体验。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器;也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点(Peer To Peer,P2P)网络,P2P协议是一个运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议。服务器上可以安装文本翻译系统的服务端,通过该服务端可以与终端进行交互,例如服务端上安装对应的软件,软件可以是实现并行计算硬件中矩阵乘法运算的处理方法的应用等,但并不局限于以上形式。终端与服务器之间可以通过蓝牙、通用串行总线(UniversalSerial Bus,USB)或者网络等通讯连接方式进行连接,本实施例在此不做限制。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络个人计算机(Personal Computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在一些实施例中,本申请所提供的并行计算硬件中矩阵乘法运算的处理方法主要目标是针对于在仅支持半精度矩阵乘法运算的并行计算硬件中,对两个单精度矩阵的矩阵乘法运算。其中仅支持半精度矩阵乘法运算的并行计算硬件可以是昇腾AI芯片等等。
首先描述本申请实施例中的并行计算硬件中矩阵乘法运算的处理方法。在本实施例中,并行计算硬件中矩阵乘法运算的处理方法可应用于矩阵乘法运算装置。参照图1,为本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S104。同时可以理解的是,本实施例对图1中步骤S101至步骤S104的顺序不做具体限定,可以根据实际需求调整步骤顺序或者减少、增加某些步骤。
步骤S101:获取第一初始矩阵和第二初始矩阵。
在一些实施例中,矩阵乘法运算装置响应于单精度矩阵乘法运算后,首先获取均为单精度矩阵的第一初始矩阵和第二初始矩阵。其中第一初始矩阵和第二初始矩阵是指待进行矩阵乘法运算处理的矩阵数据。在本实施例中,不对第一初始矩阵和第二初始矩阵的获取来源进行限制,即可以是由人为输入的,也可以是一些基于机器学习模型自身计算所生成的,也可以是通过计算机设备从文本数据库中提取得到或通过计算机设备从网络上爬取得到等。
在一些实施例中,第一初始矩阵来源于第一目标矩阵,第二初始矩阵来源于第二目标矩阵,第一目标矩阵和第二目标矩阵是需要进行矩阵乘法的两个矩阵。在一些情况下,第一目标矩阵和第二目标矩阵的数据规模较大,如深度学习中网络模型中一些应用中的矩阵乘法运算的输入矩阵规模一般较大。因此,为了提高矩阵乘法运算装置的运算效率,同时也受限于并行计算硬件的运行内存大小,需要对第一目标矩阵和第二目标矩阵进行分块处理。下面描述本申请实施例对第一目标矩阵和第二目标矩阵进行分块处理的过程。
因此,参照图2,获取第一初始矩阵和第二初始矩阵,包括步骤S201至步骤S203。
步骤S201:获取第一目标矩阵和第二目标矩阵。
步骤S202:获取并行计算硬件的最大矩阵乘法运算阶数。
步骤S203:基于最大矩阵乘法运算阶数,将第一目标矩阵进行划分得到至少一个第一初始矩阵,并将第二目标矩阵进行划分得到至少一个第二初始矩阵。
在一些实施例中,在一些实施例中,矩阵乘法运算装置响应于单精度矩阵乘法运算后,首先获取均为单精度矩阵的第一目标矩阵和第二目标矩阵。然后获取并行计算硬件中的最大矩阵乘法运算阶数,可以理解的是最大矩阵乘法运算阶数可以通过并行计算硬件的运行内存大小得到。
在一些实施例中,根据第一目标矩阵和第二目标矩阵的数据规模与并行计算硬件中的最大矩阵乘法运算阶数进行判断,若第一目标矩阵和/或第二目标矩阵的数据规模大于并行计算硬件中的最大矩阵乘法运算阶数,则将第一目标矩阵和第二目标矩阵进行分块处理如下。
参照图3,是本申请一实施例所提供的一种矩阵分块的结构示意图,其中矩阵为行数为M=32、列数为K=48的第一目标矩阵,/>为行数为K=48、列数为N=32的第二目标矩阵。当前并行运算硬件中最大矩阵乘法运算阶数为16×16阶时,可以如图3所示的将第一目标矩阵/>划分为2×3个行数为16、列数为16的第一初始矩阵Asingle;类似的,可以将第二目标矩阵/>为划分为3×2个行数为16、列数为16的第二初始矩阵Bsingle。
步骤S102:基于单精度数据类型进行半精度处理,得到第一初始矩阵的第一半精度矩阵,以及第二初始矩阵的第二半精度矩阵。
在一些实施例中,存在由于受到部分并行计算硬件的限制,矩阵乘法运算装置仅支持半精度矩阵的乘法运算,因此需要基于第一初始矩阵Asingle和第二初始矩阵Bsingle的单精度数据类型,对第一初始矩阵Asingle和第二初始矩阵Bsingle进行半精度处理,得到第一初始矩阵Asingle的第一半精度矩阵Ahalf,以及第二初始矩阵Bsingle的第二半精度矩阵Bhalf,以便于后续矩阵乘法运算装置根据第一半精度矩阵Ahalf和第二半精度矩阵进行矩阵乘法运算Bhalf。
在一些实施例中,将第一初始矩阵和第二初始矩阵转化为第一半精度矩阵和第二半精度矩阵之后,由于半精度浮点数数据无法完全表示单精度浮点数数据,即单精度数据(FP32)输入转换成半精度数据(FP16)时,因为尾数部分不能完全表示,从而会引入数据截断误差。因此,此时直接将第一半精度矩阵和第二半精度矩阵进行乘法运算后的结构作为第一初始矩阵和第二初始矩阵的结果会导致精准度较低。为了解释上述的数据截断误差并同时解释本申请,下面参照图4对本申请所提供的方法进一步介绍。
参照图4,是本申请实施例所提供的一种浮点数数据结构示意图。其中,第一初始矩阵Asingle是单精度矩阵,因此对于其中每个元素数据而言,都存在32位数据,其中1位用于符号位,8位用于指数,23位用于尾数;此外,第一半精度矩阵Ahalf是半精度矩阵,因此对于其中每个元素数据而言,都存在16位数据,其中1位用于符号位,5位用于指数,10位用于尾数。因此第一半精度矩阵Ahalf无法完全存放第一初始矩阵Asingle的所有尾数数据,即第一半精度矩阵Ahalf仅能存放第一初始矩阵Asingle的第一尾数部分l1,从而不可避免的导致数据截断误差。因此,在本申请实施例中,将引入第一差值矩阵RA-half,目的是用于存放第一初始矩阵Asingle的剩余的第二尾数部分l2。可以理解的,由于第一差值矩阵也是半精度矩阵,因此,其尾数部分也能存放10位数据。此外,再考虑到由于IEEE-754浮点数规则中的隐藏尾数位,因此第一差值矩阵实际上保存的是第二尾数部分l2中不为0的尾数部分的后十个尾数。因此,从理论上看,针对于最差的情况,即第二尾数部分l2中第一个数据不为0,此时第一半精度矩阵和第一差值矩阵可存放的尾数部分数据达到21位,已经很接近第一初始矩阵的23位尾数数据部分。基于此,可以有效的解决第一初始矩阵和第二初始矩阵转化为第一半精度矩阵和第二半精度矩阵之后,存在的数据截断误差情况。
因此,利用第一差值矩阵保存第一初始矩阵转化到第一半精度矩阵后的误差,以及利用第二差值矩阵保存第二初始矩阵转化到第二半精度矩阵后的误差,从而在第一半精度矩阵和第二半精度矩阵的乘法运算中增加误差补偿项以进行相应的半精度乘法运算,进而在仅支持半精度乘法运算的硬件设备上得到一个精准度较高的单精度乘法运算结果。
步骤S103:基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵。
在一些实施例中,为了解决第一初始矩阵和第二初始矩阵转化为第一半精度矩阵和第二半精度矩阵之后,存在的数据截断误差情况,矩阵乘法运算装置将基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵。可以理解的是,依旧由于受到部分并行计算硬件的限制,矩阵乘法运算装置仅支持半精度矩阵的乘法运算,因此,第一差值矩阵和第二差值矩阵均为半精度矩阵。
在一些实施例中,为了更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度,需要更加精准地生成第一差值矩阵和第二差值矩阵,下面描述本申请实施例提供的第一差值矩阵和第二差值矩阵的过程。
参照图5,基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,包括步骤S501至步骤S502。
步骤S501:将第一半精度矩阵进行单精度处理,得到第一中间矩阵。
步骤S502:对第一初始矩阵与第一中间矩阵的差值进行半精度处理,得到第一差值矩阵。
在一些实施例中,为了更加精准地生成第一差值矩阵RA-half,需要精准地确定第一半精度矩阵Ahalf和第一初始矩阵Asingle之间的差值,因此需要将第一半精度矩阵Ahalf进行单精度处理,以得到第一中间矩阵to_single(Ahalf)。然后根据第一初始矩阵Ahalf与第一中间矩阵to_single(Ahalf)的差值Ahalf-to_single(Ahalf)进行半精度处理,以得到精准度较高的第一差值矩阵为:
RA-half=to_half(Ahalf-to_single(Ahalf)) (1)
在一些实施例中,与第一差值矩阵类似的,为了更加精准地生成第二差值矩阵RB-half,需要精准地确定第二半精度矩阵Bhalf和第二初始矩阵Bsingle之间的差值,因此需要将第二半精度矩阵Bhalf进行单精度处理,以得到第二中间矩阵to_single(Bhalf)。然后根据第二初始矩阵Bhalf与第二中间矩阵to_single(Bhalf)的差值Bhalf-to_single(Bhalf)进行半精度处理,以得到精准度较高的第二差值矩阵为:
RB-half=to_half(Bhalf-to_single(Bhalf)) (2)
步骤S104:累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,并将第一单精度目标矩阵作为第一初始矩阵和第二初始矩阵进行矩阵乘法运算的结果。
在一些实施例中,在获取第一差值矩阵和第二差值矩阵之后,为了更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度,第一初始矩阵和第二初始矩阵的乘法运算可以进一步地转化为:
可以理解的是公式(3)中包括了第一半精度矩阵和第二半精度矩阵的乘积AhalfBhalf,也包括了补偿项AhalfRB-half+BhalfRA-half+RA-halfRB-half。
在一些实施例中,考虑到第一差值矩阵RA-half是用于存放第一初始矩阵Asingle第一半精度矩阵Ahalf之间的差值,因此与第一半精度矩阵Ahalf相比,第一差值矩阵RA-half的数值将比较小;类似的考虑到第二差值矩阵RB-half是用于存放第二初始矩阵Bsingle第二半精度矩阵Bhalf之间的差值,因此与第二半精度矩阵Bhalf相比,第二差值矩阵RB-half的数值将比较小。基于此,对于公式(3)而言,其中第一差值矩阵和第二差值矩阵的乘积RA-halfRB-half与其他项相比很小,因此,在本申请实施例中为了提高并行计算硬件中矩阵乘法运算的处理方法的处理效率,可以将公式(3)中的第一差值矩阵和第二差值矩阵的乘积RA-halfRB-half作为冗余项进行忽略。基于此,第一初始矩阵和第二初始矩阵进行矩阵乘法运算的结果第一单精度目标矩阵,可以通过累加第一半精度矩阵Ahalf和第二半精度矩阵Bhalf的乘积、第一半精度矩阵Ahalf和第二差值矩阵RB-half的乘积以及第二半精度矩阵Ahalf和第一差值矩阵RA-half的乘积所得到:
在一些实施例中,针对一些相比起处理效率,更加注重单精度矩阵乘法运算的应用场景而言,因此,为了更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度,仍需考虑上公式(3)中的第一差值矩阵和第二差值矩阵的乘积RA- halfRB-half(即冗余项)。
因此,参照图6,累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,包括步骤S601至步骤S603。
步骤S601:累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一加成项。
步骤S602:根据第一差值矩阵和第二差值矩阵的乘积,得到第二加成项。
步骤S603:累加第一加成项和第二加成项,得到第一单精度目标矩阵。
在一些实施例中,为了更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度,基于公式(3),累加第一半精度矩阵和第二半精度矩阵的乘积AhalfBhalf、第一半精度矩阵和第二差值矩阵的乘积AhalfRB-half以及第二半精度矩阵和第一差值矩阵的乘积BhalfRA-half,得到第一加成项如下表示:
Csingle_1=AhalfBhalf+AhalfRB-half+BhalfRA-half (5)
再根据第一差值矩阵和第二差值矩阵的乘积RA-halfRB-half,得到第二加成项如下表示:
Csingle_2=RA-halfRB-half (6)
累加第一加成项Csingle_1和第二加成项Csingle_2,得到第一单精度目标矩阵如下:
在一些实施例中,在IEEE-754标准中,如果两个浮点数数量级相差太大,当两个浮点数进行加法运算时,较小的浮点数可能被忽略掉,即为“浮点数下溢”现象。以尾数为23位的F32为例,=8388608,长度是7,意味着FP32最多能表示7位有效数字(小数点后的位数),第7位不一定能表示所有,但是第6位一定是有效的。假设a=112345.1,b=0.00001,数学上会有a+b=112345.10001,编程计算的结果却是a+b=112345.101562,出现了较小浮点数被部分忽略的情况;出现这种结果是因为112345.10001转换为IEEE-754中单精度浮点数要先转成1.1234510001,由于小数点后的有效位数最多是7位,因此1.1234510001从小数点第8就出现了不准确的情况。此外,如果两个数比较接近,当两个数进行相减时,会导致这两个数相减的结果很小,如果结果太小以至于无法表示,则将这个较小的结果舍入为零。
针对于公式(7)进行分析,一方面,如果第一初始矩阵Asingle和第一半精度矩阵Ahalf很接近,会导致第一差值矩阵RA-half很小,间接会导致公式(7)中的BhalfRA-half很小;同理的是如果第二初始矩阵Bsingle和第二半精度矩阵Bhalf很接近,会导致第二差值矩阵RB-half很小,间接会导致公式(7)中的AhalfRB-half很小;另一方面,使用第一差值矩阵RA-half额外记录第一初始矩阵Asingle的剩余的第二尾数部分l2的数据量要比第二半精度矩阵Bhalf的数据量小10个数量级以上,这会进一步导致进行BhalfRA-half运算时,有可能出现浮点数下溢问题;同理的是使用第二差值矩阵RB-half额外记录第二初始矩阵Bsingle的剩余的第二尾数部分lB-2的数据量要比第一半精度矩阵Ahalf的数据量小10个数量级以上,这会进一步导致进行AhalfRB-half运算时,也有可能出现浮点数下溢问题。
因此,为了解决浮点数下溢问题,以使得更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度,下面需要进一步对第一差值矩阵RA-half和第二差值矩阵RB-half进行相应的处理。
因此,参照图7,累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,包括步骤S701至步骤S705。
步骤S701:获取根据尾数的位数确定的预设乘值。
步骤S702:利用预设乘值乘以第一差值矩阵,得到第一放大矩阵,并利用预设乘值乘以第二差值矩阵,得到第二放大矩阵。
步骤S703:累加第一半精度矩阵和第二放大矩阵的乘积、第二半精度矩阵和第一放大矩阵的乘积,得到中间放大矩阵。
步骤S704:将中间放大矩阵除以预设乘值,得到中间缩小矩阵。
步骤S705:累加第一半精度矩阵和第二半精度矩阵的乘积以及中间缩小矩阵,得到第一单精度目标矩阵。
在一些实施例中,由于第一半精度矩阵Ahalf用于存放第一初始矩阵Asingle的第一尾数部分l1,第一差值矩阵RA-half用于存放第一初始矩阵Asingle的剩余的第二尾数部分l2,以及由于IEEE-754浮点数规则中的隐藏尾数位。因此,第一初始矩阵Asingle的数据值和第一差值矩阵RA-half的数据值实际至少相差11个数量级。综上理由所述,根据半精度数据结构的尾数位数确定预设乘值为211。然后利用预设乘值211乘以第一差值矩阵RA-half,得到第一放大矩阵为:
211RA-half=to_half(Ahalf-to_single(Ahalf)×211) (8)
此时,第一放大矩阵211RA-half的数据值和第二半精度矩阵Bhalf的数据值的数量级相似,可以有效的防止Bhalf(211RA-half)出现浮点数下溢问题。类似地,利用预设乘值乘以第二差值矩阵,得到第二放大矩阵为:
211RB-half=to_half(Bhalf-to_single(Bhalf)×211) (9)
此时,第二放大矩阵211RB-half的数据值和第一半精度矩阵Ahalf的数据值的数量级相似,可以有效的防止Ahalf(211RB-half)出现浮点数下溢问题。接下来基于公式(7)的中间项AhalfRB-half+BhalfRA-half,进一步累加第一半精度矩阵和第二放大矩阵的乘积、第二半精度矩阵和第一放大矩阵的乘积,得到中间放大矩阵为:
由于与公式(4)对比,中间放大矩阵同时被放大预设乘值211倍数,因此在解决完浮点数下溢问题后需要将中间放大矩阵除以预设乘值211,得到中间缩小矩阵为:
(Ahalf(211RB-half)+Bhalf(211RA-half))/211 (11)
此时,基于公式(4),累加第一半精度矩阵和第二半精度矩阵的乘积以及中间缩小矩阵,得到第一单精度目标矩阵为:
Csingle≈AhalfBhalf+(Ahalf(211RB-half)+Bhalf(211RA-half))/211 (12)
此时可以有效地避免由于第一差值矩阵RA-half和第二半精度矩阵Bhalf的数据值差距过大,使得AhalfRB-half运算出现浮点数下溢情况;同时也有效地避免了避免由于第二差值矩阵RB-half和第一半精度矩阵Ahalf的数据值差距过大,使得BhalfRA-half运算出现浮点数下溢情况,从而更加有效地在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度。
在一些实施例中,当第一目标矩阵和第二目标矩阵的数据规模较大时,需要将第一目标矩阵被划分为多个第一初始矩阵,以及将第二目标矩阵被划分为多个第二初始矩阵时,此时第一目标矩阵和第二目标矩阵的矩阵乘法运算过程参照图3所示。首先根据第一初始矩阵在第一目标矩阵中的分块位置在第二目标矩阵中选取第二初始矩阵,并生成多个矩阵组为:
其中,k表示第一初始矩阵和第二初始矩阵的数量。然后将第一初始矩阵和第二初始矩阵进行矩阵运算后可以得到多个第一单精度目标矩阵Csingle;最后累加所有第一单精度目标矩阵Csingle可以得到第一目标矩阵和第二目标矩阵进行乘法运算后的第二单精度目标矩阵此时,第二单精度目标矩阵可以由下式得到:
此时结合公式(12)和公式(14),在第一目标矩阵被划分为多个第一初始矩阵,以及第二目标矩阵被划分为多个第二初始矩阵时,参照图8所示,是本申请实施例提供的一种矩阵分块乘法运算的流程示意图,其中,对于每项矩阵序列中的第一初始矩阵和第二初始矩阵按照公式(12)依次进行运算得到第一单精度矩阵Csingle,然后累加第一单精度矩阵Csingle得到第二单精度矩阵Csingle。
可以理解的是,若为了进一步提高矩阵乘法运算的精准度,图8中所示的流程应加上冗余项RA-halfRB-half,即如图9所示。图9是本申请一实施例所提供的一种矩阵分块乘法运算的又一流程示意图,其中相较于图8,还需执行多项冗余项RA-halfRB-half的乘法运算。
在一些实施例中,当第一目标矩阵和第二目标矩阵的数据规模较小,即出现并行运算硬件中最大矩阵乘法运算阶数比第一目标矩阵和第二目标矩阵的数据规模都更大时,进一步解释为并行运算硬件中可以立即处理第一目标矩阵和第二目标矩阵的乘法运算。此时直接将第一目标矩阵作为第一初始矩阵,也将第二目标矩阵作为第二初始矩阵,可以理解的是,此时第一单精度目标矩阵Csingle等于第二单精度目标矩阵Csingle。
在一些实施例中,当使用如图8所示的运算流程的时候,仍然存在由于不同第一单精度矩阵Csingle之间数量级差距较大导致的浮点数下溢情况。此外,考虑到由于公式(13)中AhalfBhalf的数据值与(Ahalf(211RB-half)+Bhalf(211RA-half))/211的数据值存在较大的数量级差距,因此在并行计算硬件中对于这两项需要划分不同大小的存储缓存空间,若依旧使用如图8所示的运算流程的话,在执行第一目标矩阵和第二目标矩阵的矩阵乘法运算时,并行计算硬件需要多次划分不同的存储缓存空间依次存放的数据与的数据,这将导致并行计算硬件中执行矩阵乘法运算的工作效率受到限制。
因此,为了提高单精度矩阵乘法运算的精准度,同时也为了提高并行计算硬件中执行矩阵乘法运算的工作效率,需要对如图8所示运算流程进一步优化如下。参照图10,本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法,还包括下述步骤S1001至步骤S1003。
步骤S1001:根据第一初始矩阵在第一目标矩阵中的分块位置在第二目标矩阵中选取第二初始矩阵,并生成多个矩阵序列。
步骤S1002:将每个矩阵组中第一半精度矩阵和第二半精度矩阵的乘积进行累加,得到矩阵序列的第一累积矩阵,将每个矩阵组中第一半精度矩阵和第二差值矩阵的乘积和第二半精度矩阵和第二差值矩阵的乘积的和进行累加,得到矩阵序列的第二累积矩阵。
步骤S1003:根据第一累积矩阵和第二累积矩阵,得第二单精度目标矩阵,并将第二单精度目标矩阵作为第一目标矩阵和第二目标矩阵进行矩阵乘法运算的结果。
在一些实施例中,如同上述的操作,当第一目标矩阵被划分为多个第一初始矩阵,以及第二目标矩阵被划分为多个第二初始矩阵时,此时参照公式(1)与图3所示,根据第一初始矩阵在第一目标矩阵中的分块位置在第二目标矩阵中选取第二初始矩阵,并生成多个矩阵序列,其中每个矩阵序列中包括多个矩阵组,每个矩阵组包括第一初始矩阵和该第一初始矩阵对应的第二初始矩阵,其中多个矩阵组如公式(14)所示。
接下来,参照图11,是本申请一实施例提供的一种矩阵分块乘法运算的改进流程示意图。其中,将每个矩阵组中第一半精度矩阵和第二半精度矩阵的乘积进行累加,得到矩阵序列的第一累积矩阵,如下所示:
接下来将每个矩阵组中第一半精度矩阵和第二差值矩阵的乘积和将每个矩阵组中第二半精度矩阵和第二差值矩阵的乘积的和进行累加,得到矩阵序列的第二累积矩阵如下所示:
然后再将第一累积矩阵和第二累积矩阵进行累加得到第二单精度目标矩阵Csingle。从而有效的避免由于不同第一单精度矩阵Csingle之间数量级差距较大导致的浮点数下溢情况,从而提高单精度矩阵乘法运算的精准度。同时并行计算硬件在执行第一目标矩阵和第二目标矩阵的矩阵乘法运算中仅需划分两次不同大小的存储缓存空间即可,此外,还可以更好地利用并行计算硬件的并行计算能力,即可以同时计算多项的运算和多项/>的运算,从而有效地提高单精度矩阵乘法运算的工作效率。
可以理解的是,若为了进一步提高矩阵乘法运算的精准度,图11中所示的流程应加上冗余项RA-halfRB-half,即如图12所示。图12是本申请一实施例所提供的一种矩阵分块乘法运算的又一改进流程示意图,其中相较于图11,还需执行多项冗余项RA-halfRB-half的乘法运算。
在一些实施例中,为了提高并行计算硬件中矩阵乘法运算的处理方法的可靠性,还需要增加检测对比环节。因此,参照图11,并行计算硬件中矩阵乘法运算的处理方法,还包括下述步骤S1301至步骤S1304。
步骤S1301:基于单精度数据进行双精度处理,得到第一目标矩阵的第一双精度矩阵、第二目标矩阵的第二双精度矩阵以及第二单精度目标矩阵的检验矩阵。
步骤S1302:将第一双精度矩阵和第二双精度矩阵进行乘法运算得到评估矩阵。
步骤S1303:基于检验矩阵和评估矩阵得到检验结果。
步骤S1304:将检验结果与预设检验阈值进行对比,并基于对比结果输出第二单精度目标矩阵。
在一些实施例中,为了提高并行计算硬件中矩阵乘法运算的处理方法的可靠性,也为了验证通过使用本申请提供的并行计算硬件中矩阵乘法运算的处理方法所得到的第二单精度目标矩阵Csingle的精准度。利用双精度数据结构的高精度,矩阵乘法运算装置在得到第二单精度目标矩阵Csingle之后,将基于第二单精度目标矩阵Csingle的单精度数据结构,对第二单精度目标矩阵Csingle进行双精度处理,得到第二单精度目标矩阵Csingle的检验矩阵to_double(Csingle);同时;以及基于第一目标矩阵Asingle的单精度数据结构,对第一目标矩阵Asingle进行双精度处理,得到第一目标矩阵Asingle的第一双精度矩阵to_double(Asingle),并基于第二目标矩阵Bsingle的单精度数据结构,对第二目标矩阵Bsingle进行双精度处理,得到第二目标矩阵Bsingle的第二双精度矩阵to_double(Bsingle),然后将第一双精度矩阵和第二双精度矩阵进行双精度矩阵乘法运算,得到评估矩阵to_double(Asingle)·to_double(Bsingle)。接下来基于检验矩阵和评估矩阵进行检验如下:
其中,V是用于存储检验矩阵和评估矩阵之间的相对残差,用于表征通过使用本实施例提供的并行计算硬件中矩阵乘法运算的处理方法,与直接进行第一目标矩阵和第二目标矩阵的矩阵乘法运算之间的实际误差;||·||F是矩阵的欧几里德范数,可以理解的是矩阵的欧几里德范数是指矩阵的最大奇异值,也称为矩阵的2-范数,其用于评估矩阵的条件数,即矩阵的稳定性和数值求解的可靠性。
当相对残差V小于预设检验阈值时,可以判定本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法是有效的,因此可以将第二单精度目标矩阵作为第一目标矩阵和第二目标矩阵的矩阵乘法运算的结果并输出。在本申请实施例中不对预设检验阈值的设置做任何的约束,即可以是人为预先设置的,也可以是矩阵乘法运算装置根据历史运算规律所得到的。
可以理解的是,步骤S1301至步骤S1304所示的检验步骤是为了检验本申请实施例所提供的并行计算硬件中矩阵乘法运算的处理方法的可靠性,而本申请实施例所提供的并行计算硬件中矩阵乘法运算的处理方法是主要用于针对在仅支持半精度矩阵乘法运算的并行计算硬件中,对两个单精度矩阵(即第一目标矩阵和第二目标矩阵)的矩阵乘法运算,因此,在这种情况下,如步骤S1301至步骤S1304所示的检验步骤将放置于其他可支持双精度矩阵乘法运算的并行计算硬件中执行,并对本申请实施例所提供的并行计算硬件中矩阵乘法运算的处理方法无任何影响。
在一些实例中,本申请所提供并行计算硬件中矩阵乘法运算的处理方法可以应用于昇腾AI处理器,昇腾AI处理器是一个适应特定领域的芯片,昇腾AI处理的核心是人工智能芯片。如图14所示是昇腾AI处理器的芯片结构示意图。昇腾AI处理器提供了3种基础计算单元:矩阵计算单元(CUBE)、向量计算单元(Vector)和标量计算单元(Scalar),3种计算单元会形成3条针对相应计算的独立流水线,完成相应的计算。其中,L1缓冲区用于存储第一目标矩阵和第二目标矩阵,然后在缓存转换单元中进行矩阵转换操作并保存,其中转换操作包括将第一目标矩阵划分为多个第一初始矩阵,并将第一初始矩阵转换为第一半精度矩阵,以及生成第一差值矩阵和第一放大矩阵,类似的,将第二目标矩阵划分为多个第二初始矩阵,并将第二初始矩阵转换为第二半精度矩阵,以及生成第二差值矩阵和第二放大矩阵。缓冲区L0A和缓冲区L0B用于存储即将进行矩阵相乘运算的矩阵。矩阵计算单元用于接收缓冲区L0A和缓冲区L0B的矩阵执行矩阵相乘运算操作,结合图12所示的执行流程图,其中矩阵相乘运算操作包括: 以及/>累加器用于将矩阵计算单元所得到的数据进行累加,即如图12所示的加法操作。缓冲区L0C用于存储经过累加器计算所得到的数据,最终得到本方案所需的第二单精度目标矩阵Csingle。
在昇腾AI处理器的人工智能芯片中中,统一缓冲区是其内部的一个重要组成部分,用于存储不同计算单元之间共享的数据。系统控制模块是昇腾芯片中的一个模块,负责控制芯片的整体运行和调度。它包含了各个功能模块之间的协调和管理,以及处理外部输入和输出等任务。总线接口模块是用于连接昇腾芯片与其他外部设备的接口模块。它提供了与主机系统或其他外部设备进行数据传输和通信的接口,实现了与外部系统的交互。指令缓存是昇腾芯片中用于存储指令的高速缓存。它用于提高指令的读取速度,减少指令访问延迟,提高指令的执行效率。标量指令处理队列是昇腾芯片中的一个模块,用于处理标量指令。标量指令是一种操作单个数据的指令,例如加法、乘法等。标量指令处理队列负责接收和解码标量指令,并将其分发给相应的功能单元进行执行。指令分发模块是昇腾芯片中的一个模块,用于将解码后的指令分发给相应的功能单元进行执行。它负责将指令根据其类型和操作数分发给适当的功能单元,实现指令的并行执行和高效利用计算资源。综上所述,昇腾芯片中的统一缓冲区用于存储不同计算单元之间共享的数据,系统控制模块负责整体调度和管理,总线接口模块实现与外部设备的通信,指令缓存提高指令读取速度,标量指令处理队列处理标量指令,指令分发模块将解码后的指令分发给相应的功能单元进行执行。这些模块共同组成了昇腾芯片中的一部分功能。CUBE队列是昇腾芯片中的一个硬件模块,用于管理和调度任务的执行。CUBE队列能够并行执行多个任务,并按照一定的调度策略进行任务切换和调度,以提高计算效率。Vector队列是昇腾芯片中的另一个硬件模块,用于支持向量计算。Vector队列能够高效地执行向量运算,通过并行处理多个向量数据,提高向量计算的效率和性能。存储转换队列是昇腾芯片中的一个硬件模块,用于处理数据的存储和转换。存储转换队列负责管理不同存储介质之间的数据传输和转换,如内存和外部存储设备之间的数据读写。时间同步模块是昇腾芯片中的一个硬件模块,用于保证多个昇腾芯片之间的时间同步。时间同步模块通过精确的时钟同步机制,确保多个昇腾芯片在执行任务时具有一致的时间基准,以支持分布式计算和协同工作。向量计算单元是昇腾芯片中的一个硬件模块,用于执行向量计算。向量计算单元能够高效地执行大规模向量数据的运算,提供并行计算的能力,用于加速向量计算密集型的任务。标量计算单元是昇腾芯片中的一个硬件模块,用于执行标量计算。标量计算单元负责处理单个数据元素的计算任务,包括加减乘除、逻辑运算等,用于支持标量计算密集型的任务。配置端口是昇腾芯片中的一个接口,用于配置和管理芯片的各种参数和设置。配置端口提供了与芯片内部控制逻辑的通信通道,用于读取和写入芯片的配置寄存器,以实现对芯片功能和性能的灵活配置。总线是昇腾芯片中的一个通信通道,用于连接芯片内部的各个模块和外部设备。总线负责传输数据和控制信号,实现芯片内部各个模块之间的通信和协作。L2缓存区是昇腾芯片中的一个高速缓存存储区域,位于芯片核心和内存之间。L2缓存区用于存储频繁访问的数据和指令,提供快速的数据读写和访问速度,以加快计算和数据处理的速度。DDR(Double Data Rate)是昇腾芯片中的一种内存类型,也是计算机系统中常见的内存类型之一。DDR内存采用双倍数据传输速率技术,能够在一个时钟周期内传输两倍的数据量,提供更高的内存带宽和更快的数据访问速度,用于存储和读写大规模的数据。
可以理解的是,本申请的主要改进点的执行步骤主要在于昇腾AI处理器的人工智能芯片中的L1缓冲区、缓存转换单元、缓冲区L0A、缓冲区L0B、缓冲区L0C、矩阵计算单元以及累加器中。
在一些实施例中,本申请所提供并行计算硬件中矩阵乘法运算的处理方法可以应用于普通的并行计算硬件中进行分块执行处理,并行计算硬件通常包括多个人工智能芯片,因此可以将每一个分块的相乘运算利用一个人工智能芯片进行并行处理。例如在图12所示的执行流程中,利用第一个人工智能芯片执行i=1时,分块矩阵的乘法运算,以此类推每一个块矩阵乘法均可以选用对应的人工智能芯片进行处理,即将 以及/>并行执行,然后最后再将得到的数据加起来,从而提高执行矩阵乘法运算的工作效率。下面以昇腾AI处理器为例,昇腾AI处理器支持32个人工智能芯片,理论上可以同时处理32个分块的矩阵乘法运算。下面在某一昇腾AI处理器中选取四个人工智能芯片进行示例说明,此时参照图15所示进一步进行相关描述。图15是本申请一实施例提供的分块并行运算的执行示意图。其中将第一目标矩阵和第二目标矩阵分成4块,计算好每个人工智能芯片计算的数据长度和分块的索引值,然后并行的由4个人工智能芯片进行计算,最后将每个人工智能芯片的计算结果进行汇总,通过多人工智能芯片并行计算达到加速矩阵计算时间的效果。相比起使用一个人工智能芯片的情况,由4个人工智能芯片进行并行计算,理论上可以提高四倍工作效率。
在一些实施例中,从图14中可以看出在昇腾AI处理器的人工智能芯片中核进行矩阵计算时,要求输入数据是要放在缓冲L0上的,输出最终要使用缓存单元UB的,同时主机侧申请的内存要通过Global Memory(GM)才能传递给昇CUBE核进行使用,因此要充分考虑数据搬运对计算性能的影响。
当分块后的数据量较小时,数据搬运就是影响性能的主要因素,为了充分利用昇腾AI处理器上只有256KB大小的高速率的内部缓存UB,一个分块内的计算就要多次在UB上申请不同的内存大小,这会导致UB上放数据分块的大小被限制,导致要将UB上的数据交换到临时的GM中存储,这样执行效率会降低。为了解决这个问题,可以将相同的计算模块化,即将α[k]和β[k]分开进行计算,这样就可以统一申请大小相同的UB,减少了UB的申请次数,同时也会减小GM和UB之间的数据搬运次数,提高了执行效率。
在一些实施例中,当参与矩阵乘的输入数据量特别大时,此时计算花费的时间超过了数据搬运的耗时,分块只能解决UB的大小限制问题,是无法解决耗时问题的,此时就要充分利用的昇腾AI的多核处理能力。举例:假设将对于测试矩阵(M,N,K),将K的计算放在多核上进行并行计算,这就涉及到多核计算完后针对同一个分块,要将所有核的计算结果进行累加,因此要提前将这个2个计算的中间结果分离存储。
昇腾AI处理器通过大规模的并行计算能力实现加速,利用毕昇C++语言工具通过并行运算工作组的概念来表达向设备的计算核心的映射,每个并行运算工作组都会映射到一个确定的核心上,每个并行运算工作组有相同的指令代码,但是不同的标识id,类似于一种SPMD(Single Program Multiple Data)的技术。
SPMD是一种并行计算模型,它是指多个处理器或计算单元同时执行相同的程序,但对应不同的数据。在SPMD模型中,不同的处理器或计算单元拥有各自的数据集,并且独立地执行相同的指令序列来处理这些数据。SPMD模型是一种基于任务并行的模型,它适用于许多并行计算应用,如科学计算、图像处理和数据分析等。在SPMD模型中,程序员需要将计算问题划分为多个独立的任务,并为每个任务分配不同的数据集。然后,每个处理器或计算单元将并行地执行相同的程序,但对应不同的数据集。
参考图16所示,是本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法的精准度对比仿真图。为了进一步验证通过采用本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法所得到的结果的可靠性,本实施例将NPU验证结果(本专利方案),即本申请提供的矩阵乘法运算处理方案与其他两个方案进行对比,分别为:1、NPU验证结果(没有优化方案):即如相关技术中,直接将第一目标矩阵和第二目标矩阵划分为多个第一初始矩阵和多个第二初始矩阵,然后将划分为多个第一初始矩阵和多个第二初始矩阵转化为对应的多个半精度矩阵然后进行半精度矩阵乘法运算所得到的结果的方案;2、OpenBLAS库的sgemm验证结果方案:即如相关技术中,直接将第一目标矩阵和第二目标矩阵利用OpenBLAS库的sgemm进行单精度矩阵乘法运算所得到的结果的方案。可以理解的是OpenBLAS库是一个开源的基础线性代数子程序(BLAS)库,用于高性能数值计算。BLAS是一套用于执行常见的线性代数运算(如矩阵乘法、向量加法等)的标准接口和函数集合。此外,在OpenBLAS库中,sgemm是一个用于执行矩阵乘法的函数。
图16中的横坐标是指输入矩阵的k的大小(即第一目标矩阵的列数K和第二目标矩阵的行数K的数量大小),纵坐标是指精准度检验差值。可以明显的得到,与NPU验证结果(没有优化方案)相比,通过NPU验证结果(本专利方案)所得到的第二单精度目标矩阵Csingle的相对残差V很低,且通过采用NPU验证结果(本专利方案)所得到的第二单精度目标矩阵Csingle的精准度很接近OpenBLAS库的sgemm验证结果方案,从而验证通过采用本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法所得到的结果的可靠性。
参考图17和图18所示,是本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法的工作效率对比仿真图和并行计算硬件中矩阵乘法运算的处理方法的工作效率的仿真数据表图。为了进一步验证通过采用本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法所提高的工作效率的可靠性,本实施例将执行本方案时所采用的优化计算执行流程(即如图11所示的执行流程,即图17中NPU验证结果(本专利方案))的运行时间,和OpenBLAS库的sgemm验证结果方案的运行时间进行了仿真对比。图17中的横坐标是指输入矩阵的k的大小(即第一目标矩阵的列数K和第二目标矩阵的行数K的数量大小),纵坐标是指计算时延。可以明显的看出,随着第一目标矩阵的列数K和第二目标矩阵的行数K的数量的提升,OpenBLAS库的sgemm验证结果方案的运行时间将有很大幅度的上升,而NPU验证结果(本专利方案)(即如图11所示的执行流程)的运行时间虽然有上升,但其上升幅度很小。此外结合图18的加速比数据,可以明显得到当输入矩阵的k的大小(即第一目标矩阵的列数K和第二目标矩阵的行数K的数量大小)达到211以上时,NPU验证结果(本专利方案)的运行时间比OpenBLAS库的sgemm验证结果方案的运行时间少很多。可以理解的是,加速度数据为OpenBLAS库的sgemm验证结果方案的运行时间与NPU验证结果(本专利方案)的运行时间的比值。从而验证通过采用本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法中所采用的优化计算执行流程(即如图11所示的执行流程)所提高的工作效率的可靠性。
图19是本申请一实施例提供的并行计算硬件中矩阵乘法运算的处理方法的又一精准度对比仿真图。为了进一步验证通过采用本申请实施例提供的并行计算硬件中矩阵乘法运算的处理方法所提高的工作效率的可靠性。本实施例将如图11和图12所示的两种方案,即有冗余项方案和无冗余项/>方案,所得到的精准度(即相对残差)进行仿真对比。图19中的横坐标为输入矩阵的k的大小(即第一目标矩阵的列数K和第二目标矩阵的行数K的数量大小),纵坐标为相对残差。可以明显看到,当两种方案的相对残差的最大差值在10-8左右,即两种方案所得到的结果的精准度基本一致。因此当采用如图11所示的执行流程方案时,可以有效的降低四分之一的计算量,从而可以减少四分之一的缓存使用量,进一步提高矩阵乘法运算的工作效率。
本申请实施例提供了一种并行计算硬件中矩阵乘法运算的处理方法,能够在使用支持半精度计算的计算芯片中提高单精度矩阵乘法运算的精准度。通过将均为单精度矩阵的第一目标矩阵和第二目标矩阵划分为至少一个第一初始矩阵和至少一个第二初始矩阵,并得到多个对应的矩阵组;然后基于单精度数据类型进行半精度处理,得到每个矩阵组中第一初始矩阵的第一半精度矩阵和第二初始矩阵的第二半精度矩阵;再基于每个矩阵组中第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵;然后将第一差值矩阵和第二差值矩阵乘以预设乘值,从而得到第一放大矩阵和第二放大矩阵;接下来累加第一半精度矩阵和第二放大矩阵的乘积、第二半精度矩阵和第一放大矩阵的乘积,得到每个矩阵组的中间放大矩阵,并累加所有矩阵组的中间放大矩阵得到第一累积矩阵,同时累积所有矩阵组的第一半精度矩阵和第二半精度矩阵的乘积得到第二累积矩阵,并将第一累积矩阵和第二累积矩阵相加得到第二单精度目标矩阵,并将第二单精度目标矩阵作为第一目标矩阵和第二目标矩阵进行矩阵乘法运算的结果。
本申请实施例针对在使用支持半精度计算的计算芯片进行单精度矩阵乘法运算的过程,首先基于并行计算硬件的硬件参数,将第一目标矩阵和第二目标矩阵进行划分得到多个第一初始矩阵和第二初始矩阵,并将第一初始矩阵和第二初始矩阵进行半精度处理得到第一半精度矩阵和第二半精度矩阵,以便于后续并行计算硬件的执行计算。然后利用第一差值矩阵保存第一初始矩阵转化到第一半精度矩阵后的误差,以及利用第二差值矩阵保存第二初始矩阵转化到第二半精度矩阵后的误差,从而在第一半精度矩阵和第二半精度矩阵的乘法运算中增加误差补偿项以进行相应的半精度乘法运算,从而有效地提高了对单精度矩阵进行半精度乘法运算的精准度。再利用预设乘值乘以第一差值矩阵和第二差值矩阵后再进行相应的运算,从而可以解决浮点数下溢问题,以提高矩阵乘法运算的精准度。最后将每个矩阵组的各项乘法运算拆开,以调整运算顺序,从而进一步解决浮点数下溢问题以及提高矩阵乘法运算装置的工作效率。进而有效的在仅支持半精度乘法运算的硬件设备上得到一个精准度较高的单精度乘法运算结果,并提高乘法运算的工作效率。
本申请实施例还提供一种矩阵乘法运算装置,可以实现上述并行计算硬件中矩阵乘法运算的处理方法,参照图20,该装置2000包括:
获取模块2010,用于获取第一初始矩阵和第二初始矩阵;其中,第一初始矩阵和第二初始矩阵均为单精度矩阵;
半精度转换模块2020,用于基于单精度数据类型进行半精度处理,得到第一初始矩阵的第一半精度矩阵,以及第二初始矩阵的第二半精度矩阵;
差值处理模块2030,用于基于第一初始矩阵和第一半精度矩阵的差值得到第一差值矩阵,以及基于第二初始矩阵和第二半精度矩阵的差值得到第二差值矩阵;其中,第一差值矩阵和第二差值矩阵均为半精度矩阵;
计算模块2040,用于累加第一半精度矩阵和第二半精度矩阵的乘积、第一半精度矩阵和第二差值矩阵的乘积以及第二半精度矩阵和第一差值矩阵的乘积,得到第一单精度目标矩阵,并将第一单精度目标矩阵作为第一初始矩阵和第二初始矩阵进行矩阵乘法运算的结果。
本实施例的矩阵乘法运算装置的具体实施方式与上述并行计算硬件中矩阵乘法运算的处理方法的具体实施方式基本一致,在此不再赘述。
本申请实施例还提供了一种电子设备,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在存储器中,处理器执行所述至少一个程序以实现本申请实施上述的并行计算硬件中矩阵乘法运算的处理方法。该电子设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,简称PDA)、车载电脑等任意智能终端。
请参阅图21,图21示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器2101,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器2102,可以采用ROM(ReadOnlyMemory,只读存储器)、静态存储设备、动态存储设备或者RAM(RandomAccessMemory,随机存取存储器)等形式实现。存储器2102可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器2102中,并由处理器2101来调用执行本申请实施例的并行计算硬件中矩阵乘法运算的处理方法;
输入/输出接口2103,用于实现信息输入及输出;
通信接口2104,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线2105,在设备的各个组件(例如处理器2101、存储器2102、输入/输出接口2103和通信接口2104)之间传输信息;
其中处理器2101、存储器2102、输入/输出接口2103和通信接口2104通过总线2105实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种存储介质,存储介质为计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述并行计算硬件中矩阵乘法运算的处理方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (10)
1.一种并行计算硬件中矩阵乘法运算的处理方法,其特征在于,包括:
获取第一初始矩阵和第二初始矩阵;其中,所述第一初始矩阵和所述第二初始矩阵均为单精度矩阵;
基于单精度数据类型进行半精度处理,得到所述第一初始矩阵的第一半精度矩阵,以及所述第二初始矩阵的第二半精度矩阵;
基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,以及基于所述第二初始矩阵和所述第二半精度矩阵的差值得到第二差值矩阵;其中,所述第一差值矩阵和所述第二差值矩阵均为半精度矩阵;
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,并将所述第一单精度目标矩阵作为所述第一初始矩阵和所述第二初始矩阵进行矩阵乘法运算的结果。
2.根据权利要求1所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,所述基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,包括:
将所述第一半精度矩阵进行单精度处理,得到第一中间矩阵;
对所述第一初始矩阵与所述第一中间矩阵的差值进行半精度处理,得到所述第一差值矩阵。
3.根据权利要求1所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,所述累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,包括:
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一加成项;
根据所述第一差值矩阵和所述第二差值矩阵的乘积,得到第二加成项;
累加所述第一加成项和所述第二加成项,得到所述第一单精度目标矩阵。
4.根据权利要求1所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,所述第一半精度矩阵中元素包括尾数;所述累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,还包括:
获取根据所述尾数的位数确定的预设乘值;
利用预设乘值乘以所述第一差值矩阵,得到第一放大矩阵,并利用所述预设乘值乘以所述第二差值矩阵,得到第二放大矩阵;
累加所述第一半精度矩阵和所述第二放大矩阵的乘积、所述第二半精度矩阵和所述第一放大矩阵的乘积,得到中间放大矩阵;
将所述中间放大矩阵除以所述预设乘值,得到中间缩小矩阵;
累加所述第一半精度矩阵和所述第二半精度矩阵的乘积以及所述中间缩小矩阵,得到所述第一单精度目标矩阵。
5.根据权利要求1所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,所述获取第一初始矩阵和第二初始矩阵,包括:
获取第一目标矩阵和第二目标矩阵;
获取所述并行计算硬件的最大矩阵乘法运算阶数;
基于所述最大矩阵乘法运算阶数,将所述第一目标矩阵进行划分得到至少一个第一初始矩阵,并将所述第二目标矩阵进行划分得到至少一个第二初始矩阵。
6.根据权利要求5所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,当所述第一初始矩阵和所述第二初始矩阵为多个时,所述方法还包括:
根据所述第一初始矩阵在所述第一目标矩阵中的分块位置在所述第二目标矩阵中选取所述第二初始矩阵,并生成多个矩阵序列;每个所述矩阵序列中包括多个所述矩阵组,每个所述矩阵组包括所述第一初始矩阵和所述第二初始矩阵;
将每个所述矩阵组中所述第一半精度矩阵和所述第二半精度矩阵的乘积进行累加,得到所述矩阵序列的第一累积矩阵,将每个所述矩阵组中所述第一半精度矩阵和所述第二差值矩阵的乘积和所述第二半精度矩阵和所述第二差值矩阵的乘积的和进行累加,得到所述矩阵序列的第二累积矩阵;
根据所述第一累积矩阵和所述第二累积矩阵,得第二单精度目标矩阵,并将所述第二单精度目标矩阵作为所述第一目标矩阵和所述第二目标矩阵进行矩阵乘法运算的结果。
7.根据权利要求6所述的并行计算硬件中矩阵乘法运算的处理方法,其特征在于,所述方法还包括:
基于单精度数据类型进行双精度处理,得到所述第一目标矩阵的第一双精度矩阵、所述第二目标矩阵的第二双精度矩阵以及所述第二单精度目标矩阵的检验矩阵;
将所述第一双精度矩阵和所述第二双精度矩阵进行乘法运算得到评估矩阵;
基于所述检验矩阵和所述评估矩阵得到检验结果;
将所述检验结果与预设检验阈值进行对比,并基于对比结果输出所述第二单精度目标矩阵。
8.一种矩阵乘法运算装置,其特征在于,所述装置包括:
获取模块,用于获取第一初始矩阵和第二初始矩阵;其中,所述第一初始矩阵和所述第二初始矩阵均为单精度矩阵;
半精度转换模块,用于基于单精度数据类型进行半精度处理,得到所述第一初始矩阵的第一半精度矩阵,以及所述第二初始矩阵的第二半精度矩阵;
差值处理模块,用于基于所述第一初始矩阵和所述第一半精度矩阵的差值得到第一差值矩阵,以及基于所述第二初始矩阵和所述第二半精度矩阵的差值得到第二差值矩阵;其中,所述第一差值矩阵和所述第二差值矩阵均为半精度矩阵;
计算模块,用于累加所述第一半精度矩阵和所述第二半精度矩阵的乘积、所述第一半精度矩阵和所述第二差值矩阵的乘积以及所述第二半精度矩阵和所述第一差值矩阵的乘积,得到第一单精度目标矩阵,并将所述第一单精度目标矩阵作为所述第一初始矩阵和所述第二初始矩阵进行矩阵乘法运算的结果。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的并行计算硬件中矩阵乘法运算的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的并行计算硬件中矩阵乘法运算的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311376164.XA CN117370722A (zh) | 2023-10-23 | 2023-10-23 | 并行计算硬件中矩阵乘法运算的处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311376164.XA CN117370722A (zh) | 2023-10-23 | 2023-10-23 | 并行计算硬件中矩阵乘法运算的处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117370722A true CN117370722A (zh) | 2024-01-09 |
Family
ID=89407349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311376164.XA Pending CN117370722A (zh) | 2023-10-23 | 2023-10-23 | 并行计算硬件中矩阵乘法运算的处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117370722A (zh) |
-
2023
- 2023-10-23 CN CN202311376164.XA patent/CN117370722A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110447010B (zh) | 在硬件中执行矩阵乘法 | |
US11711423B2 (en) | Arrangements for communicating and processing data in a computing system | |
Hong et al. | Dfx: A low-latency multi-fpga appliance for accelerating transformer-based text generation | |
US10592208B2 (en) | Very low precision floating point representation for deep learning acceleration | |
TWI737652B (zh) | 併合乘-加(fma)低功能性單元 | |
Lin et al. | K-means implementation on FPGA for high-dimensional data using triangle inequality | |
US11275561B2 (en) | Mixed precision floating-point multiply-add operation | |
Flegar et al. | Adaptive precision block-Jacobi for high performance preconditioning in the Ginkgo linear algebra software | |
US20210081201A1 (en) | Utilizing structured sparsity in systolic arrays | |
US11620105B2 (en) | Hybrid floating point representation for deep learning acceleration | |
CN111045728A (zh) | 一种计算装置及相关产品 | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
CN104823153B (zh) | 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备 | |
CN117370722A (zh) | 并行计算硬件中矩阵乘法运算的处理方法及相关设备 | |
Hu et al. | Design of a simulation model for high performance LINPACK in hybrid CPU-GPU systems | |
CN111313905A (zh) | 一种浮点数转换方法及装置 | |
EP3394730B1 (en) | Floating point (fp) add low instructions functional unit | |
CN220983883U (zh) | 矩阵计算装置、小芯片设备及人工智能加速器装置 | |
US20240134930A1 (en) | Method and apparatus for neural network weight block compression in a compute accelerator | |
US20230229505A1 (en) | Hardware accelerator for performing computations of deep neural network and electronic device including the same | |
Lettich | GALATIC: GPU Accelerated Sparse Matrix Multiplication over Arbitrary Semirings (GALATIC) v1. 0 | |
Padyana et al. | Reducing the disk io bandwidth bottleneck through fast floating point compression using accelerators | |
TW202429312A (zh) | 用於計算加速器中之神經網路權重區塊壓縮的方法及設備 | |
Shoji et al. | A Memory-Bandwidth-Efficient Word2vec Accelerator Using OpenCL for FPGA | |
Huang et al. | Accelerating the Deep Learning Recommendation System Model Inference on X86 Processors |
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 |