一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有数据连接器组件的点对点连接的处理元件的制作方法

2022-02-24 18:41:11 来源:中国专利 TAG:

具有数据连接器组件的点对点连接的处理元件
1.发明背景
2.使用神经网络可以解决一整类复杂的人工智能问题。由于这些问题通常是在计算方面数据密集型的,所以硬件解决方案通常有利于提高神经网络的性能。使用基于硬件的解决方案,将较大的复杂问题分成较小的子问题,通常可以更快地解决这些解决方案。可以单独解决每个子问题,每个子问题的结果可被合并以确定较大问题的解决方案。此外,每个子问题可以被分配给不同的问题解决单元。但是,根据问题的类型,每个子问题结果的合并可能与硬件加速器架构不兼容。由于存在不同的问题类型,因此在不显著牺牲性能和效率的情况下创建兼容不同问题类型的硬件平台是一项挑战。因此,需要一种硬件解决方案来提高解决不同类型的高度分布式人工智能问题的能力。
3.附图简述
4.在以下详细描述和附图中公开了本发明的各种实施例。
5.图1是示出使用神经网络解决人工智能问题的系统的实施例的框图。
6.图2是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。
7.图3是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。
8.图4是示出使用硬件加速器解决涉及大数据集的矩阵运算的过程的实施例的流程图。
9.图5是示出使用分布式硬件加速器系统解决涉及大数据集的矩阵运算的过程的实施例的流程图。
10.图6是示出使用分布式硬件加速器系统解决涉及大数据集的矩阵运算的过程的实施例的流程图。
11.详细描述
12.本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,例如被配置为执行存储在耦合到处理器的存储器上和/或由该存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,可以改变所公开的过程的步骤顺序。除非另有说明,否则被描述为被配置成执行任务的诸如处理器或存储器的组件可以被实现为在给定时间被临时配置为执行任务的通用组件或者被制造为执行任务的特定组件。如本文所使用的,术语“处理器”指的是被配置成处理数据(例如,计算机程序指令)的一个或更多个设备、电路和/或处理核心。
13.下面提供了本发明的一个或更多个实施例的详细描述以及说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包括许多替代、修改和等同物。为了提供对本发明的全面理解,在以下描述中阐述了许多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以根据权利要求来实施,而不需要这些具体细节中的一些或全部。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地模糊本发明。
14.公开了一种用于解决复杂的人工智能问题的分布式硬件加速器系统。在各种实施
例中,该系统包括具有多个处理元件的硬件加速器架构。每个处理元件都能够执行诸如矩阵计算的神经网络运算。使用点对点网络,一个处理元件的计算结果可以被提供给另一个处理元件,在那里计算结果可以被结合。在一些实施例中,点对点网络允许在神经网络层之间重新对齐数据。不是将一个处理元件的结果写入存储器,然后从存储器读取该结果以将该结果与第二处理元件的结果合并,而是更有效地重新对齐处理元件的结果。存储器写入的数量减少,从而提供了改进的功率效率。在一些实施例中,处理元件计算结果的结合涉及将部分结果重新对齐或移位到不同的地址位置,例如不同的字节通道。利用所公开的系统,用于解决人工智能问题的计算性能显著提高,同时使用显著更少的功率。在各种实施例中,该系统是低功率系统,并且显著减少了解决神经网络相关问题所需的存储器写入。
15.在一些实施例中,微处理器系统包括包含第一矩阵计算单元的第一处理元件、包含第二矩阵计算单元的第二处理元件、第一处理元件和第二处理元件之间的点对点连接、以及至少将第一处理元件和第二处理元件连接在一起的通信总线。例如,硬件加速器微处理器系统包括多个处理元件,每个处理元件包括用于计算诸如矩阵乘法的矩阵运算的矩阵计算核心。矩阵计算引擎可以对输入矩阵进行运算,以确定输出矩阵结果。在一些实施例中,通过通信总线提供矩阵运算和自变量。通过点对点连接,将诸如第一和第二处理元件的不同的处理元件连接。在一些实施例中,点对点连接被配置为至少将第一矩阵计算单元的结果提供给第二处理元件的数据连接器组件,该数据连接器组件被配置为至少将第一矩阵计算单元所提供的结果与第二矩阵计算单元的结果相结合。例如,处理元件的数据连接器组件通过到上游处理元件的点对点连接接收相应上游处理元件的矩阵计算结果。数据连接器组件可以将来自上游处理元件的结果与当前处理元件的结果合并。矩阵计算结果可以通过重新对齐结果来被结合,例如,通过将一个或更多个结果移位到不同的地址位置和/或字节通道。例如,小于高速缓存行的计算引擎结果可以与其他计算结果合并,以创建被更有效地写入存储器的高速缓存行块。在各种实施例中,点对点连接和数据连接器组件将第一处理元件的计算结果与第二处理元件的计算结果相结合。在一些实施例中,使用点对点连接将多个处理元件进行菊花链连接。例如,使用四个菊花链连接的处理元件的点对点连接和链中最后三个处理元件的相应数据连接器组件,可以将四个8字节矩阵运算结果对齐到单个32字节数据行中。最后一个处理元件只需要一次存储器写入,就可以将结合的32字节数据行写入存储器。
16.图1是示出使用神经网络解决人工智能问题的系统的实施例的框图。例如,系统100可被应用以使用神经网络来解决诸如图像识别和推荐系统匹配的问题。可以通过将计算工作负荷分配给系统100的不同处理元件来解决对应于神经网络不同层的矩阵计算运算。在所示的例子中,系统100包括多个处理元件,例如处理元件101、103、105和109。附加的处理元件显示在虚线框中。系统100可以利用每个处理元件来执行诸如矩阵乘法的矩阵计算运算。在各种实施例中,系统100可以包括更少或更多的处理元件。例如,处理元件的数量可以根据预期的计算和数据要求而按比例增加(scaled up)或减少。在一些实施例中,系统100通信连接到存储器单元(未示出)。例如,存储器单元可以是末级高速缓存(last level cache,llc)和/或可以使用静态随机存取存储器(sram)来实现。
17.在一些实施例中,系统100的包括处理元件101、103、105和109的处理元件连接到通信总线(未示出)。通信总线可以用于传输处理元件指令和可选的指令自变量。例如,可以
通过通信总线将矩阵运算和矩阵操作数传输到诸如处理元件101的处理元件。在各种实施例中,大型复杂的人工智能问题可以使用系统100通过将问题细分成较小的子问题来解决。较小的子问题可以分派和分配给不同的处理元件。较小的子问题的结果可被合并以确定较大较复杂问题的解决方案。在某些情况下,子问题是并行地和/或在流水线级(pipelined stage)解决的。在某些情况下,来自第一处理元件的结果作为输入被馈送到第二处理元件。
18.在各种实施例中,系统100的处理元件(例如,处理元件101、103、105和109)各自可以包括数据连接器单元(未示出)以及与另一个处理元件的点对点连接(未示出)。例如,点对点连接将一个处理元件的计算结果提供给下游处理元件的数据连接器单元。数据连接器单元不仅接收其处理元件的结果而且还接收上游结果,并将这两个结果合并在一起。可以通过与后续下游处理元件的单独点对点连接将合并的结果提供给后续下游处理元件。在一些实施例中,通过多个点对点连接将多个处理元件菊花链连接在一起,以合并多个处理元件的结果。
19.图2是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。在所示的例子中,处理元件211包括控制逻辑213、矩阵计算引擎215和数据连接器单元217。处理元件211经由点对点连接209连接到处理元件201,并且经由点对点连接219连接到处理元件221。处理元件211还连接到通信总线251。处理元件201和221被显示为虚线框,并且没有显示处理元件201和221的一些细节。导向处理元件201和来自处理元件221的虚线箭头是来自附加(可选)处理元件(未示出)的可选点对点连接。类似于处理元件211,处理元件201和221连接到通信总线251。在一些实施例中,处理元件211是图1的处理元件101、103、105和/或109之一,并且点对点连接209和/或219是连接到图1的另一个处理元件的点对点连接。
20.在一些实施例中,处理元件211的控制逻辑213用于控制处理元件211的操作,包括矩阵计算引擎215和数据连接器单元217的操作。例如,控制逻辑213可以用于确定如何对齐在数据连接器单元217处接收的数据,包括给不同数据自变量分配什么字节通道。在一些实施例中,控制逻辑213用于处理由处理元件211经由通信总线251接收的指令。例如,处理元件指令可以包括矩阵计算指令、矩阵自变量、字节对齐命令等。
21.在一些实施例中,矩阵计算引擎215是用于执行矩阵运算的硬件矩阵计算引擎,这些矩阵运算包括与矩阵乘法和/或卷积运算相关的运算。例如,矩阵计算引擎215可以是用于执行点积运算的矩阵引擎。在一些实施例中,支持的卷积运算除其他之外包括逐深度(depthwise)、逐组(groupwise)、正常(normal)、规则(regular)、逐点(pointwise)、二维和/或三维卷积。例如,矩阵计算引擎215可以接收第一输入矩阵(例如,大图像的子集)以及接收第二输入矩阵(例如,滤波器、核(kernel)或卷积矩阵等),以应用于第一输入矩阵。矩阵计算引擎215可用于使用两个输入矩阵执行卷积运算,以确定结果输出矩阵。在一些实施例中,矩阵计算引擎215可以包括输入和/或输出缓冲器,用于加载输入数据矩阵并写出结果数据矩阵。在所示的例子中,矩阵计算引擎215向数据连接器单元217提供输出结果。
22.在一些实施例中,数据连接器单元217是用于结合两个数据输入的硬件单元。在所示的例子中,数据连接器单元217从矩阵计算引擎215接收第一输入操作数,并经由点对点连接209从处理元件201接收第二输入操作数。在各种实施例中,来自矩阵计算引擎215的第一输入操作数是矩阵运算结果,而第二输入操作数是来自处理元件201的处理结果。在一些实施例中,来自处理元件201的处理结果可以是由处理元件201执行的矩阵运算的结果,和/
或是使用处理元件201的相应数据连接器单元(未示出)合并处理元件201的矩阵运算结果而得到的结果。一旦数据连接器单元217接收到两个输入操作数,数据连接器单元217通过点对点连接219将结合的结果提供给处理元件221。在各种实施例中,数据连接器单元217将两个输入合并成单个输出。该输出然后可以通过点对点连接被提供给下游的处理元件。一个或两个输入可以被移位,使得每个输入被保留但被不同地对齐。例如,数据连接器单元217可以移位一个输入以将两个输入连接在一起。作为例子,两个8字节的输入可以合并成一个16字节的输出结果。类似地,两个16字节的输入可以合并成一个32字节的输出结果。在各种实施例中,不同的输入数据大小(例如,4字节、8字节、16字节等)和对齐选项可能是合适的,这取决于计算上下文。
23.在一些实施例中,对于处理元件211,点对点连接209和219分别是来自处理元件201的网络连接和到处理元件221的网络连接。点对点连接209用于向处理元件211的数据连接器单元217提供处理元件201的矩阵运算结果和/或数据连接器单元(未示出)的结果。点对点连接219用于将处理元件211的数据连接器单元217的结果提供给处理元件221的数据连接器单元(未示出)。在各种实施例中,处理元件可以包括到上游处理元件的连接,例如用于处理元件211的点对点连接209,和/或到下游处理元件的连接,例如用于处理元件211的点对点连接219。通过利用点对点连接,矩阵计算结果不需要通过通信总线251传输。避免了总线协议和总线通信的其他相关开销。
24.图3是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。在所示的例子中,处理元件301包括控制逻辑303、矩阵计算引擎305、多路复用器307、加法器311、点对点连接309和点对点连接313。处理元件301连接到通信总线351、通过点对点连接309连接到上游处理元件(未示出)以及通过点对点连接313连接到下游处理元件(未示出)。在一些实施例中,处理元件301是图2的处理元件211,并且控制逻辑303、矩阵计算引擎305、点对点连接309、点对点连接313和通信总线351分别是图2的控制逻辑213、矩阵计算引擎215、点对点连接209、点对点连接219和通信总线251。在一些实施例中,多路复用器307和加法器311被包括作为图2的数据连接器单元217的一部分。
25.在各种实施例中,控制逻辑303和矩阵计算引擎305的功能如关于图2的控制逻辑213和矩阵计算引擎215所述。例如,控制逻辑303处理处理元件指令,该处理元件指令包括经由通信总线351接收的矩阵计算指令。类似地,矩阵计算引擎305接收矩阵运算并执行诸如卷积和/或矩阵乘法运算的矩阵计算运算。在所示的例子中,矩阵计算引擎305的输出被提供给多路复用器307。
26.在一些实施例中,多路复用器307可以用于重新对齐矩阵计算引擎305的输出。例如,一个8字节的计算结果可以被移位8字节,并存储为32字节的填充值(padded value)。在各种实施例中,重新对齐的输出是用零填充的,使得重新对齐的输出可以与附加的8字节结果合并。例如,使用32字节的值,四个8字节的计算引擎结果可以使用一系列四个所公开的处理元件被合并在一起。在各种实施例中,多路复用器307用于将多路复用器307的输入移位配置的位数。位数可以是字节对齐的和/或8位的倍数(例如,8字节、16字节、24字节等)。例如,16字节的矩阵计算结果可以被移位16字节。在一些实施例中,矩阵计算引擎结果被移位的位数是由处理元件指令指定。指定的位数可以是0位,导致通过多路复用器307的输入不变。在一些实施例中,多路复用器307的大小与矩阵计算引擎305的输出大小相匹配。例
如,计算32字节结果的矩阵计算引擎被配置有可接收32字节输入的多路复用器。在各种实施例中,多路复用器307的输入大小和输出大小相同。例如,接收32字节矩阵计算结果的多路复用器输出重新对齐的32字节输出。在一些实施例中,使用用于重新对齐数据的另一适当硬件单元来实现多路复用器307。重新对齐的矩阵计算结果被提供给加法器311。
27.在一些实施例中,加法器311从多路复用器307接收重新对齐的矩阵计算,以及经由点对点连接309接收第二输入。第二输入可以是上游处理元件的处理结果。例如,处理结果可以是矩阵计算结果或多个合并的计算结果。加法器311将两个接收的输入合并成单个输出结果。例如,零填充的多路复用器结果被添加到通过点对点连接309提供的输入中。然后,经由点对点连接313将结果提供给下游处理元件(未示出)。在各种实施例中,处理元件之间的点对点连接(例如,点对点连接309和/或313)用于合并计算引擎结果,而不需要首先将计算结果写入存储器,这避免了潜在的昂贵的存储器操作。
28.图4是示出使用分布式硬件加速器系统解决涉及大数据集的矩阵运算的过程的实施例的流程图。例如,多层神经网络用于通过首先解决涉及大数据集的矩阵运算来解决复杂的人工智能问题。大数据集可以是图像数据、推荐数据或另一个适当的输入数据集。在各种实施例中,分布式硬件加速器系统包括多个处理元件,并且要解决的矩阵运算需要比任何单个处理元件可以处理的矩阵操作数更大的矩阵操作数。矩阵运算被分解成可以由一个或更多个处理元件解决的较小的子问题。在一些实施例中,使用诸如图1的系统100的硬件加速器系统来应用图4的过程。
29.在401,接收矩阵运算。矩阵运算包括矩阵操作数,例如一个或更多个输入矩阵。在各种实施例中,矩阵运算包括对于单个处理元件来说太大而无法处理的矩阵操作数。例如,每个处理元件可以配置有矩阵计算引擎,其可以计算两个32
×
32矩阵的乘积。矩阵运算可以包括大于32
×
32矩阵的矩阵操作数,例如1024
×
1024矩阵。为了执行接收到的矩阵运算,问题可以被分解成多个较小的问题。
30.在403,分解矩阵运算。例如,在401接收的矩阵运算被分解成较小的子问题。每个子问题利用单个处理元件可以处理的矩阵运算。例如,配置有可以计算两个32
×
32矩阵的乘积的矩阵计算引擎的处理元件被提供有32
×
32或更小的矩阵。在各种实施例中,一个子问题的输出可以是另一个子问题的输入。在一些实施例中,子问题可以并行地和/或在流水线级解决。
31.在405,分配矩阵运算。例如,403的分解的矩阵运算的每个子问题被分配给处理元件。在各种实施例中,硬件加速器系统的多个处理元件各自接收要解决的子问题。接收到的子问题可以利用原始矩阵自变量的子集,例如输入矩阵之一的切片。在一些实施例中,矩阵自变量是先前解决的子问题的结果,例如,由处理元件之一确定的结果。可以由分配的处理元件对分布式矩阵运算并行求解。
32.在407,合并来自矩阵运算的结果。例如,每个子问题的结果被合并以确定在401接收的矩阵运算的最终结果。在一些实施例中,通过将处理元件菊花链连接并利用如本文所述的处理元件之间的点对点连接来部分合并结果。合并的结果可以更有效地写入,以避免不必要的存储器写入,这导致显著的性能改进。在各种实施例中,使用硬件加速器系统的分布式处理元件解决的子问题的结果被合并,以确定在401接收的矩阵运算的最终结果。
33.图5是示出使用分布式硬件加速器系统解决涉及大数据集的矩阵运算的过程的实
施例的流程图。例如,分布式硬件加速器系统的处理元件被用来解决较大、较复杂的矩阵问题的子问题。在一些实施例中,处理元件部分用于使用多层神经网络解决复杂的人工智能。在一些实施例中,在图4的405和/或407处执行图5的过程,以提高矩阵计算的性能和功率效率。
34.在501,接收本地矩阵指令。例如,在处理元件处接收矩阵计算指令,其用于使处理元件执行矩阵运算。在各种实施例中,矩阵指令包括矩阵运算和诸如两个输入矩阵的矩阵自变量。在一些实施例中,矩阵指令用于求解卷积运算。
35.在503,接收本地矩阵自变量。例如,接收对应于矩阵自变量的数据,例如用于矩阵计算引擎的输入矩阵。在一些实施例中,数据作为从由在501接收的矩阵指令描述的位置(例如,存储器地址或寄存器)读取的结果被接收。例如,接收对应于诸如数据矩阵和权重矩阵的两个输入矩阵的数据。在一些实施例中,通过通信总线接收数据。
36.在505,执行本地矩阵运算。例如,使用矩阵计算引擎,由处理元件执行本地矩阵运算。矩阵运算可以是使用对应于在503接收到的自变量的数据的卷积运算。在一些实施例中,矩阵运算是矩阵乘法运算。矩阵运算的结果是使用处理元件的矩阵计算引擎确定的矩阵结果。
37.在507,本地矩阵结果被对齐。例如,使用矩阵计算引擎计算的本地矩阵结果被对齐。在各种实施例中,结果与位置偏移量对齐,例如将结果移位配置的位数。例如,8字节的矩阵结果可以被移位8字节、16字节或24字节,并用零填充以填成32字节的值。取决于将在511与本地矩阵结果结合的上游矩阵结果,可以使用诸如特定字节通道的特定格式来对齐本地矩阵结果。在一些实施例中,对齐由在501接收的本地矩阵指令指定。
38.在509,接收上游矩阵结果。例如,通过点对点连接接收上游处理元件的处理结果。处理结果可以是使用上游处理元件的矩阵计算引擎确定的矩阵结果。在一些实施例中,处理结果是数据连接器单元的结果,该数据连接器单元合并来自多个处理元件的结果。
39.在511,本地矩阵结果和上游矩阵结果被结合。例如,在507对齐的本地矩阵结果与在509接收的上游矩阵结果结合。在各种实施例中,结合的结果将多个矩阵计算结果打包在一起。例如,在507对齐的8字节矩阵计算结果可以与8字节、16字节或24字节上游矩阵结果一起打包为32字节的值。结合的结果可以被打包到存储器写入单元中,例如存储器块或高速缓存行。
40.在513,结合的矩阵结果被转发。在一些实施例中,结合的结果通过点对点连接被转发到下游处理元件。下游处理元件可以进一步结合由下游处理元件的矩阵计算引擎计算的矩阵计算结果,以有效地打包附加的矩阵计算结果。通过将结合的矩阵结果直接转发到下游处理元件,所需的存储器写入的数量减少,这导致性能的提高和功率需求的降低。
41.图6是示出使用分布式硬件加速器系统解决涉及大数据集的矩阵运算的过程的实施例的流程图。例如,分布式硬件加速器系统的处理元件被用来解决较大、较复杂的矩阵问题的子问题。在一些实施例中,处理元件部分用于使用多层神经网络解决复杂的人工智能。在一些实施例中,在图4的405和/或407处执行图6的过程,以提高矩阵计算的性能和功率效率。在一些实施例中,使用图3的处理元件来执行图6的过程。在一些实施例中,图6的过程是图5的过程的更专门的版本。
42.在601,接收具有结果偏移量的本地矩阵指令。例如,在处理元件处接收矩阵计算
指令,以便处理元件执行矩阵运算。本地矩阵指令包括用于指定矩阵计算结果应该移位的结果偏移量。例如,结果偏移量可以指定用来将结果移位的位数(例如,8位、16位、24位等)。矩阵指令还可以指定是否将结果与来自上游处理元件的结果合并。在一些实施例中,在图5的501处执行步骤601。
43.在603,执行本地矩阵运算。例如,使用矩阵计算引擎,由处理元件执行本地矩阵运算。矩阵运算可以是对应于在601接收的指令的卷积运算。作为从由在601接收的矩阵指令所描述的位置(例如,存储器地址或寄存器)读取的结果,对应于本地矩阵运算的自变量的数据被接收。例如,接收对应于诸如数据矩阵和权重矩阵的两个输入矩阵的数据,以执行本地矩阵运算。本地矩阵运算的结果是本地矩阵计算结果。在一些实施例中,在图5的503和/或505处执行步骤603。
44.在605,本地矩阵计算结果被移位结果偏移量。使用在601指定的结果偏移量,本地矩阵计算结果被移位以将结果与特定偏移量对齐。在各种实施例中,结果与位置偏移量对齐,例如将结果移位结果偏移量。例如,8字节矩阵结果可以被移位8字节、16字节或24字节,并用零填充以填成32字节的值。在一些实施例中,在图5的507处执行步骤605。
45.在607,接收上游矩阵结果。例如,通过点对点连接接收上游处理元件的处理结果。处理结果可以是使用上游处理元件的矩阵计算引擎确定的矩阵结果。在一些实施例中,处理结果是合并来自多个处理元件的结果的数据连接器单元的结果。在一些实施例中,在图5的509处执行步骤607。
46.在609,将本地矩阵结果和上游矩阵结果相加。例如,通过将两个结果相加在一起,在605移位的本地矩阵结果与在607接收的上游矩阵结果相结合。在各种实施例中,结合的结果将多个矩阵计算结果打包在一起。例如,在605移位的8字节矩阵计算结果可以与8字节、16字节或24字节上游矩阵结果一起打包成32字节的值。结合的结果可以被打包到存储器写入单元中,例如存储器块或高速缓存行。在一些实施例中,在图5的511处执行步骤609。
47.在611,转发相加的矩阵结果。在一些实施例中,结合的结果经由点对点连接被转发到下游处理元件。下游处理元件可以进一步结合由下游处理元件的矩阵计算引擎计算的矩阵计算结果,以便有效打包附加的矩阵计算结果。通过将结合的矩阵结果直接转发到下游处理元件,所需的存储器写入的数量减少,这导致性能的提高和功率需求的降低。在一些实施例中,在图5的513处执行步骤611。
48.尽管为了清楚理解的目的已经详细描述了前述实施例,但是本发明不限于所提供的细节。有许多实现本发明的替代方式。所公开的实施例是说明性的,而不是限制性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献