CN109891435A - 张量运算和加速 - Google Patents
张量运算和加速 Download PDFInfo
- Publication number
- CN109891435A CN109891435A CN201780066272.3A CN201780066272A CN109891435A CN 109891435 A CN109891435 A CN 109891435A CN 201780066272 A CN201780066272 A CN 201780066272A CN 109891435 A CN109891435 A CN 109891435A
- Authority
- CN
- China
- Prior art keywords
- tensor
- data path
- processing element
- row
- input
- 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
- 230000001133 acceleration Effects 0.000 title description 2
- 238000012545 processing Methods 0.000 claims abstract description 134
- 238000000034 method Methods 0.000 claims description 22
- 239000011159 matrix material Substances 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims description 4
- 230000005611 electricity Effects 0.000 claims description 4
- 230000010363 phase shift Effects 0.000 claims description 4
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 108010076504 Protein Sorting Signals Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 210000004218 nerve net Anatomy 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000003466 welding Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
- G06F18/24137—Distances to cluster centroïds
- G06F18/2414—Smoothing the distance, e.g. radial basis function networks [RBFN]
-
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Biodiversity & Conservation Biology (AREA)
- Algebra (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Image Processing (AREA)
- Memory System (AREA)
- Logic Circuits (AREA)
- Complex Calculations (AREA)
Abstract
一种系统包括全局存储器电路(102、104),其被配置为存储输入张量和输出张量。行数据路径(106、108)均都连接到存储器电路的输出端口。列数据路径(124、126)连接到存储器电路的输入端口。处理元件(112、114、116、118)分别沿着行数据路径(106、108)和列数据路径(124、126)布置成行和列。处理元件(112、114、116、118)包括本地存储器电路(122),其被配置为存储多个掩码;以及处理电路(120)。处理电路(120)被配置为从行数据路径(106、108)中的行数据路径接收输入张量的部分;从本地存储器电路(122)接收掩码;通过对每个张量运算应用不同的检索掩码,对输入张量的相同接收部分执行多个张量运算;以及使用多个张量运算的结果,生成对应的列数据路径(124、126)的输出。
Description
技术领域
本公开总体涉及提供张量运算的电路和设备,更具体地涉及用于与数据相关和卷积核一起使用的电路。
背景技术
处理电路使用矩阵或(更广泛地讲)张量来提供多种不同问题的解决方案。例如,图像处理有时使用卷积矩阵。不同类型的处理电路可以用于这种处理。
存在可以使用卷积矩阵的多种不同电路,其包括但不限于数字信号处理器(DSP)、通用计算机处理器、可编程集成电路、可编程逻辑器件(PLD)、以及片上系统(SoC)器件。PLD是一种可编程集成电路(IC),其可以被编程为执行指定逻辑功能。一种PLD(现场可编程门阵列(FPGA))可以包括可编程瓦片阵列。这些可编程瓦片包括各种类型的逻辑块,其可以包括例如输入/输出块(IOB)、可配置逻辑块(CLB)、专用块随机存取存储器(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、延迟锁定环(DLL)、总线或网络接口,诸如外围部件互连(PCI)、PCI Express(PCIe)、以太网等。一些设备包括足够的部件和功能,以有效地用作单个IC芯片上的整个计算机系统。具有这种功能的设备有时被称为SoC。一些SoC器件可以包括可编程逻辑,其类似于由各种PLD提供的可编程逻辑。
当试图实现卷积矩阵时,各种电路经常遭受类似的瓶颈。常见的瓶颈是数据往来于存储器电路的移动。除了使用具有卷积运算的大数据集之外,可以在相同数据上重复数次卷积运算。因此,可能无法足够快地提供数据以充分利用处理电路。
对于卷积张量运算,这些和其他问题可能是有问题的。
发明内容
若干种实现方式涉及一种系统,其包括全局存储器电路,该全局存储器电路被配置为存储输入张量和输出张量。行数据路径各自连接到存储器电路的输出端口。列数据路径连接到存储器电路的输入端口。处理元件分别沿着行数据路径和列数据路径布置成行和列。处理元件包括本地存储器电路,其被配置为存储多个掩码;以及处理电路。处理电路被配置为从行数据路径中的行数据路径接收输入张量的部分;从本地存储器电路接收掩码;通过对每个张量运算应用不同的检索掩码,对输入张量的相同接收部分执行多个张量运算;以及使用多个张量运算的结果,生成对应的列数据路径的输出。
可选地,行数据路径可以被配置有位于连接的处理元件之间的至少一个流水线级。
可选地,行数据路径可以被配置为将输入张量广播到至少两个连接的处理元件。
可选地,本地存储器电路可以包括至少一个读端口和一个写端口。处理电路可以被配置为通过使用输出端口检索第一掩码、同时还使用写端口存储第二掩码来隐藏掩码加载延时。
可选地,处理元件可以被配置为作为流水线级操作,该流水线级从列数据路径接收数据,并且对来自列数据路径的数据执行算术运算。
可选地,算术运算可以包括:将张量运算的结果添加到在列数据路径上接收的数据。
可选地,张量运算可以包括输入张量的部分与来自本地存储器电路的掩码之间的点积。
可选地,系统还可以包括写指针和读指针,它们在处理元件之间共享。处理元件可以被配置为使用写指针和读指针来访问本地存储器电路。
可选地,全局存储器电路可以包括:用于数据路径行中的每个数据路径行的不同存储器电路;以及时钟电路,其提供相邻存储器电路的访问时间之间的相移。
可选地,输入张量可以是矩阵,并且输入张量的接收部分可以对应于来自输入张量的子矩阵。
某些实现方式涉及一种方法,该方法包括:使用行数据路径并且以第一速率将输入张量的部分传送到处理元件的阵列,每个处理元件连接到对应的行数据路径和对应的列数据路径;以比第一速率快的第二速率从相应处理元件本地的存储器电路访问掩码;通过对每个张量运算应用不同的检索掩码,对输入张量的接收部分执行多个张量运算;以及将多个张量运算的结果提供给列数据路径。
可选地,执行多个张量运算可以包括,对于连续矩阵运算,将来自不同掩码的权重应用于输入张量的相同部分。
可选地,输入张量可以是图像的输入特征图,并且多个张量运算的结果可以表示图像的输出特征图。
可选地,从相应处理元件本地的存储器电路以比第一速率快的第二速率访问掩码可以包括:使用在访问期间由处理元件共享的读指针。
可选地,该方法还可以包括:在从相应处理元件本地的存储器电路访问掩码期间,加载新掩码。
可选地,将多个张量运算的结果提供给对应的列数据路径可以包括:从对应的列数据路径接收数据并且执行涉及结果和来自对应的列数据路径的数据两者的算术运算。
可选地,传送输入张量的部分可以包括:针对不同处理元件使用流水线级。
可选地,传送输入张量的部分可以包括:将输入张量广播到至少两个连接的处理元件。
可选地,输入张量可以是矩阵,输入张量的接收部分可以对应于来自矩阵的子矩阵。
可选地,该方法还可以包括:对于相应的迭代,根据指示输入张量内的行移位或列移位的步距来选择子矩阵。
考虑到下面的具体实施方式和权利要求,将认识到其他特征。
附图说明
通过阅读以下具体实施方式并且参考附图,该方法、设备和系统的各个方面和特征将变得显而易见,其中
图1是示出了与本公开的各种实现方式一致的具有处理元件的阵列和相关电路的系统的框图;
图2是与本公开的实现方式一致的具有处理元件的阵列的系统以及存储在系统中的张量的样本值的框图;
图3示出了与本公开的实现方式一致的单个卷积沿着列的迭代的输入数据切片和掩码值;
图4描绘了2×2处理元素阵列和到本地存储器电路的数据连接;
图5是与本公开的实现方式一致的处理元件的电路图;
图6是与本公开的各种实现方式一致的用于执行张量运算的流程图;以及
图7示出了其上可以实现所公开的电路和过程的可编程集成电路(IC)700。
具体实施方式
在以下描述中,对许多具体细节进行阐述,以描述本文中所呈现的具体示例。然而,对于本领域技术人员而言显而易见的是,可以在没有下文所给出的所有具体细节的情况下实践这些示例的一个或多个其他示例和/或变型。在其他实例中,没有对众所周知的特征进行详细描述,以免模糊本文中的示例的描述。为了便于说明,可以在不同的图中使用相同的附图标记来指代相同元件或相同元件的附加实例。
各种实现方式涉及一种电路,其被设计为以高吞吐量提供张量运算。该电路可以包括处理元件的阵列,每个处理元件执行较大矩阵运算的一部分。本公开的特定方面允许处理元件以超过存储器电路的吞吐量的频率操作,该存储器电路向处理元件提供输入数据。
根据一些实现方式,处理元件位于由行数据路径和列数据路径形成的阵列中的交叉点处。行数据路径向阵列的同一行中的多个处理元件提供相同的输入数据。阵列配置允许数据重用于多个张量运算,而无需单独的本地存储。具体地,数据可以被保持在行数据路径上,直到多个运算完成。重新使用数据可以隐藏存储器电路的较低吞吐量,因为处理元件对相同的输入切片数据执行多个张量运算,从而需要不太频繁的数据更新。
根据各种实现方式,张量运算使用应用于每个接收的输入数据切片的数据掩码(也称为权重或参数)。掩码可以存储在位于每个处理元件附近的分布式本地存储器电路中。例如,每个张量运算可以对应于将不同掩码应用于相同输入数据的处理元件。正在对其进行运算的输入(源)矩阵可以被分成输入数据切片集合。可以对在处理元件处接收的每个输入数据切片应用相同的掩码集合。这允许存储在本地存储器中的掩码被重用于每个顺序接收的输入数据切片。如果要将附加掩码用于同一输入张量集合(例如,存在的掩码比本地存储器电路中容纳的掩码更多),则在将输入数据切片再次提供给处理元件之前加载新掩码。
对于具有输入矩阵的许多输入数据切片的应用,处理整个矩阵的时间可能相对较长,并且本地存储器电路不需要频繁更新。应当认识到,具有许多处理元件和许多不同掩码的大型阵列仍然需要大量数据吞吐量,以便更新掩码值。本公开的各方面涉及通过在处理元件正在使用现有掩码集合的同时将新掩码集合加载到本地存储器电路中来隐藏存储器加载延时。例如,每个本地存储器的专用写端口可以用于在处理元件正在访问和使用活动部分的同时写入存储器空间的不活动部分。在加载数据之后,可以使存储器空间的不活动部分活动并且用于后续处理。同样,可以使先前活动的存储器部分不活动,以便可以加载另一掩码集合。可以重复不活动-活动加载过程,直到使用了整个掩码集合为止。
具体示例用作可缩放卷积加速器,诸如用于图像处理的加速器。为了便于讨论,在使用神经网络的图像识别的背景下对若干种实现方式进行了讨论。然而,应当认识到,本文中所讨论的各种特征不限于此,并且可以与各种其他张量运算和最终用途一起使用。
参考图像处理示例,各种实现方式涉及加速器电路,其被设计为处置输入图像数据的卷积,以用于诸如图像识别之类的目的。用于图像识别神经网络的卷积通常是网络中可以受益于加速电路的计算密集型部分。例如,卷积神经网络(CNN)内的卷积级可以从输入特征图(IFM)集合与卷积核集合计算多个2D卷积和。输出特征图(OFM)中的每个元素都是一个这样的总和。每个IFM-OFM对都具有带有对应掩码元素的自己的2D卷积核。与各种实现方式一致,根据具有预先确定的值的掩码(也称为权重或参数)来定义核。可以从神经网络的训练获得预先确定的值。因此,核掩码可以被视为常数值,其可以在被对应处理元件使用之前预先加载到本地存储器中。
现在转到附图。图1是示出了与本公开的各种实现方式一致的具有处理元件的阵列和相关电路的系统的框图。所描绘的电路包括几个处理元件(PE)112、114、116和118。阵列的第一行包括处理元件112和114。第一行的处理元件从共享行数据路径106接收输入数据。处理元件116和118是第二行的一部分,并且从共享行数据路径108接收输入数据。
存储器电路102存储数据,其用于将输入数据驱动到行数据路径上以及到处理元件。根据某些实现方式,存储器电路被配置为以并行方式向每行提供输入数据。例如,存储器电路102可以是单个逻辑存储器,其具有针对每个行数据路径的单独的输出端口。在一些实例中,存储器电路102可以包括针对对应行中的每个对应行的可单独寻址的存储器电路。特定实现方式允许不同行的存储器电路使用相移(交错)时钟域,其与处理元件的较快时钟域相位对准。可以对本文中所讨论的存储器配置的特定示例进行组合和变化。
列124和126分别接收处理元件112、116和114、118的输出。在某些实现方式中,处理元件以流水线方式操作,使得前一处理元件的列输出作为列输入被提供给后续处理元件。例如,在列分段124上提供处理元件116的输出数据。处理元件112从处理元件116接收输出数据作为列输入数据。处理元件112的张量逻辑120使用所接收的数据来生成另外的列输出数据。在列分段124上提供另外的列输出数据,以供存储在存储器电路104中,该存储器电路104可以是与存储器电路102相同的逻辑和物理存储器电路或不同电路。以这种方式,存储在存储器电路104中的列数据表示来自对应列中的每个处理元件的输出数据的组合(例如,和)。
根据一些实现方式,系统可以向每列中的第一处理元件116和118提供(预先确定的)初始化值。处理元件116和118使用初始化值,就好像它是从前一处理元件接收的,并且阵列中的处理元件中的每个处理元件由此具有基本上相同的逻辑和配置。初始化值由初始化块110和128示意性地表示。初始化块110和128可以例如使用寄存器、随机存取存储器(RAM)电路或类似的存储电路来实现。在某些实现方式中,初始化块110和128可以位于处理元件116和118内。比如,可以在将掩码加载到对应处理元件的本地存储器中的同时加载初始化值。
在某些示例实现方式中,存储器电路102可以存储与图像的输入特征图(IFM)集合相对应的数据。系统通过对图像数据的小部分(“切片数据”)应用二维(2D)卷积核来处理每个IFM。每个IFM的输入切片数据可以由存储器电路102迭代输出,以供PE处理。至少两个不同卷积核的掩码存储在每个本地存储器电路122中并且应用于输入切片数据集合。来自相应列中的每个处理元件的卷积结果可以组合并且存储在存储器电路104中以生成输出特征图(OFM)。
作为具体示例,可以对与源图像的不同颜色通道相对应的IFM执行图像处理。每个颜色通道对应于不同的光学频率集合。关于每行和迭代,可以从每行的不同图像的类似部分获取切片数据。列中的处理元件各自应用不同的卷积核集合,其相对于本地存储器电路122中存储的掩码来定义。结果存储在存储器电路104中作为OFM。一旦处理了图像的所有图像切片,系统就可以开始生成新OFM集合。可以基于新卷积核或新图像的数据(或两者)来生成新OFM。
可以通过以下嵌套循环以伪代码逻辑表示系统的迭代过程:
对于批次中的每个作业j
对于每个输出切片d2∈[1,D2]
其中
D1是IFM的数目;
D2是OFM的数目;
X是秩为4的输入张量,其被记为X[j,r,c,d1],其中j是作业索引,r∈[1,H1]和c∈[1,W1]是2D IFM的行索引和列索引,d1∈[1,D1]是IFM索引;
H是秩为4的卷积核张量,其被记为H[u,v,d1,d2],其中u∈[1,Fy]和v∈[1,Fx]是2D卷积核的行索引和列索引,(d1,d2)指向IFM d1和OFM d2交叉点处的2D卷积核;
Sx是沿着列的步距,而Sy是沿着行的步距
Y是秩为4的输出张量Y[j,r,c,d2],其中j是作业索引,r∈[1,H2]和c∈[1,W2]是2DOFM的行索引和列索引,d2∈[1,D2]是OFM索引,以及
conv2d()是2D卷积运算符。
每个处理元件的卷积计算核conv2d()可以根据以下嵌套循环(其在先前提供的嵌套循环内运算)由伪代码表示:
conv2d(X[j,:,:,d1],H[:,:,d1,d2],[Sx,Sy]){
for c in 1to W2//for each column in the OFM
for r in 1to H2//for each row in the OFM
[r,c]=0
for u in 1to Fy
for v in 1to Fx
Z[r,c]+=[j,Sx r+u,Sy c+v,d2]H[u,v,d1,d2];
return Z;
}
为了方便起见,在下面的讨论中省略了IFM张量X和OFM张量Y的作业索引。图2是与本公开的实现方式一致的具有处理元件的阵列的系统以及存储在系统中的张量的样本值的框图。所描绘的阵列是2×3的处理元件的阵列,其对应于3个IFM和2个OFM。应当认识到,不同尺寸的阵列是可能的(例如,图像处理应用可能使用超过256个特征图)。
使用处理元件202作为代表性示例,每个处理元件包括本地存储器电路205,其可以存储与多个卷积核相对应的掩码。每个处理元件可以从对应IFM的不同部分接收3×3输入数据切片。提供特定切片尺寸作为示例,并且可以根据特定实现方式变化。处理元件使用对应算术逻辑单元204对输入数据切片执行卷积运算。例如,算术逻辑单元204可以将所存储的掩码中的一个掩码的元素乘以当前切片的输入特征图的元素。算术逻辑单元208对三个输入特征图中的每个输入特征图得到的九个乘积求和。在处理元件中的每个处理元件中重复相同的乘法运算,并且使用算术逻辑单元208将来自列的结果相加在一起。
所描绘的掩码是3×3权重值矩阵,使用符号H[:,:,d1,d2]进行标记。这里,d1对应于IFM[:,:,d1]。每个IFM具有对应的行数据路径:X[:,:,1]对应于行数据路径224,X[:,:,2]对应于行数据路径222,并且X[:,:,3]对应于行数据路径220。以类似的方式,d2对应于OFM,并且每个OFM具有对应的列数据路径:Y[:,:,1]和Y[:,:,2]对应于由分段214、216、218构成的列数据路径,Y[:,:,3]和Y[:,:,4]对应于由分段226、228、230构成的列数据路径。在本地存储器电路内使用多个(2D卷积核)掩码导致多于一个OFM链接到每个列数据路径(相对于每个输入切片的迭代)。
与各种实现方式一致,沿着每行的2D卷积核中的每个2D卷积核被应用于同一行中的IFM。比如,4个卷积核H[:,:,3,1]到H[:,:,3,4]各自应用于输入特征图X[:,:,3]以产生4个2D卷积结果。因此,图2图示了使用12个不同卷积核的12个2D卷积。存在4个OFM,因为每个OFM是沿着每列的卷积之和,即,3个卷积的总和,每个输入IFM一个。根据一些实现方式,每个IFM可以对应于图像的颜色通道(或光学频率集合)。通过选择IFM内的不同矩阵位置来生成输入数据切片。步距值表示输入数据切片源相对于IFM内的行或列的移位。比如,步距为2意味着同一列中的每个连续输入数据切片比前一个高两个竖直行。填充表示在真实图像数据之外添加的数据。所描绘的示例使用深度为1的零填充。
与各种实现方式一致,在行(水平)数据总线上保持每个输入数据切片(从IFM存储器读取)与存在掩码一样多的周期,使得可以根据存储的掩码中的每个掩码处理切片(例如,使用元素乘法)。所描绘的示例包含针对每个处理元件的两个掩码和对应的OFM。作为针对Y[2,1,1]和Y[2,1,2](对于OFM1和OFM2)的计算的一部分,例如,从IFM3中读出IFM元素X[4,3,3]=-3,并且被保持在行数据路径220上。所得值在一个周期内乘以[2,3,3,1]=-4,而在另一周期内乘以H[2,3,3,2]=1。因此,IFM的读取活动速率仅为掩码存储器的读取活动速率的一半,因为来自掩码存储器的每两个新掩码元素需要来自IFM的新值。当沿着一个PE列临时折叠更多个OFM时,IFM读取活动率相对于处理元件的卷积迭代率和本地存储器电路的对应读取活动率会更低。
具体实现方式涉及卷积神经网络(CNN)内的卷积级。CNN的每个处理元件从IFM集合与卷积核集合计算2D卷积的多个和。OFM中的每个元素都是一个这样的和,并且每个IFM-OFM对具有其自己的2D卷积核。例如,CNN中的一个卷积级基于彩色图像来生成OFM。图像可以分成多个IFM,每个颜色通道一个IFM。每个IFM被传达到一行2D卷积核(例如,要么作为对所有处理元件的单个广播要么使用流水线级)。这些核也称为掩码、权重和参数,先前已经通过CNN的提前训练获得,可以被认为是前馈卷积加速器的常数。
根据本公开的实现方式,一组移位寄存器210和212保持与存在列的输出特征图一样多的累加器。在该示例中,列中的每个处理元件支持两个OFM,因此双深移位寄存器用于保持两个累加器。
与某些实现方式一致,列中的第一处理元件可以接收初始值234、236以用于生成第一和。例如,可以为特定卷积预先确定这些初始值,并且将其存储在处理元件内。
图3示出了与本公开的实现方式一致的单个卷积沿着列的迭代的输入数据切片和掩码值。使用掩码H[:,:,1:3,1]和数据输入切片X[:,:,1:3](302、304、306处的虚线)作为示例,所得Y[3,1,:](OFM)值为41。数学解释(C=A⊙B是矩阵A和矩阵B之间的逐元素乘法,而sum(C)是矩阵C中所有元素的总和)如下:
使用不同的输入数据切片集合(308、310、312处的虚线)以类似的方式计算Y[2,1,1]。在步距为2(Sy=2)的情况下,覆盖IFM的下一个卷积核从第三行(第一行上方两行)开始。卷积迭代的结果是65。重复该过程直到生成整个OFM为止。
图4描绘了与本公开的实现方式一致的2×2处理元素阵列和到本地存储器电路的数据连接。共享输入存储器402、404保存IFM,以供对应行中的处理元件共享使用。与一些实现方式一致,存储器是PLD IC芯片内的块BRAM。向处理元件中的每个处理元件提供输入数据切片(d1),其包含乘法器406和加法器408形式的算术单元。
与某些实现方式一致,在分布在整个PLD中的数字信号处理(DSP)逻辑内实现处理单元。本地掩码/参数存储器410存储多个掩码集合。所描绘的示例在每个存储器电路的活动部分中示出了4个3×3掩码集合。存储器电路存储活动掩码的值,并且将这些值作为输出提供给乘法器406。存储器电路的不活动部分用于加载下一掩码集合。系统交换活动部分和不活动部分,以便开始使用下一掩码集合并且允许将其他掩码加载到当前不活动部分中。
在具体实现方式中,本地存储器共享一个公共读指针,其用于选择由每个本地存储器输出的掩码值。读指针使用共享2D掩码读总线连接到本地存储器。使用公共读指针可以有助于简化逻辑并减少资源使用,或以其他方式用于控制多个读指针和地址总线。某些实现方式在加载掩码期间使用公共写指针。写指针使用共享2D掩码读总线连接到本地存储器。可以对共享读写指针进行流水线操作,以匹配行数据路径和列数据路径上的流水线操作引入的延迟。
图5是与本公开的实现方式一致的处理元件的电路图。该电路图示出了可以与本文中所讨论和描述的各种实现方式一起使用的处理元件的示例。处理元件包括本地存储器块502和算术单元504。本地存储器块具有两个存储器电路506和508,每个存储器电路具有相应的输入(D)和输出端口(Q)。多路复用器512响应于read_page信号而在输出之间进行选择。read_page信号标识当前活动的组合存储器空间的部分(或页面)。
根据某些实现方式,每个存储器电路506和508可以以读或写模式操作,但不能同时在两种模式下操作。模式由R/W输入信号的状态确定。存储器电路506和508的R/W输入分别由we_ping信号和we_pong信号控制。可以通过比较waddr_hi信号与处理元件的交叉点行ID来进一步门控we_ping信号和we_pong信号。可以为每个处理元件指派不同的ID,以便可以将不同的掩码加载到每个处理元件中,同时仍然使用共享数据总线(wdata)。根据各种实现方式,用于低地址位(ping_addr_lo和pong_addr_lo)的两个不同地址总线用于区分写指针和读指针。例如,当存储器电路506活动时,ping_addr_lo可以由读指针驱动,而pong_addr_lo可以由写指针驱动。读指针和写指针可以响应它们相应的活动状态/不活动状态的变化,而在ping地址总线和pong地址总线之间交换。
算术单元504包括乘法器514和加法器516,它们对在X_data信号线上接收的输入切片数据执行张量运算。乘法器514还将多路复用器512的输出作为张量运算的输入。乘法器514的输出与来自y_data_cascade信号的数据一起被提供给加法器516。从列中先前处理元件的输出提供y_data_cascade信号。如果处理元件是列中的第一处理元件,则信号源可以对应于可以存储在处理元件中或其他地方的初始化值。加法器516还可以接收偏置输入,其取决于具体实现方式。
图5示出了由具有输入时钟(三角形)符号的方块表示的若干个时钟寄存器(触发器)。寄存器可以用于提供适当的信号时序。比如,寄存器块518同步和延迟由存储器电路506和508使用的控制和数据信号。寄存器块518可以用于延迟沿着列的每个点处的控制信号,以便维持与y_data_cascade数据输入的同步。作为另一示例,寄存器510可以用于相对于行中的后续处理元件对行数据进行流水线操作。
图6是与本公开的各种实现方式一致的用于执行张量运算的流程图。该流程图开始根据框602传送切片数据(例如,IFM的张量)。如本文中所讨论的,切片数据的数据可以存储在存储器中,该存储器通过共享行数据路径连接到多个处理元件。在一些实现方式中,可以使用跨行数据路径的广播来完成传送,使得每个处理元件同时接收切片数据。还可以对传送进行流水线操作,以便数据针对每个流水线级在不同时间到达处理元件。例如,可以实现流水线操作,使得每个处理元件是不同流水线级的一部分,从而减少由于行数据路径上的路由延迟而导致的时序问题。
根据具体实现方式,使用交错时钟对不同行的存储器电路进行时钟控制,使得跨行的有效频率与处理元件的时钟频率匹配。例如,当存储器电路以处理元件的频率的一半操作时,使用具有180度相移(一行的时钟相对于一个或多个相邻行反相)的时钟信号对相邻列中时钟进行时钟控制。如果处理元件以频率625MHz(1.6ns周期时间)操作,则输入存储器电路将以该频率的一半或312.5MHz(3.2ns周期时间)操作。通过对连续行使用时钟信号的反相版本和非反相版本,第一行(例如,行4)的存储器电路在先前行(例如,行3)的存储器电路之后1.6ns提供输出数据。1.6ns延迟与处理元件的频率匹配,但是仅为存储器电路的时钟域的周期的一半。
因而,偶数行中的存储器电路可以使用以该速度的一半操作并且与处理元件的时钟相位对准的第一时钟。奇数行中的IFM SRAM使用第二时钟,该第二时钟是第一时钟的反相版本并且还与处理元件的时钟相位对准。在一些实现方式中,可以通过将每个逻辑列的奇数行和偶数行分成两个不同的物理列来减少沿着输入SRAM竖直流水线的紧密时序路径。然后,可以组合每个物理列的结果,以提供单个逻辑列的功能。
然后,在每个处理元件处,根据框604,可以从本地存储器电路加载掩码。如本文中所讨论的,可以从本地存储器内的活动存储器空间加载掩码。同时,新掩码可以加载到存储器电路内的不活动存储器空间中。根据框606,处理元件对数据切片和掩码执行张量运算。如本文中所讨论的,可以使用多种不同的数学运算来实现张量运算。例如,张量运算可以是用作CNN的一部分的输入特征图(IFM)集合的2D卷积的一部分。其他示例也是可能的,包括张量的不同维度和尺寸以及对数据执行的不同张量运算。
根据框608,处理元件还接收列数据。然后,根据框610,使用张量运算的输出和接收的列数据来执行列操作。比如,张量运算的结果可以与从列数据路径上的处理元件接收的数据相加。每列中的最终处理元件提供结果以用于存储(例如,作为OFM中的元素)。
与本文中所讨论的各种实现方式一致,每个处理元件的本地存储器电路可以在存储器电路内存储多个掩码。根据框612,如果存在尚未使用的附加掩码,则可以加载下一个掩码并且可以执行另一迭代。根据框612,如果没有附加掩码,则可以根据框602检索下一个输入数据切片。下一个数据切片可以对应于当前IFM的下一个切片(例如,相对于步距值定义的)或者可以来自全新的IFM(例如,已经接收并处理了先前IFM的所有数据切片)。
虽然某些实现方式可以利用可编程逻辑器件(PLD)内的电路,但是本文中所讨论的各种实现方式不限于此(例如,某些实现方式可以与专用集成电路(ASIC)一起使用,或者作为其他类型的集成电路芯片和器件的一部分)。
本文中所描述的张量可以具有不同数目个维度(或索引)。比如,图像识别神经网络的第一级可以存储图像作为三维张量,其由用于原色中的每种原色的三个矩阵组成。虽然所描绘的示例示出了对应平面仅占据单个物理行,但是一个平面也可以占据多于一行(例如,当处理元件内部的本地存储器不足以存储整个平面的掩码时)。在这种情况下,可以将多于一个的物理行组合在一起,以用作系统的一个逻辑行。
图7示出了其上可以实现所公开的电路和过程的可编程集成电路(IC)700。可编程IC还可以称为片上系统(SOC),其包括现场可编程门阵列逻辑(FPGA)以及其他可编程资源。FPGA逻辑可以包括阵列中的几种不同类型的可编程逻辑块。例如,图7图示了可编程IC700,其包括大量不同的可编程瓦片,其包括多千兆位收发器(MGT)701、可配置逻辑块(CLB)702、随机存取存储器(BRAM)块703、输入/输出块(IOB)704、配置和时钟逻辑(CONFIG/CLOCKS)705、数字信号处理块(DSP)706、专用输入/输出块(I/O)707(例如,时钟端口)、以及其他可编程逻辑708(诸如数字时钟管理器、模数转换器、系统监测逻辑等)。具有FPGA逻辑的一些可编程IC还包括专用处理器块(PROC)710和内部和外部重配置端口(未示出)。
在一些FPGA逻辑中,每个可编程瓦片包括可编程互连元件(INT)711,其具有往来于每个相邻瓦片中的对应互连元件的标准化连接。因此,所采用的可编程互连元件一起实现用于所示FPGA逻辑的可编程互连结构。可编程互连元件INT 711还包括往来于同一瓦片内的可编程逻辑元件的连接,如图7的顶部所包括的示例所示。
例如,CLB 702可以包括可配置逻辑元件CLE 712,其可以被编程为实现用户逻辑;以及单个可编程互连元件INT 711。BRAM 703除了一个或多个可编程互连元件之外还可以包括BRAM逻辑元件(BRL)713。通常,瓦片中包括的互连元件的数目取决于瓦片的高度。在图示的实现方式中,BRAM瓦片的高度与5个CLB相同,但是还可以使用其他数目(例如,4个)。除了适当数目个可编程互连元件之外,DSP瓦片706还可以包括DSP逻辑元件(DSPL)714。除了可编程互连元件INT 711的一个实例之外,IOB 704还可以包括例如输入/输出逻辑元件(IOL)715的两个实例。如本领域技术人员将清楚的,例如连接到I/O逻辑元件715的实际I/O键合焊盘使用层叠在各种所示逻辑块上方的金属制造,并且通常不限于输入/输出逻辑元件715的区域。
在图示的实现方式中,靠近管芯中心的柱状区域(图7中以阴影示出)用于配置、时钟和其他控制逻辑。从列延伸的水平区域709用于跨可编程IC的宽度分布时钟和配置信号。注意,对“柱状”和“水平”区域的引用与以纵向方位查看附图有关。
利用图7中所示的架构的一些可编程IC包括附加逻辑块,其扰乱构成可编程IC的大部分的常规柱状结构。附加逻辑块可以是可编程块和/或专用逻辑。例如,图7中所示的处理器块PROC 710跨越了几列CLB和BRAM。
注意,图7旨在仅图示可编程IC架构的示例。列中的逻辑块数、列的相对宽度、列的数目和顺序、列中包含的逻辑块的类型、逻辑块的相对尺寸以及在图7的顶部包括的互连/逻辑实现方式仅作为示例提供。例如,在实际可编程IC中,CLB出现的任何地方通常都包括多于一个相邻列的CLB,以便于用户逻辑的有效实现。
根据某些实现方式,处理元件布置在PLD或FPGA内的阵列中。可以在小预先定义的区域中实现阵列中的每个处理元件,该小预先定义的区域保证围绕DSP切片,以在高时钟速率下提供容易重复的时序收敛。PE内部的逻辑保持简单。可以使用FPGA的现有分布式SRAM接口来提供处理寄存器文件接口。FPGA的全局逻辑可以被配置为执行以这种新方式使用接口所必需的数据转换。
对于使用跨管芯布置成列的可重复瓦片的柱状PLD/FPGA架构,通常可以固定DSP切片行间距。通过单个级对跨行的控制和数据信号进行流水线操作,以实现高时钟速率。为了补偿由不同列间距引起的时序变化(例如,由于两个DSP超瓦片列之间存在其他列),可以添加行流水线级以允许行流水线以相同的时钟速率运行。
对于本文中所描绘的各种流程图,框和相关功能的特定顺序作为示例提供。排序不一定是限制性的,并且可以根据各种实现方式而变化。
本领域技术人员将理解,包括一个或多个处理器和配置有程序代码的存储器布置的各种备选计算布置将适合于托管可以执行本文中所公开的功能的过程和数据结构。另外,可以经由多种计算机可读存储介质或递送通道(诸如磁盘或光盘或磁带)、经由电子存储设备或作为网络上的应用服务来提供这些过程。
尽管在一些情况下可以在各个附图中对方面和特征进行描述,但是将理解,即使组合没有明确地示出或明确地描述为组合,来自一个附图的特征也可以与另一个附图的特征组合。
该方法和系统被认为适用于使用RAM电路的多种系统。考虑到说明书,其他方面和特征对于本领域技术人员而言是显而易见的。方法和系统的部分可以实现为一个或多个处理器,其被配置为执行软件,作为专用集成电路(ASIC),或作为可编程逻辑器件上的逻辑。此外,本文中所标识的各种电路可以共享硬件电路,诸如使用公共计算机处理单元或数字处理单元。旨在说明书和附图仅被视为示例,其中本发明的真实范围由所附权利要求指示。
Claims (15)
1.一种系统,包括:
全局存储器电路,被配置为存储输入张量和输出张量;
行数据路径,每个行数据路径被连接到所述全局存储器电路的输出端口;
列数据路径,每个列数据路径被连接到所述全局存储器电路的输入端口;
处理元件,分别沿着所述行数据路径和所述列数据路径布置成行和列,所述处理元件包括:
本地存储器电路,被配置为存储多个掩码;
处理电路,被配置为:
从所述行数据路径中的行数据路径接收所述输入张量的部分;
从所述本地存储器电路接收掩码;
通过对每个张量运算应用不同的检索掩码,对所述输入张量的相同接收部分执行多个张量运算;以及
使用所述多个张量运算的结果,生成对应的列数据路径的输出。
2.根据权利要求1所述的系统,其中所述行数据路径被配置有位于连接的处理元件之间的至少一个流水线级,或者被配置为将所述输入张量广播到至少两个连接的处理元件。
3.根据权利要求1或2所述的系统,其中所述本地存储器电路包括至少一个读端口和一个写端口,并且其中所述处理电路被配置为通过使用所述输出端口检索第一掩码、同时还使用所述写端口存储第二掩码来隐藏掩码加载延时。
4.根据权利要求1至3中任一项所述的系统,其中所述处理元件被配置为作为流水线级操作,所述流水线级从所述列数据路径接收数据,并且对来自所述列数据路径的所述数据执行算术运算。
5.根据权利要求4所述的系统,其中所述算术运算包括将所述张量运算的所述结果添加到在所述列数据路径上接收的所述数据。
6.根据权利要求1至5中任一项所述的系统,其中所述张量运算包括所述输入张量的所述部分与来自所述本地存储器电路的所述掩码之间的点积。
7.根据权利要求1至6中任一项所述的系统,其中所述全局存储器电路包括:用于所述数据路径行中的每个数据路径行的不同存储器电路;以及时钟电路,其提供相邻存储器电路的访问时间之间的相移。
8.根据权利要求1至7中任一项所述的系统,其中所述输入张量是矩阵,并且其中所述输入张量的所述接收部分对应于来自所述输入张量的子矩阵。
9.一种方法,包括:
使用行数据路径并且以第一速率将输入张量的部分传送到处理元件的阵列,每个处理元件被连接到对应的行数据路径和对应的列数据路径;
以比所述第一速率快的第二速率从相应处理元件本地的存储器电路访问掩码;
通过对每个张量运算应用不同的检索掩码,对输入张量的接收部分执行多个张量运算;以及
将所述多个张量运算的结果提供给所述对应的列数据路径。
10.根据权利要求9所述的方法,其中执行多个张量运算包括:对于连续的矩阵运算,将来自不同掩码的权重应用于输入张量的相同部分。
11.根据权利要求9或10所述的方法,还包括:在从所述相应处理元件本地的存储器电路访问掩码期间,加载新掩码。
12.根据权利要求9至11中任一项所述的方法,其中将所述多个张量运算的结果提供给所述对应的列数据路径包括:从所述对应的列数据路径接收数据,并且执行涉及所述结果和来自所述对应的列数据路径的所述数据两者的算术运算。
13.根据权利要求9至12中任一项所述的方法,其中传送输入张量的部分包括:针对不同处理元件使用流水线级,或将所述输入张量广播到至少两个连接的处理元件。
14.根据权利要求9至13中任一项所述的方法,其中所述输入张量是矩阵,并且其中所述输入张量的所述接收部分对应于来自所述矩阵的子矩阵。
15.根据权利要求14所述的方法,还包括:针对相应迭代,根据指示所述输入张量内的行移位或列移位的步距选择子矩阵。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/334,746 | 2016-10-26 | ||
US15/334,746 US9779786B1 (en) | 2016-10-26 | 2016-10-26 | Tensor operations and acceleration |
PCT/US2017/057428 WO2018080896A1 (en) | 2016-10-26 | 2017-10-19 | Tensor operations and acceleration |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109891435A true CN109891435A (zh) | 2019-06-14 |
CN109891435B CN109891435B (zh) | 2020-08-25 |
Family
ID=59929335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780066272.3A Active CN109891435B (zh) | 2016-10-26 | 2017-10-19 | 张量运算和加速 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9779786B1 (zh) |
EP (1) | EP3513357B1 (zh) |
JP (1) | JP7039580B2 (zh) |
KR (1) | KR20190075989A (zh) |
CN (1) | CN109891435B (zh) |
WO (1) | WO2018080896A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419779A (zh) * | 2020-05-08 | 2021-09-21 | 黑芝麻智能科技(重庆)有限公司 | 可扩展多精度数据流水线系统和方法 |
WO2022095676A1 (zh) * | 2020-11-04 | 2022-05-12 | 安徽寒武纪信息科技有限公司 | 神经网络稀疏化的设备、方法及相应产品 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733505B2 (en) * | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US11164071B2 (en) * | 2017-04-18 | 2021-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing computational complexity of convolutional neural networks |
KR102477404B1 (ko) * | 2017-08-31 | 2022-12-13 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 칩 장치 및 관련 제품 |
WO2019113007A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
EP3789871B1 (en) * | 2017-12-27 | 2023-06-07 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11586907B2 (en) * | 2018-02-27 | 2023-02-21 | Stmicroelectronics S.R.L. | Arithmetic unit for deep learning acceleration |
US10977854B2 (en) | 2018-02-27 | 2021-04-13 | Stmicroelectronics International N.V. | Data volume sculptor for deep learning acceleration |
US11687762B2 (en) | 2018-02-27 | 2023-06-27 | Stmicroelectronics S.R.L. | Acceleration unit for a deep learning engine |
US11468302B2 (en) * | 2018-03-13 | 2022-10-11 | Recogni Inc. | Efficient convolutional engine |
US10346093B1 (en) | 2018-03-16 | 2019-07-09 | Xilinx, Inc. | Memory arrangement for tensor data |
US10761757B2 (en) * | 2018-06-30 | 2020-09-01 | Intel Corporation | Apparatus and method for coherent, accelerated conversion between data representations |
US11429850B2 (en) * | 2018-07-19 | 2022-08-30 | Xilinx, Inc. | Performing consecutive mac operations on a set of data using different kernels in a MAC circuit |
KR102055645B1 (ko) * | 2018-12-07 | 2020-01-22 | 아주대학교산학협력단 | 고속 딥러닝을 위한 컨볼루션 방법 |
US11604958B2 (en) * | 2019-03-13 | 2023-03-14 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
US11531869B1 (en) | 2019-03-28 | 2022-12-20 | Xilinx, Inc. | Neural-network pooling |
US20190227750A1 (en) * | 2019-03-29 | 2019-07-25 | Intel Corporation | Technologies for performing tensor operations in memory |
US11663454B2 (en) * | 2019-03-29 | 2023-05-30 | Aspiring Sky Co. Limited | Digital integrated circuit with embedded memory for neural network inferring |
CN110188795B (zh) * | 2019-04-24 | 2023-05-09 | 华为技术有限公司 | 图像分类方法、数据处理方法和装置 |
US11301167B2 (en) * | 2019-05-16 | 2022-04-12 | Intel Corporation | Technologies for providing multiple tier memory media management |
US20220222534A1 (en) * | 2019-05-23 | 2022-07-14 | The Trustees Of Princeton University | System and method for incremental learning using a grow-and-prune paradigm with neural networks |
KR102410166B1 (ko) * | 2019-11-27 | 2022-06-20 | 고려대학교 산학협력단 | 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 |
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
JP7413249B2 (ja) | 2020-12-25 | 2024-01-15 | 日立Astemo株式会社 | 情報処理装置、情報処理方法 |
CN115204355A (zh) | 2021-04-14 | 2022-10-18 | 蒂普爱可斯有限公司 | 能够重新使用数据的神经处理单元及其方法 |
CN112990458B (zh) * | 2021-04-14 | 2024-06-04 | 北京灵汐科技有限公司 | 卷积神经网络模型的压缩方法及装置 |
KR102544063B1 (ko) * | 2021-04-14 | 2023-06-16 | 주식회사 딥엑스 | 데이터 재사용이 가능한 신경 프로세싱 유닛 및 그 방법 |
CN115577760B (zh) * | 2021-07-14 | 2023-06-02 | 华为技术有限公司 | 一种数据处理方法、系统及相关设备 |
CN113722269B (zh) * | 2021-08-26 | 2023-01-24 | 北京大学 | 一种基于昇腾ai处理器的跨步切片算子处理方法及装置 |
US11494321B1 (en) * | 2021-09-30 | 2022-11-08 | Amazon Technologies, Inc. | State buffer memloc reshaping |
WO2024040421A1 (en) * | 2022-08-23 | 2024-02-29 | Intel Corporation | Fractional-bit quantization and deployment of convolutional neural network models |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465375A (en) * | 1992-01-14 | 1995-11-07 | France Telecom | Multiprocessor system with cascaded modules combining processors through a programmable logic cell array |
US5471627A (en) * | 1989-10-10 | 1995-11-28 | Hnc, Inc. | Systolic array image processing system and method |
US20040177224A1 (en) * | 2003-03-07 | 2004-09-09 | Patrick Devaney | Local memory with ownership that is transferrable between neighboring processors |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
US20150178246A1 (en) * | 2013-12-20 | 2015-06-25 | Enric Herrero Abellanas | Processing device for performing convolution operations |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5195050A (en) * | 1990-08-20 | 1993-03-16 | Eastman Kodak Company | Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing |
JP2014123814A (ja) * | 2012-12-20 | 2014-07-03 | Renesas Electronics Corp | 画像処理装置及び画像処理方法 |
-
2016
- 2016-10-26 US US15/334,746 patent/US9779786B1/en active Active
-
2017
- 2017-10-19 CN CN201780066272.3A patent/CN109891435B/zh active Active
- 2017-10-19 KR KR1020197014774A patent/KR20190075989A/ko not_active Application Discontinuation
- 2017-10-19 JP JP2019521384A patent/JP7039580B2/ja active Active
- 2017-10-19 WO PCT/US2017/057428 patent/WO2018080896A1/en unknown
- 2017-10-19 EP EP17795113.4A patent/EP3513357B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471627A (en) * | 1989-10-10 | 1995-11-28 | Hnc, Inc. | Systolic array image processing system and method |
US5465375A (en) * | 1992-01-14 | 1995-11-07 | France Telecom | Multiprocessor system with cascaded modules combining processors through a programmable logic cell array |
US20040177224A1 (en) * | 2003-03-07 | 2004-09-09 | Patrick Devaney | Local memory with ownership that is transferrable between neighboring processors |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
US20150178246A1 (en) * | 2013-12-20 | 2015-06-25 | Enric Herrero Abellanas | Processing device for performing convolution operations |
Non-Patent Citations (1)
Title |
---|
CLÉMENT FARABET等: "Hardware accelerated Hardware accelerated convolutional neural networks for synthetic vision systems", 《PROCEEDINGS OF 2010 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419779A (zh) * | 2020-05-08 | 2021-09-21 | 黑芝麻智能科技(重庆)有限公司 | 可扩展多精度数据流水线系统和方法 |
WO2022095676A1 (zh) * | 2020-11-04 | 2022-05-12 | 安徽寒武纪信息科技有限公司 | 神经网络稀疏化的设备、方法及相应产品 |
Also Published As
Publication number | Publication date |
---|---|
JP2020503584A (ja) | 2020-01-30 |
JP7039580B2 (ja) | 2022-03-22 |
KR20190075989A (ko) | 2019-07-01 |
EP3513357B1 (en) | 2020-08-05 |
US9779786B1 (en) | 2017-10-03 |
EP3513357A1 (en) | 2019-07-24 |
WO2018080896A1 (en) | 2018-05-03 |
CN109891435B (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109891435A (zh) | 张量运算和加速 | |
EP3698313B1 (en) | Image preprocessing for generalized image processing | |
JP7358382B2 (ja) | 演算を加速するための加速器及びシステム | |
CN208061184U (zh) | 矢量处理单元 | |
EP3179415A1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
EP3557485A1 (en) | Method for accelerating operations and accelerator apparatus | |
EP3552112A1 (en) | Systems and methods for data management | |
CN107844830A (zh) | 具有数据大小和权重大小混合计算能力的神经网络单元 | |
CN107862650A (zh) | 加速计算二维图像cnn卷积的方法 | |
US10984500B1 (en) | Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit | |
CN106484362A (zh) | 利用使用者指定二维定点算术运算的装置 | |
US20210241071A1 (en) | Architecture of a computer for calculating a convolution layer in a convolutional neural network | |
JP7279064B2 (ja) | テンソルデータ用のメモリ構成 | |
CN107229463A (zh) | 计算设备和相应计算方法 | |
WO2020230374A1 (ja) | 演算装置および演算システム | |
Shahbahrami et al. | FPGA implementation of parallel histogram computation | |
Hailesellasie et al. | A fast FPGA-based deep convolutional neural network using pseudo parallel memories | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
Martinez-Alonso et al. | Array processors designed with VHDL for solution of linear equation systems implemented in a FPGA | |
Clere et al. | FPGA based reconfigurable coprocessor for deep convolutional neural network training | |
Ngo | FPGA hardware acceleration of inception style parameter reduced convolution neural networks | |
Sikdokur et al. | Image Classification on Accelerated Neural Networks | |
Letras et al. | A scalable and customizable processor array for implementing cellular genetic algorithms | |
Youssfi et al. | A fast middleware for massively parallel and distributed computing | |
US11704536B1 (en) | Convolution circuitry |
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 |