CN116109468B - 图形处理单元及指令编译方法、存储介质、终端设备 - Google Patents

图形处理单元及指令编译方法、存储介质、终端设备 Download PDF

Info

Publication number
CN116109468B
CN116109468B CN202310354382.7A CN202310354382A CN116109468B CN 116109468 B CN116109468 B CN 116109468B CN 202310354382 A CN202310354382 A CN 202310354382A CN 116109468 B CN116109468 B CN 116109468B
Authority
CN
China
Prior art keywords
matrix
product operation
instruction
registers
dot
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
CN202310354382.7A
Other languages
English (en)
Other versions
CN116109468A (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.)
Li Computing Technology Shanghai Co ltd
Nanjing Lisuan Technology Co ltd
Original Assignee
Li Computing Technology Shanghai Co ltd
Nanjing Lisuan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Li Computing Technology Shanghai Co ltd, Nanjing Lisuan Technology Co ltd filed Critical Li Computing Technology Shanghai Co ltd
Priority to CN202310354382.7A priority Critical patent/CN116109468B/zh
Publication of CN116109468A publication Critical patent/CN116109468A/zh
Application granted granted Critical
Publication of CN116109468B publication Critical patent/CN116109468B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本申请提供了一种图形处理单元及指令编译方法、存储介质、终端设备,图形处理单元包括:M组标量寄存器,每组标量寄存器包括N个标量寄存器,每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素;N个第一通用寄存器,用于存储第二矩阵中的第二矩阵元素;调度执行器,用于接收点积运算指令,点积运算指令指示执行并行的M路点积运算;运算单元,用于根据点积运算指令对目标通用寄存器中的第二矩阵元素以及M个目标标量寄存器中的第一矩阵元素执行点积运算。本申请能够提升图形处理单元的计算效率,以提升输出图形的帧率,进而提升三维图形渲染的效率。

Description

图形处理单元及指令编译方法、存储介质、终端设备
技术领域
本申请涉及图形处理技术领域,尤其涉及一种图形处理单元及指令编译方法、存储介质、终端设备。
背景技术
在图形处理单元(Graphics Processing Unit, GPU)领域,利用卷积神经网络对三维图形的输出渲染结果进行超分辨率增强技术已经渐渐成为一种流行趋势。GPU渲染目标三维图形越高清,卷积神经网络的尺寸就越大,所需要的计算量也就越大,从而每一帧图片的渲染时间更长,图形输出的帧率也就越低。为了保证GPU最终输出图形的高分辨率质量,同时也提高输出帧率,业界经常会采用超分辨率增强技术,该技术会在GPU固定渲染管线的最后阶段输出的普通清晰度渲染图片的基础上,利用多层卷积神经网络对图片进行超分辨率采样,从而输出高清晰度的图片。三维渲染结合超分辨率采样往往比GPU固定管线直接输出高清晰度图片所用的时间要短,因此能够在保证最终图片高清质量的前提下,提高了输出的帧率。
现有技术中,对大尺寸图片进行卷积神经网络的具体计算过程可以最终转化为较大矩阵的乘法,因此GPU对矩阵的计算能力直接影响到最后输出高分辨率图形的帧率。针对大矩阵乘法的计算,业界的通用做法是用分块矩阵的方法转化为固定较小尺寸(比如32×32大小)的矩阵乘法,最终计算完所有32×32尺寸的矩阵乘法后进行累加得到原始大矩阵乘法的结果。4个元素的点积和累加(dot-product of 4 elements and Accumulate,DP4A)指令可以支持实现32×32尺寸的矩阵乘法。
但是,对GPU的三维渲染输出大尺寸图形做一进步的超分辨率增强时,现有的DP4A技术方案的执行算力有限,会降低输出的图形帧率。另外DP4A技术方案使用的3个操作数均为通用寄存器,在通用寄存器资源有限的情况下,会导致执行核中并行执行的线程数减少,降低计算效率。
发明内容
本申请能够提升图形处理单元的计算效率,以提升输出图形的帧率,进而提升三维图形渲染的效率。
为了达到上述目的,本申请提供了以下技术方案:
第一方面, M组标量寄存器,每组标量寄存器包括N个标量寄存器,每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素,M为大于等于2的正整数,N为大于等于1的正整数;N个第一通用寄存器,用于存储第二矩阵中的第二矩阵元素调度执行器,用于接收点积运算指令,所述点积运算指令指示执行并行的M路点积运算,所述点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,所述M个目标标量寄存器分别选自所述M组标量寄存器;运算单元,用于根据所述点积运算指令对所述目标通用寄存器中的第二矩阵元素以及所述M个目标标量寄存器中的第一矩阵元素执行点积运算。
可选的,所述运算单元包括:M个运算子单元,每一运算子单元用于对所述目标通用寄存器中的第二矩阵元素以及一个目标标量寄存器中的第一矩阵元素执行点积运算。
可选的,图形处理单元还包括:M个第二通用寄存器,用于分别存储所述运算单元输出的M组点积运算结果。
可选的,所述点积运算指令还包括发射次数,所述N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
可选的,在所述点积运算指令中的发射次数为最大次数时,所述运算单元分别对所述M个第二通用寄存器中的点积运算结果进行累加计算,以得到目标矩阵的M行矩阵元素。
可选的,图形处理单元还包括:内存,用于存储所述目标矩阵的矩阵元素。
可选的,所述调度执行器还用于接收搬运指令,所述搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至所述M组标量寄存器中。
第二发明,本申请还公开一种指令编译方法,指令编译方法包括:生成点积运算指令,所述点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,所述点积运算指令用于指示对所述目标通用寄存器中的第二矩阵元素以及所述M个目标标量寄存器中的第一矩阵元素分别执行点积运算,所述M个目标标量寄存器分别选自M组标量寄存器,每组标量寄存器包括N个标量寄存器,用于存储第二矩阵中的第二矩阵元素每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素,N为大于等于1的正整数,M为大于等于2的正整数;发送所述点积运算指令。
可选的,所述点积运算指令还包括发射次数,所述N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
可选的,指令编译方法还包括:生成并发送搬运指令,所述搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至所述M组标量寄存器中。
第三发明,本申请还公开一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行所述指令编译方法的步骤。
第四发明,本申请还公开一种终端设备,包括所述的图形处理单元。
与现有技术相比,本申请实施例的技术方案具有以下有益效果:
本申请技术方案中,图形处理单元包括N个第一通用寄存器,用于存储第二矩阵中的第二矩阵元素,N为大于等于1的正整数;M组标量寄存器,每组标量寄存器包括N个标量寄存器,用于存储第二矩阵中的第二矩阵元素每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素,M为大于等于2的正整数;调度执行器,用于接收点积运算指令,点积运算指令指示执行并行的M路点积运算,点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,M个目标标量寄存器分别选自M组标量寄存器;运算单元,用于根据点积运算指令对目标通用寄存器中的第二矩阵元素以及M个目标标量寄存器中的第一矩阵元素执行点积运算。本申请通过在标量寄存器中存储第一矩阵的第一矩阵元素,使得点积运算的过程中的矩阵元素会占用更少的通用寄存器,能够有效地缓解通用寄存器的资源紧张的问题,提升计算效率;此外,本申请还通过设置点积运算指令,使得运算单元能够并行地执行M路点积运算,同样的指令数量下,能够执行更多行矩阵元素的点积运算,能够减少指令数量,降低信令开销,减少调度执行器调取指令和发射指令的压力,进一步提升计算效率,进而提高最终输出图形的帧率,提升三维图形渲染的效率。
进一步地,调度执行器还用于接收搬运指令,搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至M组标量寄存器中。本申请通过设置搬运指令,可以实现预先将第一矩阵元素存储至标量寄存器中,以用于后续矩阵元素的点积运算,辅助提升图形处理单元的计算效率。
附图说明
图1是本申请实施例提供的一种图形处理单元的结构图;
图2是本申请实施例提供的另一种图形处理单元的结构图;
图3是本申请实施例提供的一种指令编译方法的流程图;
图4是本申请实施例提供的一种指令编译装置的结构示意图。
具体实施方式
如背景技术中所述,对GPU的三维渲染输出大尺寸图形做一进步的超分辨率增强时,现有的DP4A技术方案的执行算力有限,会降低输出的图形帧率。
具体地,假设有两个大小为32×32的矩阵A=(ai,j)32×32和B=(bi,j)32×32,矩阵的元素ai,j和bi,j为8比特(bits)的短字符格式。计算矩阵C = A×B,其中矩阵C的元素ci,j为32bits整型格式,为A矩阵的第i行与B矩阵的第j列做点积运算的结果。已有的DP4A技术的指令汇编形式为DP4A.rp7 r24, r24,r16, r0.ln0,其中通用寄存器r0中存储矩阵A中的数据,r16中存储矩阵B的数据,结果写入到r24中。DP4A指令是单指令多数据(single instructionmulti data, simd),即每条指令并行计算32个数据流,因此每个操作数都表示有32个数据,也称为32条线(lane)。另外指令中rp7表示该条指令会发射8次,表示为repeat0到repeat7,该指令会计算得到矩阵C的第一行,分别是c0,0,c0,1,...,c0,31。。对于具体实现,公式ci,j=∑(ai,0b0,j+ ai,1b1,j+…,+ ai,31b31,j),表示矩阵C第一行的每个元素ci,j都由32个数相加得到,把这32个数据的加法按顺序每4个数一组,切分成8组,分别对应DP4A.rp7指令的8次重复发射分别计算得到。8次指令的形式具体如下:
DP4A void, r24, r16, r0.ln0
DP4A void, void, r17, r0.ln1
……
DP4A r24, void, r23, r0.ln7
8次计算的中间结果会存储在执行器里,并在最后一次发射并执行点积计算后累加最终输出到通用寄存器r24中,通用寄存器r24的32条通道(lane)的数据分别代表矩阵C第一行的32个元素。
由上可以看出,DP4A技术方案使用的3个操作数均为通用寄存器,在通用寄存器资源有限的情况下,会导致执行核中并行执行的线程数减少,降低计算效率。
本申请技术方案中,通过在标量寄存器中存储第一矩阵的第一矩阵元素,使得点积运算的过程中的矩阵元素会占用更少的通用寄存器,能够有效地缓解通用寄存器的资源紧张的问题,提升计算效率;此外,本申请还通过设置点积运算指令,使得运算单元能够并行地执行M路点积运算,同样的指令数量下,能够执行更多行矩阵元素的点积运算,能够减少指令数量,降低信令开销,减少调度执行器调取指令和发射指令的压力,进一步提升计算效率,进而提高最终输出图形的帧率,提升三维图形渲染的效率。
为使本申请的上述目的、特征和优点能够更为明显易懂,下面结合附图对本申请的具体实施例做详细的说明。
参见图1,本申请提供的图形处理单元包括N个第一通用寄存器101、M组标量寄存器102、运算单元103和调度执行器104。
本实施例中,图形处理单元在执行三维渲染过程中,矩阵的点积运算是以行为单位来计算的。因此可以设置N个第一通用寄存器101来存储第二矩阵中的所有第二矩阵元素。相应地,设置N个标量寄存器102存储第一矩阵中的一行第一矩阵元素。
具体地,本申请所称矩阵运算是指计算第一矩阵各行和第二矩阵各列之间的乘积之和,也可以称为矩阵乘积,第一矩阵的列数等于第二矩阵的行数。例如,矩阵C=A×B,其中,A表示第一矩阵,B表示第二矩阵。
本发明实施例通过在标量寄存器102中存储第一矩阵的第一矩阵元素,使得点积运算的过程中的矩阵元素会占用更少的通用寄存器,能够有效地缓解通用寄存器的资源紧张的问题,提升计算效率。
本实施例中,调度执行器104接收点积运算指令,并转发至运算单元103。运算单元103可以执行积运算指令。具体地,点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识。相应地,运算单元103从目标通用寄存器中读取第二矩阵元素,从M个目标标量寄存器中读取第一矩阵元素,执行并行的M路点积运算。也就是说,目标通用寄存器中的第二矩阵元素分别与M个目标标量寄存器中的第一矩阵元素执行点积运算。
本发明实施例还通过设置点积运算指令,使得运算单元能够并行地执行M路点积运算,同样的指令数量下,能够执行更多行矩阵元素的点积运算,能够减少指令数量,降低信令开销,减少调度执行器调取指令和发射指令的压力,进一步提升计算效率,进而提高最终输出图形的帧率,提升三维图形渲染的效率。
在一个具体实施例中,M的取值可以根据点积运算的并行需求进行设置。例如,需要进行并行的三路点积运算,则M的取值为3。M的取值越大,点积运算的效率越高。N的取值则可以根据第一矩阵和第二矩阵的大小以及第一通用寄存器的存储空间来设置,例如,第一矩阵和第二矩阵大小为32×32矩阵元素,每一第一通用寄存器可以存储4行矩阵元素,则N的取值为8。
以M等于为3,N等于8为例, 8个第一通用寄存器存储第二矩阵中的所有第二矩阵元素,每一第一通用寄存器存储4行第二矩阵元素,例如第一个通用寄存器存储0-3行第二矩阵元素,第二个通用寄存器存储4-7行第二矩阵元素,以此类推,第八个通用寄存器存储29-32行第二矩阵元素。3组标量寄存器分别存储第一矩阵的3行第一矩阵元素,每组标量寄存器包括8个标量寄存器,每一标量寄存器存储4个第二矩阵元素,例如标量寄存器组1存储第一矩阵的第一行第一矩阵元素,标量寄存器组1的第一个标量寄存器存储第一行的0-3个第一矩阵元素,第二个标量寄存器存储第一行的4-7个第一矩阵元素,以此类推,第八个标量寄存器存储第一行的29-32个第一矩阵元素。
需要说明的是,M和N的取值可以根据实际的应用需求进行设置,本申请对此不作限制。
在一个非限制性的实施例中,请参照图2,运算单元103可以包括M个运算子单元1031,每一运算子单元用于对目标通用寄存器中的第二矩阵元素以及一个目标标量寄存器中的第一矩阵元素执行点积运算。也就是说,每一运算子单元1031负责执行一路点积运算,M个运算子单元1031能够并行执行M路点积运算。
继续参照图2,图像处理单元还包括内存105,内存105中预先存储有第一矩阵以及第二矩阵,在需要执行点积运算时,将内存中的第二矩阵中第二矩阵元素装载至第一通用寄存器101;将内存中的第一矩阵中的第一矩阵元素装载至标量寄存器102。
具体地,调度执行器104接收搬运指令,搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至M组标量寄存器102中。搬运指令还可以指示将第二矩阵中一行第二矩阵元素存储至第一通用寄存器101中。
在一个具体实施例中,如前所述,M组标量寄存器可以存储M行第一矩阵元素,若第一矩阵的行数大于M,则需要执行多次搬运指令,以反复利用M组标量寄存器存储第一矩阵元素。例如,M为3,第一矩阵的行数为32,先执行一次搬运指令,将0-2行第一矩阵元素分别存储至3组标量寄存器中;针对0-2行第一矩阵元素的点积运算执行完成后,再执行一次搬运指令,将3-5行第一矩阵元素分别存储至3组标量寄存器中,以此类推,直至针对第一矩阵中所有行矩阵元素的点积运算均执行完成。
下面以图2中示出的三个运算子单元1031为例进行说明。
本实施例中,图形处理单元包括3组标量寄存器,第一组标量寄存器包括标量寄存器sr0-sr7,第二组标量寄存器包括标量寄存器sr8-sr15,第三组标量寄存器包括标量寄存器sr16-sr23。图形处理单元包括8个第一通用寄存器r8-r15。
具体地,标量寄存器sr0-sr7存储第一矩阵的第一行的第一矩阵元素,标量寄存器sr8-sr15存储第一矩阵的第二行的第一矩阵元素,标量寄存器sr16-sr23存储第一矩阵的第三行的第一矩阵元素。第一通用寄存器r8-r15存储第二矩阵所有第二矩阵元素。
调度执行器104接收点积运算指令,并转发给运算单元103。运算单元103执行点积运算指令。其中,运算子单元1读取标量寄存器sr0-sr7中的第一矩阵元素,以及第一通用寄存器r8-r15中的第二矩阵元素,并对第一矩阵元素与第二矩阵元素执行点积运算。类似地,运算子单元2读取标量寄存器sr8-sr15中的第一矩阵元素,以及第一通用寄存器r8-r15中的第二矩阵元素,并对第一矩阵元素与第二矩阵元素执行点积运算。运算子单元3读取标量寄存器sr16-sr23中的第一矩阵元素,以及第一通用寄存器r8-r15中的第二矩阵元素,并对第一矩阵元素与第二矩阵元素执行点积运算。
由此可见,在同样点积运算指令数量的情况下,本实施例提供并行M路执行点积运算,可以提升运算算力。
进一步地,图形处理单元还包括M个第二通用寄存器106,用于分别存储运算单元103输出的M组点积运算结果。进一步地,M个第二通用寄存器中的点积运算结果进行累加计算,可以得到目标矩阵的M行矩阵元素。在获得目标矩阵完整的矩阵元素后,目标矩阵将存储至内存105中。
以M等于3为例,图形处理单元包括3个第二通用寄存器r16,r17和r18。第二通用寄存器r16,r17和r18分别存储运算子单元1、运算子单元2和运算子单元3的运算结果。
在一个具体实施例中,点积运算指令还包括发射次数,N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
具体地,最大发射次数为N,第一次发射的点积运算指令中包括第一个第一通用寄存器以及不同组标量寄存器中的第一个标量寄存器,第二次发射的点积运算指令中包括第二个第一通用寄存器以及不同组标量寄存器中的第二个标量寄存器,以此类推,第N次发射的点积运算指令中包括第N个第一通用寄存器以及不同组标量寄存器中的第N个标量寄存器。
在一个具体的应用场景中,以DP4A指令为例,在计算矩阵C=A×B时 ,DP4A指令每次执行点积运算得到矩阵C中4个矩阵元素,那么对于大小为32×32的矩阵而言,每行具有32个矩阵元素,执行8次DP4A指令,才能获得矩阵C中一行矩阵元素。
具体地,点积运算指令会发射8次(repeat0-repeat7),每次发射可同时执行3行运算。例如,第一次发射出去的点积运算指令为DP4A.x3 r16, r8, sr0,此时运算子单元1、运算子单元2和运算子单元3分别读取目标标量寄存器sr0/sr8/sr16的第一矩阵元素,分别和目标通用寄存器r8的第二矩阵元素做点积运算;第一次发射出去的点积运算指令为DP4A.x3 r16, r9, sr1,类似的,运算子单元1、运算子单元2和运算子单元3分别读取目标标量寄存器sr1/sr9/sr17的第一矩阵元素,分别和目标通用寄存器r9的第二矩阵元素做点积运算;依次执行直到最后发射指令DP4A.x3 r16, r15, sr7,运算子单元1、运算子单元2和运算子单元3分别读取目标标量寄存器sr7/sr15/sr23的第一矩阵元素,分别和目标通用寄存器r15的第二矩阵元素做点积运算。
从上述实施例中也可以看出,点积运算指令中M个目标标量寄存器所属的组不同。例如第一次发射出去的点积运算指令为DP4A.x3 r16, r8, sr0,3个目标标量寄存器分别为sr0/sr8/sr16,分别属于第一组标量寄存器、第二组标量寄存器和第三组标量寄存器。
进一步地,在点积运算指令中的发射次数为最大次数时,运算单元103分别对所述M个第二通用寄存器中的点积运算结果进行累加计算,以得到目标矩阵的M行矩阵元素。
在本发明实施例中,在并行的M路点积运算模式下,点积运算指令的数量为原来的M分之一,节省了信令开销。同时,指令数量的减少,还能够减少调度执行器的取指压力,也会减少指令调度执行器的指令发射次数,从而进一步提升图形处理单元的性能。
在一个非限制性的实施例中,还公开了一种指令编译方法,指令编译方法可以由编译器执行。编译器将点积运算指令发送至图形处理单元,具体地发送至调度执行器104。
具体地,请参照图3,指令编译方法可以包括以下步骤:
步骤301:生成点积运算指令。其中,点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,点积运算指令用于指示对目标通用寄存器中的第二矩阵元素以及M个目标标量寄存器中的第一矩阵元素分别执行点积运算。
步骤302:发送点积运算指令。
可以理解的是,在具体实施中,上述方法的各个步骤可以采用软件程序的方式实现,该软件程序运行于芯片或芯片模组内部集成的处理器中。该方法也可以采用软件结合硬件的方式实现,本申请不作限制。
本实施例中,编译器通过生成点积运算指令,使图形处理单元中的运算单元能够在执行点积运算指令时并行地执行M路点积运算,在同样的指令数量下,图形处理单元能够执行更多行矩阵元素的点积运算,能够减少指令数量,降低信令开销,减少调度执行器调取指令和发射指令的压力,进一步提升计算效率,进而提高最终输出图形的帧率,提升三维图形渲染的效率。
在一个具体实施例中,点积运算指令还包括发射次数,N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
在一个具体实施例中,编译器还可以生成并发送搬运指令,搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至M组标量寄存器中。
本实施例通过生成搬运指令,可以实现预先将第一矩阵元素存储至标量寄存器中,以用于后续矩阵元素的点积运算,辅助提升图形处理单元的计算效率。
在一个非限制性的实施例中,还公开了一种指令编译装置40。指令编译装置40可以用于与图形处理单元进行交互,具体可以与图形处理单元中调度执行器进行交互。具体地,指令编译装置40可以包括:
处理模块401,用于生成点积运算指令。其中,点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,点积运算指令用于指示对目标通用寄存器中的第二矩阵元素以及M个目标标量寄存器中的第一矩阵元素分别执行点积运算。
通信模块402,用于发送点积运算指令。
关于本申请实施例的更多具体实现方式,请参照前述实施例,此处不再赘述。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端设备的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端设备内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端设备内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
本申请实施例还公开了一种存储介质,所述存储介质为计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时可以执行图2中所示方法的步骤。所述存储介质可以包括只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁盘或光盘等。存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。
虽然本申请披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (12)

1.一种图形处理单元,其特征在于,包括:
M组标量寄存器,每组标量寄存器包括N个标量寄存器,每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素,M为大于等于2的正整数,N为大于等于1的正整数;
N个第一通用寄存器,用于存储第二矩阵中的第二矩阵元素;
调度执行器,用于接收点积运算指令,所述点积运算指令指示执行并行的M路点积运算,所述点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,所述M个目标标量寄存器分别选自所述M组标量寄存器;
运算单元,用于根据所述点积运算指令对所述M个目标标量寄存器中的第一矩阵元素以及所述目标通用寄存器中的第二矩阵元素执行点积运算,以得到目标矩阵的M行矩阵元素。
2.根据权利要求1所述的图形处理单元,其特征在于,所述运算单元包括:
M个运算子单元,每一运算子单元用于对所述目标通用寄存器中的第二矩阵元素以及一个目标标量寄存器中的第一矩阵元素执行点积运算。
3.根据权利要求1所述的图形处理单元,其特征在于,还包括:
M个第二通用寄存器,用于分别存储所述运算单元输出的M组点积运算结果。
4.根据权利要求3所述的图形处理单元,其特征在于,所述点积运算指令还包括发射次数,所述N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
5.根据权利要求4所述的图形处理单元,其特征在于,在所述点积运算指令中的发射次数为最大次数时,所述运算单元分别对所述M个第二通用寄存器中的点积运算结果进行累加计算,以得到目标矩阵的M行矩阵元素。
6.根据权利要求5所述的图形处理单元,其特征在于,还包括:
内存,用于存储所述目标矩阵的矩阵元素。
7.根据权利要求1所述的图形处理单元,其特征在于,所述调度执行器还用于接收搬运指令,所述搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至所述M组标量寄存器中。
8.一种指令编译方法,其特征在于,包括:
生成点积运算指令,所述点积运算指令包括目标通用寄存器的标识以及M个目标标量寄存器的标识,所述点积运算指令用于指示对所述M个目标标量寄存器中的第一矩阵元素以及所述目标通用寄存器中的第二矩阵元素分别执行点积运算,所述M个目标标量寄存器分别选自M组标量寄存器,每组标量寄存器包括N个标量寄存器,每组标量寄存器用于存储第一矩阵中的一行第一矩阵元素,N为大于等于1的正整数,M为大于等于2的正整数,第二矩阵中的第二矩阵元素存储在N个第一通用寄存器中;
发送所述点积运算指令,所述点积运算指令用于指示计算得到目标矩阵的M行矩阵元素。
9.根据权利要求8所述的指令编译方法,其特征在于,所述点积运算指令还包括发射次数,所述N个第一通用寄存器包括在具有不同发射次数的点积运算指令中,同一组标量寄存器中N个标量寄存器包括在具有不同发射次数的点积运算指令中。
10.根据权利要求8所述的指令编译方法,其特征在于,还包括:
生成并发送搬运指令,所述搬运指令用于指示将第一矩阵中的M行第一矩阵元素分别存储至所述M组标量寄存器中。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求8至10任一项中所述指令编译方法的步骤。
12.一种终端设备,其特征在于,包括权利要求1至7任一项所述的图形处理单元。
CN202310354382.7A 2023-04-04 2023-04-04 图形处理单元及指令编译方法、存储介质、终端设备 Active CN116109468B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310354382.7A CN116109468B (zh) 2023-04-04 2023-04-04 图形处理单元及指令编译方法、存储介质、终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310354382.7A CN116109468B (zh) 2023-04-04 2023-04-04 图形处理单元及指令编译方法、存储介质、终端设备

Publications (2)

Publication Number Publication Date
CN116109468A CN116109468A (zh) 2023-05-12
CN116109468B true CN116109468B (zh) 2023-07-21

Family

ID=86261857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310354382.7A Active CN116109468B (zh) 2023-04-04 2023-04-04 图形处理单元及指令编译方法、存储介质、终端设备

Country Status (1)

Country Link
CN (1) CN116109468B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110770701A (zh) * 2017-06-28 2020-02-07 Arm有限公司 基于寄存器的矩阵乘法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600281B2 (en) * 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
CN111079081B (zh) * 2019-12-16 2021-02-12 海光信息技术股份有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
CN114579929B (zh) * 2022-03-14 2023-08-08 海飞科(南京)信息技术有限公司 加速器执行的方法和电子设备
CN115880132B (zh) * 2023-02-06 2023-05-23 南京砺算科技有限公司 图形处理器、矩阵乘法任务处理方法、装置及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110770701A (zh) * 2017-06-28 2020-02-07 Arm有限公司 基于寄存器的矩阵乘法

Also Published As

Publication number Publication date
CN116109468A (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
EP3496007B1 (en) Device and method for executing neural network operation
KR102258414B1 (ko) 처리 장치 및 처리 방법
CN111542839B (zh) 一种反卷积神经网络的硬件加速方法、装置和电子设备
US9164690B2 (en) System, method, and computer program product for copying data between memory locations
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
CN109416755B (zh) 人工智能并行处理方法、装置、可读存储介质、及终端
US11651198B2 (en) Data processing method and apparatus for neural network
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
US20230214338A1 (en) Data moving method, direct memory access apparatus and computer system
CN110490308B (zh) 加速库的设计方法、终端设备及存储介质
CN116109468B (zh) 图形处理单元及指令编译方法、存储介质、终端设备
EP4310700A1 (en) Matrix multiplier, matrix computing method, and related device
US11874898B2 (en) Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
CN107678781B (zh) 处理器以及用于在处理器上执行指令的方法
CN115775199B (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
CN116185937A (zh) 基于众核处理器多层互联架构的二元运算访存优化方法及装置
CN115346099A (zh) 基于加速器芯片的图像卷积方法、芯片、设备及介质
CN109308194B (zh) 用于存储数据的方法和装置
CN109375952B (zh) 用于存储数据的方法和装置
CN108491546A (zh) 一种页面切换方法及电子设备
CN112712167A (zh) 支持多种卷积神经网络加速的存储器访问方法及系统
KR20180067200A (ko) 딥러닝 기반 인식 시스템
US20230214339A1 (en) Data moving method for direct memory access apparatus
CN117311956A (zh) 一种待模拟量子程序的gpu内存分配方法及装置
CN117667204A (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