CN118035618A - 数据处理器、数据处理方法、电子设备、存储介质 - Google Patents
数据处理器、数据处理方法、电子设备、存储介质 Download PDFInfo
- Publication number
- CN118035618A CN118035618A CN202410289769.3A CN202410289769A CN118035618A CN 118035618 A CN118035618 A CN 118035618A CN 202410289769 A CN202410289769 A CN 202410289769A CN 118035618 A CN118035618 A CN 118035618A
- Authority
- CN
- China
- Prior art keywords
- data
- tensor
- calculation
- computing
- unit
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 36
- 238000004364 calculation method Methods 0.000 claims abstract description 228
- 230000005540 biological transmission Effects 0.000 claims abstract description 87
- 230000004927 fusion Effects 0.000 claims description 41
- 239000011159 matrix material Substances 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 13
- 238000009825 accumulation Methods 0.000 claims description 12
- 238000007499 fusion processing Methods 0.000 claims description 6
- 239000002699 waste material Substances 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 10
- 230000009467 reduction Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
一种数据处理器、数据处理方法、电子设备和非瞬时性计算机可读存储介质。该数据处理器包括张量运算单元和N个计算单元,张量运算单元配置为对输入数据执行张量计算,得到张量计算结果;N个计算单元配置为执行张量计算结果的矢量运算和生成输入数据中的至少一种;其中,张量运算单元和N个计算单元中的至少部分计算单元之间提供有第一数据传输通道,第一数据传输通道用于将张量计算结果直接提供至计算单元,以及将输入数据从计算单元直接提供至张量运算单元。该数据处理器可以减少对全局内存的访问,减少资源浪费,降低数据传输延时,大幅提高算子的总体效率,有效利用张量运算单元本身强大的算力,提高数据处理器的计算效率。
Description
技术领域
本公开的实施例涉及一种数据处理器、数据处理方法、电子设备和非瞬时性计算机可读存储介质,尤其涉及芯片领域的数据处理。
背景技术
张量(Tensor)是一个定义在一些向量空间和一些对偶空间的笛卡尔积上的多重线性映射,例如,标量可以看作0维张量,向量可以看作一维张量,矩阵可以看作二维张量。张量操作在并行处理器等处理器中广泛使用。
随着人工智能及机器学习的发展,对以并行处理器(例如,多核处理器、数字信号处理器等)为代表的众多并行处理器设备提出了新的要求。随着人工智能及机器学习的发展,对以并行处理器(例如,多核处理器、图形处理器、数字信号处理器等)为代表的众多并行处理器设备提出了新的要求。在人工智能等领域中经常使用的神经网络处理中,例如,卷积神经网络,经常需要执行张量操作,例如,矩阵乘法或卷积运算,此外,还经常需要执行矢量计算,例如累加、归约、常规的加法、减法、乘法、除法等计算。
发明内容
本公开至少一实施例提供一种数据处理器,包括张量运算单元和N个计算单元,N为大于1的正整数,所述张量运算单元配置为对输入数据执行张量计算,得到张量计算结果,其中,所述张量计算包括矩阵乘法或卷积运算;所述N个计算单元配置为执行所述张量计算结果的矢量运算和生成所述输入数据中的至少一种;其中,所述张量运算单元和所述N个计算单元中的至少部分计算单元之间提供有第一数据传输通道,所述第一数据传输通道配置为将所述张量计算结果直接提供至相应的计算单元,以及将所述输入数据从生成所述输入数据的计算单元直接提供至所述张量运算单元。
例如,在本公开至少一实施例提供的数据处理器中,每个计算单元包括寄存器,所述寄存器配置为存储与所述矢量运算相关的数据以及与生成所述输入数据相关的数据,所述张量运算单元包括缓存块,所述缓存块配置为缓存所述输入数据,所述第一数据传输通道连接所述至少部分计算单元中的寄存器和所述张量运算单元中的缓存块。
例如,在本公开至少一实施例提供的数据处理器中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述多个计算核之间共享数据,所述共享缓存中提供有逻辑运算单元,所述逻辑运算单元配置为执行跨计算单元的逻辑运算,其中,所述跨计算单元的逻辑运算包括对来自不同计算单元的数据进行算术逻辑运算。
例如,在本公开至少一实施例提供的数据处理器中,所述算术逻辑运算包括累加运算,所述逻辑运算单元包括累加器。
例如,在本公开至少一实施例提供的数据处理器中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述多个计算核之间共享数据,所述N个计算单元中的部分或所有计算单元的共享缓存之间提供有第二数据传输通道,所述第二数据传输通道配置为在所述部分或所有计算单元中的共享缓存之间传输数据。
例如,在本公开至少一实施例提供的数据处理器中,所述数据处理器包括多个流式处理器簇,每个流式处理器簇包括多个计算单元和1个张量运算单元,所述N个计算单元包括来自不同流式处理器簇中的计算单元或所述N个计算单元属于同一个流式处理器簇。
例如,在本公开至少一实施例提供的数据处理器中,所述数据处理器还配置为执行算子融合,其中,所述算子融合包括进行任意算子的深度融合,且在所述算子融合过程中,所述张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者,所述矢量运算单元包括所述N个计算单元,所述任务生产者用于产生计算数据,所述任务消费者用于接收并处理所述计算数据。
例如,在本公开至少一实施例提供的数据处理器中,在所述数据处理器的抽象层次中,所述至少部分计算单元的共享缓存整体上抽象为一个中间级缓存层。
本公开至少一实施例提供一种数据处理方法,用于数据处理器,其中,所述数据处理器包括张量运算单元和多个计算单元,所述张量运算单元配置为对输入数据执行张量计算,得到张量计算结果,其中,所述张量计算包括矩阵乘法或卷积运算;所述多个计算单元配置为执行所述张量计算结果的矢量运算和生成所述输入数据中的至少一种;所述数据处理方法包括:利用第一数据传输通道将所述张量计算结果直接提供至相应的计算单元,以及将所述输入数据从生成所述输入数据的计算单元直接提供至所述张量运算单元。
例如,在本公开至少一实施例提供的数据处理方法中,每个计算单元包括寄存器,所述寄存器配置为存储与所述矢量运算相关的数据以及与生成所述输入数据相关的数据,
所述张量运算单元包括缓存块,所述缓存块配置为缓存所述输入数据,
所述第一数据传输通道连接所述多个计算单元中的至少部分计算单元中的寄存器和所述张量运算单元中的缓存块。
例如,在本公开至少一实施例提供的数据处理方法中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述多个计算核之间共享数据,所述数据处理方法还包括:在所述共享缓存中执行跨计算单元的逻辑运算,其中,所述跨计算单元的逻辑运算包括对来自不同计算单元的数据进行算术逻辑运算。
例如,在本公开至少一实施例提供的数据处理方法中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述多个计算核之间共享数据,所述数据处理方法还包括:利用第二数据传输通道在所述多个计算单元中的至少部分计算单元的共享缓存之间传输数据。
例如,本公开至少一实施例提供的数据处理方法还包括:将所述至少部分计算单元的共享缓存整体上抽象为所述数据处理器的抽象层次中的一个中间级缓存层。
例如,本公开至少一实施例提供的数据处理方法还包括:执行算子融合,其中,所述算子融合包括进行任意算子的深度融合,且在所述算子融合过程中,所述张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者,所述矢量运算单元包括所述多个计算单元,所述任务生产者用于产生计算数据,所述任务消费者用于接收并处理所述计算数据。
本公开至少一实施例提供一种电子设备,包括如本公开任一实施例所述的数据处理器。
本公开至少一实施例提供一种非暂时性计算机可读存储介质,其上存储有指令,其中,所述指令在被处理器执行时实现如本公开任一实施例所述的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种通用图形处理器(GPGPU)的示意性结构图;
图2示出了一种张量运算单元的示意性结构图;
图3为本公开至少一实施例提供的一种数据处理器的示意性框图;
图4为本公开至少一实施例提供的一种数据处理器的示意性框图;
图5A为一种跨计算单元的逻辑运算的示意性数据流图;
图5B为本公开至少一实施例提供的跨计算单元的逻辑运算的示意性数据流图;
图6为本公开至少一实施例提供的数据处理器的示意性结构图;
图7为本公开至少一实施例提供的软件抽象数据流;
图8为本公开至少一实施例提供的张量计算方法的示意性流程图;
图9为本公开至少一实施例提供的张量计算方法的示意性流程图;
图10为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图;
图11为本公开至少一实施例提供的一种电子设备的示意性结构图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
GPU(Graphic Process Unit,图形处理单元)和GPGPU(General-Purpose GraphicProcess Unit,通用图形处理器)已经广泛用于深度学习模型训练。针对深度学习模型中常见的张量(tensor)操作,GPU厂商在软硬件设计时都做了特别优化以加速计算。例如,一些GPU厂商提供了专门的张量运算单元以优化张量计算。例如,张量运算单元可以包括张量核(Tensor Core),Tensor Core的使用大幅增加了数据吞吐率,提升了计算效率。
目前,大多数用于人工智能的加速器通常采用张量运算单元和矢量运算单元相结合的方式来优化加速计算。张量运算单元具有较高的算力,但只能计算矩阵乘法或者卷积运算等运算,而很多用于人工智能计算的算子不仅仅包含矩阵乘法或者卷积运算,通常还需要额外的计算,例如矩阵相加、累加计算、归约操作(reduction operation)等算术逻辑运算,这部分通常由矢量运算单元执行。
图1示出了一种通用图形处理器(GPGPU)的示意性结构图。
如图1所示,通用图形处理器实际上是一个流式处理器簇(Streaming ProcessorCluster,简称SPC)的阵列,例如包括图1所示的流式处理器簇1、...、流式处理器簇M,M为大于1的正整数。在图形处理器中,1个流式处理器簇处理一个计算任务,或者多个流式处理器簇处理一个计算任务。多个流式处理器簇之间通过全局缓存或全局内存进行数据共享。
如图1所示,以流式处理器簇1为例,1个流式处理器簇包括多个计算单元,例如图1中的计算单元1、计算单元2、...、计算单元N,N为正整数。各个计算单元(Compute Unit ,简称CU,例如是流式处理器)用于执行除矩阵乘法、卷积运算等矩阵计算以外的算术逻辑运算,例如累加、归约、常规的加法、减法、乘法、除法等。一个计算单元中包括多个核心(core,也称计算核或计算核心),每个计算核包括算数逻辑单元(ALU)、浮点计算单元等,计算核用于执行具体的计算任务。此外,计算单元还包括寄存器(例如图1中的寄存器堆)和共享缓存,用于分层存储计算任务相关的源数据和目的数据,一个计算单元中的共享缓存用于在该计算单元的核心之间共享数据。
在并行计算中,计算任务一般通过多个线程(thread)执行。这些线程在通用图形处理器(或称为并行计算处理器)中执行前被划分成多个线程块(thread block),然后经由线程块分发模块(图1中未示出)将多个线程块分发到各个计算单元。一个线程块中的所有线程必须要分配到同一个计算单元上执行。同时,线程块会被拆分成最小执行线程束(或简称线程束,warp),每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。
在每个计算单元中,线程束调度/分发模块(图1中未示出)对线程束进行调度、分配,以便该计算单元的多个计算核运行线程束。根据计算单元中计算核的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。内存执行指令会被发射到计算单元中的共享缓存或进一步发射到中间级缓存或全局缓存或全局内存中以进行读写操作等。
如图1所示,流式处理器簇1还包括张量运算单元。张量运算单元用于执行张量计算,例如张量计算可以包括矩阵乘法、卷积运算等。
图2示出了一种张量运算单元的示意性结构图。
如图2所示,张量运算单元包括缓存块和计算核。例如,在一些张量运算单元中,提供有两个缓存块,用于缓存作为源数据进行张量计算的两个源操作数。输入数据从内存或缓存(例如图1中的中间级缓存或全局缓存或全局内存)中沿至少一条数据传输通道传输至张量运算单元的缓存块,再由缓存块传输至计算核,在计算核中完成矩阵乘法或卷积运算等张量计算,得到张量计算结果,之后将张量计算结果作为输出数据传输至内存或缓存,或者矢量运算单元。
在本公开至少一实施例中,计算单元统称为矢量运算单元,矢量运算单元用于执行累加、常规的加减乘除、归约等算术逻辑运算,张量运算单元专门用于执行张量相关的运算,例如矩阵乘法、卷积运算等。
此外,如图1所示,流式处理器簇1中还可以设置中间级缓存,中间级缓存用于在一个流式处理器簇内部的计算单元之间共享数据。当然,在一些通用图形处理器中,也可以不设置中间级缓存,计算单元通过全局缓存或全局内存进行数据共享。
其它流式处理器簇的结构与流式处理器簇1的结构相同,这里不再赘述。通用图形处理器还包括全局缓存/内存,用于在各个流式处理器簇之间共享数据。
如图1和图2所示,张量运算单元中的高速缓存块仅为张量运算单元所用,对于在张量运算之后进行的常规乘法、加法、归约操作等,都是由矢量运算单元执行,在这种仅由矢量运算单元执行计算的场景下,张量运算单元中的缓存块无法发挥其价值。
此外,如图1所示,张量运算单元的输出数据单只能单向传输至计算单元中的寄存器,计算单元无法直接写入数据至张量运算单元,计算单元在向张量运算单元写入数据时,需要将输入数据传输至计算单元中的共享缓存、中间级缓存(或全局缓存/内存),之后再由中间级缓存(或全局缓存/内存)传输给张量运算单元,由此才可将输入数据写入张量运算单元,因此张量运算单元加载输入数据至缓存块的路径较长,造成资源浪费,数据延迟增加。
本公开至少一实施例提供了一种数据处理器、数据处理方法、电子设备和非瞬时性计算机可读存储介质。该数据处理器包括张量运算单元和N个计算单元,N为大于1的正整数,张量运算单元配置为对输入数据执行张量计算,得到张量计算结果,其中,张量计算包括矩阵乘法或卷积运算;N个计算单元配置为执行张量计算结果的矢量运算和生成输入数据中的至少一种;其中,张量运算单元和N个计算单元中的至少部分计算单元之间提供有第一数据传输通道,第一数据传输通道将张量计算结果直接提供至相应的计算单元,以及将输入数据从生成该输入数据的计算单元直接提供至张量运算单元。
在本公开至少一实施例提供的数据处理器中,在张量运算单元和计算单元之间建立互联通道,实现计算单元和张量运算单元之间的双向连接,张量运算单元可以将张量计算结果直接写入计算单元,计算单元也可以直接将输入数据提供至张量运算单元进行计算,无需再通过全局缓存、中间级缓存、共享缓存、全局内存等存储部件进行数据流转,减少对全局内存的访问,减少硬件单元的闲置,提高硬件利用率,降低数据传输延时,大幅提高算子的总体效率,有效利用张量运算单元本身强大的算力,提高数据处理器的计算效率。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图3为本公开至少一实施例提供的一种数据处理器的示意性框图。
如图3所示,该数据处理器100包括张量运算单元101、N个计算单元102,N个计算单元包括图3中的计算单元102_1、计算单元102_2、...、计算单元102_N。
例如,张量运算单元101配置为对输入数据执行张量计算,得到张量计算结果。例如,张量计算包括矩阵乘法或卷积运算。
例如,N个计算单元102配置为执行张量计算结果的矢量运算和生成输入数据中的至少一种。
例如,矢量运算包括除矩阵乘法和卷积运算以外的常规的加法、减法、乘法、除法运算,还可以包括累加运算和归约操作等,本公开对矢量运算的具体操作不作限制。
例如,计算单元102可以对经过矩阵乘法或卷积运算得到的张量计算结果进行归约操作、累加、激活函数计算、池化等。例如,计算单元102还可以对数据进行一些矢量运算,生成用于张量计算的输入数据,例如可以将张量计算结果进行累加和池化,将其作为输入数据再次提供给张量运算单元继续执行张量计算。例如,计算单元102可以执行上述对张量计算结果进行矢量运算和生成输入数据中的任一个,或者,计算单元102可以既执行上述对张量计算结果进行矢量运算,又可以执行生成输入数据。
例如,张量运算单元101和N个计算单元102中的至少部分计算单元之间提供有第一数据传输通道。
例如,如图3所示,张量运算单元和每个计算单元之间提供有第一数据传输通道103。例如,在另一些实施例中,张量运算单元也可以和部分计算单元之间提供有第一数据传输通道103,张量运算单元和其它计算单元之间不提供第一数据传输通道103,本公开对此不作具体限制。
例如,第一数据传输通道103配置为将张量计算结果直接提供至相应的计算单元102,以及将输入数据从生成该输入数据的计算单元102直接提供至张量运算单元101。
在本公开至少一实施例中,在数据处理器中增设张量运算单元和计算单元之间的双向互联通道,也即第一数据传输通道103,从而计算单元与张量运算单元通过第一数据传输通道103可以建立直接的通信连接,计算单元可以直接访问张量运算单元,输入数据可以直接传输给张量运算单元进行张量计算,无需如图1所示的,还需经过计算单元的共享缓存、中间级缓存等进行数据流转,减少对全局内存、全局缓存等的访问,减少资源浪费,降低数据传输延时,大幅提高算子的总体效率,有效利用张量运算单元本身强大的算力,提高数据处理器的计算效率。
例如,在一些实施例中,数据处理器可以是通用图形处理器或图形处理器,数据处理器的结构可以参考前述图1的相关描述。
例如,在一些实施例中,张量运算单元102可以是张量计算核(Tensor Core)。张量运算单元102的结构可以参考前述图2的相关描述。当然,需要说明的是,图2所示的张量运算单元是一种示意性结构,本公开不限于此,张量运算单元的结构可以根据需要设置,只要能实现相应的功能即可。例如,在一些实施例中,张量运算单元还可以额外具有输出单元,用于将计算核得到的张量计算结果进行缓存、输出等,本公开对此不作具体限制。例如,在另一些实施例中,张量运算单元中的计算核不仅能够完成张量计算,还可以将张量计算结果输出张量运算单元。
图4为本公开至少一实施例提供的一种数据处理器的示意性框图。
例如,每个计算单元102包括寄存器。例如,寄存器配置为存储与矢量运算相关的数据以及与生成输入数据相关的数据。
例如,计算单元中的寄存器可以为图4所示的寄存器堆,例如是通用图形处理器中的寄存器文件(register file)。
寄存器文件是片上存储器中最重要的一部分,它提供了与计算内核相匹配的数据访问速度。例如,与CPU(Central Processing Unit,中央处理器)内核等只有少量通用寄存器不同,在通用图形处理器中每个计算单元拥有大量的寄存器资源。图形处理器将这些寄存器静态分配给各个线程,大容量的寄存器文件能够让更多线程同时保持在活跃状态,而不需要像CPU那样进行耗时的上下文切换。
张量运算单元包括缓存块,缓存块配置为缓存输入数据。例如,如图4所示,张量运算单元可以包括缓存块,例如包括两个缓存块,用于缓存进行张量计算的两个源操作数。例如,两个源操作数可以是张量A和张量B,张量A和张量B的维度可以是2或更高维,通过张量运算单元计算张量A和张量B的矩阵乘法结果或卷积运算结果。
例如,第一数据传输通道连接该至少部分计算单元中的寄存器和张量运算单元中的缓存块。
例如,如图4所示,第一数据传输通道103连接每个计算单元中的寄存器和张量运算单元中的缓存块。
由此,通过第一数据传输通道103可以实现张量运算单元和计算单元之间直接的数据交换,并且张量运算单元可以直接将张量计算结果传输至寄存器进行后续处理(例如矢量运算),以及寄存器中的输入数据可以直接传输到张量运算单元的缓存块进行张量运算,数据交互无需再经过全局缓存/内存进行流转,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时,提升张量运算效率。
并且,寄存器最靠近计算单元的核心,其数据传输速度最快,带宽最高,因此设置第一数据传输通道103连接计算单元中的寄存器和张量运算单元中的缓存块可以进一步提高数据流转效率,提高计算效率。
此外,第一数据传输通道103的建立使得计算单元可以使用张量运算单元中的存储资源,张量运算单元中提供的高速缓存块可为计算单元所用,在仅由矢量运算单元执行计算的场景下充分发挥其价值。
人工神经网络(Artificial Neural Networks)也简称为神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠***的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。不论何种类型的人工神经网络,它们共同的特点是大规模并行处理、分布式存储、弹性拓扑、高度冗余和非线性运算等,具有运算速度、联想能力、适应性、容错能力和自组织能力等方面的能力。
为了提高神经网络的计算效率,通常会将神经网络中满足一定条件或规则的相邻多个算子(operator)进行融合,形成融合算子(fused operator)。一个融合算子或者无法进行融合的单个算子可以表示为一个融合层(fusion layer),或者简称为层。神经网络的计算过程以融合层为单位、逐层(layer-by-layer)进行。通常情况下,前一层(或前几层)的输出作为后一层(或者后几层)的输入,因而形成融合层之间的数据依赖(datadependency)。
目前,融合层通常以矢量运算类算子结尾,以张量计算类算子作为驱动,这是因为张量运算单元输出的张量计算结果可输出至计算单元,但计算单元需经过各级缓存甚至是外部存储资源才可将矢量运算后的数据输入至张量运算单元做后续张量计算,因此,融合算子时只能以矢量运算类算子结尾,这对算子融合策略构成了限制,融合算子时无法实现深度融合。
例如,本公开至少一实施例提供的数据处理器还配置为执行算子融合。
例如,算子融合包括进行任意算子的深度融合,且在算子融合过程中,张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者。矢量运算单元包括该N个计算单元。
这里,矢量运算单元例如包括图4中的N个计算单元102。例如,所有计算单元102都可以称为矢量运算单元。
例如,任务生产者用于产生计算数据,任务消费者用于接收并处理计算数据。例如,张量运算单元作为任务生产者时可以产生作为计算数据的张量计算结果,矢量运算单元作为任务消费者,接收并处理该张量计算结果。例如,矢量运算单元作为任务生产者时可以产生作为计算数据的输入数据,张量运算单元作为任务消费者接收并处理该输入数据,生成张量计算结果。
由于本公开提供了第一数据传输通道,增加了寄存器与张量运算单元中内置的缓存块的互联,增加了融合算子的深度融合的可能性。融合算子的融合策略将不再受限于以张量计算核作为驱动,矢量计算核作为协同消费者,可以实现任意算子的深度融合。根据融合策略需要,张量运算单元可以作为任务生产者驱动算子,也可以作为任务消费者接受并处理计算数据,同样的,矢量运算单元可以作为任务生产者驱动算子,也可以作为任务消费者接受并处理计算数据。这将比通过缓存或外部存储区加载数据带来更大的访存效率的提升。
跨计算单元的逻辑运算包括对来自不同计算单元的数据进行算术逻辑运算,例如对计算单元102_1和计算单元102_2中的数据进行算术逻辑运算。例如,算术逻辑运算可以包括各种算术运算、逻辑运算等,例如加减乘除、位运算、比较、累加、归约等,本公开对算术逻辑运算的具体类型不作限定。
例如,在计算单元102_1中对计算单元102_1和计算单元102_2的数据进行算术逻辑运算,计算单元102_2的数据可以通过第二数据传输通道(参考后文所述内容)传输至计算单元102_1中的共享缓存,或者,计算单元102_2的数据可以通过中间级缓存、全局缓存或全局内存等传输至计算单元102_1的共享缓存。
图5A为一种跨计算单元的逻辑运算的示意性数据流图。
目前,如图5A所示,数据在进行跨计算单元的逻辑运算时需要先将进行跨计算单元的逻辑运算的源数据从计算单元的共享缓存经寄存器传输至计算核心,该源数据包括来自其它计算单元的数据,该源数据在计算核心中执行具体的算术逻辑运算。之后,如图5A所示,再将计算结果经寄存器传输至共享缓存,计算结果存储在共享缓存中或经过共享缓存传输至其它计算单元等。
图5B为本公开至少一实施例提供的跨计算单元的逻辑运算的示意性数据流图。
例如,如图5B所示,在本公开至少一实施例中,共享缓存中提供有逻辑运算单元,逻辑运算单元配置为执行跨计算单元的逻辑运算。
例如,如图5B所示,在本公开中,各个计算单元的共享缓存中提供有逻辑运算单元,逻辑运算单元可以执行一些算术逻辑运算(arithmetic logic unit,简称ALU)。例如,逻辑运算单元可以提供有累加功能。当然,逻辑运算单元还可以根据需要支持例如加法运算、减法运算等算术逻辑运算,本公开对此不作具体限制。
例如,逻辑运算单元可以支持原子操作,原子操作指不可中断的一个或者一系列操作,也就是不会被线程调度机制打断的操作,运行期间不会有任何的上下文切换(context switch),原子操作要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。
例如,跨计算单元的数据进入共享缓存后直接在逻辑运算单元中执行相应的算术逻辑运算,无需再经由寄存器传输至计算核心执行逻辑计算,也无需再经由寄存器传输至共享缓存,避免数据反复读写共享缓存,提升计算效率,尽可能让数据在共享缓存内部流转,降低数据访存开销。
在一个计算单元上执行的线程称为线程组,线程组之间的数据交互主要在中间级缓存或全局缓存进行。如图1所示,流式处理器簇1中的计算单元1和计算单元2进行数据交互时,需要先通过共享缓存将数据传输至中间级缓存,计算单元2通过中间级缓存得到该数据。或者,计算单元1与流式处理器簇M中的计算单元1进行数据交互时,需要先通过计算单元1中的共享缓存将数据传输至中间级缓存,再由中间级缓存传输至全局缓存,流式处理器簇M中的计算单元1通过全局缓存得到该数据。
在本公开至少一实施例中,N个计算单元中的部分或所有计算单元的共享缓存之间提供有第二数据传输通道,第二数据传输通道配置为在该部分或所有计算单元的共享缓存之间传输数据,也即这些计算单元的共享缓存通过第二数据传输通道进行数据共享。
图6为本公开至少一实施例提供的数据处理器的示意性结构图。
如图6所示,每个计算单元包括共享缓存和多个计算核,共享缓存配置为在多个计算核之间共享数据。
如图6所示,在计算单元的共享缓存之间提供有双向互联的第二数据传输通道104。
例如,如图6所示,计算单元102_1中的寄存器可以将计算结果发送至计算单元102_1中的共享缓存,计算单元102_1中的共享缓存通过第二数据传输通道104将该计算结果发送至计算单元102_2中的共享缓存,计算单元102_2中的共享缓存再将计算结果发送至计算单元102_1中的寄存器进行后续计算。
例如,在一些实施例中,可以在所有计算单元的共享缓存之间提供第二数据传输通道,以利用第二数据传输通道实现所有计算单元的数据共享。例如,在另一些实施例中,可以在部分计算单元的共享缓存之间提供第二数据传输通道,以利用第二数据传输通道实现这些计算单元的数据共享。
由此,计算单元之间的数据共享可以直接通过共享缓存实现,数据可以通过第二数据传输通道104在各个计算单元的共享缓存之间流转,数据交互无需再经过全局缓存/内存进行流转,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时。
共享缓存更加靠近计算核,离计算核越近的存储资源数据访存效率越高,数据传输带宽越高,因此提供第二数据传输通道104可以为计算单元的共享缓存提供高速互联通道,进一步提高数据流转效率,增加数据交互速度,降低访问开销,提高计算效率。
此外,对于任一个计算单元,其可操作的共享缓存扩大了N倍,存储资源可以进一步充分发挥其价值,更加靠近计算核的共享缓存能够被充分利用。并且,在一些实施例中,计算单元的一些算术逻辑运算(例如累加)可以由共享缓存中的逻辑运算单元执行,则这些操作可以从全局缓存等提前到共享缓存(特别当数据累加器容量不够的情况下)中,可以提高***带宽效率。
例如,如图1所示,数据处理器可以包括多个流式处理器簇,每个流式处理器簇包括多个计算单元和1个张量运算单元。
例如,第二数据传输通道还配置为在多个流式处理器簇中的计算单元的共享缓存之间传输数据。例如,第二数据传输通道可以将整个数据处理器的所有计算单元中的共享缓存都连接起来,所有计算单元中的共享缓存都可以通过第二数据传输通道进行数据交互。例如,第二数据传输通道可以将数据处理器的部分计算单元中的共享缓存连接起来,这些计算单元可以属于一个流式处理器簇或不同流式处理器簇。例如,这些计算单元中的共享缓存可以通过第二数据传输通道进行数据交互,其它计算单元仍通过全局缓存、全局内存或中间级缓存进行数据交互。
例如,前述的N个计算单元可以属于一个流式处理器簇,提供的第二数据传输通道用于在该流式处理器簇内部的N个计算单元的共享缓存之间进行数据共享。
例如,前述的N个计算单元可以包括来自不同流式处理器簇中的计算单元,例如包括多个流式处理器簇中的所有计算单元。例如,前述的N个计算单元可以为不同流式处理器簇中的计算单元,提供的第二数据传输通道用于在不同流式处理器簇内部的计算单元的共享缓存之间进行数据共享。
也就是说,在本公开中,第二数据传输通道可以用于属于同一个流式处理器簇的计算单元的共享缓存之间进行数据共享,或者,在资源允许时,可以用于整个数据处理器中所有计算单元的共享缓存之间进行数据共享。N个计算单元可以指一个流式处理器簇内部的至少部分计算单元,也可以指整个数据处理器(所有流式处理器簇)中的至少部分计算单元。
目前,由于计算单元中的共享缓存仅为计算单元内部所用,计算单元都不能访问和使用其它计算单元的共享缓存,因此,在进行软件层抽象时无法将共享缓存抽象成一级,也即不能单独作为一个模块封装,所以不同算子上无法采用统一的方式使用共享缓存,造成软件抽象层无法很好地把分层切块引入进来,设计的算子存在大量的方式各异的实验方法。
当在共享缓存之间建立数据互联通道时,数据处理器的抽象层次中,多个计算单元的共享缓存可以整体上抽象为一个中间级缓存层。
例如,在软件开发过程中,通常会对***进行抽象分层,每一层的抽象只需要而且只能关注本层相关的信息,从而简化整个***的设计。由于目前共享缓存之间都建立了数据互联通道(第二数据传输通道),所以可以将计算单元的共享缓存整体上抽象为一个高速的中间级缓存层,在软件开发时可以作为一个整体进行开发和封装。
此外,目前,张量运算单元中的高速缓存块仅为张量运算单元所用,其他计算单元都不能访问和使用该缓存块,因此,在进行软件层抽象时无法将张量运算单元中的缓存块抽象成一级。
例如,在本公开至少一实施例中,数据处理器的抽象层次中,张量运算单元中的缓存块也可以抽象为一个中间级缓存层。
因此,在本公开至少一实施例中,提供第一数据传输通道和第二数据传输通道,从软件层面来说能够抽象出更优的软件访存和计算层次结构,进一步抽象出计算任务切块和调度逻辑,可以最大化利用张量运算单元等硬件资源,实现性能泛化。
图7为本公开至少一实施例提供的软件抽象数据流。
图7所示为随着时间推移在软件层面上数据流的流向,图中的两个张量运算单元并不是两个不同的张量运算单元,仅指明数据从计算单元102中输出后可以直接再进入张量运算单元101。
如图7所示,可以抽象出多个线程组处理张量运算单元输出的数据,每个线程组在一个计算单元中运行。如图7所示,计算单元在执行线程组时包括多个阶段,例如第一阶段、第二阶段、第三阶段等。在每个阶段中,数据从共享缓存传输至寄存器,由寄存器传输至计算核心进行矢量运算,之后再将结果传输回共享缓存。
共享缓存之间提供有第二数据传输通道,因此数据可以在共享缓存之间直接交互,计算单元可以通过共享缓存直接实现数据共享,如图7中共享缓存之间的箭头所示。由此,线程组之间可以通过计算单元的共享缓存进行通信,尽可能全局缓存或全局内存的访问,数据尽可能在更高速的共享缓存中流转,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时。
此外,张量运算单元101和计算单元102之间提供有第一数据传输通道,线程组也可以将数据直接写到张量运算单元102中,避免通过全局缓存或全局内存,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时,提升张量运算效率。
在本公开至少一实施例提供的数据处理器中,按照存储层次根据带宽大小由高到低建立缓存层次,且不同层次之间形成高速互联通信,例如,在计算单元和张量运算单元之间提供第一数据传输通道,在计算单元的共享缓存之间提供第二数据传输通道,解决张量运算架构在通用图形处理器上的高速缓存单元的利用率问题,尽可能的让数据在寄存器、共享内存、张量运算单元的内置高速缓存块中流转,减少对全局内存的访问,提高数据局部性,最大限度实现计算的高并发,降低数据传输延时。并且,通过增加计算单元中的寄存器和张量运算单元的高速缓存区的互联,增加了融合算子的深度融合的可能性。从软件视角来说,张量运算单元中的缓存块可抽象为一层存储结构,计算单元的共享缓存可整体抽象为一层存储结构,可以最大化利用张量运算单元等硬件资源,最大化利用每一层级的缓存容量和带宽优势,实现性能泛化。
本公开至少一实施例还提供一种数据处理方法。图8为本公开至少一实施例提供的数据处理方法的示意性流程图。
例如,该数据处理方法可应用于数据处理器。数据处理器包括张量运算单元和多个计算单元。
例如,张量运算单元配置为对输入数据执行张量计算,得到张量计算结果。例如,张量计算包括矩阵乘法或卷积运算。
例如,多个计算单元配置为对张量计算结果执行矢量运算,或者,多个计算单元配置为生成输入数据,或者,多个计算单元配置为对张量计算结果执行矢量运算以及生成输入数据。
例如,在一些实施例中,数据处理器可以是通用图形处理器,数据处理器的结构可以参考前述图1的相关描述。例如,在一些实施例中,张量运算单元102可以是张量计算核(Tensor Core)。张量运算单元102的结构可以参考前述图2的相关描述。
关于计算单元和张量运算单元的结构和功能可以参考前述数据处理器中计算单元102和张量运算单元101的相关描述,这里不再赘述。
例如,如图8所示,本公开实施例提供的数据处理方法至少包括步骤S10。
在步骤S10,利用第一数据传输通道将张量计算结果直接提供至相应的计算单元,以及将输入数据从生成输入数据的计算单元直接提供至张量运算单元。
例如,张量运算单元和每个计算单元或部分计算单元之间提供有第一数据传输通道。第一数据传输通道用于将张量运算单元101计算得到的张量计算结果直接提供至相应的计算单元102,以及将输入数据从生成该输入数据的计算单元102直接提供至张量运算单元101。
在本公开至少一实施例中,在数据处理器中增设张量运算单元和计算单元之间的双向互联通道,也即第一数据传输通道,从而计算单元与张量运算单元通过第一数据传输通道可以建立直接的通信连接,可以利用第一数据传输通道将张量计算结果直接提供至计算单元,以及将输入数据从计算单元直接提供至张量运算单元,无需如图1所示的,还需经过计算单元的共享缓存、中间级缓存进行数据流转,减少对全局内存的访问,减少资源浪费,降低数据传输延时,大幅提高算子的总体效率,有效利用张量运算单元本身强大的算力,提高数据处理器的计算效率。
例如,每个计算单元包括寄存器,寄存器配置为存储与矢量运算相关的数据以及与生成输入数据相关的数据。
例如,张量运算单元包括缓存块,缓存块配置为缓存输入数据。
例如,第一数据传输通道连接每个计算单元或部分计算单元中的寄存器和张量运算单元中的缓存块。
如图4所示,第一数据传输通道103连接每个计算单元中的寄存器和张量运算单元中的缓存块。由此,通过第一数据传输通道103可以实现张量运算单元和计算单元之间直接的数据交换,并且张量运算单元可以直接将张量计算结果传输至相应的寄存器进行后续处理(例如矢量运算),以及寄存器中的输入数据可以直接传输到张量运算单元的缓存块进行张量运算,数据交互无需再经过全局缓存/内存进行流转,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时,提升张量运算效率。
并且,寄存器最靠近计算单元的核心,其数据传输速度最快,带宽最高,因此设置第一数据传输通道103连接计算单元中的寄存器和张量运算单元中的缓存块可以进一步提高数据流转效率,提高计算效率。
此外,第一数据传输通道103的建立使得计算单元可以使用张量运算单元中的存储资源,张量运算单元中提供的高速缓存块可为计算单元所用,在仅由矢量运算单元执行计算的场景下充分发挥其价值。
图9为本公开至少一实施例提供的数据处理方法的示意性流程图。
例如,如图1等附图所示,每个计算单元包括共享缓存和多个计算核,共享缓存配置为在多个计算核之间共享数据。
例如,如图9所示,本公开实施例提供的数据处理方法还包括步骤S20。
在步骤S20,利用第二数据传输通道在多个计算单元中的至少部分计算单元的共享缓存之间传输数据。
例如,计算单元的共享缓存之间提供有第二数据传输通道,第二数据传输通道配置为在计算单元的共享缓存之间传输数据,计算单元的共享缓存通过该第二数据传输通道进行数据共享。
由此,计算单元之间的数据共享可以直接通过共享缓存实现,数据可以通过第二数据传输通道在各个计算单元的共享缓存之间流转,数据交互无需再经过全局缓存/内存进行流转,提高资源利用率,提高数据访存效率,避免消费数据访存开销,降低对全局缓存、全局内存或中间级缓存的访问次数,降低数据传输延时。
共享缓存更加靠近计算核,离计算核越近的存储资源数据访存效率越高,数据传输带宽越高,因此提供第二数据传输通道104可以为计算单元提供高速互联通道,进一步提高数据流转效率,增加数据交互速度,降低访问开销,提高计算效率。
此外,对于任一个计算单元,其可操作的共享缓存扩大了N倍,存储资源可以进一步充分发挥其价值,更加靠近计算核的共享缓存能够被充分利用。并且,在一些实施例中,计算单元的一些算术逻辑运算(例如累加)可以由共享缓存中的逻辑运算单元执行,则这些操作可以从全局缓存等提前到共享缓存(特别当数据累加器容量不够的情况下)中,可以提高***带宽效率。
例如,如图9所示,本公开至少一实施例提供的数据处理方法还包括步骤S30。
在步骤S30,在共享缓存中执行跨计算单元的逻辑运算。
例如,共享缓存中提供有逻辑运算单元,逻辑运算单元配置为执行跨计算单元的逻辑运算。
例如,逻辑运算单元可以提供有累加功能,例如,逻辑运算单元可以包括累加器。当然,逻辑运算单元还可以根据需要支持例如加法运算、减法运算等算术逻辑运算,本公开对此不作具体限制。
例如,跨计算单元的数据进入共享缓存后直接在逻辑运算单元中执行相应的算术逻辑运算,无需再经由寄存器传输至计算核心执行算术逻辑运算,也无需再经由寄存器传输至共享缓存,避免数据反复读写共享缓存,提升计算效率,尽可能让数据在共享缓存内部流转,降低数据访存开销。
例如,如图9所示,本公开至少一实施例提供的数据处理方法还包括步骤S40。
在步骤S40,执行算子融合。
例如,算子融合包括进行任意算子的深度融合,且在算子融合过程中,张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者。矢量运算单元包括该N个计算单元。
这里,矢量运算单元例如包括图4中的N个计算单元102。
例如,任务生产者用于产生计算数据,任务消费者用于接收并处理计算数据。例如,张量运算单元作为任务生产者时可以产生作为计算数据的张量计算结果,矢量运算单元作为任务消费者,接收并处理该张量计算结果。例如,矢量运算单元作为任务生产者时可以产生作为计算数据的输入数据,张量运算单元作为任务消费者接收并处理该输入数据,生成张量计算结果。
在本公开至少一实施例中,可以利用第一数据传输通道将张量计算结果直接提供至计算单元,以及将输入数据从计算单元直接提供至张量运算单元,增加了寄存器与张量运算单元内置缓存块的互联,增加了融合算子的深度融合的可能性。融合算子的融合策略将不再受限于以张量计算核作为驱动,矢量计算核作为协同消费者,可以实现任意算子的深度融合。根据融合策略需要,张量运算单元可以作为任务生产者驱动算子,也可以作为任务消费者接受并处理计算数据,同样的,矢量运算单元可以作为任务生产者驱动算子,也可以作为任务消费者接受并处理计算数据。这将比通过缓存或外部存储区加载数据带来更大的访存效率的提升。
例如,如图9所示,本公开至少一实施例提供的数据处理方法还包括步骤S50。
在步骤S50,将至少部分计算单元的共享缓存整体上抽象为数据处理器的抽象层次中的一个中间级缓存层。
当在共享缓存之间建立数据互联通道时,数据处理器的抽象层次中,建立数据互联通道的多个计算单元的共享缓存可以整体上抽象为一个中间级缓存层,在软件开发时可以作为一个整体进行开发和封装。
例如,本公开至少一实施例提供的数据处理方法还可以包括:将张量运算单元中的缓存块抽象为数据处理器的抽象层次中的一个中间级缓存层。
在本公开至少一实施例中,提供第一数据传输通道和第二数据传输通道,从软件层面来说能够抽象出更优的软件访存和计算层次结构,进一步抽象出计算任务切块和调度逻辑,可以最大化利用张量运算单元等硬件资源,实现性能泛化。
关于第一数据传输通道、第二数据传输通道、逻辑运算单元等更详细的内容可以参考前述数据处理器的相关描述,重复之处不再赘述。
本公开至少一实施例还提供一种非瞬时性计算机可读存储介质。图10为本公开至少一实施例提供的一种非瞬时性计算机可读存储介质的示意图。
例如,如图10所示,存储介质200可以为非瞬时性计算机可读存储介质,在存储介质200上可以非暂时性地存储一个或多个计算机可读指令201。例如,当计算机可读指令201由处理器执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
例如,该存储介质200可以应用于上述数据处理器中。
例如,存储装置可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机可读指令,数据处理器可以运行所述计算机可读指令,以实现数据处理器的各种功能。在存储介质中还可以存储各种应用程序和各种数据等。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
本公开至少一实施例还提供一种电子设备。图11为本公开至少一实施例提供的一种电子设备的示意性结构图。
本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图11所示,在一些示例中,电子设备300包括数据处理器301,关于数据处理器301的结构、功能、技术效果参考如前所述的数据处理器100,这里不再赘述。
例如,数据处理器可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有计算机***操作所需的各种程序和数据。处理装置301、ROM302以及RAM303通过总线304被此相连。输入/输出(I/O)接口305也连接至总线304。
例如,数据处理器301可以为通用图形处理器或图形处理器,电子设备300根据实际需要,可以是任意使用或包含该通用图形处理器的硬件设备,例如包括该数据处理器的计算设备,本公开对此不作具体限制。
例如,以下部件可以连接至I/O接口305: 包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置307; 包括例如磁带、硬盘等的存储装置308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储装置309。虽然图11示出了包括各种装置的电子设备300,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子设备300还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置309可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信***(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802. 11a、IEEE 802. 11b、IEEE 802. 11g和/或IEEE 802. 11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,电子设备可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的电子设备及硬件的组合,本公开的实施例对此不作限制。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种数据处理器,包括张量运算单元和N个计算单元,N为大于1的正整数,
所述张量运算单元配置为对输入数据执行张量计算,得到张量计算结果,其中,所述张量计算包括矩阵乘法或卷积运算;
所述N个计算单元配置为执行所述张量计算结果的矢量运算和生成所述输入数据中的至少一种;
其中,所述张量运算单元和所述N个计算单元中的至少部分计算单元之间提供有第一数据传输通道,所述第一数据传输通道配置为将所述张量计算结果直接提供至相应的计算单元,以及将所述输入数据从生成所述输入数据的计算单元直接提供至所述张量运算单元。
2.根据权利要求1所述的数据处理器,其中,每个计算单元包括寄存器,所述寄存器配置为存储与所述矢量运算相关的数据以及与生成所述输入数据相关的数据,
所述张量运算单元包括缓存块,所述缓存块配置为缓存所述输入数据,
所述第一数据传输通道连接所述至少部分计算单元中的寄存器和所述缓存块。
3.根据权利要求1所述的数据处理器,其中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述计算单元包括的所述多个计算核之间共享数据,
所述共享缓存中提供有逻辑运算单元,
所述逻辑运算单元配置为执行跨计算单元的逻辑运算,其中,所述跨计算单元的逻辑运算包括对来自不同计算单元的数据进行算术逻辑运算。
4.根据权利要求3所述的数据处理器,其中,所述算术逻辑运算包括累加运算,所述逻辑运算单元包括累加器。
5.根据权利要求1所述的数据处理器,其中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述计算单元包括的所述多个计算核之间共享数据,
所述N个计算单元中的部分或所有计算单元的共享缓存之间提供有第二数据传输通道,所述第二数据传输通道配置为在所述部分或所有计算单元中的共享缓存之间传输数据。
6.根据权利要求5所述的数据处理器,其中,所述数据处理器包括多个流式处理器簇,每个流式处理器簇包括多个计算单元和1个张量运算单元,
所述第二数据传输通道还配置为在所述多个流式处理器簇中的计算单元的共享缓存之间传输数据。
7.根据权利要求1-6中任一项所述的数据处理器,其中,所述数据处理器还配置为执行算子融合,
其中,所述算子融合包括进行任意算子的深度融合,且在所述算子融合过程中,所述张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者,所述矢量运算单元包括所述N个计算单元,所述任务生产者用于产生计算数据,所述任务消费者用于接收并处理所述计算数据。
8.根据权利要求5或6所述的数据处理器,其中,在所述数据处理器的抽象层次中,所述部分或所有计算单元的共享缓存整体上抽象为一个中间级缓存层。
9.一种数据处理方法,用于数据处理器,其中,所述数据处理器包括张量运算单元和多个计算单元,
所述张量运算单元配置为对输入数据执行张量计算,得到张量计算结果,其中,所述张量计算包括矩阵乘法或卷积运算;
所述多个计算单元配置为执行所述张量计算结果的矢量运算和生成所述输入数据中的至少一种;
所述数据处理方法包括:
利用第一数据传输通道将所述张量计算结果直接提供至相应的计算单元,以及将所述输入数据从生成所述输入数据的计算单元直接提供至所述张量运算单元。
10.根据权利要求9所述的数据处理方法,其中,每个计算单元包括寄存器,所述寄存器配置为存储与所述矢量运算相关的数据以及与生成所述输入数据相关的数据,
所述张量运算单元包括缓存块,所述缓存块配置为缓存所述输入数据,
所述第一数据传输通道连接所述多个计算单元中的至少部分计算单元中的寄存器和所述缓存块。
11.根据权利要求9所述的数据处理方法,其中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述计算单元包括的所述多个计算核之间共享数据,
所述数据处理方法还包括:
在所述共享缓存中执行跨计算单元的逻辑运算,其中,所述跨计算单元的逻辑运算包括对来自不同计算单元的数据进行算术逻辑运算。
12.根据权利要求9所述的数据处理方法,其中,每个计算单元包括共享缓存和多个计算核,所述共享缓存配置为在所述计算单元包括的所述多个计算核之间共享数据,
所述数据处理方法还包括:
利用第二数据传输通道在所述多个计算单元中的至少部分计算单元的共享缓存之间传输数据。
13.根据权利要求12所述的数据处理方法,还包括:
将所述至少部分计算单元的共享缓存整体上抽象为所述数据处理器的抽象层次中的一个中间级缓存层。
14.根据权利要求9-13中任一项所述的数据处理方法,还包括:
执行算子融合,其中,所述算子融合包括进行任意算子的深度融合,且在所述算子融合过程中,所述张量运算单元以及矢量运算单元均可作为任务生产者或任务消费者,所述矢量运算单元包括所述多个计算单元,所述任务生产者用于产生计算数据,所述任务消费者用于接收并处理所述计算数据。
15.一种电子设备,包括如权利要求1-8中任一项所述的数据处理器。
16.一种非暂时性计算机可读存储介质,其上存储有指令,其中,所述指令在被处理器执行时实现如权利要求9-14中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410289769.3A CN118035618B (zh) | 2024-03-14 | 2024-03-14 | 数据处理器、数据处理方法、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410289769.3A CN118035618B (zh) | 2024-03-14 | 2024-03-14 | 数据处理器、数据处理方法、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118035618A true CN118035618A (zh) | 2024-05-14 |
CN118035618B CN118035618B (zh) | 2024-07-02 |
Family
ID=90989144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410289769.3A Active CN118035618B (zh) | 2024-03-14 | 2024-03-14 | 数据处理器、数据处理方法、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118035618B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277490A (zh) * | 2024-06-04 | 2024-07-02 | 北京壁仞科技开发有限公司 | 数据处理***、数据同步方法、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573606A (zh) * | 2023-11-23 | 2024-02-20 | 北京中星微人工智能芯片技术有限公司 | 多核异构处理器芯片、设备和可读介质以及物品识别方法 |
-
2024
- 2024-03-14 CN CN202410289769.3A patent/CN118035618B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277490A (zh) * | 2024-06-04 | 2024-07-02 | 北京壁仞科技开发有限公司 | 数据处理***、数据同步方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118035618B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210216875A1 (en) | Method and apparatus for training deep learning model | |
CN106228238B (zh) | 现场可编程门阵列平台上加速深度学习算法的方法和*** | |
US10902315B2 (en) | Device for implementing artificial neural network with separate computation units | |
CN110678841B (zh) | 张量处理器指令集架构 | |
US20180307973A1 (en) | Device for implementing artificial neural network with flexible buffer pool structure | |
CN110262901B (zh) | 一种数据处理方法及数据处理*** | |
CN118035618B (zh) | 数据处理器、数据处理方法、电子设备、存储介质 | |
US20200409664A1 (en) | Transpose operations using processing element array | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
US20100145992A1 (en) | Address Generation Unit Using Nested Loops To Scan Multi-Dimensional Data Structures | |
Biookaghazadeh et al. | Toward multi-fpga acceleration of the neural networks | |
US20100146241A1 (en) | Modified-SIMD Data Processing Architecture | |
Das et al. | Enabling on-device smartphone GPU based training: Lessons learned | |
US20100145993A1 (en) | Address Generation Unit Using End Point Patterns to Scan Multi-Dimensional Data Structures | |
Milojicic | Accelerators for artificial intelligence and high-performance computing | |
CN115775199B (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
TW202107408A (zh) | 波槽管理之方法及裝置 | |
CN117112165A (zh) | 虚拟现实应用任务的处理方法、装置、虚拟现实*** | |
CN116468078A (zh) | 面向人工智能芯片的智能引擎处理方法和装置 | |
Li et al. | Dual buffer rotation four-stage pipeline for CPU–GPU cooperative computing | |
CN112732634B (zh) | 面向边缘计算的arm-fpga协同局部动态重构处理方法 | |
CN117940934A (zh) | 数据处理装置及方法 | |
Nieuwland et al. | A heterogeneous HW-SW architecture for hand-held multimedia terminals | |
CN115904681A (zh) | 任务调度方法、装置及相关产品 | |
Chiu et al. | Design and implementation of the CNN accelator based on multi-streaming SIMD mechanisms |
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 |