CN115935888A - 一种神经网络加速*** - Google Patents

一种神经网络加速*** Download PDF

Info

Publication number
CN115935888A
CN115935888A CN202211552350.XA CN202211552350A CN115935888A CN 115935888 A CN115935888 A CN 115935888A CN 202211552350 A CN202211552350 A CN 202211552350A CN 115935888 A CN115935888 A CN 115935888A
Authority
CN
China
Prior art keywords
pooling
tensor
information
module
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.)
Pending
Application number
CN202211552350.XA
Other languages
English (en)
Inventor
周辉
王晓峰
谢宇嘉
李悦
赵雄波
吴松龄
盖一帆
路坤峰
李晓敏
张隽
弭寒光
董文杰
靳蕊溪
吴敏
赵冠杰
阳徽
费亚男
李洋
赵伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Aerospace Automatic Control Research Institute
Original Assignee
Beijing Aerospace Automatic Control Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Aerospace Automatic Control Research Institute filed Critical Beijing Aerospace Automatic Control Research Institute
Priority to CN202211552350.XA priority Critical patent/CN115935888A/zh
Publication of CN115935888A publication Critical patent/CN115935888A/zh
Priority to PCT/CN2023/111612 priority patent/WO2024119862A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Architecture (AREA)
  • Geometry (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开属于专用算法硬件电路设计技术领域,具体而言涉及一种神经网络加速***包括:信息配置模块;和池化加速单元包括:控制模块,控制模块根据信息配置模块的参数信息得到张量块的信息以及地址信息;输入张量缓存模块,与控制模块相连,根据由控制模块得到的输入张量块地址信息缓存从外部存储模块的输入张量块;过程张量缓存模块,与控制模块相连,根据由控制模块得到的输出张量块地址信息缓存沿宽度方向池化的输出张量块,并提供沿高度方向池化的输入数据;池化器阵列模块,分别与输入张量缓存模块和过程张量缓存模块相连,进行宽度方向的池化和高度方向的池化,并沿通道方向进行并行计算,以缩短池化耗时。

Description

一种神经网络加速***
技术领域
本公开属于专用算法硬件电路设计技术领域,具体而言涉及一种神经网络加速***。
背景技术
在人工智能领域,今年来卷积神经网络得到广泛应用。其基本结构如图结构示意图如图8所示,由输入层、隐藏层和输出层组成,前一层的输出特征数据作为后一层的输入特征,不断相后传递,直至得到网络的最终输出。位于输入层和输出层之间的隐藏层,根据应用场景的不同可以进一步细分为卷积层、池化层和全连接层等线性层,和ReLU、Sigmoid等非线性层(亦称激活层)。
早期的硬件实现方法难以支持较大尺寸的池化窗口,通常需要进行多轮的较小尺寸的池化操作来实现较大尺寸的池化算子,这种实现方式会导致片外存储设备与池化加速单元之间的数据交互量超出原始数据量的若干倍,造成通信带宽紧张。当无法通过小尺寸池化完成时,就需要算法开发人员在保证算法精度的同时修改池化算子参数,给算法人员带来一定压力。
发明内容
本公开正是基于现有技术的上述需求而提出的,本公开要解决的技术问题是提供一种神经网络加速***以缩短池化运算的耗时。
为了解决上述问题,本公开提供的技术方案包括:
提供了一种神经网络加速***,包括:信息配置模块,由外部设置信息配置模块的参数信息;外部存储模块;和池化加速单元,分别与信息配置模块和外部存储模块相连,所述池化加速单元包括:控制模块,所述控制模块根据所述信息配置模块的参数信息得到张量块的信息以及地址信息,所述张量块包括输入张量块和输出张量块;输入张量缓存模块,与所述控制模块相连,根据由控制模块得到的输入张量块地址信息缓存从外部存储模块的输入张量块;过程张量缓存模块,与所述控制模块相连,根据由控制模块得到的输出张量块地址信息缓存沿宽度方向池化的输出张量块,并提供沿高度方向池化的输入数据;池化器阵列模块,分别与输入张量缓存模块和过程张量缓存模块相连,进行宽度方向的池化和高度方向的池化,并沿通道方向进行并行计算。
优选的,所述参数信息包括池化层基本信息、输入张量块和输出张量块的相关信息;所述池化层基本信息包括:池化类型、池化窗口高度、池化窗口宽度、池化高度方向步长、池化宽度方向步长、输入数据高度方向边界补零信息和输入数据宽度方向边界补零信息;输入张量块相关信息包括:输入块位置序号、输入张量块高度、输入张量块宽度和输入通道数;输出张量块相关信息包括:输出张量块高度和输出张量块宽度。
优选的,所述外部存储模块的存储方式包括:将沿通道方向拆分成两个维度,分别为低维度的PDI和高维度的T;数据沿通道方向进行存储;当通道方向的数据存储达到PDI边界时,沿宽度方向进行存储;当宽度方向的数据存储达到宽度边界时,沿高度方向进行存储;当高度方向的数据存储达到高度边界时,沿通道方向向高纬度T进行存储。
优选的,所述控制模块根据所述信息配置模块的参数信息得到张量块的信息包括,基于所述参数信息和输出张量块元素的信息得到输入张量块元素的高度索引,所述输出张量块元素的信息包括由输出张量块进行四个维度的遍历得到的输出张量块元素的位置信息,所述输入张量块元素的高度索引表示为:
Figure BDA0003981813170000021
其中,ntih为输入张量块元素的高度索引,ntoh为输出张量块元素的高度索引,Sh为池化高度方向步长,kh为池化窗口高度,Ph为输入数据高度方向边界补零信息,maxtih为输入张量块元素的高度索引的最大值。
优选的,所述控制模块根据所述信息配置模块的参数信息得到张量块的信息还包括,基于所述参数信息和输出张量块元素的信息得到输入张量块元素的宽度索引,所述输出张量块元素的信息包括由输出张量块进行四个维度的遍历得到的输出张量块元素的位置信息,所述输入张量块元素的宽度索引表示为:
Figure BDA0003981813170000031
其中,ntiw为输入张量块元素的宽度索引,ntow为输出张量块元素的宽度索引,Sw为池化宽度方向步长,kw为池化窗口宽度,Pw为输入数据宽度方向边界补零信息,maxtiw输入张量块元素的宽度索引的最大值。
优选的,计算的输入特征元素的地址Ai通过以下表达式得出:Ai=nif×Nih×Niw+nih×Niw+niw其中,nif为通道索引,nih和niw为特征元素在特征图中的坐标,Nih为输入特征图的高度,Niw为输入特征图的宽度。
优选的,所述池化加速单元从所述外部存储模块中每次获取PDI个张量块;所述池化器阵列模块包括PDI个池化器,所述PDI个池化器并行池化。
优选的,所述池化器阵列模块的处理包括:所述池化器阵列模块从输入张量缓存模块中获取输入特征数据,并进行宽度方向的池化,同时将过程数据存入到过程张量缓存模块中;所述池化器阵列模块从过程张量缓存模块中获取数据,并进行高度方向的池化;输出池化结果。
优选的,所述神经网络加速***还包括输出控制模块,所述输出控制模块分别与池化器阵列模块和控制模块相连,根据所述控制模提供的信息将池化器阵列模块输出的池化结果输出至外部存储模块或通用互联接口。
优选的,所述输出控制模块输出的经池化后的输出特征矩阵表示为:
Y(nof,noh,now)=func(X(nif,nih:nih+kh,niw:niw+kw))
其中,Y()为输出控制模块输出的输出特征矩阵,Y矩阵左上角元素在特征图内的位置是(noh,now)通道索引是nof,对于最大池化,func()代表Max(),对于平均池化,func()代表Average(),X()为为池化窗口内输入特征矩阵,X矩阵左上角元素在特征图内的位置是(nih,niw)通道索引是nif,kh为池化窗口内输入特征矩阵的高度,kw为池化窗口内输入特征矩阵的宽度。
与现有技术相比,本公开针对CNN中池化运算的特点,提出一种针对卷积神经网络池化操作硬件加速电路设计方法。以尽可能小的FPGA资源消耗量,实现池化操作支持任意池化滑动步长、池化核尺寸与边界补零个数。其实现方式降低了输入数据从外部存储模块读取的次数,降低了数据通讯量与数据存取开销,因此缩短了池化运算的耗时,从而降低了池化操作的运算成本并提升其效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种神经网络加速***的结构示意图;
图2为本发明提供的池化加速单元的结构示意图;
图3为本发明外部存储模块的存储方向示意图;
图4为本发明实施例中特征图分块示意图;
图5为本发明实施例中池化器阵列模块沿宽度方向池化示意图;
图6为本发明实施例中池化器阵列模块沿高度方向池化示意图;
图7为本发明实施例中池化器阵列模块的工作过程步骤流程图;
图8为现有技术中卷积神经网络的基本结构图;
图9为本发明实施例中处理原始Tensor数据的步骤流程图;
图10为本发明实施例中输入Tensor数据示意图;
图11为本发明实施例中对输入Tensor数据进行沿行方向遍历的示意图;
图12为本发明实施例中输入Tensor数据后得到的过程数据示意图;
图13为本发明实施例中对过程数据沿列方向遍历的示意图;
图14为本发明实施例中输出Tensor数据示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本公开实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接可以是机械连接,也可以是电连接可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
全文中描述使用的术语“顶部”、“底部”、“在……上方”、“下”和“在……上”是相对于装置的部件的相对位置,例如装置内部的顶部和底部衬底的相对位置。可以理解的是装置是多功能的,与它们在空间中的方位无关。
为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。
本实施例提供了一种神经网络加速***,如图1-图14所示。
如图1所示,所述神经网络加速***包括:信息配置模块、外部存储模块以及池化加速单元。所述池化加速单元分别与所述信息配置模块和所述外部存储模块相连,以能够根据输入至所述信息配置模块之中的信息对来自外部存储模块的数据进行特定顺序排序后,再进行池化,并以特定顺序输出。如图2所示,所述池化加速单元包括:输入张量缓存模块、池化器阵列模块、过程张量缓存模块和控制模块。
通常情况下,池化加速单元的输入数据为神经网络的卷积层输出的特征数据,换句话说,对于池化加速单元而言,其输入为输入特征数据,默认的排序方式为fmin[H][W][C],其中C为通道方向,W为宽度方向,H为高度方向,通道方向的维度最低,高度方向的维度最高,宽度方向的维度在前两者之间。
如图3所示,将通道方向C拆分查分为两个维度,一部分放在低维PDI实现通道并行处理,一部分放在高维T实现数据切分,便于池化加速单元分批运算。所述外部存储模块的存储方式包括:数据沿通道方向进行存储;当通道方向的数据存储达到PDI边界时,沿宽度方向进行存储;当宽度方向的数据存储达到宽度边界时,沿高度方向进行存储;当高度方向的数据存储达到高度边界时,沿通道方向向高纬度T进行存储,排序方式变为fmin[T][H][W][PDI]。
控制模块根据经由外部设置的所述信息配置模块的参数信息,控制池化加速单元内其他模块分块地进行卷积运算。所述参数信息包括池化层基本信息和各类输入输出张量块的相关信息。池化层基本信息包括池化类型Poolmode、池化窗口高度Kh、池化窗口宽度Kw、池化高度方向步长Sh、池化宽度方向步长Sw、输入数据高度方向边界补零信息Ph和输入数据宽度方向边界补零信息Pw;输入特征张量块的相关信息包括输入块位置序号Tensoridxh,idx_c、Tensor块高度方向索引为idxh、Tensor块通道方向索引为idxc。输入张量块高度Hi、输入张量块宽度Wi、输入通道数Ni;输出特征张量块的相关信息包括输出张量块高度Ho、输出张量块宽度Wo
由于片上存储资源有限,无法加载所有的输入特征图数据。故采用分块的方式进行计算,具体分块方式如图4所示。将特征图沿高度方向和通道方向分块,每个分块均为3维张量块,分块延高度与通道方向分块数量分别为TNh,TNc。由于池化层通常有在输入特征图边界补零的需求,故根据Tensor在特征图中的位置不同,故将Tensor分为3类,其通道数和宽度相同,而高度各不相同。第1类Tensor其idxh等于0,Tensor受边界补零影响,其高度小于默认高度;第2类Tensor其idxh大于0小于TNh,为默认尺寸张量块;第3类Tensor其idxh等于TNh-1受输入特征图尺寸和边界补零的共同影响,其高度通常更小。
控制模块根据信息配置模块的参数信息,计算并输出每个输入张量块Tensor_Procin的高度、宽度和通道数,每个输出张量块Tensor_Procout的高度、宽度和通道数。同时,产生对输入张量缓存模块和过程张量缓存模块的地址与控制信号,将输入特征与过程数据送入池化器阵列模块进行池化操作。
整个处理流程从输出Tensorout进行4个维度的遍历分别是PDI、H、W和T。根据输出元素位置信息反推出参与计算的输入信息,参与池化运算的输入元素高度ntih与宽度索引ntiw可通过下列表达式得出,具体由输出元素高度索引ntoh与宽度索引ntow变换得到。
Figure BDA0003981813170000071
Figure BDA0003981813170000072
当计算得到输入数据索引超过Tensorin输入特征图时,流程参与计算的输入特征元素的地址Ai通过以下表达式得出:
Ai=nif×Nih×Niw+nih×Niw+niw
其中,nif为通道索引,nih和niw为特征元素在特征图中的坐标,Nih为输入特征图的高度,Niw为输入特征图的宽度。
输入张量存储模块,分别与所述控制模块、外部存储模块以及池化器相连,所述控制模块向所述输入张量存储模块发送地址信息,所述输入张量存储模块根据地址信息从所述外部存储模块中获取输入张量块。
过程张量缓存模块,分别与所述控制模块与所述池化器阵列模块相连,所述控制模块向所述输入张量存储模块发送地址信息,所述过程张量模块根据地址信息接收池化器阵列模块输出的过程数据,所述过程数据包括宽度方向的池化结果;同时所述张量缓存模块在所述池化器阵列模块进行高度方向的池化时,提供过程数据。
池化器阵列模块,分别与所述输入张量缓存模块和过程张量缓存模块相连,如图5-图7所示,所述池化器阵列模块的处理过程包括:所述池化器阵列模块从输入张量缓存模块中获取输入特征数据,并进行宽度方向的池化,同时将过程数据存入到过程张量缓存模块中;所述池化器阵列模块从过程张量缓存模块中获取数据,并进行高度方向的池化;将最后的池化结果输出。由于进行池化时通道方向是独立的,没有任何数据依赖,故本实施例选择沿通道方向进行并行计算,以提高计算性能。池化器阵列模块中共包含PDI个池化器,每个池化器负责一个通道的特征图的池化操作。
通常情况下,完成1次池化操作需要进行Kw*Kh-1次运算操作:对于最大池化,每得到一个输出元素需要Kw*Kh-1次比较操作;对于平均池化处理,每得到一个输出元素需要Kw*Kh-1次加法与1次除法操作。其中,Kw为池化核的宽度,Kh为池化核的高度。
为降低计算量,本实施了通过引入过程张量缓存模块,将池化运算分解为宽度方向池化和高度方向池化两个步骤。通过分解,可以充分的利用宽度方向池化的结果,可大幅降低计算复杂度,从O(Kw*Kh)降低为O(Kw+Kh),其中,O()为复杂度计算。同时可大幅降低原始数据的读取次数,早期完成一次池化操作需要完成Kw*Kh次原始数据读取,现在只需要完成Kw次原始数据读取和Kh次原始数据读取,减少对数据通讯带宽的依赖。
具体而言,所述池化器阵列模块的处理过程包括:
宽度方向的池化,从输入张量缓存模块读取Kw个数据X(ntif,ntih,ntiw),流水开展1×Kw池化运算操作,并将结果数据写入过程张量缓存模块,直至所有行遍历结束。
对于进行最大池化而言,进行的运算如下所示:
max(regif,X(nif,ntih,ntiw))
池化寄存器regif的初值为当前可以表征范围的最小值,例如8bit位宽对应的最小值为-128。当得知X(nif,nti,ntiw)中元素的索引值无效时,元素值亦置为最小值。
对于进行平均池化而言,进行的运算如下所示:
add(regif,X(nif,ntih,ntiw))
寄存器regif的初值为0,当得知X(nif,nti,nti)中元素的索引值无效时,亦将该元素置为0。
高度方向的池化,延高度方向开展Tensortmp的Kr×1的池化操作,Kr为数据个数,每读取Kr个数据进行运算后输出最终计算数据,直至所有列遍历结束。
输出控制模块的主要功能是根据控制模块提供的地址信息和控制信息,将池化器输出的数据打入外部存储模块或通用互联接口。
所述输出控制模块输出的经池化后的输出特征矩阵表示为:
Y(nof,noh,now)=func(X(nif,nih:nih+kh,niw:niw+kw))
其中,Y()为输出控制模块输出的输出特征矩阵,Y矩阵左上角元素在特征图内的位置是(noh,now)通道索引是nof,对于最大池化,func()代表Max(),对于平均池化,func()代表Average(),X()为为池化窗口内输入特征矩阵,X矩阵左上角元素在特征图内的位置是(nih,niw)通道索引是nif,kh为池化窗口内输入特征矩阵的高度,kw为池化窗口内输入特征矩阵的宽度。
基于上述论述,此处将举出一个具体实施方式进行说明以便于理解,参照图9-图14所示:
假设输入\输出特征图的尺寸均为64×16×8,即64个通道、宽度和高度均为8;池化窗口的尺寸为3×3;池化步长为1;边界补零宽度为0。池化加速单元的通道并行度PDI为32。则输入特征以fmin[2][16][8][32]的方式存储于外部存储。
由于片上缓存的限制,假设过程张量缓存最大存储32×8×8的张量块Tensor,如图10所示,即通道数为32、高度为8、宽度为8。
如图9所示,通过信息配置模块将池化层的配置信息写入池化加速单元的控制模块,同时获取Tensor数据;具体而言,从信息配置模块中获取池化运算所需的行方向补零与步长等信息,确定延行方向参与池化运算的待计算的首元素位置,输入张量缓存模块从外部存储模块获取的输入张量块,并向池化器阵列提供计算所需的数据。
行方向池化计算:池化器阵列模块根据参数信息对输入特征数据进行宽度方向的池化操作,根据首元素的位置沿行方向进行顺序读取kw个元素,进行数据比较将最大的元素信息写入缓存模块Tensor_tmp,如图11所示,首先完成67 -4- -65的结果比较,将67写入过程数据缓存Tensor_tmp中,接着完成4 -65 -32的结果比较得到4写入过程缓存模块Tensor_tmp中,直至第一行计算完毕,接着进行第二行比较直至所有行方向池化处理计算完毕得到大小为8*6的Tensor_tmp过程数据,如图12所示。
第三步,获取过程Tensor_tmp数据:通过配置信息,获取池化运算所需的列方向补零与步长等信息,确定沿列方向参与池化运算的待计算的首元素位置,输入张量缓存从外部存储单元获取的输入张量块,并向池化器阵列提供计算所需的数据。
第四步,列方向池化计算:池化器阵列根据配置信息对输入特征数据进行高方向的池化操作,根据首元素的位置沿列方向进行顺序读取kh个元素,进行数据比较将最大的元素信息写入缓存模块Tensor_tmp,如图13所示,首先完成67,39 62的结果比较,将67写入第一个过程数据缓存中,接着完成39 62 9的结果比较得到62写入缓存模块Tensor_tmp,直至第一列计算完毕,接着进行第2列比较直至所有列方向池化处理计算完毕得到大小为8*6的输出Tensor数据,如图14所示。
本发明公开了一种神经网络加速***可支持任意池化类型、任意步长和任意池化窗口的池化加速单元,它是卷积神经网络加速器中的主要组成部分。池化加速单元的工作模式可由外部主控配置,与加速器中的其它处理单元通过通用互联接***互,与其它处理单元共享存储单元。该池化加速方法可大幅降低池化计算的复杂度,加速池化计算过程。池化窗口越大、步长越小,则加速比越大。总之,该池化加速单元的逻辑结构更加简洁、资源消耗量更小,能够以很小的代价实现池化层的高效计算。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种神经网络加速***,其特征在于,包括:
信息配置模块,由外部设置信息配置模块的参数信息;
外部存储模块;
池化加速单元,分别与信息配置模块和外部存储模块相连,所述池化加速单元包括:
控制模块,所述控制模块根据所述信息配置模块的参数信息得到张量块的信息以及地址信息,所述张量块包括输入张量块和输出张量块;
输入张量缓存模块,与所述控制模块相连,根据由控制模块得到的输入张量块地址信息缓存从外部存储模块的输入张量块;
过程张量缓存模块,与所述控制模块相连,根据由控制模块得到的输出张量块地址信息缓存沿宽度方向池化的输出张量块,并提供沿高度方向池化的输入数据;
池化器阵列模块,分别与输入张量缓存模块和过程张量缓存模块相连,进行宽度方向的池化和高度方向的池化,并沿通道方向进行并行计算。
2.根据权利要求1所述的一种神经网络加速***,其特征在于,
所述参数信息包括池化层基本信息、输入张量块和输出张量块的相关信息;
所述池化层基本信息包括:池化类型、池化窗口高度、池化窗口宽度、池化高度方向步长、池化宽度方向步长、输入数据高度方向边界补零信息和输入数据宽度方向边界补零信息;
输入张量块相关信息包括:输入块位置序号、输入张量块高度、输入张量块宽度和输入通道数;
输出张量块相关信息包括:输出张量块高度和输出张量块宽度。
3.根据权利要求1所述的一种神经网络加速***,其特征在于,
所述外部存储模块的存储方式包括:
将沿通道方向拆分成两个维度,分别为低维度的PDI和高维度的T;
数据沿通道方向进行存储;
当通道方向的数据存储达到PDI边界时,沿宽度方向进行存储;
当宽度方向的数据存储达到宽度边界时,沿高度方向进行存储;
当高度方向的数据存储达到高度边界时,沿通道方向向高纬度T进行存储。
4.根据权利要求3所述的一种神经网络加速***,其特征在于,
所述控制模块根据所述信息配置模块的参数信息得到张量块的信息包括,基于所述参数信息和输出张量块元素的信息得到输入张量块元素的高度索引,所述输出张量块元素的信息包括由输出张量块进行四个维度的遍历得到的输出张量块元素的位置信息,所述输入张量块元素的高度索引表示为:
Figure FDA0003981813160000021
其中,ntih为输入张量块元素的高度索引,ntoh为输出张量块元素的高度索引,Sh为池化高度方向步长,kh为池化窗口高度,Ph为输入数据高度方向边界补零信息,maxtih为输入张量块元素的高度索引的最大值。
5.根据权利要求4所述的一种神经网络加速***,其特征在于,
所述控制模块根据所述信息配置模块的参数信息得到张量块的信息还包括,基于所述参数信息和输出张量块元素的信息得到输入张量块元素的宽度索引,所述输出张量块元素的信息包括由输出张量块进行四个维度的遍历得到的输出张量块元素的位置信息,所述输入张量块元素的宽度索引表示为:
Figure FDA0003981813160000022
其中,ntiw为输入张量块元素的宽度索引,ntow为输出张量块元素的宽度索引,Sw为池化宽度方向步长,kw为池化窗口宽度,Pw为输入数据宽度方向边界补零信息,maxtiw输入张量块元素的宽度索引的最大值。
6.根据权利要求5所述的一种神经网络加速***,其特征在于,
计算的输入特征元素的地址Ai通过以下表达式得出:
Ai=nif×Nih×Niw+nih×Niw+niw
其中,nif为通道索引,nih和niw为特征元素在特征图中的坐标,Nih为输入特征图的高度,Niw为输入特征图的宽度。
7.根据权利要求1所述的一种神经网络加速***,其特征在于,
所述池化加速单元从所述外部存储模块中每次获取PDI个数据;
所述池化器阵列模块包括PDI个池化器,所述PDI个池化器并行池化。
8.根据权利要求1所述的一种神经网络加速***,其特征在于,
所述池化器阵列模块的处理包括:
所述池化器阵列模块从输入张量缓存模块中获取输入特征数据,并进行宽度方向的池化,同时将过程数据存入到过程张量缓存模块中;
所述池化器阵列模块从过程张量缓存模块中获取数据,并进行高度方向的池化;
输出池化结果。
9.根据权利要求1所述的一种神经网络加速***,其特征在于,
所述神经网络加速***还包括输出控制模块,所述输出控制模块分别与池化器阵列模块和控制模块相连,根据所述控制模提供的信息将池化器阵列模块输出的池化结果输出至外部存储模块或通用互联接口。
10.根据权利要求9所述的一种神经网络加速***,其特征在于,
所述输出控制模块输出的经池化后的输出特征矩阵表示为:
Y(nof,noh,now)=func(A(nif,nih:nih+kh,niw:niw+kw))
其中,Y()为输出控制模块输出的输出特征矩阵,Y矩阵输出元素在特征图内的位置是(noh,now)通道索引是nof,对于最大池化,func()代表Max(),对于平均池化,func()代表Average(),X()为为池化窗口内输入特征矩阵,X矩阵左上角元素在特征图内的位置是(nih,niw)通道索引是nif,kh为池化窗口内输入特征矩阵的高度,kw为池化窗口内输入特征矩阵的宽度。
CN202211552350.XA 2022-12-05 2022-12-05 一种神经网络加速*** Pending CN115935888A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211552350.XA CN115935888A (zh) 2022-12-05 2022-12-05 一种神经网络加速***
PCT/CN2023/111612 WO2024119862A1 (zh) 2022-12-05 2023-08-08 一种神经网络加速***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211552350.XA CN115935888A (zh) 2022-12-05 2022-12-05 一种神经网络加速***

Publications (1)

Publication Number Publication Date
CN115935888A true CN115935888A (zh) 2023-04-07

Family

ID=86553262

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211552350.XA Pending CN115935888A (zh) 2022-12-05 2022-12-05 一种神经网络加速***

Country Status (2)

Country Link
CN (1) CN115935888A (zh)
WO (1) WO2024119862A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024119862A1 (zh) * 2022-12-05 2024-06-13 北京航天自动控制研究所 一种神经网络加速***

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763612B (zh) * 2018-04-02 2022-11-18 复旦大学 一种神经网络的池化层加速运算的电路
CN110674934B (zh) * 2019-08-26 2023-05-09 陈小柏 一种神经网络池化层及其运算方法
US11507831B2 (en) * 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration
CN113298237B (zh) * 2021-06-23 2024-05-14 东南大学 一种基于fpga的卷积神经网络片上训练加速器
CN114004351A (zh) * 2021-11-22 2022-02-01 浙江大学 一种卷积神经网络硬件加速平台
CN114265696A (zh) * 2021-12-28 2022-04-01 北京航天自动控制研究所 针对卷积神经网络最大池化层的池化器及池化加速电路
GB2614705B (en) * 2021-12-31 2024-04-17 Imagination Tech Ltd Neural network accelerator with configurable pooling processing unit
CN115935888A (zh) * 2022-12-05 2023-04-07 北京航天自动控制研究所 一种神经网络加速***

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024119862A1 (zh) * 2022-12-05 2024-06-13 北京航天自动控制研究所 一种神经网络加速***

Also Published As

Publication number Publication date
WO2024119862A1 (zh) 2024-06-13

Similar Documents

Publication Publication Date Title
CN110378468B (zh) 一种基于结构化剪枝和低比特量化的神经网络加速器
CN111414994B (zh) 一种基于FPGA的Yolov3网络计算加速***及其加速方法
CN110097174B (zh) 基于fpga和行输出优先的卷积神经网络实现方法、***及装置
EP4036803A1 (en) Neural network model processing method and apparatus, computer device, and storage medium
CN111667051A (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
US11816574B2 (en) Structured pruning for machine learning model
CN112163601B (zh) 图像分类方法、***、计算机设备及存储介质
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN113792621B (zh) 一种基于fpga的目标检测加速器设计方法
CN109472361A (zh) 神经网络优化方法
US20220261650A1 (en) Machine learning training in logarithmic number system
CN110414672B (zh) 卷积运算方法、装置及***
CN115935888A (zh) 一种神经网络加速***
CN114461978B (zh) 数据处理方法、装置、电子设备及可读存储介质
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
CN115437795A (zh) 一种异构gpu集群负载感知的显存重计算优化方法及***
CN110490308B (zh) 加速库的设计方法、终端设备及存储介质
CN111523642A (zh) 用于卷积运算的数据重用方法、运算方法及装置、芯片
CN111667052B (zh) 专用神经网络加速器的标准与非标准卷积一致性变换方法
CN117370488A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN114662681B (zh) 一种面向yolo算法可快速部署的通用硬件加速器***平台
KR20230075349A (ko) 반도체 장치
CN115374912A (zh) 一种用于异构计算的融合算子设计方法和异构计算***
CN112001492B (zh) 关于二值权重DenseNet模型的混合流水式加速架构及加速方法
CN112116081B (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