CN113704689B - 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置 - Google Patents

一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置 Download PDF

Info

Publication number
CN113704689B
CN113704689B CN202110984626.0A CN202110984626A CN113704689B CN 113704689 B CN113704689 B CN 113704689B CN 202110984626 A CN202110984626 A CN 202110984626A CN 113704689 B CN113704689 B CN 113704689B
Authority
CN
China
Prior art keywords
result
source operand
conversion
processing
matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110984626.0A
Other languages
English (en)
Other versions
CN113704689A (zh
Inventor
马银萍
李若淼
杨宏辉
樊春
董昊森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN202110984626.0A priority Critical patent/CN113704689B/zh
Publication of CN113704689A publication Critical patent/CN113704689A/zh
Application granted granted Critical
Publication of CN113704689B publication Critical patent/CN113704689B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于昇腾AI处理器的矩阵乘算子的处理方法及装置。其中,该方法包括:获取矩阵乘算子的第一源操作数和第二源操作数;对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果;对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。本发明解决了矩阵乘运算的运算效率低的技术问题。

Description

一种基于昇腾AI处理器的矩阵乘算子的处理方法及装置
技术领域
本发明涉及人工智能领域,具体而言,涉及一种基于昇腾AI处理器的矩阵乘算子的处理方法及装置。
背景技术
人工智能(Artificial Intelligence,AI)计算的核心是矩阵乘运算,矩阵乘(Matrix Multiplication,MatMul)算子是AI计算中的重要计算单元。
现有方案中,MatMul算子可以通过张量虚拟机(Tensor Virtual Machine,TVM)的开发方式实现,但是,在这种开发方式下,无法对AI处理器的硬件特性进行针对性优化,使得矩阵乘算子的计算速度达到最优,进而存在矩阵乘运算的运算效率低的技术问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种基于昇腾AI处理器的矩阵乘算子的处理方法及装置,以至少解决矩阵乘运算的运算效率低的技术问题。
根据本发明实施例的第一方面,提供了一种基于昇腾AI处理器的矩阵乘算子的处理方法,包括:获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。
基于第一方面所述的方法,可以充分调用AI处理器的硬件特性,提升矩阵乘算子的运算速度,进而提高矩阵乘运算的运算效率。
在一个可选实施例中,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果包括:获取第一转置标识的第一取值和第二转置标识的第二取值,其中,第一转置标识用于指示第一源操作数是否转置,第二转置标识用于指示第二源操作数是否转置;基于第一取值和第二取值,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,基于第一取值和第二取值对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果包括:当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数不转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换方式为第一源操作数从二维到三维的转换方式,第二转换方式为第二源操作数从二维到三维的转换方式。
在一个可选实施例中,基于第一取值和第二取值对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果包括:当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换方式为第一源操作数从二维到三维的转换方式。
在一个可选实施例中,基于第一取值和第二取值对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果包括:当第一取值表示第一源操作数转置并且第二取值表示第二源操作数不转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果,其中,第二转换方式为第二源操作数从二维到三维的转换方式。
在一个可选实施例中,基于第一取值和第二取值对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果包括:当第一取值表示第一源操作数转置并且第二取值表示第二源操作数转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换方式为第一源操作数从二维到三维的转换方式,第二转换方式为第二源操作数从二维到三维的转换方式。
在一个可选实施例中,从二维到三维的转换方式包括:对第一源操作数进行维度扩展处理,得到第一处理结果,以及对第二源操作数进行维度扩展处理,得到第二处理结果;对第一处理结果进行矩阵变换处理,得到第一变换结果,以及对第二处理结果进行矩阵变换处理,得到第二变换结果;对第一变换结果进行维度调换处理,得到第一转换结果,以及对第二变换结果进行维度调换处理,得到第二转换结果。
在一个可选实施例中,采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果包括:将第一分块结果与第二分块结果中对应部分子矩阵传输至人工智能处理器中的输入缓冲区;利用多个计算核心同步对输入缓冲区暂存的对应部分子矩阵进行矩阵乘运算,得到中间运算结果。
在一个可选实施例中,对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果包括:对中间运算结果进行维度调换处理,得到第三转换结果;对第三转换结果进行矩阵变换处理,得到第三变换结果;对第三变换结果进行数据切除处理,得到矩阵乘算子的输出结果。
根据本发明实施例的第二方面,还提供了一种基于昇腾AI处理器的矩阵乘算子的处理装置,包括:获取模块,用于获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;转换模块,用于对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;切分模块,用于对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;运算模块,用于采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;处理模块,用于对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。
在一个可选实施例中,获取模块还用于获取第一转置标识的第一取值和第二转置标识的第二取值,其中,第一转置标识用于指示第一源操作数是否转置,第二转置标识用于指示第二源操作数是否转置。
在一个可选实施例中,转换模块还用于基于第一取值和第二取值,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,转换模块还用于当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数不转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,转换模块还用于当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,转换模块还用于当第一取值表示第一源操作数转置并且第二取值表示第二源操作数不转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,转换模块还用于当第一取值表示第一源操作数转置并且第二取值表示第二源操作数转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
在一个可选实施例中,转换模块还用于对第一源操作数进行维度扩展处理,得到第一处理结果,以及对第二源操作数进行维度扩展处理,得到第二处理结果;对第一处理结果进行矩阵变换处理,得到第一变换结果,以及对第二处理结果进行矩阵变换处理,得到第二变换结果;对第一变换结果进行维度调换处理,得到第一转换结果,以及对第二变换结果进行维度调换处理,得到第二转换结果。
在一个可选实施例中,运算模块还用于将第一分块结果与第二分块结果中对应部分子矩阵传输至人工智能处理器中的输入缓冲区;利用多个计算核心同步对输入缓冲区暂存的对应部分子矩阵进行矩阵乘运算,得到中间运算结果。
在一个可选实施例中,处理模块还用于对中间运算结果进行维度调换处理,得到第三转换结果;对第三转换结果进行矩阵变换处理,得到第三变换结果;对第三变换结果进行数据切除处理,得到矩阵乘算子的输出结果。
根据本发明实施例的第三方面,还提供了一种存储介质,包括存储的程序,其中,在程序运行时控制存储介质所在设备执行第一方面或第一方面的任一可选实施例中所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
根据本发明实施例的第四方面,还提供了一种处理器,用于运行程序,其中,程序运行时执行第一方面或第一方面的任一可选实施例中所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
根据本发明实施例的第五方面,还提供了一种电子装置,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行第一方面或第一方面的任一可选实施例中所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为一种达芬奇架构的核心构成示意图;
图2为本申请实施例提供的一种用于实现基于昇腾AI处理器的矩阵乘算子的处理方法的计算机终端的硬件结构框图;
图3为本申请实施例提供的一种基于昇腾AI处理器的矩阵乘算子的处理方法流程图;
图4为本申请实施例提供的一种数据转换处理过程的示意图;
图5为本申请实施例提供的一种基于昇腾AI处理器的矩阵乘算子的处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
达芬奇架构,是一种面向AI计算特征的全新计算架构,具备高算力、高能效、灵活可剪裁的特性,是实现万物智能的重要基础。为提升AI计算的完备性和不同场景下的计算效率,达芬奇架构中可以集成多种计算单元。图1为一种达芬奇架构的核心构成示意图,其中达芬奇架构可以包括:L0A缓冲区、L0B缓冲区、L0C缓冲区、输出缓冲区、矩阵计算单元(cube unit)、向量计算单元(vector unit)、标量计算单元(scalar unit)、专用寄存器、通用寄存器等。
输入缓冲区(L1 buffer),是AI计算核心内用于暂存AI计算核心需要反复使用的数据的数据中转区,从而能够减少AI计算核心从总线读写这些数据的次数。
输出缓冲区(Unified Buffer,UB),是AI计算核心内用于存放向量计算单元和标量计算单元的输入输出数据的数据中转区,进行向量计算前需要先将数据搬运到输出缓冲区中,才能进入向量计算单元进行运算。
全局存储器(Global Memory,GM),即AI计算核心的外部存储,用于存储等待进行AI计算的数据。在进行AI计算时,必须将数据搬运到AI计算核心的内部才能进行AI计算。
MatMul算子是AI计算中的核心算子,现有方案中,MatMul算子可以基于TVM的开发方式实现。TVM是一种普通的算子开发方式,在该方式下可以将常用的调度封装成运算接口,开发者只需要利用特定域语言声明计算的流程,再使用自动调度机制,指定目标生成代码,即可进一步编译成专用内核。在TVM开发方式下,不支持表达复杂算子的逻辑,开发者无需了解AI计算核心的内核,因而无法对AI处理器的硬件特性进行针对性优化,使得MatMul乘算子的计算速度达到最优,存在矩阵乘运算的运算效率低的技术问题。
为优化矩阵乘运算的运算效率,现有方案中还提供了一种专业级的张量迭代器内核(Tensor Iterator Kernel,TIK)的算子开发方式,这种开发方式对数据的操作更加灵活,但是需要开发者深入理解AI处理器架构和指令集等相关知识。TIK开发的代码编写接近底层硬件架构,矩阵乘运算的过程可以基于特定硬件特性进行优化。因此,灵活使用TIK开发方式,可以更充分地发挥AI处理器的硬件性能。
本申请实施例基于TIK开发方式,提供了一种基于昇腾AI处理器的矩阵乘算子的处理方法,所述方法具体包括:获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。基于上述基于昇腾AI处理器的矩阵乘算子的处理方法,可以充分利用AI计算核心的硬件特征优化矩阵乘算子的计算速度,进而有效提升矩阵乘运算的运算效率。
下面结合说明书附图对本申请实施例中提供的基于昇腾AI处理器的矩阵乘算子的处理方法进行描述。
本申请实施例所提供的方法实施例可以在计算机终端或者类似的运算装置中执行。图2示出了一种用于实现基于昇腾AI处理器的矩阵乘算子的处理方法的计算机终端的硬件结构框图。如图2所示,计算机终端20可以包括一个或多个(图中采用202a、202b,……,202n来示出)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器204、以及用于通信功能的传输装置206。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
应当注意到的是上述一个或多个处理器202和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端20中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器204可用于存储应用软件的软件程序以及模块,如本申请实施例中的基于昇腾AI处理器的矩阵乘算子的处理方法对应的程序指令/数据存储装置,处理器202通过运行存储在存储器204内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于昇腾AI处理器的矩阵乘算子的处理方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端20的通信供应商提供的无线网络。在一个实例中,传输装置206包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置206可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端20(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图2所示的计算机设备可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图2仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备中的部件的类型。
在上述运行环境下,本申请提供了如图3所示的基于昇腾AI处理器的矩阵乘算子的处理方法,该方法可以由图2所示的计算机终端或者类似的类似的运算装置执行。图3是根据本申请实施例提供的一种基于昇腾AI处理器的矩阵乘算子的处理方法流程图。如图3所示,该方法可以包括如下步骤:
步骤S301,获取矩阵乘算子的第一源操作数和第二源操作数。
在本发明上述步骤S301提供的技术方案中,矩阵乘算子的第一源操作数可以为二维格式的矩阵乘的左矩阵,矩阵乘算子的第二源操作数可以为二维格式的矩阵乘的右矩阵。
可选地,二维格式的矩阵乘的左矩阵和右矩阵可以通过数组的形式进行表示,比如矩阵乘的左矩阵和右矩阵可以表示为[行数,列数]。
例如,矩阵乘的左矩阵为M行K列的A矩阵,矩阵乘的右矩阵为K行N列的B矩阵,矩阵乘算子的第一源操作数为[M,K],矩阵乘算子的第二源操作数为[K,N]。
可选地,矩阵乘算子的处理装置可以从GM中获取矩阵乘算子的第一源操作数和第二源操作数。其中,第一源操作数和第二源操作数的数据类型可以包括8位整型(int8)、8位无符号整型(uint8)、16位浮点型(float16)。
需要说明的是,本申请实施例中所涉及数据类型仅为一种示例,不予限制。
步骤S302,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果。
在本发明上述步骤S302提供的技术方案中,第一转换结果可以为三维格式的矩阵乘的左矩阵,第二转换结果可以为三维格式的矩阵乘的右矩阵。三维格式的矩阵乘的左矩阵和右矩阵可以以数组的形式进行表示。
其中,本申请实施例中的数据转换处理可以包括将第一源操作数和第二源操作数从二维格式转换为三维格式。
示例性的,矩阵乘算子的处理装置将第一源操作数从二维格式转换为三维格式可以包括:对第一源操作数进行维度扩展处理,得到第一处理结果;对第一处理结果进行矩阵变换处理,得到第一变换结果;对第一变换结果进行维度调换处理,得到第一转换结果。
示例性的,矩阵乘算子的处理装置将第二源操作数从二维格式转换为三维格式可以包括:对第二源操作数进行维度扩展处理,得到第二处理结果;对第二处理结果进行矩阵变换处理,得到第二变换结果;对第二变换结果进行维度调换处理,得到第二转换结果。
示例性的,矩阵乘算子的处理装置还可以获取第一转置标识的第一取值和第二转置标识的第二取值,其中,第一转置标识可以指示第一源操作数是否转置,第二转置标识可以指示第二源操作数是否转置。矩阵乘算子的处理装置可以根据第一转置标识的第一取值和第二转置标识的第二取值,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果。
例如,第一转置标识的第一取值transpose_a=True,即指示第一源操作数转置;第一转置标识的第一取值transpose_a=False,即指示第一源操作数不转置。第二转置标识的第二取值transpose_b=True,即指示第二源操作数转置;第二转置标识的第二取值transpose_b=False,即指示第二源操作数不转置。
下面以对第一源操作数[M,K]为例,详细描述上述步骤S302中涉及的对第一源操作数进行数据转换处理过程。
图4为本申请实施例提供的一种数据转换处理过程的示意图。如图4所示,矩阵乘运算的左矩阵为一个M行K列的矩阵,第一源操作数为[M,K]。矩阵乘算子的处理装置可以将第一源操作数进行维度扩展、矩阵变换和维度调换进而得到第一转换结果。
具体的,矩阵乘算子的处理装置可以将第一源操作数[M,K]中的M扩展为16或者32的倍数M16,将第一操作数[M,K]中的K扩展为16或者32的倍数K16,进而获得一个M16行K16列的扩展矩阵,即获得第一处理结果[M16,K16]。随后矩阵乘算子的处理装置对上述扩展矩阵[M16,K16]进行矩阵变换,获得第一变换结果[M16,K1,K0],最后将该三维矩阵[M16,K1,K0]进行维度调换获得第一转换结果[K1,M16,K0]。
其中,K1=[K/K0],K0的取值可以根据第一源操作数的数据类型确定。例如,当第一源操作数的数据类型是float16时,K0=16;当第一源操作数的数据类型是int8或者uint8时,K0=32。
对第二源操作数进行数据转换处理获得第二转换结果的过程可以参照上述过程,不予赘述。
步骤S303,对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果。
在本发明上述步骤S303提供的技术方案中,矩阵乘算子的处理装置可以根据第一源操作数的数据类型,对第一转换结果进行分块处理,得到第一分块结果,以及根据第二源操作数的数据类型,对第二转换结果进行分块处理,得到第二分块结果。
例如,当第一源操作数[M,K]的数据类型为float16时,矩阵乘算子的处理装置可以将第一转换结果进行分块处理,得到第一分块结果。第一分块结果全部为16*16的子矩阵,其中,M0=K0=N0=16,进行分块处理时不足部分可以补0。
又例如,当第一源操作数[M,K]的数据类型为int8或者uint8时,矩阵乘算子的处理装置可以将第一转换结果进行分块处理,得到第一分块结果。若第一源操作数的数据类型为int8,则第一分块结果全部为16*32的子矩阵;若第一源操作数的数据类型为uint8,则第一分块结果全部为32*16的子矩阵,其中,M0=N0=16,K0=32,进行分块处理时不足部分可以补0。
进一步的,可以将分块处理后得到的子矩阵作为A矩阵或B矩阵中的一个元素,A矩阵的维度可以从[M,K]转换为[M1,K1],B矩阵的维度可以从[K,N]转换为[K1,N1],其中,M1=(M+15)//16,K1=(M+K0-1)//K0,N1=(M+15)//16。M1,K1,N1分别为对M,K,N除以16后所得的商进行取整的结果。
根据第二源操作数的数据类型对第二转换结果进行分块处理,得到第二分块结果的处理过程可以参照上述过程,不予赘述。
步骤S304,采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果。
在本发明上述步骤S304提供的技术方案中,矩阵乘算子的处理装置可以将第一分块结果与第二分块结果中对应部分子矩阵传输至人工智能处理器中的输入缓冲区。
可选地,当人工智能处理器中的输入缓冲区和输出缓冲区都能同时存储第一源操作数和第二源操作数对应的输入矩阵时,矩阵乘算子的处理装置可以将第一分块结果和第二分块结果对应的部分子矩阵直接传输至人工智能处理器中的输入缓冲区。具体的,矩阵乘算子的处理装置首先第一分块结果和第二分块结果对应的部分子矩阵从GM传输至UB,再将其从UB传输至人工智能处理器的输入缓冲区中。
可选地,当人工智能处理器中的输入缓冲区和输出缓冲区不能同时存储第一源操作数和第二源操作数对应的输入矩阵时,矩阵乘算子的处理装置可以将第一分块结果和第二分块结果对应的部分子矩阵先传输至GM中,当进行矩阵乘运算时,再将其从GM中传输至人工智能处理器中的输入缓冲区。
示例性的,矩阵乘算子的处理装置利用多个计算核心同步对输入缓冲区暂存的对应部分子矩阵进行矩阵乘运算,得到中间运算结果,其中,中间运算结果为三维格式的矩阵。
可选地,在采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算之前,矩阵乘算子的处理装置还可以获取计算核心数量,该计算核心数量可用于指示对第一分块结果与第二分块结果进行矩阵乘运算时可使用的计算核心数量。
可选地,矩阵乘算子的处理装置可以直接调用TIK提供的matmul接口进行矩阵乘运算。
下面以矩阵乘的左矩阵为M行K列的A矩阵,矩阵乘的右矩阵为K行N列的B矩阵为例,详细描述上述矩阵乘运算的实现过程。
矩阵乘算子的处理装置获得人工智能处理器的计算核心数Core_num。矩阵A和矩阵B可以分别经过上述步骤S303中所述的分块处理,得到第一分块结果以及第二分块结果。其中,第一分块结果全部为16*K0的子矩阵,第二分块结果全部为K0*16的子矩阵。矩阵乘算子的处理装置可以将第一分块结果和第二分块结果对应的部分子矩阵直接传输至人工智能处理器中的输入缓冲区进行矩阵乘运算。
具体的,矩阵乘算子的处理装置每次将第一分块结果和第二分块结果对应的部分子矩阵直接传输至人工智能处理器中的输入缓冲区,调用matmul接口进行矩阵乘运算。在最外层套用Core_num个循环,并使用block_num=Core_num来指定使用Core_num个计算核心一起计算;在最内层循环中使用thread_num=2,指示使用双缓冲区机制进行优化,经过调用matmul接口获得中间运算结果,其中,中间运算结果为三维格式的矩阵。
本申请实施例中所调用的matmul接口的函数原型为:
matmul(dst,a,b,m,k,n,init_l1out=True)
其中,dst为矩阵乘输出的中间运算结果,a为三维格式的矩阵乘的左矩阵,b为三维格式的矩阵乘的右矩阵。m为第一输入值,可用于表示矩阵乘的左矩阵的有效高度,第一输入值的取值范围可以为[1,4096]。k为第二输入值,可用于表示矩阵乘的左矩阵的有效宽度和右矩阵的有效高度。n为第三输入值,可用于表示矩阵乘的右矩阵的有效宽度。矩阵乘算子的第一输入值、第二输入值、第三输入值的数据类型可以为整型(int)。
init_l1out为初始化标识,可用于指示矩阵乘运算的中间运算结果的是否初始化。例如,当初始化标识init_l1out=True时,则表示矩阵乘的中间运算结果需要进行初始化;当初始化标识init_l1out=False时,则表示矩阵乘的中间运算结果不需要进行初始化。其中,初始化标识的默认值为True。
步骤S305,对所述中间运算结果进行数据转换处理,得到所述矩阵乘算子的输出结果。
在本发明上述步骤S305提供的技术方案中,矩阵乘算子的处理装置可以对中间运算结果进行维度调换处理,得到第三转换结果,对第三转换结果进行矩阵变换处理,得到第三变换结果,对第三变换结果进行数据切除处理,得到矩阵乘算子的输出结果。
其中,将中间运算结果进行数据转换处理获得矩阵乘算子的输出结果的实现过程为上述步骤S302中数据转换处理的逆过程,不予赘述。
根据上述图3提供的基于昇腾AI处理器的矩阵乘算子的处理方法,可以充分调用AI处理器的硬件特性,提升矩阵乘算子的运算速度,进而提高矩阵乘运算的运算效率。
下面对该实施例的上述方法进行进一步介绍。
作为一种可选地实施方式,在步骤S302,矩阵乘算子的处理装置可以根据第一转置标识的第一取值和第二转置标识的第二取值,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理。其中,根据第一转置标识的第一取值与第二转置标识的第二取值情况,可以构成不同的数据转换处理实施例。
示例性的,矩阵乘算子的数据转换处理方式可以包括第一转换方式和第二转换方式。第一转换方式为将第一源操作数从二维到三维的转换方式,第二转换方式为将第二源操作数从二维到三维的转换方式。
例如,通过第一转换方式Trans_A()的实现矩阵乘运算的左矩阵A从二维转换到三维的过程为:根据第一源操作数[M,K]计算得到M1,M16,K1,K16,根据第一源操作数的数据类型得到K0值,将矩阵乘运算的左矩阵切分为16*K0大小的子矩阵,并将16*K0的子矩阵作为上述矩阵A的一个元素,重新得到每个子矩阵坐标,根据矩阵A中子矩阵坐标(i,j)可以推导出最终三维矩阵中该子矩阵坐标为(j,i,1),根据矩阵A中子矩阵(i,j)和三维矩阵中该矩阵的坐标(j,i,1)的关系,可以通过数据搬运完成维度扩展和维度调换。
又例如,通过第二转换方式Trans_B()实现矩阵乘运算的右矩阵B从二维转换到三维的过程为:根据第二源操作数[K,N]计算得到K1,K16,N1,N16,根据第二源操作数的数据类型得到K0值,将矩阵B切分为K0*16大小的子矩阵,并将K0*16的子矩阵作为矩阵B的一个元素,重新得到每个子矩阵坐标(i,j),然后对每个子矩阵进行转置,再根据B中子矩阵坐标(i,j)可以推导出最终三维矩阵中该子矩阵坐标为(i,j,1),根据根据矩阵B中子矩阵(i,j)和三维矩阵中该子矩阵的坐标(i,j,1)的关系,可以通过数据搬运完成维度扩展和维度调换。
可选地,本申请实施例提供一种CusMatMul算子用于确定对第一源操作数和第二源操作数进行数据转换处理的转换方式。
CusMatMul算子原型为:
CusMatMul(A,B,transpose_a,transpose_b)
其中,A为二维格式的矩阵乘的左矩阵,B为二维格式的矩阵乘的右矩阵,transpose_a为第一转置标识的第一取值,transpose_b为第二转置标识的第二取值。
示例性的,当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数不转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
例如,当transpose_a=False,transpose_b=False,矩阵乘算子的处理装置可以调用Trans_A(A)对第一源操作数进行数据转换处理,得到第一转换结果,以及调用Trans_B(B)对第二源操作数进行数据转换处理,得到第二转换结果。
示例性的,当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
例如,当transpose_a=False,transpose_b=True,矩阵乘算子的处理装置可以调用Trans_A(A)对第一源操作数进行数据转换处理,得到第一转换结果,以及调用Trans_A(B)对第二源操作数进行数据转换处理,得到第二转换结果。
示例性的,当第一取值表示第一源操作数转置并且第二取值表示第二源操作数不转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
例如,当transpose_a=True,transpose_b=False,矩阵乘算子的处理装置可以调用Trans_B(A)对第一源操作数进行数据转换处理,得到第一转换结果,以及调用Trans_B(B)对第二源操作数进行数据转换处理,得到第二转换结果。
示例性的,当第一取值表示第一源操作数转置并且第二取值表示第二源操作数转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
例如,当transpose_a=True,transpose_b=True,矩阵乘算子的处理装置可以调用Trans_B(A)对第一源操作数进行数据转换处理,得到第一转换结果,以及调用Trans_A(B)对第二源操作数进行数据转换处理,得到第二转换结果。
表1为不同输入矩阵下矩阵乘算子效率对比,其中,表1中的MatMul计算时间是调用神经网络处理器中基于TVM开发方式实现的MatMul算子计算的时间,CusMatMul计算时间是本申请实施例所提出的CusMatMul算子计算的时间,统计计算时间是将两个算子分别运行1000000次,然后求取的计算平均时间,时间单位是毫秒(ms)。从表1中统计的结果可以看出,CusMatMul算子的速度是MatMul算子的1.5倍左右,CusMatMul算子将现有方案中的MatMul算子的性能提升了大约0.5倍。
表1不同输入矩阵下矩阵乘算子效率
Figure BDA0003230225500000151
进一步的,对本申请实施例提出的的CusMatMul算子经过充分的测试与使用。在Mindspore1.1.1环境下,使用昇腾910处理器,在ResNet50网络和使用SENG优化器的网络结构下,用ImageNet2012数据集进行实验,将网络中15处使用MatMul算子的地方替换为CusMatMul算子,在使用一块昇腾910处理器情况下,进行一轮数据集训练时间从1435秒减少为1387秒。优化前网络中MatMul算子耗时占比约为10%,约140秒,用CusMatMul算子替换MatMul算子之后CusMatMul算子耗时约为92秒,训练一轮总时间减少约48秒。而ImageNet2012数据集通常需要训练40轮左右才能将准确率提升到75.9%左右,因此对MatMul算子进行优化可以使得一次训练减少约32分钟的训练时间,可以有效提升矩阵乘运算的运算效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明实施例还提供了一种基于昇腾AI处理器的矩阵乘算子的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种基于昇腾AI处理器的矩阵乘算子的处理装置的示意图。如图5所示,该基于昇腾AI处理器的矩阵乘算子的处理装置50包括:获取模块51、转换模块52、切分模块53、运算模块54、处理模块55。
获取模块51,用于获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;
转换模块52,用于对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;
切分模块53,用于对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;
运算模块54,用于采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;
处理模块55,用于对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。
可选地,获取模块51还用于获取第一转置标识的第一取值和第二转置标识的第二取值,其中,第一转置标识用于指示第一源操作数是否转置,第二转置标识用于指示第二源操作数是否转置。
可选地,转换模块52还用于基于第一取值和第二取值,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果。
可选地,转换模块52还用于当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数不转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
可选地,转换模块52还用于当第一取值表示第一源操作数不转置并且第二取值表示第二源操作数转置时,调用第一转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
可选地,转换模块52还用于当第一取值表示第一源操作数转置并且第二取值表示第二源操作数不转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第二转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
可选地,转换模块52还用于当第一取值表示第一源操作数转置并且第二取值表示第二源操作数转置时,调用第二转换方式对第一源操作数进行数据转换处理,得到第一转换结果,以及调用第一转换方式对第二源操作数进行数据转换处理,得到第二转换结果。
可选地,转换模块52还用于对第一源操作数进行维度扩展处理,得到第一处理结果,以及对第二源操作数进行维度扩展处理,得到第二处理结果;对第一处理结果进行矩阵变换处理,得到第一变换结果,以及对第二处理结果进行矩阵变换处理,得到第二变换结果;对第一变换结果进行维度调换处理,得到第一转换结果,以及对第二变换结果进行维度调换处理,得到第二转换结果。
可选地,运算模块54还用于将第一分块结果与第二分块结果中对应部分子矩阵传输至人工智能处理器中的输入缓冲区;利用多个计算核心同步对输入缓冲区暂存的对应部分子矩阵进行矩阵乘运算,得到中间运算结果。
可选地,处理模块55还用于对中间运算结果进行维度调换处理,得到第三转换结果;对第三转换结果进行矩阵变换处理,得到第三变换结果;对第三变换结果进行数据切除处理,得到矩阵乘算子的输出结果。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述非易失性存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;
S2,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;
S3,对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;
S4,采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;
S5,对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行本发明实施例的基于昇腾AI处理器的矩阵乘算子的处理方法。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的基于昇腾AI处理器的矩阵乘算子的处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取矩阵乘算子的第一源操作数和第二源操作数,其中,第一源操作数为二维格式的矩阵乘的左矩阵,第二源操作数为二维格式的矩阵乘的右矩阵;
S2,对第一源操作数进行数据转换处理,得到第一转换结果,以及对第二源操作数进行数据转换处理,得到第二转换结果,其中,第一转换结果为三维格式的矩阵乘的左矩阵,第二转换结果为三维格式的矩阵乘的右矩阵;
S3,对第一转换结果进行分块处理,得到第一分块结果,以及对第二转换结果进行分块处理,得到第二分块结果;
S4,采用与人工智能处理器中计算核心数量对应的多个计算核心对第一分块结果与第二分块结果进行矩阵乘运算,得到中间运算结果;
S5,对中间运算结果进行数据转换处理,得到矩阵乘算子的输出结果,其中,输出结果的输出格式为二维格式。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本发明各个实施例所述方法的全部或部分步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种基于昇腾AI处理器的矩阵乘算子的处理方法,其特征在于,包括:
获取矩阵乘算子的第一源操作数和第二源操作数,其中,所述第一源操作数为二维格式的矩阵乘的左矩阵,所述第二源操作数为二维格式的矩阵乘的右矩阵;
对所述第一源操作数进行数据转换处理,得到第一转换结果,以及对所述第二源操作数进行数据转换处理,得到第二转换结果,其中,所述第一转换结果为三维格式的矩阵乘的左矩阵,所述第二转换结果为三维格式的矩阵乘的右矩阵;
对所述第一转换结果进行分块处理,得到第一分块结果,以及对所述第二转换结果进行分块处理,得到第二分块结果;
采用与人工智能处理器中计算核心数量对应的多个计算核心对所述第一分块结果与所述第二分块结果进行矩阵乘运算,得到中间运算结果;
对所述中间运算结果进行数据转换处理,得到所述矩阵乘算子的输出结果,其中,所述输出结果的输出格式为二维格式;
其中,对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
根据所述第一源操作数的转置状态和所述第二源操作数的转置状态,确定所述第一源操作数对应的第一目标方式和所述第二源操作数对应的第二目标方式;
基于所述第一目标方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及基于所述第二目标方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果。
2.根据权利要求1所述的方法,其特征在于,对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
获取第一转置标识的第一取值和第二转置标识的第二取值,其中,所述第一转置标识用于指示所述第一源操作数是否转置,所述第二转置标识用于指示所述第二源操作数是否转置;
基于所述第一取值和所述第二取值,对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果。
3.根据权利要求2所述的方法,其特征在于,基于所述第一取值和所述第二取值对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
当所述第一取值表示所述第一源操作数不转置并且所述第二取值表示所述第二源操作数不转置时,调用第一转换方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及调用第二转换方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果,其中,所述第一转换方式为所述第一源操作数从二维到三维的转换方式,所述第二转换方式为所述第二源操作数从二维到三维的转换方式。
4.根据权利要求2所述的方法,其特征在于,基于所述第一取值和所述第二取值对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
当所述第一取值表示所述第一源操作数不转置并且所述第二取值表示所述第二源操作数转置时,调用第一转换方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及调用第一转换方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果,其中,所述第一转换方式为所述第一源操作数从二维到三维的转换方式。
5.根据权利要求2所述的方法,其特征在于,基于所述第一取值和所述第二取值对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
当所述第一取值表示所述第一源操作数转置并且所述第二取值表示所述第二源操作数不转置时,调用第二转换方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及调用第二转换方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果,其中,所述第二转换方式为所述第二源操作数从二维到三维的转换方式。
6.根据权利要求2所述的方法,其特征在于,基于所述第一取值和所述第二取值对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
当所述第一取值表示所述第一源操作数转置并且所述第二取值表示所述第二源操作数转置时,调用第二转换方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及调用第一转换方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果,其中,所述第一转换方式为所述第一源操作数从二维到三维的转换方式,所述第二转换方式为所述第二源操作数从二维到三维的转换方式。
7.根据权利要求3至6中任一项所述的方法,其特征在于,从二维到三维的转换方式包括:
对所述第一源操作数进行维度扩展处理,得到第一处理结果,以及对所述第二源操作数进行维度扩展处理,得到第二处理结果;
对所述第一处理结果进行矩阵变换处理,得到第一变换结果,以及对所述第二处理结果进行矩阵变换处理,得到第二变换结果;
对所述第一变换结果进行维度调换处理,得到所述第一转换结果,以及对所述第二变换结果进行维度调换处理,得到所述第二转换结果。
8.根据权利要求1所述的方法,其特征在于,采用与所述人工智能处理器中计算核心数量对应的多个计算核心对所述第一分块结果与所述第二分块结果进行矩阵乘运算,得到所述中间运算结果包括:
将所述第一分块结果与所述第二分块结果中对应部分子矩阵传输至所述人工智能处理器中的输入缓冲区;
利用所述多个计算核心同步对所述输入缓冲区暂存的对应部分子矩阵进行矩阵乘运算,得到所述中间运算结果。
9.根据权利要求1所述的方法,其特征在于,对所述中间运算结果进行数据转换处理,得到所述矩阵乘算子的输出结果包括:
对所述中间运算结果进行维度调换处理,得到第三转换结果;
对所述第三转换结果进行矩阵变换处理,得到第三变换结果;
对所述第三变换结果进行数据切除处理,得到所述矩阵乘算子的输出结果。
10.一种基于昇腾AI处理器的矩阵乘算子的处理装置,其特征在于,包括:
获取模块,用于获取矩阵乘算子的第一源操作数和第二源操作数,其中,所述第一源操作数为二维格式的矩阵乘的左矩阵,所述第二源操作数为二维格式的矩阵乘的右矩阵;
转换模块,用于对所述第一源操作数进行数据转换处理,得到第一转换结果,以及对所述第二源操作数进行数据转换处理,得到第二转换结果,其中,所述第一转换结果为三维格式的矩阵乘的左矩阵,所述第二转换结果为三维格式的矩阵乘的右矩阵;
切分模块,用于对所述第一转换结果进行分块处理,得到第一分块结果,以及对所述第二转换结果进行分块处理,得到第二分块结果;
运算模块,用于采用与人工智能处理器中计算核心数量对应的多个计算核心对所述第一分块结果与所述第二分块结果进行矩阵乘运算,得到中间运算结果;
处理模块,用于对所述中间运算结果进行数据转换处理,得到所述矩阵乘算子的输出结果,其中,所述输出结果的输出格式为二维格式;
其中,所述转换模块,用于对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及对所述第二源操作数进行数据转换处理,得到所述第二转换结果包括:
根据所述第一源操作数的转置状态和所述第二源操作数的转置状态,确定所述第一源操作数对应的第一目标方式和所述第二源操作数对应的第二目标方式;
基于所述第一目标方式对所述第一源操作数进行数据转换处理,得到所述第一转换结果,以及基于所述第二目标方式对所述第二源操作数进行数据转换处理,得到所述第二转换结果。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至9中任意一项所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至9中任意一项所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
13.一种电子装置,其特征在于,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序用于执行权利要求1至9中任意一项所述的基于昇腾AI处理器的矩阵乘算子的处理方法。
CN202110984626.0A 2021-08-25 2021-08-25 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置 Active CN113704689B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110984626.0A CN113704689B (zh) 2021-08-25 2021-08-25 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110984626.0A CN113704689B (zh) 2021-08-25 2021-08-25 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置

Publications (2)

Publication Number Publication Date
CN113704689A CN113704689A (zh) 2021-11-26
CN113704689B true CN113704689B (zh) 2022-11-11

Family

ID=78654820

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110984626.0A Active CN113704689B (zh) 2021-08-25 2021-08-25 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置

Country Status (1)

Country Link
CN (1) CN113704689B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327630B (zh) * 2022-01-05 2023-02-10 北京大学 一种适用于华为昇腾芯片的高性能算子生成方法
CN118246497A (zh) * 2022-12-24 2024-06-25 华为技术有限公司 算子的处理方法、装置、芯片、计算设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313723A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能卷积处理方法、装置、可读存储介质、及终端
WO2019128404A1 (zh) * 2017-12-29 2019-07-04 华为技术有限公司 矩阵乘法器
CN111932435A (zh) * 2017-05-05 2020-11-13 英特尔公司 用于机器学习操作的经优化计算硬件
WO2021011314A1 (en) * 2019-07-15 2021-01-21 Facebook Technologies, Llc System and method for performing small channel count convolutions in energy-efficient input stationary accelerator

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109725936B (zh) * 2017-10-30 2022-08-26 上海寒武纪信息科技有限公司 扩展计算指令的实现方法以及相关产品
CN113032007B (zh) * 2019-12-24 2024-06-11 阿里巴巴集团控股有限公司 一种数据处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111932435A (zh) * 2017-05-05 2020-11-13 英特尔公司 用于机器学习操作的经优化计算硬件
WO2019128404A1 (zh) * 2017-12-29 2019-07-04 华为技术有限公司 矩阵乘法器
CN109313723A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能卷积处理方法、装置、可读存储介质、及终端
WO2021011314A1 (en) * 2019-07-15 2021-01-21 Facebook Technologies, Llc System and method for performing small channel count convolutions in energy-efficient input stationary accelerator

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Hamamu: Specializing FPGAs for ML Applications by Adding Hard Matrix Multiplier Blocks;Aman Arora等;《 2020 IEEE 31st International Conference on Application-specific Systems, Architectures and Processors (ASAP)》;20200731;第53-60页 *
面向多核向量处理器的矩阵乘法向量化方法;刘仲等;《计算机学报》;20170630(第10期);第79-92页 *

Also Published As

Publication number Publication date
CN113704689A (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
CN109117948B (zh) 画风转换方法及相关产品
CN109657782B (zh) 运算方法、装置及相关产品
CN110597559B (zh) 计算装置以及计算方法
CN109711539B (zh) 运算方法、装置及相关产品
CN110689138B (zh) 运算方法、装置及相关产品
CN113704689B (zh) 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置
US20190102671A1 (en) Inner product convolutional neural network accelerator
CN109992743A (zh) 矩阵乘法器
CN108572850A (zh) 矢量处理单元
CN109685201B (zh) 运算方法、装置及相关产品
CN109754062B (zh) 卷积扩展指令的执行方法以及相关产品
CN111047022B (zh) 一种计算装置及相关产品
CN107943756B (zh) 一种计算方法及相关产品
CN107851002A (zh) 一种代码编译方法及代码编译器
CN113722269B (zh) 一种基于昇腾ai处理器的跨步切片算子处理方法及装置
CN114764615A (zh) 卷积运算的实现方法、数据处理方法及装置
CN111045728A (zh) 一种计算装置及相关产品
CN112463159A (zh) 编译方法、装置、电子设备和存储介质
CN112348182B (zh) 一种神经网络maxout层计算装置
CN109711540B (zh) 一种计算装置及板卡
CN111488963A (zh) 神经网络计算装置和方法
CN111047021A (zh) 一种计算装置及相关产品
CN113887730A (zh) 量子模拟器实现方法、装置、相关设备以及量子模拟方法
CN110472734B (zh) 一种计算装置及相关产品
CN114692824A (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