使用加法器访问多维张量中的数据制造技术

技术编号:22570076 阅读:30 留言:0更新日期:2019-11-17 10:16
方法、系统和设备,包括用于访问N维张量的设备,对于N维张量的每个维度,所述设备包括部分地址偏移值元素,其至少基于所述维度的初始值、所述维度的步长值以及所述维度的循环的迭代次数来存储所述维度的部分地址偏移值。所述设备包括硬件加法器和处理器。处理器获得访问N维张量的特定元素的指令。N维张量具有跨N个维度中的每个维度布置的多个元素,其中N是等于或大于一的整数。处理器使用部分地址偏移值元素和硬件加法器来确定特定元素的地址,并输出指示所确定的用于访问特定元素的地址的数据。

Using adder to access data in multidimensional tensor

Methods, systems, and devices, including devices for accessing n-dimensional tensors, for each dimension of n-dimensional tensors, the device includes a partial address offset value element, which stores a partial address offset value of the dimension based on at least the initial value of the dimension, the step value of the dimension, and the number of iterations of the cycle of the dimension. The device includes a hardware adder and a processor. The processor gets instructions to access specific elements of the n-dimensional tensor. An n-dimensional tensor has multiple elements arranged across each of N dimensions, where n is an integer equal to or greater than one. The processor uses a partial address offset value element and a hardware adder to determine the address of a specific element, and outputs data indicating the determined address used to access the specific element.

【技术实现步骤摘要】
【国外来华专利技术】使用加法器访问多维张量中的数据
本说明书一般涉及使用具有硬件加法器的专用计算单元来进行机器学习计算。
技术介绍
神经网络是机器学习模型,其采用一个或多个模型层来为所接收的输入生成输出,例如分类。除了外层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作对网络中下一个层(即网络的下一个隐藏层或输出层)的输入。网络的每个层根据相应参数集的当前值从所接收的输入生成输出。一些神经网络包括一个或多个卷积神经网络层。每个卷积神经网络层都有相关联的一组内核。内核可以表示为权重输入的矩阵结构。每个卷积层使用内核来处理对层的输入。对层的一组输入也可以表示为矩阵结构。
技术实现思路
本说明书描述与使用用于确定张量元素的存储器地址的一个或多个硬件加法器来访问N维张量有关的技术。通常,本说明书所述主题的一个创新性方面可以体现在用于访问N维张量的设备中。对于N维张量的每个维度,设备可包括:部分地址偏移值元素,其至少基于以下来存储所述维度的部分地址偏移值:所述维度的初始值、所述维度的步长值、以及所述维度的循环的迭代次数。设备还可包括一个或多个硬件加法器以及一个或多个处理器。一个或多个处理器可以被配置为获得访问所述N维张量的特定元素的指令。所述N维张量可具有跨N个维度中的每个维度布置的多个元素。N可以是等于或大于1的整数。处理器可以使用所述部分地址偏移值元素中的一个或多个部分地址偏移值元素和所述一个或多个硬件加法器来确定所述特定元素的地址,以及输出指示用于访问所述N维张量的所述特定元素的所确定的地址的数据。这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。在一些方案中,对于每个维度,设备可包括存储所述维度的初始值的初始值元素和存储所述维度的步长值的步长值元素。每个部分地址偏移值元素、每个初始值元素、以及每个步长值元素可包括寄存器。在一些方案中,确定所述特定元素的地址可包括使用所述一个或多个硬件加法器来确定每个维度的部分地址偏移值的总和。一个或多个处理器可以被配置为:对于每个维度,通过以下来确定所述维度的嵌套循环的每次迭代之后所述维度的部分地址偏移值:将所述步长值与所述维度的先前地址偏移值相加。对于每个维度,设备可包括:存储所述维度的限制值的限制值元素。所述一个或多个处理器对于每个维度可以确定所述维度的所确定的部分地址偏移值是否等于所述维度的限制值。响应于确定与第一嵌套循环相对应的第一维度的所确定的部分地址偏移值等于所述第一维度的限制值,所述一个或多个处理器可将所述第一维度的部分地址偏移值重置为所述第一维度的初始值;以及对于与所述第一嵌套循环在其中嵌套的第二嵌套循环相对应的第二维度,使用所述一个或多个硬件加法器,将所述第二维度的部分地址偏移值更新为等于所述第二维度的步长值与所述第二维度的部分地址偏移值的总和。在一些方案中,每个维度的所述步长值是基于一个或多个所述维度中的元素的数目的预定值。本说明书所述主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。使用寄存器来追踪存储器地址值允许程序使用一条指令来迭代深度嵌套的循环。通过基于存储在寄存器中的值来应用简单的加法,可以快速确定存储器地址值。专用计算单元可包括计算地址的加法器。通过使用加法器而不是算术逻辑单元(ALU)、乘法器或其他复杂的电路,可以减小电路的大小和电路的制造成本。使用硬件加法器确定存储器地址值允许减少处理器处的计算周期的数目,并增加用于其他计算任务的处理器带宽。可通过更少数目的指令遍历张量。二维寄存器架构允许同时追踪各自具有不同尺寸的多维张量。这个和其他方面的其他实施方式包括对应的系统、方法和计算机程序,被配置为进行在计算机存储装置上编码的方法的动作。一个或多个计算机的系统可通过安装在系统上的、在操作中使得系统进行动作的软件、固件、硬件或它们的组合来如此配置。一个或多个计算机程序可通过具有指令来如此配置,所述指令在通过数据处理设备执行时使得设备进行动作。在附图和以下描述中给出本说明书所述主题的一个或多个实施方式的细节。根据说明书、附图和权利要求书,本主题的其他潜在特征、方面和优点将变得显而易见。附图说明图1是示例计算系统的框图。图2A-2H示出示例张量遍历单元。图3是示出用于确定多维张量变量的地址的示例过程的流程图。各附图中相似的附图标记和名称表示相似的元素。具体实施方式通常,当软件算法处理N维张量时,可以使用嵌套循环。每个循环可以负责遍历N维张量的相应维度。多维张量可以是矩阵或多维矩阵。例如,2维张量是矩阵,而3维张量是由多个二维矩阵组成的三维矩阵。N维张量的每个维度可包括一个或多个元素,其中每个元素可以存储相应的数据值。例如,张量可以是程序中的变量,其中变量可具有三个维度。第一维度可具有三百个元素的长度,第二维度可具有一千个元素的长度,且第三维度可具有二十个元素的长度。当然,每个维度中的其他数目的元素也是可能的。在嵌套循环中遍历张量可包括:计算元素的存储器地址值以加载或存储元素的对应数据值。for循环是嵌套循环的示例,其中由三个循环索引变量(例如,i、j和k)追踪的三个循环可以被嵌套以遍历三维张量。在神经网络中,可以在与张量相关联的一个或多个点积计算中使用元素的值。例如,可将元素的值与对应的参数或权重相乘。可以使用嵌套的for循环按顺序遍历张量的元素,以访问元素,并使用元素的值进行一个或多个计算。继续三维张量示例,外层for循环可用于遍历变量i所追踪的循环,中间for循环可用于遍历变量j所追踪的循环,且内层for循环可用于遍历变量k所追踪的循环。在该示例中,所访问的第一元素可以是(i=0,j=0,k=0),第二元素可以是(i=0,j=0,k=1),等等。如下所述,张量遍历单元可用于使用嵌套循环按顺序确定每个元素的存储器地址,使得处理单元可以访问元素的值并使用元素的值进行一个或多个计算。也可以使用嵌套的for循环类似地访问权重或参数的值。张量遍历单元还可用于确定计算中使用的权重或参数的地址和/或计算的输出的地址,其可用作对神经网络的隐藏层的输入。在一些情况下,处理器可能需要执行循环边界条件,例如使用外层循环索引变量设置内层循环的循环边界。例如,在确定是否退出嵌套循环的最内层循环时,程序可将最内层循环的循环索引变量的当前值与嵌套循环的最外层循环的循环索引变量的当前值进行比较。这些任务可能需要大量指令,诸如分支指令和整数算术指令。当每个循环边界很小并且循环的数目很大时,计算可能占用整个执行时间的很大一部分,并严重劣化整体效能。用于处理器的硬件张量遍历单元可通过减少处理器在遍历张量时需要处理的维度数目来增加处理器的计算带宽。图1示出用于遍历张量的示例计算系统100的框图。通常,计算系统100处理输入104以生成输出116。计算系统100可以被配置为进行线性代数计算。输入104可以是可通过计算系统100来处理的任何合适数据。计算系统100包括处理单元102、存储介质104和张量遍历单元106。通常,当本文档来自技高网...

【技术保护点】
1.一种用于处理访问N维张量的指令的设备,所述设备包括:/n针对所述N维张量的每个维度的部分地址偏移值元素,所述部分地址偏移值元素至少基于所述维度的初始值、所述维度的步长值、以及所述维度的循环的迭代次数来存储所述维度的部分地址偏移值;/n一个或多个硬件加法器;以及/n一个或多个处理器,所述一个或多个处理器被配置为:/n获得用于访问所述N维张量的特定元素的指令,其中,所述N维张量具有跨N个维度中的每个维度布置的多个元素,并且其中,N是等于或大于一的整数;/n使用所述部分地址偏移值元素中的一个或多个部分地址偏移值元素和所述一个或多个硬件加法器来确定所述特定元素的地址;以及/n输出指示所确定的用于访问所述N维张量的所述特定元素的地址的数据。/n

【技术特征摘要】
【国外来华专利技术】20170523 US 15/603,061;20180223 US 15/903,9911.一种用于处理访问N维张量的指令的设备,所述设备包括:
针对所述N维张量的每个维度的部分地址偏移值元素,所述部分地址偏移值元素至少基于所述维度的初始值、所述维度的步长值、以及所述维度的循环的迭代次数来存储所述维度的部分地址偏移值;
一个或多个硬件加法器;以及
一个或多个处理器,所述一个或多个处理器被配置为:
获得用于访问所述N维张量的特定元素的指令,其中,所述N维张量具有跨N个维度中的每个维度布置的多个元素,并且其中,N是等于或大于一的整数;
使用所述部分地址偏移值元素中的一个或多个部分地址偏移值元素和所述一个或多个硬件加法器来确定所述特定元素的地址;以及
输出指示所确定的用于访问所述N维张量的所述特定元素的地址的数据。


2.根据权利要求1所述的设备,对于每个维度还包括:
初始值元素,所述初始值元素存储所述维度的所述初始值;以及
步长值元素,所述步长值元素存储所述维度的所述步长值。


3.根据权利要求2所述的设备,其中,每个部分地址偏移值元素、每个初始值元素以及每个步长值元素包括寄存器。


4.根据权利要求1至3中的任一项所述的设备,其中,确定所述特定元素的地址包括:使用所述一个或多个硬件加法器来确定每个维度的部分地址偏移值的总和。


5.根据权利要求1至4中的任一项所述的设备,其中,所述一个或多个处理器还被配置为:
对于每个维度,通过将所述步长值与所述维度的先前地址偏移值相加来确定所述维度的嵌套循环的每次迭代之后所述维度的部分地址偏移值。


6.根据权利要求5所述的设备,对于每个维度还包括:存储所述维度的限制值的限制值元素,其中,所述一个或多个处理器还被配置为:
对于每个维度确定所述维度的所确定的部分地址偏移值是否等于所述维度的限制值;以及
响应于确定与第一嵌套循环相对应的第一维度的所确定的部分地址偏移值等于所述第一维度的限制值:
将所述第一维度的部分地址偏移值重置为所述第一维度的初始值;以及
对于与所述第一嵌套循环所嵌套于的第二嵌套循环相对应的第二维度,使用所述一个或多个硬件加法器将所述第二维度的部分地址偏移值更新为等于所述第二维度的步长值与所述第二维度的部分地址偏移值的总和。


7.根据权利要求1至6中的任一项所述的设备,其中,每个维度的所述步长值是基于一个或多个所述维度中的元素的数目的预定值。


8.一种系统,包括:
一个或多个处理器,所述一个或多个处理器被配置为对N维张量进行线性代数运算,其中,所述N维张量具有跨N个维度中的每个维度布置的多个元素,并且其中,N是等于或大于一的整数;
针对所述N个维度中的每个维度的部分地址偏移值元素,所述部分地址偏移值元素至少基于所述维度的初始值、所述维度的步长值以及所述维度的循环的迭代次数来存储所述维度的部分地址偏移值;
电路,所述电路包括一个或多个硬件加法器并且被配置为:
获得用于访问所述N维张量的特定元素的指令;
使用所述部分地址偏移值元素中的一个或多个部分地址偏移值元素和所述一个或多个硬件加法器来确定所述特定元素的地址;以及
输出指示所确定的用于访问所述N维张量的所述特定元素的地址的数据。


9.根据权利要求8所述的系统,对于每个维度还包括:
初始...

【专利技术属性】
技术研发人员:奥利维尔·泰马姆哈西特·哈伊坦拉维·纳拉亚纳斯瓦米禹同爀
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利