CN110321997B - 高并行度计算平台、***及计算实现方法 - Google Patents
高并行度计算平台、***及计算实现方法 Download PDFInfo
- Publication number
- CN110321997B CN110321997B CN201810277338.XA CN201810277338A CN110321997B CN 110321997 B CN110321997 B CN 110321997B CN 201810277338 A CN201810277338 A CN 201810277338A CN 110321997 B CN110321997 B CN 110321997B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- cache
- convolution
- feature map
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种高并行度计算平台,***及相关实现方法。该计算平台包括:一级缓存,用于缓存从外部存储器读取的计算数据;多个读控制器,每个所述读控制器用于从所述一级缓存的任意位置读取并行计算模块中单次操作所需的计算数据或其部分;并行计算模块,用于对所述多个读控制器读取的计算数据进行高并行度的计算操作。由此能够充分复用数据以提升处理效率。本发明还通过进一步引入多级缓存来提升整体的数据处理效率并通过数据过滤进一步提升处理速度。
Description
技术领域
本发明涉及硬件架构领域,尤其涉及一种高并行度计算平台、***及计算实现方法。
背景技术
神经网络(Neural Network)近年来成为图像识别领域的研究热点。经过训练后的神经网络模型,可以用于图像分类、物体识别与显著性检测等诸多领域。近年来神经网络模型呈现计算规模增加、复杂度提升的趋势,利用传统的CPU平台,已无法满足其实用性需求。因此,利用FPGA、GPU、ASIC等高并行度异构计算平台进行神经网络加速器设计成为新的研究热点。其中,相较GPU平台,FPGA能够实现更高的计算能效比,同时FPGA可以快速迭代、可进行硬件重构的特性也更适应算法高速发展的要求。
当利用包含FPGA和GPU等的高并行度计算平台来执行计算时,相比于与外部存储器进行数据存取所需的时间成本,并行计算的执行时间很短,这就导致了带宽限制成为了提高处理速度的瓶颈。另外,如何充分利用带宽来提升并行度,也是高并行度计算平台所需考虑的重要问题。
因此,仍然需要一种能够优化高并行度计算的相关方案。
发明内容
为了解决上述至少一个问题,本发明提出了一种新的计算平台架构。通过设置能够实现任意位置的同时并行读取的缓存模块以及与其配套的读控制器,能够进一步提升计算平台的并行处理能力。通过进一步地多级缓存的布局,能够充分利用带宽实现最大的数据处理速度。通过过滤机制的引入可以去除稀疏数据中无意义的空值,从而进一步提升并行计算模块本身的计算效率。由此,从总体上大幅提升计算平台的并行处理能力。
根据本发明的一个方面,提供了一种高并行度计算平台,包括:一级缓存,用于缓存从外部存储器读取的计算数据;多个读控制器,每个所述读控制器用于从所述一级缓存的任意位置读取并行计算模块中的单次操作所需的计算数据或其部分;并行计算模块,用于同时对所述多个读控制器读取的计算数据进行高并行度的计算操作。由此,通过设置能够实现任意位置的同时并行读取的缓存模块以及与其配套的读控制器,能够进一步提升计算平台的并行处理能力。所述一级缓存可由寄存器堆实现。
优选地,该计算平台还可以包括:连接在所述多个读控制器和所述并行计算模块之间的过滤模块,用于滤除由所述读控制器读取的计算数据中的空值数据和/或所述计算数据中对应于相应计算结果为空值的非空值数据。通过在将计算数据(尤其是稀疏数据)送入并行计算模块之前挤出数据中对计算结果无影响的“泡沫”,能够提升并行计算模块本身的理由效率。
优选地,该计算平台还可以包括:直接从所述外部存储器读取所述计算数据的二级缓存,所述二级缓存顺序存储读取的计算数据,并且至少基于用于指示一级缓存中数据消耗状况的所述读控制器状态参数,进行如下至少一项操作:向所述一级缓存写入计算数据;以及从所述外部存储器读取计算数据并进行缓存。由此,通过进一步地多级缓存的布局,能够充分利用带宽实现最大的数据处理速度。优选地,该计算平台还可以包括:用于存储所述读控制器状态参数的读控制器状态寄存器;以及基于所述读控制器状态参数生成缓存更新指令的缓存更新控制器,以便从结构上实现多级缓存之间的良好配合。
优选地,该计算平台还可以包括:与所述并行计算模块相连的计算结果缓存模块,用于缓存所述并行计算模块所进行的计算操作的计算结果数据,并将所述计算结果数据存回所述外部存储器。
根据本发明的另一个方面,提供了一种用于卷积神经网络的高并行度计算平台,包括:一级缓存,用于缓存从外部存储器读取的特征图数据和权重数据;多个读控制器,每个所述读控制器用于从所述一级缓存的任意位置读取单次卷积计算操作所需的特征图数据和/或权重数据;并行计算模块,用于同时对所述多个读控制器读取特征图数据和权重数据的进行高并行度的卷积计算操作。所述一级缓存可由寄存器堆实现。
优选地,一级缓存可以包括用于缓存所述特征图数据的特征图数据池以及用于缓存所述权重数据的权重数据池,并且多个读控制器包括2M个读控制器,其中第一组M个读控制器用于同时读取M个特征图卷积窗,第二组M个读控制器用于同时读取M个权重卷积窗,以在所述并行计算模块中实现并行度为M的特征图卷积操作,其中,M是大于2的整数。
优选地,该计算平台还可以包括:连接在所述多个读控制器和所述并行计算模块之间的过滤模块,用于滤除由所述读控制器读取的特征图数据和/或权重数据中的空值、和/或所述特征图数据和权重数据中对应于相应卷积计算结果为空值的非空值数据。优选地,过滤模块保留特征图卷积窗及其对应权重卷积窗中相同位置都不为零的值并将其他值滤除。
具体地,过滤模块包括0级缓存和M个异步先进先出队列,所述0级缓存包括或能被划分为2M个卷积窗缓存池,所述2M个读控制器将M个特征图卷积窗和M个权重卷积窗存入所述0级缓存的2M个卷积窗缓存池,并以一一对应的方式滤除特征图卷积窗及其对应权重卷积窗中相同位置至少有一个为零的值,并将保留值分别存入所述M个异步先进先出队列。并行度M至少基于从所述外部存储器读取数据的带宽以及所述卷积窗的尺寸确定。
优选地,该计算平台还可以包括:直接从所述外部存储器读取所述特征图数据和所述权重数据并与所述一级缓存相连的二级缓存,所述二级缓存的缓存容量大于所述一级缓存的缓存容量,用于分开存储读取的所述征值数据和所述权重数据,并且至少基于用于指示一级缓存中数据消耗状况的所述读控制器状态参数,进行如下至少一项操作:向所述一级缓存写入特征图数据和权重数据;以及从所述外部存储器读取新的特征图数据和权重数据。数据消耗参数可以是所述读控制器中读取的特征图数据在所述特征图上的位置坐标。
优选地,该计算平台还可以包括:用于存储所述读控制器状态参数的读控制器状态寄存器;以及基于所述读控制器状态参数生成缓存更新指令的缓存更新控制器。
优选地,该计算平台还可以包括:与所述并行计算模块相连的计算结果缓存模块,用于缓存所述并行计算模块所进行的计算操作的卷积计算结果数据,并将所述计算结果数据存回所述外部存储器。
根据本发明的再一个方面,提供了一种卷积神经网络推理的计算平台实现方法,包括:使用如上任一项所述的计算平台将特征图数据和权重数据从所述外部存储器中读取到所述一级缓存中;所述多个读控制器分别读取多个单次卷积计算操作所需的特征图数据和/或权重数据;以及所述并行计算模块同时对所述多个读控制器读取的多组特征图数据和权重数据的进行高并行度的卷积计算操作。
由所述多个读控制器读取的特征图数据和权重数据存在高度数据复用,所述数据复用包括如下至少一项:由卷积窗的长宽大于步长导致的特征图数据的复用;以及由同时对特征图中多个位置执行卷积导致的权重数据的复用。通过对数据的充分复用,能够进一步降低外部存储的带宽限制对处理速度的影响。
优选地,所述实现方法还可以包括:与所述一级缓存相连的二级缓存直接从所述外部存储器读取所述特征图数据和所述权重数据,并且基于所述读控制器中读取的特征图数据在所述特征图上的位置坐标向所述一级缓存写入特征图数据和权重数据以及以及从所述外部存储器读取新的特征图数据和权重数据,其中,所述二级缓存向所述一级缓存写入数据的时间间隔小于或等于所述二级缓存从所述外部存储器读取数据的时间间隔。由此实现对带宽和处理速度两者的充分利用。
多个读控制器分别读取多个单次卷积计算操作所需的特征图数据和/或权重数据包括:按照要执行卷积操作的卷积核尺寸读取相应的特征图卷积窗和权重卷积窗。相应地,所述方法方法还可以包括:滤除所述特征图卷积窗和权重数据卷积窗中与卷积操作结果中零值对应位置的值,并将经过滤的所述特征图卷积窗和权重卷积窗送入所述并行计算模块。
所述多个读控制器每次读取所述特征图数据和所述权重数据的时间间隔与所述并行计算模块执行单次M组计算所需的时间段相同,并且小于所述二级缓存每次向所述一级缓存写入数据的时间间隔。由此,能够进一步提升平台的整体计算效率。
根据本发明的又一个方面,提供了一种高并行计算***,包括:如在前任一项所述的计算平台;位于所述计算平台外部的大容量存储器;以及与所述计算平台和所述存储器相连接的处理器,用于执行如在前任一项所述的实现方法。
在一个实施例中,并行处理模块至少部分由FPGA、GPU或ASIC实现。
本发明提出的计算平台通过对硬件架构本身的改进而使之更适于高并行度计算,尤其是卷积神经网络计算,通过对带宽的充分利用以及对计算并行度的提升来提升平台的整体处理效率。本发明根据卷积神经网络数据依赖确定性的规律,设计了多级缓存结构,利用带宽、多频率和数据复用的特性,使得给卷积计算模块供数的效率得到了极大的提升。另外,本发明还利用卷积神经网络的权值和特征图的稀疏特性,通过过滤空值极大提升了运算效率。本发明的计算平台设计简单,无需复杂的编解码和稀疏数据信息存储的代价就能够从神经网络参数的稀疏特性中获得最大化的计算效率收益。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了典型CNN的一系列有序运行层。
图2示出了根据本发明一个实施例的计算平台的示意图。
图3示出了卷积操作的一个例子。
图4示出了根据本发明一个实施例的计算平台的示意图。
图5示出了过滤用于CNN中卷积计算的数据的例子。
图6示出了根据本发明一个实施例的计算平台的示意图。
图7示出了根据本发明一个实施例的用于CNN的高并行度计算平台的具体操作示意图。
图8示出了根据本发明一个实施例的计算平台实现方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
长久以来,高并行计算在科学计算、天气模拟、生物模拟、分子力学模型、飞机制造和军事模拟等领域得到了充分的运用。近年来,随着深度学习热潮的持续发酵,用于神经网络,尤其是卷积神经网络(Convolutional Neutral Network,随后简称为CNN)的高并行计算实现方案更是得到了多方关注。
现有的通用处理器(CPU)由于需要高通用性来处理各种不同的数据类型,并且其逻辑判断会引入大量的分支跳转和中断的处理。这些都使得CPU内部结构异常复杂,不适用于类型高度统一且相互无依赖的大规模数据的数据运算。因此,利用FPGA、GPU和ASIC等高并行度异构计算平台进行高并行度计算平台,尤其是神经网络加速器设计成为新的研究热点。其中,相较GPU平台,FPGA能够实现更高的计算能效比,同时FPGA可以快速迭代、可进行硬件重构的特性也更适应算法高速发展的要求。
在此,本发明提出了一种具有新的硬件架构的高并行计算平台,该计算平台适用于类型相对统一且相互无依赖的大规模数据的并行运算,尤其适用于具有稀疏性输入特征图和权重参数的卷积神经网络。该计算平台的并行计算模块或其至少部分优选由FPGA实现。
虽然如下将主要结合针对卷积神经网络的并行计算来描述本发明的计算平台方案,但本领域技术人员应该理解的是,本发明的硬件架构适用于各类高并行度计算场景,尤其适用于数据复用率和稀疏性高的应用场景。
[CNN基本概念]
CNN在广泛的视觉相关任务中都达到最先进的性能。为帮助理解本申请中分析的基于CNN的计算操作,首先基于现有CNN模型介绍CNN的基础知识。
如图1所示,典型的CNN由一系列有序运行的层组成。
CNN模型的参数被称为“权重”(weights)。CNN的第一层读取输入图,并输出一系列的特征图(featuremap)。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器(classifier)输出输入图可能属于某一类别的概率。CONV层(卷积层)和FC层(全连层)是CNN中两种基本层类型。CONV层后,通常有池化层(Pooling layers)。
对于CONV层,nin和nout分别代表输入和输出特征图的数量。
对于FC层,nin和nout分别代表输入和输出特征向量的长度。
CONV层(Convolutional layers,卷积层)的定义:CONV层以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。
通常与CONV层相连的非线性层,即,非线性激励函数,被施加到输出特征图中的每个元素。使用的激励函数一般为ReLU函数,该层也通常称为ReLU层。
CONV层可以用表达式1表示:
其中gi,j是应用到第j个输入特征图和第i个输出特征图的卷积内核。FC层(Fully-Connected layers,全连层)的定义:FC层应用于输入特征向上的一个线性变换:
fout=Wfin+b (2)
W是一个nout×nin变换矩阵,b是偏置项。值得注意,对于FC层,输入的不是几个二维特征图的组合,而是一个特征向。因此,在表达式2中,参数nin和nout实际上对应于输入和输出特征向量的长度。
池化(pooling)层:通常与CONV层相连,用于输出每个特征图中的每个分区(subarea)的最大值或平均值。Pooling最大值可以由表达式3表示:
其中p是池化内核的大小。这种非线性的“降采样”不仅为下一层降低了特征图的大小和计算,还提供了一种平移不变性。
CNN可用于前向推理过程中进行图像分类。由于CNN计算中涉及大量相互之间无依赖关系的卷积操作,使得尤其适用于在高并行度计算平台上实现。
[本发明计算平台的基本结构]
为了应对高并行度的计算,本发明提出了一种全新的硬件架构。图2示出了根据本发明一个实施例的计算平台的示意图。如图2所述,高并行度计算平台200包括一级缓存210、多个读控制器220和并行计算模块230。
一级缓存210可以缓存来自外部存储器读取的计算数据,并且具备任意位置的缓存内容可以被同时读取的能力。图中的外部存储器实现为大容量存储单元,例如DDR。在一个实施例中,一级缓存210由寄存器堆构成,以实现上述任意位置被同时读取的能力。当计算平台用于执行CNN计算时,读取的数据可以包括特征图数据和权重数据。
读控制器220中的每一个读控制器都能够从一级缓存210的相应位置读取并行计算模块的单次操作所需的计算数据或其部分。并行计算模块230则用于对所述多个读控制器读取的计算数据进行高并行度的计算操作。
在此,假设并行计算模块230的并行度为M。上文的“并行计算模块的单次操作”指的是并行计算模块230执行一回并行度为M的操作中的单次操作。即,每回操作可以包括M个单次操作。
读控制器的数量N可以是根据具体实现而与M相关的数。在一个实施例中,每个读控制器可以从一级缓存210中读取并行计算模块230执行并行度为M的操作中单次操作所需的全部计算数据,在此情况下,读控制器的数量N等于并行度M。在另一个实施例中,每个读控制器可以从一级缓存210中读取并行计算模块230执行并行度为M的操作中单次操作所需的部分计算数据。例如,针对CNN运算,可以设置2M个读控制器(即,N=2M),其中M个读控制器用于读取特征图卷积窗,M个读控制器用于同时读取M个权重卷积窗,以在并行计算模块230中实现并行度为M的特征图卷积操作。此时,并行计算模块230可以实现为M个相互独立的乘累加单元。在其他实施例中,每个读控制器也可以读取需要进行卷积操作的特征图和权重卷积窗两者。
图2所示的硬件架构尤其适用于数据复用率高的并行计算,例如,CNN中最为常见的卷积计算。为了方便理解,图3示出了卷积操作的一个例子。如图3所示,使用一个3x3的卷积核,以步长1对一个5x5的输入特征图进行卷积计算。图的左侧示出了第一次卷积计算,中间示出了第二次卷积计算,依次类推。在经过9次卷积计算后,得到图3右侧的经卷积的特征图。
由于这9次的卷积计算之间不存在依赖关系,因此可以在并行计算模块230的一回操作中完成执行(并行度M通常可以达到数千量级)。在本发明的一个实施例中,为了同时完成这9次卷积计算,可以使用18个读控制器进行数据读取。第一组9个读控制器用于读取特征图卷积窗。例如,从该5x5输入特征图的左上开始直到右下逐一滑动的9个3x3卷积窗。由于步长为1,因此每个相邻卷积窗中有6个数据可以复用,如图3中左图和中间图所示。第二组9个读控制器用于读取权重卷积窗,即,数据完全相同的9个3x3卷积窗(因为都使用一个卷积核)。由此,在一级缓存210中,仅需要存储34(5x5+3x3)个数据,就能够通过读控制器的读取控制实现在计算模块中的并行计算。应该理解的是,此处为了便于说明引入了5x5尺寸的输入特征图,在实际应用中,输入特征图的尺寸通常要大于5x5。
另外,对于高并行计算中经常遇到的高稀疏性数据,本发明还可以通过额外设置过滤模块来提升并行计算模块的计算效率。图4示出了根据本发明一个实施例的计算平台的示意图。进一步地,图4所示的高并行度计算平台400除了包括一级缓存410、多个读控制器420和并行计算模块430之外,还包括连接在多个读控制器420和并行计算模块430之间的过滤模块440,用于滤除由所述读控制器读取的计算数据中的空值数据和/或所述计算数据中对应于相应计算结果为空值的非空值数据。换句话说,过滤模块440可以用于滤除对后续在并行计算模块430中的计算结果无意义的值。
在用于CNN计算的情况下,过滤模块440可以滤除由所控制器读取的特征图数据和/或权重数据中的空值、和/或所述特征图数据和权重数据中对应于相应卷积计算结果为空值的非空值数据。图5示出了过滤用于CNN中卷积计算的数据的例子。如图所示,根据卷积的定义,只有在特征图卷积窗和权重卷积窗相应位置上都不为零的数值才会对输出值产生影响。因此,过滤模块440仅保留特征图卷积窗及其对应权重卷积窗中相同位置都不为零的值并将其他值滤除。
在一个实施例中,过滤模块440可以包括0级缓存和多个异步先进先出队列(FIFO)。在一个优选实施例中,0级缓存可以包括或可被划分成2M个卷积窗缓存池,多个异步FIFO实现为M个FIFO。在前的2M个读控制器可以用于将M个特征图卷积窗和M个权重卷积窗存入所述0级缓存的2M个卷积窗缓存池,并以一一对应的方式滤除特征图卷积窗及其对应权重卷积窗中相同位置至少有一个为零的值,并将得到的紧密排列的去除稀疏数据的数据(如图5所示)以高频率输入到这M个异步FIFO中。之后,经稀疏处理的数据从FIFO送入并行计算装置。在针对卷积计算的应用中,并行计算装置可以实现为包括M个相互独立的乘累加模块的卷积计算核。显见的是,通过过滤模块的引入,使得卷积计算核能够更为快速地执行完一回计算(包括M次同时进行的卷积计算)。
如上所述,一级缓存需要具备任意位置的缓存内容可以被多个读控制器同时读取的能力,并且例如可以将一级缓存设置为由寄存器堆构成以实现上述功能。然而,上述功能的实现会导致较大的功耗和逻辑开销,所以一级缓存的容量不宜太大。在满足计算并行度的需求的前提下,一级缓存的容量应当尽量小,例如,在神经网络硬件加速器中,几十或几百KB的一级缓存已经满足几千或上万量级的计算并行度需求。由于一级缓存容量和存取方式的限制,使得一级缓存直接从外部存储器中读取数据无法最大化地利用现有的带宽,并会导致额外的开销过大,因此在本发明的一个实施例中,可以在外部存储器和一级缓存之间设置一个容量较大的二级缓存,用以解决上述问题。
图6示出了根据本发明一个实施例的计算平台的示意图。进一步地,图6所示的高并行度计算平台600除了包括一级缓存610、多个读控制器620、过滤模块640和并行计算模块630之外,还包括与一级缓存相连的二级缓存650,用于直接从外部存储器读取所需的计算数据。该二级缓存650优选实现为常规缓存,能够顺序缓存从外部读取的计算数据,并且能够按需向一级缓存610输送数据。二级缓存650的缓存容量(例如,几个MB的容量)通常要大于一级缓存610的缓存容量(例如,几百KB的容量),能够用作外部存储器(同样地,图中的外部存储器实现为大容量存储单元,如DDR)与一级缓存610的传输中介。通过引入二级缓存,能够最大化地利用存储带宽,并降低对一级缓存存储容量和功耗的需求。
二级缓存650可以根据一级缓存中的数据消耗状况来向一级缓存610写入数据,和/或从外部存储器读取数据。在一个实施例中,一级缓存中数据消耗状况可由读控制器状态参数所指示。
在针对CNN的实现中,二级缓存650可以分开缓存读取的特征值数据和所述权重数据,并且至少基于一级缓存中数据消耗状况,可以进行如下至少一项操作:向所述一级缓存写入特征图数据和权重数据;以及从所述外部存储器读取新的特征图数据和权重数据。优选地,数据消耗状况可以根据读控制器中读取的特征图数据在特征图上的位置坐标来表征。
上述多级缓存结构的引入能够提升***效率并降低***开销。进一步地,上述多级缓存之间的数据更新频率还可以基于并行计算模块的计算速度以及计算平台与外部存储器的存储带宽而加以设计,从而最大化地提升***性能。
在理想状况下,多个读控制器每次读取所述特征图数据和所述权重数据的时间间隔与所述并行计算模块执行单次M组计算所需的时间段相同。换句话说,从一级缓存到0级缓存的更新是数据的高频展开更新,其能够与例如卷积计算核执行单回计算(包括M次并行的卷积窗计算)所需的时间相同,由此能够使得并行计算模块的计算能力得到最大化的利用。
一级缓存中数据更新的频率显然要小于0级缓存中的更新频率。换句话说,二级缓存每次向一级缓存写入数据的时间间隔要大于一级缓存每次向0级缓存写入数据的时间间隔。当例如读控制器中读取的特征图数据在特征图上的位置坐标指示一级缓存中的数据即将耗尽时,二级缓存可以向一级缓存写入新的数据。
相比之下,二级缓存中数据更新的速率可以根据需要灵活设置。二级缓存从外部存储器读取数据的时间间隔可以等于或者大于二级缓存向一级缓存写入数据的时间间隔。在一个实施例中,每当一级缓存中数据耗尽,二级缓存就向一级缓存中补充数据,并且同时向外部存储器读取新的数据。例如,当容量500KB的一级缓存中数据耗尽,容量5MB的二级缓存就向一级缓存中补充500KB的数据,并同时向外部存储器读取新的500KB数据。在其他实施例中,二级缓存补充数据的频率可以更低,例如,每更新两次,三次或更多次一级缓存数据就自行补充相应数量的新数据,本发明在此不做限制。
以上已结合图2-6对本发明的硬件架构及其优选实施例进行了描述。如下将结合图7描述本发明一个具体应用例及其操作。
图7示出了根据本发明一个实施例的用于CNN的高并行度计算平台的具体操作示意图。如图7所示,计算平台700包括如上提及的二级缓存(L2cache)750、一级缓存(L1cache)710、多个读控制器720、用作过滤模块的0级缓存(L0cache)741和异步FIFO 742、以及实现为卷积计算模块的并行计算模块730。
除此之外,计算平台700还包括可选的与卷积计算模块730相连的计算结果缓存模块760。该模块用于缓存并行计算模块730所进行的计算操作的卷积计算结果数据,并将计算结果数据存回外部的大容量存储单元。计算结果缓存模块760例如可以在存满一定数据后对外部存储器执行写入。
在一个实施例中,计算平台700还包括可选的用于存储所述读控制器状态参数的读控制器状态寄存器770,以及基于所述读控制器状态参数生成缓存更新指令的缓存更新控制器780。读控制器状态寄存器770和缓存更新控制器780可以用于根据一级缓存710中数据消耗状态来对一级和二级缓存进行更新。
如下,将结合图8描述根据本发明的用于卷积神经网络的计算平台实现方法。图8示出了根据本发明一个实施例的计算平台实现方法的流程图。该方法可以使用前述的计算平台及其优选实施例实现,例如图7所示的计算平台700。
在步骤S810,将特征图数据和权重数据从外部存储器中读取到一级缓存中。
在一个实施例中,上述读取可以如图7所示经由二级缓存750实现的。与一级缓存710相连的二级缓存750直接从大容量存储单元读取特征图数据和权重数据,并且基于读控制器中读取的特征图数据在所述特征图上的位置坐标向一级缓存写入特征图数据和权重数据以及以及从所述外部存储器读取新的特征图数据和权重数据,其中,二级缓存向一级缓存写入数据的时间间隔小于或等于二级缓存从所述外部存储器读取数据的时间间隔。
随后,在步骤S820,多个读控制器分别读取多个单次卷积计算操作所需的特征图数据和/或权重数据。在此,多个读控制器分别可以是如图3所示按照要执行卷积操作的卷积核尺寸读取相应的特征图卷积窗和权重卷积窗。在此,由多个读控制器读取的特征图数据和权重数据存在高度数据复用,所述数据复用包括如下至少一项:由卷积窗的长宽大于步长导致的特征图数据的复用;以及由同时对特征图中多个位置执行卷积导致的权重数据的复用。
在步骤S830,并行计算模块同时对多个读控制器读取的多组特征图数据和权重数据的进行高并行度的卷积计算操作。多组特征图数据和权重数据在被送入卷积计算核之前,还可以经过过滤操作。因此,本发明的实现方法还可以优选地包括步骤S825,滤除特征图卷积窗和权重数据卷积窗中与卷积操作结果中零值对应位置的值,并将经过滤的所述特征图卷积窗和权重卷积窗送入所述并行计算模块。
为了最大化的利用卷积计算核的计算能力,多个读控制器每次读取所述特征图数据和所述权重数据的时间间隔与卷积计算核执行单回M组计算所需的时间段相同,并且小于所述二级缓存每次向所述一级缓存写入数据的时间间隔。
如下将结合图7进一步描述本发明的计算实现方法的应用例。
首先二级缓存750的缓存更新控制器780根据当前一级缓存710的读控制器720的状态,从大容量存储单元获得数据,并将特征图数据和权重数据分开存储。在此,一级缓存710的读控制器720的状态可以是神经网络卷积窗在特征图上的位置坐标,通过坐标可以推算一级缓存710的数据池中数据的消耗情况,进而可以将已经消耗的数据用新数据替换掉。
随后,按照数据依赖方式将数据存入一级缓存710的数据池。在这里,“数据依赖”指代数据流排布顺序之间的依赖性。该数据池同样可以包括针对特征图缓存的数据池#0和针对权重缓存的数据池#1。
然后通过两组读控制器分别将特征图和权重从一级缓存710更新到0级缓存741(卷积窗缓存池)中。特征图和权重以稀疏的方式存储在0级缓存741中,然后通过过滤操作,将特征图和权重卷积窗里任一位置为0的对应数全都过滤掉,得到紧密排列的去除稀疏数据的参数,并以高频率输入到异步FIFO 742中。之后经过稀疏处理的数据从FIFO送给卷积计算核730(一共M个相互独立的乘累加模块),计算完成后存入计算结果缓存模块760。最后存储了足够的数据后,计算结果缓存模块760将结果存入大容量存储模块。
值得注意的是,本发明的多级缓存并不是传统的处理器缓存,而是针对并行计算,尤其是CNN卷积计算需求而专门设计的。其中从大容量存储单元(如DDR)到二级缓存,以及从二级缓存到一级缓存的数据是完整的未经过稀疏处理的特征图和权重。其中,0级缓存通过高频更新的(甚至能够与卷积核的运算速度相同),而二级缓存和一级缓存则可以以较低频率更新。另,从一级缓存到0级缓存更新是数据的高频展开,展开的过程中权重可被多个特征图数据共享且特征图本身在卷积核大于步时有多高的数据复用度。从二级缓存到一级缓存的输更新可以是同频率的。由此,基于本发明的多级缓存的硬件架构,能够最大化的利用卷积计算核的处理速度,并且使得存储带宽不再对计算平台的处理效率造成限制。
另外,虽然图7中示出了相同大小的特征图和权重缓存模块和数据池,但应该理解的是,在实际应用中,可以根据具体的并行计算方案,合理调整一级和二级缓存中特征图和权重数据所占比例。通常情况下,由于卷积核的复用率更高,因此特征图缓存模块和数据池要远大于权重缓存模块和数据池。
本发明的计算平台可以实现为神经网络处理器。与单一计算平台(即只有主机或CPU的计算平台)相比,本发明针对的是为了执行神经网络计算而被专门设计的神经网络专用处理器。本领域技术人员应当理解,本申请中所使用的术语“神经网络专用处理器”,也可简称为“神经网络处理器”或“NN处理器”。由于深度学***台中的神经网络计算实现技术也在本发明的范围之内。
DPU(Deep-learning Processing Unit)是一款针对人工智能中神经网络算法的通用加速平台,其利用FPGA高并行度和低功耗的特点,实现基于卷积神经网络(Convolutional Neural Network,以下简称CNN)进行推理。在这里,DPU可以认为是上文“深度学习处理器”或“深度神经网络处理器”或“卷积神经网络处理器”或“神经网络处理器”的一个具体实现。本文的描述主要基于使用CNN结构经由FPGA实现的DPU进行,但本领域技术人员应该理解的是,本发明的原理同样适用于通过诸如GPU的硬件结构针对其他神经网络进行推理的神经网络处理器。
本发明的计算平台可以在一个高并行计算***中实现,其中用于执行诸如神经网络计算的高并行度计算的部分或全部功能可由数字电路实现。在一个实施例中,本发明的计算***可以在包括通用处理器、大容量存储器和数字电路的片上***(SoC)实现。
在一个实施例中,可由SoC上的数字电路部分(例如,FPGA、GPU或ASIC)来实现本***所需的高并行计算平台,例如针对卷积神经网络的计算平台。计算平台或其中是并行计算模块可以是基于FPGA或GPU或ASIC等实现的硬件装置。由于CNN进行的是并行计算,因此通过逻辑硬件,尤其是FPGA来实现卷积神经网络计算功能具有天然的计算优势,并且相比于软件执行,能够实现更低的功耗。
在一个实施例中,可以将通过在前训练得到的有关CNN的全部参数以及例如需要分类的特征图存储在外存储器中,在随后进行神经网络计算时,可以由通用处理器执行如前结合图8所述的方法以在计算平台上实现高性能的并行计算。
上文中已经参考附图详细描述了根据本发明的高并行度计算平台、***及计算实现方法。
本发明根据卷积神经网络数据依赖确定性的规律,设计了多级缓存结构,利用带宽、多频率和数据复用的特性,使得给卷积计算模块供数的效率得到了极大的提升。另外,本发明还利用卷积神经网络的权值和特征图的稀疏特性,通过过滤空值极大提升了运算效率。本发明的计算平台设计简单,无需复杂的编解码和稀疏数据信息存储的代价就能够从神经网络参数的稀疏特性中获得最大化的计算效率收益。
在此需要强调的是,虽然本发明主要结合卷积神经网络的计算示出了优化的硬件架构,但本领域技术人员应该理解,本发明的计算平台也适用于其他高并行度计算,尤其适用于输入数据类型相对单一和/或稀疏度高的并行计算应用场景。
另外,虽然本发明中使用了“二级缓存”、“一级缓存”和“0级缓存”的名称,但在此“二级”、“一级”和“0级”只是为了说明在包括两个以上缓存的实施例中,各缓存之间的关系,而非对缓存本身的任何限制。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的***和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (23)
1.一种高并行度计算平台,包括:
一级缓存,用于缓存从外部存储器读取的计算数据;
多个读控制器,每个所述读控制器用于从所述一级缓存的任意位置读取并行计算模块中单次操作所需的计算数据或其部分;
并行计算模块,用于对所述多个读控制器读取的计算数据进行高并行度的计算操作;以及
直接从所述外部存储器读取所述计算数据的二级缓存,所述二级缓存顺序缓存读取的计算数据,并且至少基于所述一级缓存中的数据消耗状况,进行如下至少一项操作:
向所述一级缓存写入计算数据;以及
从所述外部存储器读取计算数据并进行缓存。
2.如权利要求1所述的计算平台,还包括:
连接在所述多个读控制器和所述并行计算模块之间的过滤模块,用于滤除由所述读控制器读取的计算数据中的空值数据和/或所述计算数据中对应于相应计算结果为空值的非空值数据。
3.如权利要求1所述的计算平台,其中,所述一级缓存中数据消耗状况由所述读控制器状态参数所指示,并且所述计算平台还包括:
用于存储所述读控制器状态参数的读控制器状态寄存器;以及
基于所述读控制器状态参数生成缓存更新指令的缓存更新控制器。
4.如权利要求1所述的计算平台,还包括:
与所述并行计算模块相连的计算结果缓存模块,用于缓存所述并行计算模块所进行的计算操作的计算结果数据,并将所述计算结果数据存回所述外部存储器。
5.如权利要求1所述的计算平台,其中,所述一级缓存实现为寄存器堆。
6.一种用于卷积神经网络的高并行度计算平台,包括:
一级缓存,用于缓存从外部存储器读取的特征图数据和权重数据;
多个读控制器,每个所述读控制器用于从所述一级缓存的任意位置读取单次卷积计算操作所需的特征图数据和/或权重数据;
并行计算模块,用于对所述多个读控制器读取特征图数据和权重数据的进行高并行度的卷积计算操作;以及
直接从所述外部存储器读取所述特征图数据和所述权重数据并与所述一级缓存相连的二级缓存,所述二级缓存的缓存容量大于所述一级缓存的缓存容量,用于分开缓存读取的所述特征图数据和所述权重数据,并且至少基于所述一级缓存中数据消耗状况,进行如下至少一项操作:
向所述一级缓存写入特征图数据和权重数据;以及
从所述外部存储器读取新的特征图数据和权重数据。
7.如权利要求6所述的计算平台,其中,所述一级缓存包括用于缓存所述特征图数据的特征图数据池以及用于缓存所述权重数据的权重数据池,并且所述多个读控制器包括2M个读控制器,其中第一组M个读控制器用于同时读取M个特征图卷积窗,第二组M个读控制器用于同时读取M个权重卷积窗,以在所述并行计算模块中实现并行度为M的特征图卷积操作,其中,M是大于2的整数。
8.如权利要求7所述的计算平台,还包括:
连接在所述多个读控制器和所述并行计算模块之间的过滤模块,用于滤除由所述读控制器读取的特征图数据和/或权重数据中的空值、和/或所述特征图数据和权重数据中对应于相应卷积计算结果为空值的非空值数据。
9.如权利要求8所述的计算平台,其中,所述过滤模块保留特征图卷积窗及其对应权重卷积窗中相同位置都不为零的值并将其他值滤除。
10.如权利要求9所述的计算平台,其中,所述过滤模块包括0级缓存和M个异步先进先出队列,所述0级缓存包括或能被划分为2M个卷积窗缓存池,所述2M个读控制器将M个特征图卷积窗和M个权重卷积窗存入所述0级缓存的2M个卷积窗缓存池,并以一一对应的方式滤除特征图卷积窗及其对应权重卷积窗中相同位置至少有一个为零的值,并将保留值分别存入所述M个异步先进先出队列。
11.如权利要求6所述的计算平台,其中,所述数据消耗参数是所述读控制器中读取的特征图数据在所述特征图上的位置坐标。
12.如权利要求6所述的计算平台,还包括:
用于存储所述读控制器状态参数的读控制器状态寄存器;以及
基于所述读控制器状态参数生成缓存更新指令的缓存更新控制器。
13.如权利要求7所述的计算平台,其中,所述M至少基于从所述外部存储器读取数据的带宽以及所述卷积窗的尺寸确定。
14.如权利要求6所述的计算平台,还包括:
与所述并行计算模块相连的计算结果缓存模块,用于缓存所述并行计算模块所进行的计算操作的卷积计算结果数据,并将所述计算结果数据存回所述外部存储器。
15.如权利要求6所述的计算平台,其中,所述一级缓存实现为寄存器堆。
16.一种用于卷积神经网络的计算平台实现方法,包括:
使用如权利要求1-15中任一项所述的计算平台将特征图数据和权重数据从所述外部存储器中读取到所述一级缓存中;
所述多个读控制器分别读取多个单次卷积计算操作所需的特征图数据和/或权重数据;以及
所述并行计算模块同时对所述多个读控制器读取的多组特征图数据和权重数据的进行高并行度的卷积计算操作。
17.如权利要求16所述的方法,其中,由所述多个读控制器读取的特征图数据和权重数据存在高度数据复用,所述数据复用包括如下至少一项:
由卷积窗的长宽大于步长导致的特征图数据的复用;以及
由同时对特征图中多个位置执行卷积导致的权重数据的复用。
18.如权利要求16所述的方法,还包括:
与所述一级缓存相连的二级缓存直接从所述外部存储器读取所述特征图数据和所述权重数据,并且基于所述读控制器中读取的特征图数据在所述特征图上的位置坐标向所述一级缓存写入特征图数据和权重数据以及从所述外部存储器读取新的特征图数据和权重数据,其中,所述二级缓存向所述一级缓存写入数据的时间间隔小于或等于所述二级缓存从所述外部存储器读取数据的时间间隔。
19.如权利要求18所述的方法,其中,所述多个读控制器分别读取多个单次卷积计算操作所需的特征图数据和/或权重数据包括:
按照要执行卷积操作的卷积核尺寸读取相应的特征图卷积窗和权重卷积窗。
20.如权利要求18所述的方法,还包括:
滤除所述特征图卷积窗和权重数据卷积窗中与卷积操作结果中零值对应位置的值,并将经过滤的所述特征图卷积窗和权重卷积窗送入所述并行计算模块。
21.如权利要求18所述的方法,其中,所述多个读控制器每次读取所述特征图数据和所述权重数据的时间间隔与所述并行计算模块执行单回M组计算所需的时间段相同,并且小于所述二级缓存每次向所述一级缓存写入数据的时间间隔。
22.一种高并行计算***,包括:
如权利要求1-15中任一项所述的计算平台;
位于所述计算平台外部的大容量存储器;
与所述计算平台和所述存储器相连接的处理器,用于执行如权利要求16-21中任一项所述的实现方法。
23.如权利要求22所述的***,其中,所述并行计算模块至少部分由FPGA、GPU或ASIC实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810277338.XA CN110321997B (zh) | 2018-03-31 | 2018-03-31 | 高并行度计算平台、***及计算实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810277338.XA CN110321997B (zh) | 2018-03-31 | 2018-03-31 | 高并行度计算平台、***及计算实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321997A CN110321997A (zh) | 2019-10-11 |
CN110321997B true CN110321997B (zh) | 2021-10-19 |
Family
ID=68111837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810277338.XA Active CN110321997B (zh) | 2018-03-31 | 2018-03-31 | 高并行度计算平台、***及计算实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321997B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749782A (zh) * | 2019-10-31 | 2021-05-04 | 上海商汤智能科技有限公司 | 数据处理方法及相关产品 |
CN113111995A (zh) * | 2020-01-09 | 2021-07-13 | 北京君正集成电路股份有限公司 | 一种缩短模型推理和模型后处理运行时间的方法 |
CN111275194B (zh) * | 2020-02-16 | 2022-06-21 | 苏州浪潮智能科技有限公司 | 一种基于fpga的nlp推理加速*** |
CN111626405B (zh) * | 2020-05-15 | 2024-05-07 | Tcl华星光电技术有限公司 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
CN113807998A (zh) * | 2020-06-12 | 2021-12-17 | 深圳市中兴微电子技术有限公司 | 图像处理方法、目标检测装置、机器视觉设备和存储介质 |
CN111984189B (zh) * | 2020-07-22 | 2022-05-17 | 深圳云天励飞技术股份有限公司 | 神经网络计算装置和数据读取、数据存储方法及相关设备 |
CN113298243A (zh) * | 2021-02-01 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储管理方法和装置以及卷积计算硬件加速器 |
CN112990157B (zh) * | 2021-05-13 | 2021-08-20 | 南京广捷智能科技有限公司 | 一种基于fpga的图像目标识别加速*** |
CN113642724B (zh) * | 2021-08-11 | 2023-08-01 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499875A (zh) * | 2008-02-02 | 2009-08-05 | 三星电子株式会社 | 支持可变处理速率的lte解速率匹配与解交织的装置 |
WO2010064728A1 (en) * | 2008-12-04 | 2010-06-10 | Canon Kabushiki Kaisha | Convolution operation circuit and object recognition apparatus |
US8442927B2 (en) * | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
CN103729449A (zh) * | 2013-12-31 | 2014-04-16 | 上海富瀚微电子有限公司 | 一种参考数据访问管理方法及装置 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107451659A (zh) * | 2017-07-27 | 2017-12-08 | 清华大学 | 用于位宽分区的神经网络加速器及其实现方法 |
CN107633297A (zh) * | 2017-03-10 | 2018-01-26 | 南京大学 | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034375A (zh) * | 2007-02-12 | 2007-09-12 | 忆正存储技术(深圳)有限公司 | 计算机存储*** |
JP2011150684A (ja) * | 2009-12-21 | 2011-08-04 | Sony Corp | キャッシュメモリおよびキャッシュメモリ制御装置 |
CN105119768A (zh) * | 2015-06-26 | 2015-12-02 | 华为技术有限公司 | 一种现场可编程门阵列fpga及数据存储方法 |
CN106649143B (zh) * | 2015-10-29 | 2020-06-26 | 阿里巴巴集团控股有限公司 | 一种访问缓存的方法、装置及电子设备 |
CN105611234B (zh) * | 2015-12-21 | 2018-09-28 | 中国科学院长春光学精密机械与物理研究所 | 嵌入式***任意帧频数字图像模拟显示方法 |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
-
2018
- 2018-03-31 CN CN201810277338.XA patent/CN110321997B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499875A (zh) * | 2008-02-02 | 2009-08-05 | 三星电子株式会社 | 支持可变处理速率的lte解速率匹配与解交织的装置 |
WO2010064728A1 (en) * | 2008-12-04 | 2010-06-10 | Canon Kabushiki Kaisha | Convolution operation circuit and object recognition apparatus |
US8442927B2 (en) * | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
CN103729449A (zh) * | 2013-12-31 | 2014-04-16 | 上海富瀚微电子有限公司 | 一种参考数据访问管理方法及装置 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107633297A (zh) * | 2017-03-10 | 2018-01-26 | 南京大学 | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 |
CN107451659A (zh) * | 2017-07-27 | 2017-12-08 | 清华大学 | 用于位宽分区的神经网络加速器及其实现方法 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
Non-Patent Citations (2)
Title |
---|
Angel-Eye: A Complete Design Flow for Mapping CNN onto Customized Hardware;Kaiyuan Guo 等;《ISVLSI》;20161208;第24-29页 * |
深度卷积神经网络的多GPU并行框架;杨宁;《计算机与现代化》;20161130(第11期);第95-98页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110321997A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321997B (zh) | 高并行度计算平台、***及计算实现方法 | |
US11568258B2 (en) | Operation method | |
CN107506828B (zh) | 用于稀疏连接的人工神经网络计算装置和方法 | |
US10936941B2 (en) | Efficient data access control device for neural network hardware acceleration system | |
CN110050267B (zh) | 用于数据管理的***和方法 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
CN110895715A (zh) | 存储高效的神经网络 | |
US20180330235A1 (en) | Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN114503125A (zh) | 结构化剪枝方法、***和计算机可读介质 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
US20190311266A1 (en) | Device and method for artificial neural network operation | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理***、方法以及终端 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN110377874B (zh) | 卷积运算方法及*** | |
CN110716751B (zh) | 高并行度计算平台、***及计算实现方法 | |
CN113392963B (zh) | 基于fpga的cnn硬件加速***设计方法 | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
CN113869494A (zh) | 基于高层次综合的神经网络卷积fpga嵌入式硬件加速器 | |
CN112596912B (zh) | 二值或三值神经网络卷积计算的加速运算方法及装置 | |
Shahan et al. | FPGA based convolution and memory architecture for Convolutional Neural Network | |
Sreehari et al. | A hardware accelerator based on quantized weights for deep neural networks | |
Liu et al. | Research on Electronic Hardware Scheme Design for Performance Improvement of Convolutional Neural Network | |
CN114429553A (zh) | 一种基于随机计算和稀疏计算的图像识别卷积层结构 | |
JP2023024960A (ja) | 効率的なニューラルネットワーク実行のためのメモリ使用の最適化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190925 Address after: 2100 San Jose Rojack Avenue, California, USA Applicant after: XILINX INC Address before: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing. Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |