CN114341883A - 使用忆阻交叉式阵列执行点积运算 - Google Patents
使用忆阻交叉式阵列执行点积运算 Download PDFInfo
- Publication number
- CN114341883A CN114341883A CN202080061861.4A CN202080061861A CN114341883A CN 114341883 A CN114341883 A CN 114341883A CN 202080061861 A CN202080061861 A CN 202080061861A CN 114341883 A CN114341883 A CN 114341883A
- Authority
- CN
- China
- Prior art keywords
- matrix
- dot product
- convolution
- crossbar array
- product operations
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0007—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/003—Cell access
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
- G11C2013/0078—Write using current through the cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2213/00—Indexing scheme relating to G11C13/00 for features not covered by this group
- G11C2213/70—Resistive array aspects
- G11C2213/71—Three dimensional array
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2213/00—Indexing scheme relating to G11C13/00 for features not covered by this group
- G11C2213/70—Resistive array aspects
- G11C2213/77—Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Chemical & Material Sciences (AREA)
- Materials Engineering (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
一种对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的方法、计算机系统和计算机程序产品。矩阵卷积可以包括用于获得输出矩阵的所有元素的点积运算集。点积运算集中的每个点积运算可以包括输入矩阵的输入子矩阵和至少一个卷积矩阵。该方法可以包括提供被配置为执行向量矩阵乘法的忆阻交叉式阵列。点积运算集的子集可以通过将点积运算子集的卷积矩阵存储在交叉式阵列中并向交叉式阵列输入包括子集的输入子矩阵的所有不同元素的一个输入向量来计算。
Description
背景技术
本发明涉及数字计算机系统领域,并且更具体地,涉及一种使用忆阻交叉式阵列(memristive crossbar array)对多维输入矩阵执行一组矩阵卷积以获得多维输出矩阵的方法。
计算存储器在非冯·诺依曼计算范例的领域中是有前景的方法,其中纳米级电阻性存储器设备同时存储执行基本计算任务的数据。例如,通过将这些设备布置在交叉式配置中,可以执行矩阵向量乘法。然而,存在改进这些交叉式配置的使用的持续需要。
发明内容
本发明的各种实施例提供了一种用于使用忆阻交叉式阵列对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的方法,以及如独立权利要求的主题所述的交叉式阵列。如果本发明的实施例不是相互排斥的,则它们可以彼此自由地组合。
在一个实施例中,本发明涉及一种用于对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的方法。矩阵卷积可以涉及用于获得输出矩阵的所有元素的点积运算集。该点积运算集中的每个点积运算可以涉及输入矩阵的输入子矩阵和至少一个卷积矩阵。该方法可以包括提供被配置为执行向量矩阵乘法的忆阻交叉式阵列,通过将点积运算子集的卷积矩阵存储在交叉式阵列中来计算点积运算集的子集,以及向交叉式阵列输入包括子集的输入子矩阵的所有不同元素的一个输入向量。
在另一实施例中,本发明涉及一种用于对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的忆阻交叉式阵列。矩阵卷积可以涉及用于获得输出矩阵的所有元素的点积运算集。点积运算集中的每个点积运算可以涉及输入矩阵的输入子矩阵和至少一个卷积矩阵。交叉式阵列可以被配置为在交叉式阵列中存储卷积矩阵,使得包括输入子矩阵的所有不同元素的一个输入向量可以被输入到交叉式阵列中,以便执行点积运算集的点积运算子集。
附图说明
下面,仅通过示例,参考附图更详细地解释本发明的实施例,其中:
图1描绘忆阻器的交叉式阵列;
图2是根据本发明实施例的用于执行多个点积运算的方法的流程图;
图3是示出根据本发明实施例的用于多个点积运算的方法的框图;
图4是根据本发明实施例的用于执行卷积神经网络的推断过程的至少一部分的方法的流程图;
图5A是示出根据本发明实施例的用于多个点积运算的方法的框图;
图5B是示出根据本发明实施例的用于多个点积运算的方法的框图;
图6是示出根据本发明实施例的用于多个点积运算的方法的框图;
图7示出根据本发明实施例的一个ResNet体系结构的图形表示;
图8是根据本发明实施例的系统的框图;
图9示出了根据本发明实施例的云计算环境;以及
图10示出了根据本发明实施例的由图9的云计算环境提供的一组功能抽象层。
具体实施方式
本发明的各种实施例的描述将出于说明的目的而呈现,但不希望是详尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语是选择来以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
通过用阵列的对应忆阻器元件的电导来表示每个矩阵元素,可以通过忆阻交叉式阵列来实现矩阵W和向量x的矩阵-向量乘法。矩阵W和向量x的乘法可以通过将表示向量值的电压输入到交叉式阵列来执行。所得到的电流指示W和x的乘积。交叉式阵列的电阻存储器元件(或器件)可以例如是相变存储器(PCM)、金属氧化物电阻RAM、导电桥RAM和磁RAM中的一个。在另一示例中,交叉式阵列可以包括基于电荷的存储器元件,诸如SRAM和闪存(NOR和NAND)元件。能够获得最终乘积的交叉式阵列的矩阵W和电导G的表示方案可以是以下方案:
其中,Gmax由交叉式阵列的电导范围给出,并且Wmax根据矩阵W的大小来选择。
本发明的实施例可以提供交叉式阵列的区域高效使用。这使得能够实现点积运算的改进的并行计算。通过提供具有输入子矩阵的所有元素的单个向量,卷积矩阵可以以紧凑的方式存储在交叉式阵列中。例如,本发明的实施例可以用于学习和推断神经网络。
多维输入矩阵的子矩阵也可以是多维矩阵。例如,也可以将输入矩阵的大小定义为xin*yin*din,将输入矩阵的子矩阵的大小定义为:
subxin*subyin*din等式X
其中,subxin<xin且subyin<yin,并且din对于输入矩阵和子矩阵是相同的。输入矩阵的子矩阵的列是输入矩阵的连续列,并且子矩阵的行是输入矩阵的连续行。多维输入矩阵可以称为具有din个通道的特征映射。子矩阵可以包括大小为subxin*subyin的din通道-矩阵。子矩阵的通道-矩阵具有相同的元素位置(subxin,subyin)。点积运算集中的点积运算涉及输入矩阵的输入子矩阵和至少一个不同的卷积矩阵。例如,子矩阵subxin*subyin*din的点积运算涉及din个核,其中,每个核具有subxin*subyin的大小。din个核可以是相同或不同的核。
多维输出矩阵可以具有xout*yout*dout的大小。输出矩阵的元素可以由单个值或元素(xout,yout,dout)来定义。输出矩阵的像素可以由dout个元素来定义。输出矩阵的元素可以通过子矩阵subxin*subyin*din与din个核的点积来获得,其中,din个核与该元素所属的输出矩阵的通道相关联。即,为了获得输出矩阵的所有元素,dout*din个大小为(subxin,subyin)的核可以用来执行点积运算集。
根据一个实施例,计算步骤包括选择点积运算子集,使得点积运算子集的计算产生沿输出矩阵的两个维度的元素,并且使得点积运算的每个所选择的点积运算子集涉及不同的输入向量。点积运算子集被选择为使得它们可以由交叉式阵列一次执行。例如,通过将输入向量的所有元素同时输入到交叉式阵列,可以并行执行点积运算子集。
根据一个实施例,计算步骤可以包括选择点积运算子集,使得点积运算子集的计算产生沿输出矩阵的三个维度的元素,并且使得所选择的每个点积运算子集涉及不同的输入向量。
根据一个实施例,对卷积神经网络(CNN)的训练或推断涉及在CNN的每一层上可由忆阻交叉式阵列计算的层运算,其中矩阵卷积是CNN的给定层的层运算。
根据一个实施例,该方法可以包括提供另外的忆阻交叉式阵列,使得CNN的每个另外的层与忆阻交叉式阵列相关联,互连忆阻交叉式阵列以便以流水线方式执行,以及使用相应的点积运算子集和与另外的层相关联的忆阻交叉式阵列来针对CNN的每个另外的层执行计算步骤。
根据一个实施例,可以选择由每个忆阻交叉式阵列计算的点积运算子集,使得对于互连的忆阻交叉式阵列之间的每个互连,带宽要求是相同的。
根据一个实施例,忆阻交叉式阵列可以包括行线和与行线交叉的列线。电阻存储器元件可以在由行线和列线形成的接合点处耦合在行线和列线之间。电阻存储器元件中的每个电阻存储器元件可以表示矩阵的元素,其中存储卷积矩阵包括对于点积运算子集中的每个点积运算,将该点积运算中涉及的卷积矩阵的所有元素存储在交叉式阵列的相应单个列线的电阻存储器元件中。这可以实现卷积矩阵的紧凑存储,并且可以实现将交叉式阵列用于进一步的并行计算。
根据一个实施例,卷积矩阵的列线可以是交叉式阵列的连续线。这可以实现卷积矩阵的紧凑存储,并且可以实现将交叉式阵列用于进一步的并行计算。
根据一个实施例,忆阻交叉式阵列包括行线和与行线交叉的列线,以及在由行线和列线形成的接合点处耦合在行线和列线之间的电阻存储器元件。这些电阻存储器元件中的电阻存储器元件可以表示矩阵的元素,其中,存储卷积矩阵可以包括存储在相应列线中的点积运算子集中的每个点积运算所涉及的卷积矩阵的所有元素。卷积矩阵的列线可以是交叉式阵列的连续线。
根据一个实施例,忆阻交叉式阵列包括行线和与行线交叉的列线,以及在由行线和列线形成的接合点处耦合在行线和列线之间的电阻存储器元件。这些电阻存储器元件中的电阻存储器元件可以表示矩阵的元素,其中存储卷积矩阵可以包括识别要乘以相同输入子矩阵的卷积矩阵组,将该组中的每个卷积矩阵的所有元素存储在相同列线中,以及对于点积运算子集的卷积矩阵的零个或更多个另外的组重复该识别步骤和该存储步骤。该实施例可以有效地使用交叉式阵列的表面。这可以使得能够执行最大数量的并行点积运算。
根据一个实施例,忆阻交叉式阵列包括行线和与行线交叉的列线,以及在由行线和列线形成的接合点处耦合在行线和列线之间的电阻存储器元件,这些电阻存储器元件中的电阻存储器元件表示矩阵的元素。这可以实现非常适合于执行点积运算的交叉式阵列的受控产生。
根据一个实施例,该方法还包括训练卷积神经网络(CNN)。CNN可以被配置为执行输入和存储步骤。
根据一个实施例,CNN可以被配置为通过执行所有卷积矩阵的存储并且对另外的集中的每个集重复输入步骤,使用交叉式阵列来执行另外的点积运算集。点积运算集和另外的点积运算集可以形成在CNN的推断期间所需的所有点积运算。
根据一个实施例,CNN可被配置为通过对另外的集中的每个集连续地重复存储步骤和输入步骤,使用交叉式阵列来执行另外的点积运算集。
本发明的实施例可以是有利的,因为它们可以使得能够计算CNN的训练或推断中涉及的最昂贵的计算。例如,CNN的推断阶段在复杂度上可由卷积支配。例如,CNN的卷积层包含所需总的计算的90%以上。例如,CNN的训练或经训练的CNN的推断可能涉及CNN的每一层处的诸如点集或卷积的计算。点积运算可以通过许多乘法-累加运算来计算,该乘法-累加运算中的每一个都计算两个运算数的乘积且将结果相加。在CNN中,总点积运算的数量相对较高,例如,对于224×224图像,具有1000个类别的单个类别标记分类需要使用AlexNet的接近1Giga运算。
本发明的实施例可以利用并行特征映射激活计算来提供用于CNN的执行的流水线加速,同时保持相同的通信带宽和存储器要求。在CNN的流水线执行中,在每个计算周期,可以计算跨所有通道的一个特征像素。特征映射像素被传送到流水线中的下一个存储器内计算单元。
根据一个实施例,输入矩阵是CNN的特征映射的激活矩阵,卷积矩阵是核。
根据一个实施例,输入矩阵是图像的像素或CNN的特征映射的激活矩阵。
图1描绘了忆阻器(或电阻处理单元(RPU))的交叉式阵列,其提供本地数据存储以及示出忆阻器的操作的电压序列。图1是例如可以执行矩阵向量乘法的二维(2D)交叉式阵列100的示图。交叉式阵列100由一组导电行线102a…102n和与该组导电行线102a-n交叉的一组导电列线108a…m形成。
导电列线可以称为列线,导电行线可以称为行线。行线组和列线组之间的交叉点由忆阻器分离,忆阻器在图1中被示出为电阻元件,每个电阻元件具有其自身的可调节/可更新的电阻权重或电导,分别被描绘为Gij,其中i=1..n,j=1..m。为便于说明,在图1中仅一个忆阻器120被标记有参考标号。图1出于例示目的提供了具有忆阻器的示例,并且其不限于此。例如,交叉式阵列的行线组与列线组之间的交叉处可以包括基于电荷的存储器元件而不是忆阻器。
输入电压v1…vn分别被施加到行线102a-n。每条列线108a-n对由每个忆阻器沿特定列线产生的电流I1、I2…Im求和。例如,如图1所示,由列线108b产生的电流I2可以表示为如下等式1:
I2=v1·G21+v2·G22+v3·G23+…+vn·G2n 等式7
因此,阵列100通过将忆阻器中存储的值乘以行线输入来计算矩阵向量乘法,该行线输入由电压v1-n来定义,因此,该乘法可以使用忆阻器本身加上阵列100的相关行线或列线在阵列100的每个忆阻器120处局部地执行。
图1的交叉式阵列例如可以使得能够计算向量x与矩阵W的乘法。矩阵W的项Wij可以根据如下等式2被映射到交叉式阵列的对应电导上:
其中,Gmax由交叉式阵列100的电导范围给出,并且Wmax根据矩阵W的大小来选择。
交叉式阵列100的大小可由行线的数量n和列线的数量m确定,其中忆阻器的数量为n×m。在一个示例中,n=m。
图2是用于对多维输入矩阵执行至少部分矩阵卷积的方法的流程图。矩阵卷积可以产生多维输出矩阵。为了简化的目的,参考图3的示例描述图2的方法,但是其不限于此。例如,输入矩阵321在图3中被表示为具有维度xin、yin和din,限定了xin*yin*din的元素数量。图3还示出了输出矩阵323具有维度xin、yin、dout,限定了xin*yin*dout的元素数量。为了简化描述,在图3的示例中,din和dout被选择为等于1。
为了获得输出矩阵323的所有元素,对输入矩阵321的矩阵卷积可涉及点积运算集。例如,点积运算集可以涉及din*dout个大小为k*k的卷积矩阵。例如,输出矩阵323的一个元素可以通过相应的点积运算来获得,其中点积运算的结果可以是交叉式阵列中的单个列的输出。该单个列可以存储执行点积运算所需的所有卷积矩阵。点积运算集可以被拆分成多个点积运算子集,使得每个点积运算子集可以由交叉式阵列(例如100)来并行执行。例如,如果使用单个交叉式阵列,则输出矩阵的所有元素可以通过处理(例如,连续地)交叉式阵列中的每个点积运算子集来获得。例如,为了执行两个点积运算子集,该子集的所有卷积矩阵被存储在交叉式阵列中,并且该子集的两个输入向量被连续地输入到交叉式阵列中。
点积运算集中的每个点积运算涉及输入矩阵321的输入子矩阵和至少一个不同的卷积矩阵。每个点积产生输出矩阵323的一个元素。输入子矩阵的大小为
(subxin*subyin)*1 等式X
其中,subxin<xin且subyin<yin。点积运算是将两个矩阵的局部相似项相乘并将和结果求和的过程。点积运算集中的每个点积运算可以涉及具有与卷积矩阵的大小相同的大小的输入子矩阵。不同点积的输入子矩阵可以共享元素。术语“输入子矩阵”和“卷积矩阵”用于命名目的,以区分点积运算的第一(左运算数)和第二(右运算数)运算数。
图3示出两个输入子矩阵301和303和两个对应的卷积矩阵303和307。如图3所示,两个输入子矩阵301和303可以是深度din=1的输入矩阵321的一部分,并且可用于获得深度dout=1的输出矩阵323的元素。两个输入子矩阵301和303中的每一个都可以具有大小:
(subxin*subyin)*1 等式X
其中,subxin<xin且subyin<yin。图3的示例描述了两个点积运算。在图3的这个例子中,第一点积运算涉及输入子矩阵301和卷积矩阵305。第二点积运算涉及输入子矩阵303和卷积矩阵307。为了举例说明的目的,卷积矩阵305和307是相同的,但是它们可以是不同的。输入子矩阵301和303共享元素a2、a3、a5、a6、a8和a9。这也在输入矩阵321上示出。因此,输入子矩阵301和303具有以下不同的元素:a1、a2、a3、a4、a5、a6、a7、a8、a9、b1、b2和b3。
在一个示例中,第一点积运算和第二点积运算可以是相应的核305和307与输入矩阵321的(整体)卷积的一部分。例如,核305与输入矩阵321的卷积可以包括第一点积运算和通过在输入矩阵321上滑动核305而产生的额外的点积运算。这可能是特别有利的,因为本方法可以用于神经网络运算中涉及的卷积。因此,在图3的示例之后,点积运算集包括两个点积运算子集,即第一点积运算和第二点积运算。这两个点积运算可以并行执行,以计算输出矩阵323的两个元素,并且因此与单独计算矩阵的每个元素的方法相比可以加速计算过程。
返回参考图2,本方法可以通过最优地使用诸如参考图1描述的交叉式阵列100的交叉式阵列来执行点积运算集。点积运算集可以通过计算多个点积运算子集来执行,诸如图3中由第一点积运算和第二点积运算定义的点积运算子集。例如,在图3中,使用交叉式阵列300同时执行两个点积运算子集。根据图3的示例,本方法可以使得能够使用交叉式阵列来计算以下两个结果:作为第一点积运算的结果的a1*k1+a2*k2+a3*k3+a4*k4+a5*k5+a6*k6+a7*k7+a8*k8+a9*k9和作为第二点积运算的结果的a2*k1+a3*k2+b1*k3+a5*k4+a6*k5+b2*k6+a8*k7+a9*k8+b3*k9。
为了计算点积运算子集,可以提供包括输入子矩阵的不同元素的输入向量。可以按照预定义顺序将不同的元素放置在输入向量中,使得输入向量的元素可以被配置为同时输入到交叉式阵列到交叉式阵列的行线的对应序列。例如,如果输入向量包括5个元素,则这5个元素可被一次输入到交叉式阵列的相应5个连续行线。这5个连续行线可以是交叉式阵列的前5个行线102.1-5或5个连续行线的另一序列。例如,输入向量的第一元素可以被输入到给定行线,例如交叉式阵列的第一行线102.1,输入向量的第二元素可以被输入到后续的行线,例如交叉式阵列的第二行线102.2等等。根据图3的示例,输入向量310可以包括输入子矩阵301和303的不同元素a1、a2、a3、a4、a5、a6、a7、a8、a9、b1、b2和b3。
在步骤201中,根据输入向量310中的不同元素的位置和顺序,卷积矩阵可以相应地存储在交叉式阵列中。例如,这可以通过多次重新排列输入向量中的不同元素来执行,从而产生多个重新排列的输入向量。对于多个重新排列的输入向量中的每一个,可以确定交叉式阵列中的卷积矩阵的对应的存储位置集。这可以导致多个存储位置集。例如,对于给定的重新排列的输入矢量,在对应的存储位置集中的卷积矩阵的存储将能够通过将给定的重新排列的输入矢量输入到交叉式阵列的相应行线来计算点积运算集。该存储位置集中的每个存储位置可以占据交叉式阵列的表面。在步骤201,卷积矩阵可以存储在占据最小表面的存储位置集中。
在步骤203中,可以将不同元素的输入向量输入到交叉式阵列,使得可以使用所存储的卷积矩阵来执行点积运算子集。例如,输入向量中的每个元素可以被输入到交叉式阵列的对应行线。交叉式阵列的列的输出可以使得能够获得点积运算子集的结果。
根据图3的示例,卷积矩阵305和307可以存储在交叉式阵列300的两个连续列线中,并且输入向量包括以下顺序的不同元素:b1、b2、b3、a2、a5、a8、a3、a6、a9、a1、a4和a7。第一列的输出px1将是第一结果a1*k1+a2*k2+a3*k3+a4*k4+a5*k5+a6*k6+a7*k7+a8*k8+a9*k9,第二列的输出px2将是第二结果a2*k1+a3*k2+b1*k3+a5*k4+a6*k5+b2*k6+a8*k7+a9*k8+b3*k9。
图4是用于执行卷积神经网络(CNN)的推断过程的至少一部分的方法的流程图。为了简化的目的,参考图5A-图5B的示例来描述图4的方法,但不限于此。CNN可以例如接收深度为din的输入特征映射501作为输入。输入特征映射501可以包括din个通道或层,例如,特征映射可以包括din=3个颜色通道。因此,特征映射501可以被称为多维矩阵。CNN的推断过程可以涉及大小为k*k的核与输入特征映射501的卷积,这导致具有深度dout的输出特征映射503。核的数量可以例如等于dout。输出特征映射503可以包括dout个通道。因此,输出特征映射503也是多维矩阵。为了简化描述,输出特征映射被示为包括8×8个像素,其中这些像素中的像素包括输出特征映射503的dout个元素。图5A示出两个像素pix1和pix2。第一像素pix1在输出特征映射503的相应通道中具有dout个值(或元素)pix1_1、pix1_2…pix1_dout。第二像素pix2在输出特征映射503的相应通道中具有dout个值pix2_1、pix2_2…、pix2_dout。
图5B示出了四个像素pix1、pix2、pix3和pix4。第一像素pix1在输出特征映射503的相应通道中具有dout个值pix1_1、pix1_2…、pix1_dout。第二像素pix2在输出特征映射503的相应通道中具有dout个值pix2_1、pix2_2…、pix2_dout。第三像素pix3在输出特征映射503的相应通道中具有dout个值pix3_1、pix3_2…、pix3_dout。第四像素pix4在输出特征映射503的相应通道中具有dout个值pix4_1、pix4_2…、pix4_dout。
例如,为了获得输出特征映射503的单个通道的像素值(例如,pix1_1和pix2_1),可以执行以下步骤。可以将kxk的核滑动通过输入特征映射501的通道,以便执行卷积。这可以产生对于一个核与一个尺寸为k*k*din的子矩阵之间的点积运算中的每个像素和每个通道的结果。根据图5A-图5B的示例,输入特征映射501在每个通道中具有10×10个像素,并且通过在通道上滑动3×3的核,针对输出特征映射的每个通道,这可以产生64个点积运算(3×3像素子矩阵与3×3核的点积运算)。输入特征映射501的每个点积运算可以涉及例如具有3×3×din(或3×3像素)大小的输入子矩阵505。例如,为了获得输出特征映射503的第一通道的像素值pix1_1,可对相应的输入子矩阵505执行一个点积运算。例如,该点积运算可以使用子矩阵505的每个通道的相同或不同的3×3核来执行。为了获得输出特征映射503的单个通道,要执行64个点积运算。因此,dout*64个点积运算是为了获得输出特征映射503而在输入特征映射501上进行的矩阵卷积中所涉及的点积运算集。
图5A示出了一种映射方法,其中,可以由交叉式阵列在一个时间步长(例如,一个时钟周期)中计算dout*2个点积运算。图5B示出了交叉式阵列上的卷积矩阵的一个映射,使得可以在一个时间步长中计算dout*4个点积运算。图5A的dout*2个点积运算可以涉及dout*din*2个核,以获得输出矩阵的两个像素pix1和pix2。图5B的dout*4个点积运算可以涉及dout*4个核,以获得像素pix1、pix2、pix3和pix4。因此,图5A和图5B之间的差异在于,要在单个交叉式阵列上执行的点积运算子集是不同的。在图5A中,两个像素pix1和pix2可以由交叉式阵列520来计算,而在图5B中,四个像素pix1、pix2、pix3和pix4可以由交叉式阵列620来计算。
在步骤401中,可以确定要使用单个交叉式阵列一起或并行地执行整个点积运算集中的哪些点积运算子集。例如,在图5A中,可以确定或选择涉及输入矩阵505和507的dout*2个点积运算的集合。在图5B中,可以确定或选择涉及输入矩阵505、507、509和511的dout*4个点积运算的集合。
在步骤403,可以识别在确定的点积运算子集中涉及的输入子矩阵的不同元素。在图5A的示例中,dout*2个点积运算的子集的输入子矩阵中的不同元素的数量可以等于din*k*k+k*din,但是通常,如图5A-图5B所示的特征映射501的输入子矩阵中的不同元素的数量可以定义为
din*k*k+(N-l)*k*din 等式3
其中,N是要计算的像素的数量,例如在图5A中,N=2,在图5B中,N=4。
在步骤405中,执行所确定的点积运算子集所需的所有核可以被存储在交叉式阵列中。
例如,图5A示出了交叉式阵列520,其具有与所识别的不同元素的数量din*k*k+k*din相对应的行线的数量以及与正被计算的像素的通道的数量对应的列的数量。例如,在图5A中,列线的数量可以是2*dout。交叉式阵列中的每一列可以存储k*k*din个核元素(例如,如果din=3,则每一列中可以存储3个核)。用于所有dout个通道的第一像素pix1的值可以由列521获得(例如,列521的第一列可以提供值pix1_1,列521的第二列可以提供值pix1_2等),并且用于所有dout个通道的第二像素pix2的值可由列522获得(例如,列522的第一列可以提供值pix2_1,列522的第二列可以提供值pix2_2等)。图5A的被核占据的区域由矩形531和532来限定,交叉式阵列的其余元素可以如图5A所示被设置为零。图5A-图5B中所示的交叉式阵列的区域仅用于说明目的。例如,矩形531、532和631-634中的每一个的大小由核的大小k、din、dout来限定。
例如,图5B示出了交叉式阵列620,其具有与所识别的不同元素的数量din*k*k+3*k*din对应的行线的数量以及与正被计算的像素的通道的数量对应的列的数量。例如,在图5B中,列线的数量可以是4*dout。如图5B所示,第一像素pix1的值可以由列621获得,第二像素pix2的值可由列622获得,第三像素pix3的值可以由列623获得,且第四像素pix4的值可由列624获得。图5B的被核占据的区域由矩形631、632、633和634限定,并且交叉式阵列的其余元件可被设置为零,如图5B所示。
因此,如图5A和图5B(以及图3)所示,核以表面高效的方式存储在交叉式阵列上,使得它们占据交叉式阵列的最佳表面区域,同时仍然能够执行点积运算集。
在步骤407,不同元素的输入向量可以被输入到交叉式阵列520,以便从交叉式阵列收集所确定的点积运算子集的计算结果。输入向量可以同时被输入到交叉式阵列,使得交叉式阵列可以例如在一个时钟周期内执行所有点积运算子集。
在图5A的示例中,每一列可以输出输出特征映射503的单个通道的像素值,例如,pix1_1的值可以是交叉式阵列520的列521的第一列的输出。在图5B的示例中,每一列可以输出输出特征映射503的单个通道的像素值,例如,pix2_1的值可以是交叉式阵列620的列622的第一列的输出。由开叉开关阵列输出的像素值可以被读取以提供输出矩阵的元素。
可以针对点积运算集的另外的子集重复图4的方法。例如,如果在第一次执行中确定的点积运算子集包括dout*2个点积运算,则可以针对例如将覆盖图5B的输入矩阵509和511的另一个dout*2个点积运算重复该方法。在本方法的给定迭代中,先前存储在交叉式阵列中的核的值可以被删除(或覆写)使得新的值可以被存储在交叉式阵列中。
图6示出了用于选择例如图2的点积运算子集的方法。与图5A和图5B一样,图6示出了输入特征映射601和输出特征映射603。输出特征映射603包括可以根据本主题沿一个水平方向和沿垂直方向处理的像素。由单个交叉式阵列处理的像素的数量可以通过将垂直方向固定到固定数量的像素并沿另一方向选择一定数量的像素来确定,使得这些像素可以使用单个交叉式阵列来并行地处理。
例如,通过将大小d1(在垂直方向上)固定到两个像素pix1和pix5,可以在水平方向上选择或者选定其他的像素。例如,如果决定计算四个像素,则pix2和pix6(沿水平方向)的计算可以被添加到pix1和pix5的计算。例如,如果决定计算8个像素(如图6中所示),则可以将pix2、pix6、pix3、pix7、pix4和pix8(沿水平方向)添加到pix1和pix5,以便计算它们的值。
要计算的像素总数确定要由交叉式阵列执行的点积运算子集。例如,通过固定d1(即固定一个方向),可以并行计算沿另一方向的像素。在图6的示例中,可以执行dout*8个点积运算。将dout*8个点积运算的核存储在交叉式阵列720中。如图6所示,尽管一些核不共享输入向量的元素,但是交叉式区域上被核占据的总区域仍然可以是最佳区域。如同图5A-图5B,图6将由卷积矩阵占据的区域示为具有不同填充格式的矩形,并且将交叉式阵列的未被该区域覆盖的其余元素设置为零。
图7示出了一个ResNet 700体系结构的图形表示。图7示出ResNet具有五个不同的层级701-705。层级701和705中的每一个可以涉及不同大小的多维矩阵。例如,如图7所示,层级1 701和层级2 702的输出矩阵具有16个信道,并且涉及大小为3×3的核。与每个层级710相关联的交叉式阵列可以输出输出矩阵的多个像素。例如,层级2的层710的交叉式阵列可以输出至少两个像素,每个像素具有输出矩阵的16个值或元素。这意味着当互连(图示为链接两个连续层710的线)在一个时间步长内发送数据时,其带宽要求可以是16的倍数,图7示出了最大带宽是用于层级4的带宽,即64的倍数。
可以基于最大带宽来设计ResNet的层710的交叉式阵列之间的互连,尽管一些互连可能需要小于该最大带宽。结果,层级2 702的交叉式阵列可以用于计算4(=64/16)倍的像素,并且层级3 703的交叉式阵列可以计算2(=64/32)倍的像素。这样,可以总是使用最大带宽64。
在一个示例中,可以提供每层与交叉式阵列相关联的CNN。CNN的训练或推断可以涉及例如用于产生输出特征映射的层运算。CNN的交叉式阵列可以被配置为使用本方法来计算输出特征映射的相应像素,使得这些像素可以由相应的交叉式阵列并行地产生并且产生多个像素,使得带宽在整个CNN网络中是恒定的。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
参考图8,系统1000包括以通用计算设备的形式示出的计算机系统或计算机1010。例如,本文描述的方法可以在程序1060(图8)中体现,该程序被包括在例如通常被称为存储器1030并且更具体地如图8所示的计算机可读存储介质1050的计算机可读存储设备上。例如,存储器1030可以包括诸如RAM(随机存取存储器)或ROM(只读存储器)的存储介质1034以及高速缓存1038。程序1060可以由计算机系统1010的处理单元或处理器1020执行(以执行程序步骤、代码或程序代码)。附加的数据存储装置也可以体现为可包括数据1114的数据库1110。图8中所示的计算机系统1010和程序1060是计算机和程序的一般表示,该程序可以是用户本地的,或者是作为远程服务(例如,作为基于云的服务)而提供的,并且在另外的示例中可以使用通信网络1200可访问的网站(例如,与网络、因特网或云服务交互)来提供。应当理解,计算机系统1010在本文中还一般地表示计算机设备或包括在诸如膝上型或桌上型计算机等的设备中的计算机,或者一个或多个服务器,其单独或作为数据中心的一部分。计算机系统可以包括网络适配器/接口1026和(一个或多个)输入/输出(I/O)接口1022。I/O接口1022允许与可以连接到计算机系统的外部设备1074输入和输出数据。网络适配器/接口1026可以提供计算机系统与一般地示为通信网络1200的网络之间的通信。
计算机1010可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。方法步骤和系统组件以及技术可以在用于执行方法和系统的每个步骤的任务的程序1060的模块中体现。这些模块在图8中一般表示为程序模块1064。程序1060和程序模块1064可以执行程序的特定步骤、例程、子例程、指令或代码。
本公开的方法可以在诸如移动设备的设备上本地运行,或者可以在例如可以是远程的并且可以使用通信网络1200访问的服务器1100上运行服务。程序或可执行指令也可以作为服务由提供商提供。计算机1010可以在分布式云计算环境中实践,其中任务由通过通信网络1200链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
更具体地,如图8所示,系统1000包括以具有说明性外围设备的通用计算设备的形式示出的计算机系统1010。计算机系统1010的组件可以包括但不限于一个或多个处理器或处理单元1020、系统存储器1030以及将包括系统存储器1030在内的各种系统组件耦合到处理器1020的总线1014。
总线1014表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
计算机1010可以包括各种计算机可读介质。这样的介质可以是可由计算机1010(例如,计算机系统或服务器)访问的任何可用介质,并且可以包括易失性和非易失性介质,以及可移动和不可移动介质。计算机存储器1030可以包括易失性存储器形式的附加计算机可读介质1034,诸如随机存取存储器(RAM)和/或高速缓存1038。计算机1010还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质,在一个示例中,便携式计算机可读存储介质1072。在一个实施例中,计算机可读存储介质1050可被提供用于从不可移动、非易失性磁介质读取和向其写入。计算机可读存储介质1050可以例如被实现为硬盘驱动器。可以提供附加的存储器和数据存储装置,例如,作为用于存储数据1114并与处理单元1020通信的存储系统1110(例如,数据库)。数据库可以存储在服务器1100上或者是其一部分。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这样的实例中,每个可以通过一个或多个数据介质接口连接到总线1014。如下面将进一步描绘和描述的,存储器1030可以包括至少一个程序产品,该程序产品可以包括被配置为执行本发明的实施例的功能的一个或多个程序模块。
本公开的方法例如可以体现在一个或多个计算机程序中,一般称为(一个或多个)程序1060,并且可以存储在计算机可读存储介质1050中的存储器1030中。程序模块1064通常可以执行如本文描述的本发明的实施例的功能和/或方法。一个或多个程序1060存储在存储器1030中并且可由处理单元1020执行。作为示例,存储器1030可将操作系统1052、一个或多个应用程序1054、其它程序模块、以及程序数据存储在计算机可读存储介质1050上。可以理解,存储在计算机可读存储介质1050上的程序1060、操作系统1052和应用程序1054可类似地由处理单元1020执行。
计算机1010还可以与一个或多个外部设备1074通信,该一个或多个外部设备1074是诸如键盘、定点设备、显示器1080等;使得用户能够与计算机1010交互的一个或多个设备;和/或使计算机1010能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口1022发生。此外,计算机1010还可以经由网络适配器/接口1026与一个或多个网络1200(诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网))通信。如图所示,网络适配器1026经由总线1014与计算机1010的其它组件通信。应当理解,尽管未示出,但其它硬件和/或软件组件可结合计算机1010使用。示例包括但不限于:微码、设备驱动1024、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
应当理解,计算机或在计算机1010上运行的程序可以经由体现为通信网络1200的一个或多个通信网络与体现为服务器1100的服务器通信。通信网络1200可以包括传输介质和网络链路,其包括例如无线、有线或光纤,以及路由器、防火墙、交换机和网关计算机。通信网络可以包括诸如有线、无线通信链路或光纤电缆的连接。通信网络可以表示使用各种协议(例如轻量级目录访问协议(LDAP)、传输控制协议/因特网协议(TCP/IP)、超文本传输协议(HTTP)、无线应用协议(WAP)等)来彼此通信的网络和网关(例如因特网)的全球集合。网络还可以包括许多不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。
在一个示例中,计算机可以使用网络,该网络可以使用因特网来访问Web(万维网)上的网站。在一个实施例中,包括移动设备的计算机1010可以使用通信系统或网络1200,其可以包括因特网或例如蜂窝网络的公共交换电话网络(PSTN)。PSTN可以包括电话线、光缆、微波传输链路、蜂窝网络和通信卫星。因特网可以促进许多搜索和文本发送技术,例如,使用蜂窝电话或膝上型计算机经由文本消息(SMS)、多媒体消息服务(MMS)(与SMS相关)、电子邮件或web浏览器向搜索引擎发送查询。搜索引擎可以检索搜索结果,即,到网站、文档或对应于查询的其他可下载数据的链接,并且类似地,经由设备将搜索结果作为例如搜索结果的网页提供给用户。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池的方便的按需网络访问,所述可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的瘦或胖客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。该应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户端界面从各种客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多个云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图9,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备是例如个人数字助理(PDA)或蜂窝电话54A、桌上型计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图9中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算设备通信。
现在参考图10,示出了由云计算环境50(图9)提供的一组功能抽象层。应当预先理解,图10中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的帐单开具或发票开具。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及数据分类96。
本文描述的程序是基于在本发明的特定实施例中实现它们的应用来标识的。然而,应当理解,本文的任何特定程序术语仅是为了方便而使用,因此本发明不应当限于仅在由这样的术语标识和/或暗示的任何特定应用中使用。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种用于对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的方法,所述矩阵卷积涉及用于获得所述输出矩阵的所有元素的点积运算集,所述点积运算集中的每个点积运算涉及所述输入矩阵的输入子矩阵和至少一个卷积矩阵,所述方法包括:
提供忆阻交叉式阵列,所述忆阻交叉式阵列被配置为执行向量矩阵乘法;
通过将所述点积运算子集的卷积矩阵存储在所述交叉式阵列中来计算所述点积运算集的子集;以及
向交叉式阵列输入包括点积运算子集的输入子矩阵的所有不同元素的输入向量。
2.根据权利要求1所述的方法,其中,计算所述点积运算集的子集还包括:
选择所述点积运算子集,使得所述点积运算子集的计算产生沿所述输出矩阵的两个维度的元素,并且使得每个所选择的点积运算子集涉及不同的输入向量。
3.根据权利要求1所述的方法,其中,计算所述点积运算子集的子集还包括:
选择所述点积运算子集,使得所述点积运算子集的计算产生沿所述输出矩阵的三个维度的元素,并且使得每个所选择的点积运算子集涉及不同的输入向量。
4.根据权利要求1所述的方法,其中,对卷积神经网络的训练或推断涉及在所述卷积神经网络的每层处的层运算,所述层运算能够由所述忆阻交叉式阵列来计算,其中,所述矩阵卷积是所述卷积神经网络的给定层的层运算。
5.根据权利要求4所述的方法,其中,提供被配置为执行所述向量矩阵乘法的所述忆阻交叉式阵列还包括:
提供另外的忆阻交叉式阵列,使得所述卷积神经网络的每个另外的层与所述忆阻交叉式阵列相关联;
互连所述忆阻交叉式阵列以便以流水线方式执行;以及
使用相应的点积运算子集和与所述卷积神经网络的所述另外的层相关联的所述忆阻交叉式阵列来针对所述卷积神经网络的每个另外的层执行所述计算步骤。
6.根据权利要求5所述的方法,其中,由每个忆阻交叉式阵列计算的点积运算子集被选择,使得互连的所述忆阻交叉式阵列之间的每个互连的带宽要求是相同的。
7.根据权利要求1所述的方法,其中,所述忆阻交叉式阵列包括行线和与所述行线交叉的列线,以及在由所述行线和所述列线形成的接合点处耦合在所述行线和所述列线之间的电阻存储器元件,所述电阻存储器元件中的电阻存储器元件表示矩阵的元素的值。
8.根据权利要求7所述的方法,其中,存储所述卷积矩阵包括:
对于所述点积运算子集中的每个点积运算,将所述点积运算中涉及的卷积矩阵的所有元素存储在所述交叉式阵列的相应单个列线的电阻存储器元件中。
9.根据权利要求7所述的方法,其中,存储所述卷积矩阵包括:
将所述子集中的每个点积运算中涉及的卷积矩阵的所有元素存储在相应列线中,所述列线输出不同的输出,所述不同的输出是所述交叉式阵列的连续列线。
10.根据权利要求1所述的方法,其中,存储所述卷积矩阵包括:
识别卷积矩阵中要与相同的输入子矩阵相乘的卷积矩阵组,将所述组中的每个卷积矩阵的所有元素存储在交叉式阵列的列线中;以及
对零个或多个另外的卷积矩阵组重复所述识别步骤和所述存储步骤。
11.根据权利要求1所述的方法,其中,所述输入矩阵和所述输出矩阵包括来自卷积神经网络的层的图像的像素或激活值,并且所述卷积矩阵是核。
12.一种忆阻交叉式阵列,用于对多维输入矩阵执行矩阵卷积以获得多维输出矩阵,所述矩阵卷积涉及用于获得所述输出矩阵的所有元素的点积运算集,所述点积运算集中的每个点积运算涉及所述输入矩阵的输入子矩阵和至少一个卷积矩阵,所述交叉式阵列被配置为将所述卷积矩阵存储在所述交叉式阵列中,使得包括所述输入子矩阵的所有不同元素的一个输入向量能够被输入到所述交叉式阵列,以执行所述点积运算集的点积运算子集。
13.一种用于对多维输入矩阵执行矩阵卷积以获得多维输出矩阵的计算机程序产品,所述矩阵卷积涉及用于获得所述输出矩阵的所有元素的点积运算集,所述点积运算集中的每个点积运算涉及所述输入矩阵的输入子矩阵和至少一个卷积矩阵,所述计算机程序产品包括:
计算机可读存储介质,具有随其体现的程序代码,所述程序代码可由至少一个硬件处理器执行以:
提供忆阻交叉式阵列,所述忆阻交叉式阵列被配置为执行向量矩阵乘法;
通过将所述点积运算子集的卷积矩阵存储在所述交叉式阵列中来计算所述点积运算集的子集;以及
将包括所述子集的所述输入子矩阵的所有不同元素的一个输入向量输入到所述交叉式阵列。
14.根据权利要求13所述的计算机程序产品,其中,计算所述点积运算集的所述子集还包括:
选择所述点积运算子集,使得所述点积运算子集的计算产生沿所述输出矩阵的两个维度的元素,并且使得每个所选择的点积运算子集涉及不同的输入向量。
15.根据权利要求13所述的计算机程序产品,其中,计算所述点积运算集的子集还包括:
选择所述点积运算子集,使得所述点积运算子集的计算产生沿所述输出矩阵的三个维度的元素,并且使得每个所选择的点积运算子集涉及不同的输入向量。
16.根据权利要求13所述的计算机程序产品,其中,对卷积神经网络的训练或推断涉及在所述卷积神经网络的每层处的层运算,所述层运算能够由所述忆阻交叉式阵列来计算,其中,所述矩阵卷积是所述卷积神经网络的给定层的层运算。
17.根据权利要求16所述的计算机程序产品,其中,提供被配置为执行所述向量矩阵乘法的所述忆阻交叉式阵列还包括:
提供另外的忆阻交叉式阵列,使得所述卷积神经网络的每个另外的层与所述忆阻交叉式阵列相关联;
互连所述忆阻交叉式阵列以便以流水线方式执行;以及
使用相应的点积运算子集和与所述卷积神经网络的另外的层相关联的所述忆阻交叉式阵列来针对所述卷积神经网络的每个另外的层执行所述计算步骤。
18.根据权利要求17所述的计算机程序产品,其中,由每个忆阻交叉式阵列计算的点积运算子集被选择为使得互连的所述忆阻交叉式阵列之间的每个互连的带宽要求是相同的。
19.根据权利要求13所述的计算机程序产品,其中,所述忆阻交叉式阵列包括行线和与所述行线交叉的列线,以及在由所述行线和所述列线形成的接合点处耦合在所述行线和所述列线之间的电阻存储器元件,所述电阻存储器元件中的电阻存储器元件表示矩阵的元素的值。
20.根据权利要求13所述的计算机程序产品,其中,存储所述卷积矩阵包括:
识别所述卷积矩阵中要与相同的输入子矩阵相乘的卷积矩阵组,将所述组中的每个卷积矩阵的所有元素存储在交叉式阵列的列线中;以及
对零个或多个另外的卷积矩阵组重复所述识别步骤和所述存储步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/561,110 | 2019-09-05 | ||
US16/561,110 US20210073317A1 (en) | 2019-09-05 | 2019-09-05 | Performing dot product operations using a memristive crossbar array |
PCT/IB2020/057684 WO2021044242A1 (en) | 2019-09-05 | 2020-08-14 | Performing dot product operations using a memristive crossbar array |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341883A true CN114341883A (zh) | 2022-04-12 |
Family
ID=74850005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061861.4A Pending CN114341883A (zh) | 2019-09-05 | 2020-08-14 | 使用忆阻交叉式阵列执行点积运算 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210073317A1 (zh) |
JP (1) | JP2022547395A (zh) |
CN (1) | CN114341883A (zh) |
DE (1) | DE112020004231T5 (zh) |
GB (1) | GB2601701A (zh) |
WO (1) | WO2021044242A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443797B2 (en) * | 2019-03-26 | 2022-09-13 | Macronix International Co., Ltd. | Neural network computation method and apparatus using adaptive data representation |
US11379951B2 (en) * | 2020-03-25 | 2022-07-05 | Nintendo Co., Ltd. | Systems and methods for machine learned image conversion |
CN114463161B (zh) * | 2022-04-12 | 2022-09-13 | 之江实验室 | 一种基于忆阻器的神经网络处理连续图像的方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10176425B2 (en) * | 2016-07-14 | 2019-01-08 | University Of Dayton | Analog neuromorphic circuits for dot-product operation implementing resistive memories |
US10042819B2 (en) * | 2016-09-29 | 2018-08-07 | Hewlett Packard Enterprise Development Lp | Convolution accelerators |
US10395165B2 (en) * | 2016-12-01 | 2019-08-27 | Via Alliance Semiconductor Co., Ltd | Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory |
US10586148B2 (en) * | 2016-12-31 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with re-shapeable memory |
CN108304922B (zh) * | 2017-01-13 | 2020-12-15 | 华为技术有限公司 | 用于神经网络计算的计算设备和计算方法 |
US11269643B2 (en) * | 2017-04-09 | 2022-03-08 | Intel Corporation | Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values |
US20200012924A1 (en) * | 2018-07-03 | 2020-01-09 | Sandisk Technologies Llc | Pipelining to improve neural network inference accuracy |
CN108960330B (zh) * | 2018-07-09 | 2021-09-10 | 西安电子科技大学 | 基于快速区域卷积神经网络的遥感图像语义生成方法 |
US11410025B2 (en) * | 2018-09-07 | 2022-08-09 | Tetramem Inc. | Implementing a multi-layer neural network using crossbar array |
CN109597891B (zh) * | 2018-11-26 | 2023-04-07 | 重庆邮电大学 | 基于双向长短时记忆神经网络的文本情感分析方法 |
US20210012186A1 (en) * | 2019-07-11 | 2021-01-14 | Facebook Technologies, Llc | Systems and methods for pipelined parallelism to accelerate distributed processing |
-
2019
- 2019-09-05 US US16/561,110 patent/US20210073317A1/en active Pending
-
2020
- 2020-08-14 CN CN202080061861.4A patent/CN114341883A/zh active Pending
- 2020-08-14 WO PCT/IB2020/057684 patent/WO2021044242A1/en active Application Filing
- 2020-08-14 DE DE112020004231.6T patent/DE112020004231T5/de active Pending
- 2020-08-14 GB GB2203329.4A patent/GB2601701A/en not_active Withdrawn
- 2020-08-14 JP JP2022506950A patent/JP2022547395A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112020004231T5 (de) | 2022-06-09 |
US20210073317A1 (en) | 2021-03-11 |
GB2601701A (en) | 2022-06-08 |
WO2021044242A1 (en) | 2021-03-11 |
JP2022547395A (ja) | 2022-11-14 |
GB202203329D0 (en) | 2022-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10909444B2 (en) | Floating gate for neural network inference | |
CN114341883A (zh) | 使用忆阻交叉式阵列执行点积运算 | |
US20200125926A1 (en) | Dynamic Batch Sizing for Inferencing of Deep Neural Networks in Resource-Constrained Environments | |
US10726944B2 (en) | Recommending novel reactants to synthesize chemical products | |
US11676032B2 (en) | Sim-to-real learning of 2D multiple sound source localization | |
US11023530B2 (en) | Predicting user preferences and requirements for cloud migration | |
US20220121901A1 (en) | Gated unit for a gated recurrent neural network | |
US20230080480A1 (en) | Pipeline parallel computing using extended memory | |
WO2022121569A1 (en) | Worst case noise and bound management for rpu crossbar arrays | |
AU2021271202B2 (en) | Matrix sketching using analog crossbar architectures | |
US20220366005A1 (en) | Hardware acceleration for computing eigenpairs of a matrix | |
WO2023011990A1 (en) | Exploiting fine-grained structured weight sparsity in systolic arrays | |
US11461645B2 (en) | Initialization of memory networks | |
CN116348887A (zh) | 在分段镜上分配器件阵列电流 | |
US20230403131A1 (en) | Machine learning network extension based on homomorphic encryption packings | |
US20230206056A1 (en) | Factorizing hypervectors | |
US20230419091A1 (en) | Blockwise factorization of hypervectors | |
US20230419088A1 (en) | Bundling hypervectors | |
US20220207376A1 (en) | Matrix inversion using analog resistive crossbar array hardware | |
US20230419093A1 (en) | Stochastic Bitstream Generation with In-Situ Function Mapping | |
US11373407B2 (en) | Attention generation | |
US11501199B2 (en) | Probability index optimization for multi-shot simulation in quantum computing | |
US20220044145A1 (en) | Machine learning accelerator with decision tree interconnects | |
TW202326532A (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 |