CN109416754A - 用于深度神经网络的加速器 - Google Patents

用于深度神经网络的加速器 Download PDF

Info

Publication number
CN109416754A
CN109416754A CN201780039356.8A CN201780039356A CN109416754A CN 109416754 A CN109416754 A CN 109416754A CN 201780039356 A CN201780039356 A CN 201780039356A CN 109416754 A CN109416754 A CN 109416754A
Authority
CN
China
Prior art keywords
neuron
serial
cynapse
bits
bits serial
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
Application number
CN201780039356.8A
Other languages
English (en)
Other versions
CN109416754B (zh
Inventor
P·贾德
J·阿尔贝里奥
A·德尔马斯拉斯科兹
A·莫霍沃斯
S·沙丽
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.)
Samsung Electronics Co Ltd
Original Assignee
University of Toronto
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 University of Toronto filed Critical University of Toronto
Publication of CN109416754A publication Critical patent/CN109416754A/zh
Application granted granted Critical
Publication of CN109416754B publication Critical patent/CN109416754B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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

Abstract

描述一种用于在神经网络中进行位串行计算的系统。所述系统可以在集成电路上体现并且包括用于执行位串行计算的一个或多个位串行瓦片,其中每个位串行瓦片接收输入神经元和突触,并且传送输出神经元。还包括用于存储所述神经元的激活存储器以及分派器和精简器。所述分派器从存储器读取神经元和突触,并且将所述神经元或所述突触位串行地传送到所述一个或多个位串行瓦片。所述神经元或所述突触中的另一者被位并行地传送到所述一个或多个位串行瓦片,或者根据另一个实施例,还可以被位串行地传送到所述一个或多个位串行瓦片。所述精简器接收来自所述一个或多个瓦片的所述输出神经元,并且将所述输出神经元传送到所述激活存储器。

Description

用于深度神经网络的加速器
技术领域
本说明书大体上涉及神经网络,并且更明确地说,涉及用于深度神经网络(DNN)的加速器,其执行时间能够与所使用的数值表示的长度成比例地缩放。
背景技术
深度神经网络(DNN)是诸如对象和语音辨识等许多辨识任务中的最先进技术。DNN包括前馈层布置,每个层展现高计算需求和并行性,这通常借助于图形处理单元(GPU)来开发。DNN的高计算需求和对较高能效的需要已经推动了专用架构的开发和提议。然而,功率仍然是DNN设计的一个限制因素。
因此,本领域中仍然需要改进。
发明内容
根据本发明的一个方面,提供一种位串行神经网络加速器。
根据本发明的一个实施例,提供一种用于在神经网络中进行位串行计算的系统,其包括:一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触并且生成输出神经元;激活存储器,其用于存储神经元并且经由分派器和精简器与所述一个或多个位串行瓦片通信,其中分派器从激活存储器读取神经元并经由第一接口将神经元传送到一个或多个位串行瓦片,并且其中分派器从存储器读取突触并经由第二接口将突触传送到一个或多个位串行瓦片,并且其中精简器从一个或多个位串行瓦片接收输出神经元并经由第三接口将输出神经元传送到激活存储器;并且其中第一接口和第二接口中的一者将神经元或突触位串行地传送到一个或多个位串行瓦片,并且第一接口和第二接口中的另一者将神经元或突触位并行地传送到一个或多个位串行瓦片。
根据本发明的另一个实施例,提供一种用于在神经网络中进行位串行计算的系统,其包括:一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触并且传送输出神经元;激活存储器,其用于存储神经元并且经由分派器和精简器与一个或多个位串行瓦片通信,其中分派器从激活存储器读取神经元并经由第一接口将神经元传送到一个或多个位串行瓦片,并且其中分派器从存储器读取突触并经由第二接口将突触传送到一个或多个位串行瓦片,并且其中精简器从一个或多个位串行瓦片接收输出神经元并经由第三接口将输出神经元传送到激活存储器;并且其中第一接口和第二接口将神经元和突触位串行地传送到一个或多个位串行瓦片。
根据本发明的另一个实施例,每个位串行瓦片可以进一步包括突触缓冲器、保持来自分派器的输入神经元的输入神经元缓冲器以及保持等待传送到精简器的输出神经元的神经元输出缓冲器。
根据本发明的另一个实施例,提供一种包括位串行神经网络加速器的集成电路,所述集成电路包括:一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触并且生成输出神经元;激活存储器,其用于存储神经元并且经由分派器和精简器与一个或多个位串行瓦片通信,其中分派器从激活存储器读取神经元并经由第一接口将神经元传送到一个或多个位串行瓦片,并且其中分派器从存储器读取突触并经由第二接口将突触传送到一个或多个位串行瓦片,并且其中精简器从一个或多个位串行瓦片接收输出神经元并经由第三接口将输出神经元传送到激活存储器;并且其中第一接口和第二接口中的一者将神经元或突触位串行地传送到一个或多个位串行瓦片,并且第一接口和第二接口中的另一者将神经元或突触位并行地传送到一个或多个位串行瓦片。
根据本发明的另一个实施例,提供一种包括位串行神经网络加速器的集成电路,所述集成电路包括:一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触并且传送输出神经元;激活存储器,其用于存储神经元并且经由分派器和精简器与一个或多个位串行瓦片通信,其中分派器从激活存储器读取神经元并经由第一接口将神经元传送到一个或多个位串行瓦片,并且其中分派器从存储器读取突触并经由第二接口将突触传送到一个或多个位串行瓦片,并且其中精简器从一个或多个位串行瓦片接收输出神经元并经由第三接口将输出神经元传送到激活存储器;并且其中第一接口和第二接口将神经元和突触位串行地传送到一个或多个位串行瓦片。
本领域的普通技术人员在结合附图审阅以下对本发明的实施例的描述后将明白根据本申请的其它方面和特征。
附图说明
现在将参考附图,所述附图仅举例展示本发明的实施例以及可以如何实行这些实施例,在附图中:
图1是现有技术位并行DNN瓦片;
图2是根据本发明的一个实施例的神经处理单元;
图3是根据一个实施例的位串行内积单元(SIP);
图4是根据一个实施例的位串行瓦片与神经存储器(NM)之间的数据移动的数据流图;
图5是根据一个实施例的分派器;
图6是根据一个实施例的神经元存储器映射的数据流图;
图7是本发明的一个实施例的实验加速结果的条形图;
图8是本发明的一个实施例的实验能效结果的条形图;
图9是本发明的一个实施例的性能对准确度实验结果的线形图;
图10是本发明的一个实施例的性能实验结果的条形图;
图11是本发明的一个实施例的性能实验结果的条形图;
图12是根据本发明的一个实施例的神经处理单元或瓦片;
图13是根据本发明的一个实施例的位串行内积单元(SIP);
图14A是代表DaDN的现有技术位并行处理引擎,并且图14B和图14C展示卷积层在两个周期内的处理;
图15A至图15D展示根据本发明的一个实施例的处理卷积层的神经处理单元,其中图15A展示引擎的结构并且图15B至图15D展示其如何处理卷积层;
图16A至图16E展示根据本发明的一个实施例的处理全连接层的神经处理单元;
图17是根据本发明的一个实施例的显示由神经处理单元处理的全连接层和卷积层的每层精度结果的表;
图18是根据本发明的一个实施例的显示由神经处理单元处理的全连接层和卷积层的执行时间和能效改善的表;
图19是根据本发明的一个实施例的显示每周期处理两个激活位的神经处理单元的全连接层和卷积层的相对性能的表;
图20展示根据本发明的一个实施例的具有四个神经元的群组的同时处理,每个神经元具有8个位的基线精度;
图21是根据本发明的一个实施例的神经处理单元;
图22是根据本发明的一个实施例的位串行内积单元(SIP);
图23是根据一个实施例的显示神经处理单元的全连接层和突触/权重的每层精度结果的表;
图24是根据本发明的一个实施例的显示每周期处理2个和4个激活位的神经处理单元的执行时间性能和能效的表;
图25是每网络每输入神经元一位计数的累积线形图;
图26是根据本发明的一个实施例的位串行内积单元(SIP);
图27是本发明的一个实施例的零位跳过性能实验结果的条形图;以及
图28A展示在两个周期内处理示例2b×2b层的常规位并行处理引擎,并且图28B至图28F展示本发明的一个实施例将如何处理全连接层。
相同参考标号在附图中指示相同或对应的元件。
具体实施方式
图1是代表现有技术位并行深度神经网络(DNN)系统的位并行瓦片100,诸如Chen等人所提出的系统[Y.Chen、T.Luo、S.Liu、S.Zhang、L.He、J.Wang、L.Li、T.Chen、Z.Xu、N.Sun以及O.Temam,“DaDianNao:A machine-learning supercomputer”,在Microarchitecture(MICRO),2014 47th Annual IEEE/ACM International Symposium on中,第609至622页,2014年12月]。每个现有技术位并行芯片包括16个此类瓦片100。每个瓦片具有突触缓冲器(SB)110,其每周期提供256个突触,每个突触子通道各一个。瓦片还具有输入神经元缓冲器(NBin)120,其每周期提供16个神经元,每神经元通道140各一个;以及神经元输出缓冲器(NBout)130,其可以每周期接受16个输出神经元。计算逻辑被称为神经功能单元(NFU)或单元。每个周期,每个NFU产生一个部分输出神经元砖oB(q,w,f)。砖被定义为16个元素的集合,所述元素优选地沿着第三维度相邻,例如o(q,w,f)、…、o(q,w,f+15),并且优选地,其中f能够被16整除。NFU通过处理一个输入神经元砖nB(x,y,i)和16个突触砖来这样做,其中16个滤波器中的每一者提供一个突触砖:sB f(k,l,i)到sB f+15(k,l,i)。为此,NFU具有16个神经元通道140和16个滤波器通道150,其中每个滤波器通道具有16个突触通道160,总共256个突触通道。
每个神经元通道140连接到16个突触子通道160,其中16个滤波器通道150中的每一者提供一个突触子通道160。突触通道160将其突触与输入神经元相乘,并且来自滤波器150的所有突触通道160的16个乘积被精简为部分和。总计,滤波器通道150各自每周期产生一个部分和,每单元总共16个输出神经元。我们将与产生一个输出神经元相关联的逻辑称为内积单元(IP)170。一旦整个窗口被处理,便将16个所得和馈送通过非线性激活函数f以产生16个输出神经元。每周期的相乘和精简被实施为256个乘法器,其中每个突触子通道160使用一个乘法器,以及16个17输入加法器树,其中每个输出神经元使用一个17输入加法器树(16个乘积加上来自NBout 130的部分和)。
位并行系统的目标被陈述为最小化片外带宽,同时最大化片上计算利用率。为了避免从片外获取突触,SB 110是以2MB组块分布的32MB eDRAM,每个NFU使用一个2MB组块,从而允许其存储用于针对最好等级网络处理的层的所有突触。总的来说,一个位并行节点可以并行处理多达256个滤波器,每单元16个滤波器。除了初始输入和最终输出之外的所有层间神经元输出均存储在共享的4MB中央eDRAM或神经元存储器(NM)中。仅需要片外访问用于读取输入图像,每层读取突触一次,并且用于写入最终输出。
处理开始于从外部存储器读取第一层的滤波器突触和输入图像。突触分布在SB上,并且输入被存储到NM中。每个周期向所有单元广播一个输入神经元砖nB(x,y,i)。所述层的输出神经元通过NBout130存储到NM,并且接着在处理下一个层时通过NBin 120反馈。根据需要,从外部存储器加载下一组突触可以与当前层的处理重叠。
位串行处理
根据一个实施例,如图2所示的位串行瓦片200可以使用激活存储器来存储神经元的点火。众所周知,所使用的术语“激活存储器”和“神经元存储器”在本领域和文献中是可互换的,并且将同样适用于本文而不受限制。激活存储器可以根据位串行加速器的所需实施方式而为专用的、共享的、分布式的或者其组合。因此,在一个实施例中,位串行瓦片200可以使用相同NM读取和写入互连结构,并且将神经元存储在NM中的16位容器中而不管所使用的精度如何。位串行加速器可以引入分派器单元以使用现有位并行接口从NM读取神经元,同时将其位串行地馈送到NFU。每个位串行瓦片还使用精简器单元以将输出神经元存储在NM中。
根据一个实施例,由于位串行DNN加速器可以针对神经元使用位串行计算,所以其可以并行处理比位并行DNN更多的神经元,使得其可以在使用最大精度时维持相当的性能。例如,在最坏情况下,位串行DNN加速器可以使用16个周期来计算涉及16位神经元的乘积。与可以并行处理16神经元砖的位并行瓦片相比,位串行瓦片可以并行处理16个砖或256个神经元。卷积层的并行性为并行处理神经元提供众多选择。
根据一个实施例,如图2所示的位串行瓦片200具有使用来自每个窗口的神经元砖并行处理16个窗口的能力,使得来自16个滤波器中的每一者的相同16个突触可以用于并行计算16×16个输出神经元。例如,对于步幅为2的层,一个位串行瓦片可以并行处理16个神经元砖nB(x,y,i)、nB(x+2,y,i)到nB(x+30,y,i),每周期每神经元单个位。在这种情况下,假设位串行瓦片处理滤波器fi到fi+15,则在p个周期之后,其将产生以下部分输出神经元:oB(x/2,y/2,fi)到oB(x/2+15,y,fi),或者在x维度输出神经元砖上连续的一板16个输出神经元。位并行瓦片100可以在16个周期内处理16个神经元砖,而位串行瓦片200可以在p个周期内同时地但位串行地对其进行处理,其中p是以位计的神经元长度或精度。如果p小于16,则位串行瓦片200可以比位并行瓦片100强16/p倍,并且当p为16时,位串行瓦片理想地可以匹配位并行瓦片性能。
瓦片组织
根据如图2所示的实施例,位串行瓦片200可以被如下组织:瓦片的NBin 220可以被逻辑地组织在16个窗口通道240中,其中每个窗口通道可以包括一群组16个位串行神经元通道280,总共256个神经元通道。每个窗口通道240可以处理所述16个输入神经元阵列窗口中的一者。根据一个实施例,SB 210可以与位并行瓦片100相同,并且可以被逻辑地组织在16个滤波器通道250中,其中每个滤波器通道可以包含16个突触通道260。SB 210和NBin220可以与具有16×16个串行内积(SIP)子单元的阵列270通信或连接,其中每个SIP 270可以产生一个输出神经元。在行f和列w处的SIP(f,w)270可以处理滤波器通道f和神经元窗口w。SB滤波器通道f可以与沿着行f的所有SIP 270通信或经由互连件(例如,总线)连接,而NBin窗口通道w可以与沿着列w的SIP通信或经由互连件(例如,总线)连接。每个SIP 270可以接受16个神经元位以及可以锁存到突触寄存器(SR)上的突触砖作为输入。SR可以支持全连接层。尽管图2(以及其它后续图式)将位串行瓦片描述为硬件,但是位串行瓦片可以在处理器上以软件仿真,诸如GPU(图形处理单元),并且可以产生类似的性能增强。
根据一个实施例,在图3中展示SIP 270。每个SIP 270可以包含一个17输入加法器树310,总共256个17输入加法器树,而位并行IP可以仅使用16个加法器树(每个IP使用一个加法器树)。这似乎看起来会针对位串行瓦片200显著增加面积,然而,每个位并行IP 170需要256个2输入16位乘法器,而位串行IP 270则不需要,这在一定程度上抵消了面积增加。
根据一个实施例,位串行瓦片200中的处理可以按每者p个周期的阶段进行,其中p是以位计的神经元精度。在一个阶段的第一周期处,SB 210可以提供16个16位突触砖,每个滤波器一个砖。每个SIP 270在其SR中锁存其对应突触砖。每个周期,NBin 220可以提供256个神经元位,并且每个神经元位可以与16个突触逐位地进行AND运算,沿着相同列每个SIP270使用一个突触。每个AND运算可以产生一个16位项。因此,每个SIP 270可以计算对应于一个滤波器250和一个窗口240的16个项。SIP 270可以使用专用的16输入加法器树310将其16个项求和为部分输出神经元。对于一个阶段的剩余p-1个周期,每个SIP 270可以将其部分输出神经元移位一个位,同时累加实施位串行相乘的另外16个项。在p个周期之后,可以完全产生一个输出神经元板,其等于256个16位部分输出神经元。
内积单元
在所描述的实施方式中,位串行单元200可以在多个周期内同时地并且位串行地产生256个输出神经元。每个输出神经元计算均是内积。位并行系统100一次针对16个输入神经元和16个突触计算这个内积,而位串行系统200可以不同地这样做。在位串行系统200中,对于每个输出神经元并且在每个周期处,来自16个输入神经元中的每一者的1个位连同16个突触可以被组合。
将神经元位串行地相乘是简单的,其中串行地馈送神经元并且并行地馈送突触。具体地说,给定长度为p个位的输入神经元n,n的二进制表示为
其中nb是n的第b个位。给定一个突触s,相乘s×n可以重写为
这导致一种电路实施方式,其中nb×s是AND,与2b相乘是移位,并且使用累加器在p个周期内执行求和。
为了简单地将这种方法应用于位并行系统,有可能会将每个并行乘法器转换成串行乘法器。然而,这种设计可以通过使用加法交换律来简化。形式上,上述等式的内积项可以被如下重组,其中nb是n的第b个位并且Ni=16是向量的大小。
从逻辑上讲,这表明我们可以首先使用加法器树对乘积执行精简,并且接着对所得和执行移位和累加。这通过将移位累加器从加法器树中的16个输入中的每一者移动到输出上的仅一者来简化串行内积单元。图3展示所得的串行内积电路(SIP)270。为了支持带符号2的补码神经元,当MSB为1时,SIP 270可以从部分和中减去对应于来自串行输入神经元的MSB的突触。这在加法器树310之前针对每个突触使用否定块320进行。为了支持大于Ni的内积,从NBout 230读回数据并且可以将所述数据用于初始化累加器330。每个SIP270还可以包括比较器(最大值)340以支持最大池化层。
分派器
位并行系统的神经元存储器400可以每周期向所有瓦片200广播一个砖,其为16个16位神经元,或者256个位,并且每个瓦片200可以在不同滤波器上处理相同砖。位串行系统也可以每周期向所有瓦片200广播256个位,但是其中每个位可以对应于不同神经元。根据一个实施例,位串行系统可以在中央神经元存储器(NM)400中维持与在位并行系统中相同的神经元存储容器格式,以16位粒度对齐每个神经元。分派器单元500可以被赋予从NM 400读取神经元并且将其经由第一接口位串行地馈送到位串行瓦片的任务,如图4所示。
从NM 400读取必要神经元可以通过首先考虑使用单位步幅的层来最好地理解。在这种情况下,在每个周期处,可以向位串行单元馈送来自沿着x维度砖连续的16者的位:nB(x,y,i)、nB(x+1,y,i)到nB(x+15,y,i)。假设这16个神经元切片可以被并行地读取,则分派器500可以在接下来p个周期内将其位串行地馈送。为了使得能够并行地读取所述16个砖,位串行系统可以将其映射在NM 400中的连续位置上。在许多情况下,这可以导致所述16个砖被存储到相同NM行上。在这种情况下,分派器500可以在单个周期内读取其全部(假定2MBNM包括若干子阵列,并行地读取256个神经元是可行的)。
取决于输入神经元阵列y维度以及步幅,所述16个砖可以分散在两个NM行上(这类似于从数据高速缓冲存储器中读取未对齐块)。在这种情况下,分派器500可能必须在两个周期内从多达两个行读取并组合适当砖,之后才能对位串行瓦片200进行馈送。只要p至少为2,就可能在p个周期过去之前不需要下一组16个砖。因此,整个过程可以被流水线化,并且因此,位串行系统可以大部分时间保持忙碌。
根据一个实施例,图6展示具有两个窗口且步幅为2的示例。当步幅S大于1时,16个砖可以分散在R=min[S+1,16]个行上。因此,分派器500可以在将下一组256个神经元馈送到瓦片之前在R个周期内读取R个行。只要R小于p,就有足够的时间来保持所述单元一直忙碌。当R大于p时,所述单元可能会停止R-p个周期。考虑到步幅,有可能通过将砖映射到NM400来减少分派器500可以读取的行数目。
如上所述,给定层步幅S,分派器可以读取多达max[S+1,16]个行,每个周期一个行,以收集16个砖。给定这16个砖,分派器500接着可以在p个周期内将来自其所包含的256个神经元中的每一者的一个位发送到位串行瓦片200,每个周期总共256个位。根据如图5所示的实施例,分派器500可以由两个部分组成:混洗器510和换位器520。混洗器510可以从NM读取16个砖,并且换位器520可以将其位串行地传送到瓦片200。分派器500可以每p个周期传送新的一组16个砖。
根据如图5所示的实施例,混洗器510可以收集16个砖以在p个周期内保持位串行单元忙碌。下一群组16个砖的收集可以与当前群组的处理重叠。因此,混洗器510可以每p个周期收集一个16砖群组。每个周期,混洗器510可以从NM 400读取一行256个神经元。由于砖可以连续地存储在NM 400中,所以每个行可以包含16个砖。然而,在给定时间处可能不需要所有这些砖。每输出砖的16比1多路复用器可能足以当适当砖在输入行上出现时选择所述适当砖。因此,混洗器510可以包括16个16比1的256位(一个砖的16个神经元16位容器)多路复用器。输入神经元可以被收集在256个16位寄存器上,所述寄存器被组织成具有16个寄存器的群组,每个输入砖具有一个群组。一旦混洗器510收集了所有16个砖,其便可以将它们传送到换位器520的输入寄存器。
根据如图5所示的实施例,换位器520可以将由混洗器从存储器读取的神经元转换成串行位流。一旦混洗器510收集了所有16个砖,其便可以将它们位并行地写入到256个16位寄存器中。每个寄存器提供一个16位位并行写入端口和一个单位位串行读取端口。在接下来p个周期内,换位器520每周期每神经元输出一个位,总共256个位。类似于位并行系统,这些位使用互连件广播到所有NFU。
精简器
根据一个实施例,位串行系统的NFU可以产生呈16位定点格式的输出神经元。精简器单元600可以用于双重目的:1)转换为输出层所使用的精度,以及2)经由第三接口将输出神经元砖写入到NM。根据一个实施例,经由第三接口(其可以是与第一接口相同的接口)将输出神经元写回到NM可以使用与在位并行系统中相同的接口或互连件。不同之处在于,因为位串行系统强于位并行系统,所以其可能会展现较高输出神经元带宽需求。幸运的是,由于计算输出神经元涉及处理整个输入神经元窗口,因此有足够的时间来使用现有互连件满足这个需求。例如,位并行系统可以产生单个输出神经元砖,或者同时地产生16个输出神经元(例如,oB(x,y,fi)),而位串行系统可以产生一板256个输出神经元,其包括沿x维度邻接的16个砖(例如,oB(x,y,fi)到oB(x+15,y,fi))。这个板可以在处理下一个层时连续地存储在NM地址空间中,正如分派器可以期望的那样。位串行瓦片可以如在基线中那样一次发送单个砖并且采用多个周期来写入所有16个砖。由于瓦片可以每周期写入单个砖,并且由于多个砖可能不跨越一个NM行,因此可能不需要支持未对齐砖写入。
在位串行系统可能强于位并行系统的情况下,其计算吞吐量增加16/p倍。如果层相对较小,则原则上有可能需要额外周期来耗尽所有输出神经元。然而,即使在基线中,输出神经元也通常可能采用数百个周期来计算,因为产生输出神经元可能涉及处理整个输入神经元窗口。因此,可以有足够时间来写入输出砖。
根据一个实施例,神经元可以以位交织样式存储在NM中。不是在一次访问中读取256个完整神经元并且接着将其换位成位串行形式,而是可以使用位并行接口读取256个神经元位,其中这些位是256个神经元的位0。在下一个周期中,我们可以读取所有256个神经元的位1并且接着其继续到下一个位。在这种情况下,精简器将进行适当转换。
用于全连接层的执行
位并行系统可以将全连接(FC)层作为卷积层计算,其中滤波器尺寸与输入神经元阵列的尺寸匹配。在这种情况下,可能仅存在一个具有不同数据访问和执行时间表以匹配位并行系统性能的窗口。当处理卷积层时,可以每p个周期经由第二接口读取突触仅一次。为了处理FC层,位串行单元可以经由单个SB读取端口和总线每周期一个SIP列以循环样式加载突触,从而保持所有SIP忙于处理神经元。例如,参考图3,单元可以在周期0中向SIP(0,0)…SIP(0,15)加载256个突触,接着在周期1中向SIP(1,0)…SIP(1,15)加载接下来的256个突触,等等。突触的加载可以通过使神经元流交错以与突触的加载同步来与处理神经元重叠。
这种操作模式(循环突触加载和交错神经元流)可能需要对控制进行修改。表1(紧接在下面)展示一个示例,示出了突触加载和计算如何针对处理前17个周期来重叠。
表1
这种方法可以在使用批处理时改善FC层的性能,在突触带宽变成瓶颈时批处理成为常用策略。批处理一次在多个图像上计算每个层,使得突触可以被重复用于来自不同图像的神经元。在这种情况下,加载到SIP的每个突触可以用于p×b个周期,其中b是批量大小。
尽管在处理单个图像时可能存在或者不存在优于位并行系统的性能改善,但是在位串行FC层中使用较短精度可以通过针对每16个周期中的16-p个周期避免对每个SIP列进行计算来减少能量。替代地,在所述情况下只能使用p个SIP列,并且其它SIP将通过不切换来节省功率或者可以使用电源门控来完全关闭。实验结果展示来自使神经元流交错的开销很小,平均占层运行时间的0.16%。通过加速FC层来进一步改善性能的潜力可能非常小,因为它们只占总执行时间的一小部分。此外,DNN的当前趋势是减少或消除FC层数目。
池化层
对于池化层,神经元从NM位并行地传输并且绕过SIP中的加法器树。分派器被设计成以256位/周期广播串行数据,而在神经元分布在多个瓦片上时,池化层读取4096位/周期。最大池化由SIP中的比较器支持。通过在SIP中累加神经元并且使用激活单元缩放结果来支持平均池化。本地响应归一化层由于分派器的有限带宽而使用内积单元,并且可以在匹配基线性能的同时不被串行化。
传送每层精度
这个实施例假设每层精度可以被预先计算并且连同网络的其它元数据(诸如每个层的维度、填补和步幅)一起提供。DNN可以供应每层精度的若干完整轮廓以在运行时实现准确度对性能折衷。这个元数据信息可以由位串行控制器读取并且可以用于控制单元、分派器和精简器的操作。
在运行时确定每神经元群组精度
根据另一个实施例,针对同时处理的每个群组256个神经元动态调整精度p。这个确定由换位器在将神经元传送到单元以供处理之前执行。对于待发送到所述单元的256个神经元中的每一者,即ni,其中i=0...255,换位器使用作为1检测器的前导位来确定ni H,即出现为1的位的最高位位置。类似地,换位器使用作为1检测器的尾随位来确定ni L,即出现为1的位的最低位位置。用于这组神经元的精度p被有效地设置为:maxi=0…255{ni H}–mini=0…255{ni L}。为了处理这些神经元,换位器还经由一组额外4根导线将其偏移量连同所述位一起发送出去。一根额外导线指示处理神经元群组的结束。因此,没有必要显式计算精度。存在实践者很好地理解的多种前导或尾随位1检测器电路。
与位并行瓦片的比较
由于卷积层是高度并行的,所以已经提议通过经由添加更多瓦片开拓并行性来改善位并行系统的性能。如后续示例所展示,位串行系统可以使瓦片面积增加多达24%。假设理想的性能缩放,为了比较,我们可以使用这个额外面积在位并行系统中引入额外24%瓦片。实际上,理想缩放也许是不可能的,因为也许不可能保持所有神经元通道忙碌。例如,只有在一层中存在256个滤波器的倍数(16个瓦片中的每一者有16个滤波器)时,位并行芯片才能被完全利用。因此,取决于层,存在单元没有得到充分利用的情况,并且具有更多单元会使此类情况更加常见。
甚至做出位并行性能可以使用与位串行相同的面积开销来缩放24%的最好可能假设,所述示例展示位串行可以仍然强于这个替代方案并且因此可以提供较好的面积对性能缩放。此外,位串行方法可以实现静态或运行时性能对准确度折衷,这对于位并行设计来说也许是不可能的。
与可分解处理单元的比较
用于从降低精度中获得性能的常见当前方法是使用可分解的乘法器和加法器。例如,16位加法器可以容易地被配置为具有最小开销的两个8位加法器。这种方法通常在通用处理器的多媒体指令集扩展中使用。由于这不会增加每个操作的等待时间,所以其可以用于增加计算吞吐量。
在考虑神经网络的特性时,可分解单元具有三个对它们不利的限制条件:1)可分解单元通常被限于2的幂的精度,这意味着其无法产生可变降低精度的所有潜在好处。例如,仅需要9个位的层将使用16个位(24),2)可分解单元需要两个输入为相同宽度。在神经网络的情况下,这些输入是权重和神经元,并且权重通常需要超过8个位并且因此,许多层可能看不到改善,3)最后,如果基线乘法器和加法器树是可分解的,则可能必须针对每个层选择数据和权重的最大精度。示例表明,位串行可以强于理想化的基于可分解单元的位并行设计。
示例
这个部分描述每层精度轮廓勘探策略和实验方法。对于数值表示需求分析,经由Judd等人的方法[P.Judd、J.Albericio、T.Hetherington、T.Aamodt、N.E.Jerger、R.Urtasun和A.Moshovos,“Reduced-Precision Strategies for Bounded Memory inDeep Neural Nets,arXiv:1511.05236v4[cs.LG]”,arXiv.org,2015年]找出最佳每层精度轮廓。Caffe用于测量降低每个卷积层的精度如何影响网络在5000个图像上的整体第一预测准确度,即,网络正确分类输入的频率。网络定义和预训练突触权重是从Caffe ModelZoo获得的。
尽管Judd等人将定点数视为具有I≥0个整数位和F≥0个小数位,但是这个示例通过将数字参数化为相对于二进制小数点的MSB位位置M和位数目N来丢弃一些不太重要的整数位。这是指数搜索空间问题,其中对于每个层M,N∈[0,16]并且具有多个层。启发式搜索空间修剪方法是:1)使用梯度下降法找出最佳每层M轮廓,一次一层地迭代地将M减少一个位;并且2)给定固定M轮廓,再次使用梯度下降法来探索N轮廓的空间。在这两个步骤中,使用每层分析来确定良好开始点。
表2(紧接在下面)列出了维持与在基线中相同的准确度(100%)以及将其降低到基线的1%以内(99%)所需要的每卷积层神经元精度轮廓。Cnv:基线系统中的由卷积层花费的执行时间的分数。理想:位串行DNN的潜在加速。
表2
对于性能、面积和能量,位并行系统和位串行系统出于一致性起见是使用相同方法来建模的。定制的周期准确的模拟器建模执行时间。如Chen等人所描述那样调度计算。经由概要设计编译器和TSMC65nm库从合成Verilog具体实施中提取功率和面积。NBin和NBoutSRAM缓冲器是使用CACTI建模的。eDRAM面积和能量是使用Destiny建模的。执行单一和批量(针对多个图像同时计算每个层)运行两者。选择批量大小以避免原本会严重损害性能和能量的神经元溢出片外。在整个网络执行中进行测量。
性能测量
图7报告针对表2中的精度轮廓的相对于位并行的位串行性能。由于批处理不会影响位并行或位串行的性能,因此所报告的结果适用于两者。对于100%轮廓,其中没有损失准确度,平均来说,位串行产生优于位并行的2.24倍加速。在最好情况下,LeNet在每个层中仅需要3位精度,加速是5.33倍,而NiN和VGG19展现最少加速,分别是1.8倍和1.35倍,这主要是由于其高精度要求。一般来说,性能改善是跟随精度降低并且符合表2中的理想加速。所述差异是由于神经元通道利用率不足,其在最坏情况下是7%(NiN)。平均来说,位串行实现在理想值的2%以内的加速。
面积开销
在整个芯片上,位串行需要比位并行多22%面积,其中1%用于分派器。单独考虑每个瓦片,考虑到NBout条目的16倍增加、精简器和SIP,位串行使面积增加24%。尽管与仅256个乘法器和16个加法器树的位并行组合相比,位串行中的每瓦片256个SIP使面积增加139%,但是SB在瓦片面积中占主要地位,从而导致每瓦片和整个芯片面积开销低得多。
能效测量
图8比较了在单一和批量模式下的位串行和位并行的能效。新系统相对于基础系统的能效(或简称为效率)被定义为基础系统完成整个网络运行所需要的能量与新系统所需要的能量的比率Ebase/Enew。为了促进在所有情况下进行直接比较,我们在图8中所报告的所有效率测量中使用单一模式下的位并行的能量作为分子。
关注单一模式,对于100%轮廓的在所有网络上使用位串行实现的平均效率改善为3倍,从在最佳情况下的6倍(LeNet)到在最差情况下的1.92倍(VGG19)。忽略次要开销,效率主要取决于每层精确长度的减小,因为能量节省主要来源于处理较少神经元位。其次,能量节省来自于减少SB访问的次数,所述SB访问在位串行中仅每p个周期发生一次。受在位串行中在多个窗口上重复使用突触的推动,我们评估了使多个窗口的处理交错的用于位并行的改进处理安排表,其类似于位串行。“基础WT”条报告了这种窗口平铺方法的能效,这种方法比最初建议的安排表更有效,但是仍然不如位串行有效。
批处理改善了位并行和位串行两者的能效,因为突触在多个图像上重复使用并且因此SB读取较不频繁。然而,来自在位串行中处理较少神经元位的好处远远超过来自突触重用的好处。在批量模式下的位串行的平均能效为3.19倍,而位并行的效率仍然低于位串行,位并行的效率比其单一模式高1.4倍。在位并行中的窗口平铺使效率改善2.03倍。由于窗口平铺不受NM大小的限制,所以与位并行中的批处理相比,其允许较大能量节省。
准确度对性能
在一些实施例中,位串行DNN可以进一步实现静态和动态能量、性能和准确度折衷。例如,通过降低精度,应用程序可以选择降低准确度来换取改善的性能和能效。这种能力将是有用的,例如:1)在电池供电的装置上,其中用户或操作系统可以选择稍微降低准确度来换取较长工作时间,或者2)在严格的时间限制下,其中应用程序可以选择不太准确但及时的响应。
这个示例考虑一种近似计算方法以通过将精度降低到其开始影响整体网络准确度的那点来改善性能。通过使用串行计算和每层神经元精度,位串行实现微调准确度和性能折衷的能力。由于性能不取决于是使用批处理模式还是单一模式,因此剩余部分中的结果适用于任一处理模式。
图9展示网络准确度与加速之间的折衷。所述曲线图标绘了相对于图7的100%配置的性能以比在位并行上归一化更清楚地展示性能对准确度折衷。曲线图中的每个点对应于准确度对性能帕莱托前沿上的精度轮廓。注意力限于相对于基线在90%准确度以上的轮廓,这是由于准确度在90%以下快速地下降。在所有情况下,随着准确度降低,有可能获得额外性能改善,并且网络展现出准确度对性能曲线的拐点,经过所述拐点,其招致快速性能损失。这个部分的下面剩余部分集中于在高达1%准确度损失为可接受时有可能实现的性能改善。
图10展示来自表2的99%精度轮廓相对于位并行的加速。通过容忍高达1%相对预测误差,平均加速增加到2.48倍,加速增加了11%。单个网络的加速从VGG19的1.56倍到LeNet的7.23倍不等,并且通常是跟随精确长度的减少。NiN受益最大,因为其能够在准确度约束放松时在每个层中使用小得多的精度。与图8相比,展示了99%精度轮廓的效率。平均来说,效率增加到3.24倍。
对于LeNet的99%轮廓,位串行遭遇分派器停滞的仅有情况。在这种情况下,第一层的精度是2个位,因此缓冲器在2个周期内被耗尽。对于NM中的几组窗口数据,分派器需要超过2个周期来读取数据,从而致使分派器停滞。然而,这种情况并不常见,并且只会导致停滞总运行时间的2%。在所有其它情况下,位串行能够连续分派串行数据。
可分解计算单元
这将位串行与位并行的理想可分解变型进行比较,所述理想可分解变型如上所述并且支持高达16的所有2的幂的表示长度。对于这个比较,假设NFU利用率在位并行中对于所有精度都是相同的,例如,以16个位执行256次相乘的层将以8个位执行512次相乘。实际上,由于位并行所强加的对齐约束,一些层的利用率将会更差。
图11比较由位串行和理想位并行实现的加速。在没有准确度损失的情况下,平均来说,位并行实现1.13倍加速而位串行实现1.99倍加速,而在允许高达1%准确度损失时,位并行平均加速为1.27倍而位串行平均加速为2.18倍。位并行还被限于每个层的精度是2的幂的轮廓,并且对于神经元和突触两者也是这样。即使在理想假设下,与位串行相比,位并行的大小限制严重限制其性能好处。
全连接层的交替处理
在另一个实施例中,有可能在不仅处理卷积层而且还处理全连接层但是以额外面积成本进行处理时改善性能和能效。
在这个实施例中,瓦片1200中的每个SIP 270a现在用额外串行权重寄存器SWR1210增强,所述SWR 1210是如图12所示的16个16位子寄存器的向量。由于SIP 270a维持现有寄存器(其被称为权重寄存器WR 1220),所以卷积层的处理像以前那样进行。SWR 1210使得能够针对每群组同时处理的突触和神经元在max(Ps,Pa)个周期内处理全连接层,其中Ps和Pa分别是突触和激活的精度。因此,与16位位并行引擎相比,性能改善了16/max(Ps,Pa)倍。在原始设计中,沿着相同行的SIP 270全部共享相同256根导线,从而允许将相同的一组16个16位权重并行加载到所有16个WR。在这个实施例中,256根导线中的每一者连接到16×16个SWR子寄存器中的一者。因此,每个周期,可以将不同位加载到16×16=256个SWR子寄存器中的每一者。在Ps个周期内,可以将Ps个位的不同突触加载到256个SWR子寄存器。接着可以将这256个突触值并行加载到对应WR子寄存器,并且接着像以前那样使用对应神经元位串行地处理。这个实施例因此使用三步流水线,其中首先将权重位串行地加载到SWR1210中,接着并行地加载到WR 1220中,并且接着位串行地与神经元相乘。
图13展示用于这个实施例的示例SIP 270a。每个SIP 270a将16个激活位(每次激活一个位)乘以16个权重以产生输出激活。每个SIP 270a具有两个寄存器,即SWR 1210和WR1220,其各自包含16个16位子寄存器。每个SWR子寄存器1212是移位寄存器,其具有去往权重总线导线之一的单位连接1213,所述单位连接1213用于针对全连接层位串行地读取权重。每个WR子寄存器2222可以从权重总线或对应SWR子寄存器1212并行加载以分别处理卷积层或全连接层。每个SIP 270a包括将WR 1220中的权重与传入激活位1320相乘的256个2输入AND门1310,以及对部分乘积求和的16×16位加法器树1330。最终加法器1340加上移位器1350将加法器树结果累加到输出寄存器OR中。
在每个SIP 270a中,加法器树1330的第一输入处的多路复用器1327实施级联模式,其支持沿着单个行的SIP拆分输出激活计算。为了支持带符号2的补码神经元,当MSB为1时,SIP 270a可以从部分和减去与最高有效位(MSB)对应的权重。这在加法器树之前针对每个权重使用否定块1325来进行。每个SIP 270a还包括比较器(最大值)1360以支持最大池化层。
以下示例通过展示实施例将如何处理两种特意琐碎情况来在高层级处说明实施例的操作方式:1)具有单个输入激活的全连接层产生两个输出激活,以及2)具有两个输入激活和一个单权重滤波器的卷积层产生两个输出激活。每层计算为:
全连接:卷积:
f1=w1×a c1=w×a1
f2=w2×a c2=w×a2
其中f1、f2、c1和c2是输出激活,w1、w2和w是权重,并且a1、a2和a是输入激活。为了清楚起见,假设所有值都以2位精度来表示。
常规位并行处理
图14A至图14C展示位并行引擎在两个周期内处理卷积层。图14A展示代表DaDN的现有技术位并行处理引擎。每个周期,引擎可以计算两个2位输入(即,i(权重)和v(激活))的乘积,并且将其累加或存储到输出寄存器OR中。图14B和图14C展示这个单元可以如何在两个周期内计算示例CVL。在图14B中,在周期1期间,所述单元沿着v输入接受a0的位0和1(在图上分别标记为a1/0和a1/1)并沿着i输入接受w的位0和1,并且产生输出c1的两个位。类似地,在周期2(图14C)期间,所述单元处理a2和w以产生c2。总的来说,在两个周期内,引擎产生了两个2b×2b乘积。处理示例FCL也采用两个周期。在第一个周期中,w1和a产生f1,并且在第二个周期中,w2和a产生f2
位串行处理
图15A至图15D展示我们的引擎的一个实施例将如何处理示例卷积层。这个实施例被展示为针对全卷积层优于DaDN改善性能。图15A展示包括两个子单元的引擎结构。这两个子单元分别通过输入v0和v1每周期接受激活的每一个位,并且如以前那样,存在共用的2位权重输入(i1,i0)。总的来说,输入位的数目为4,这与位并行引擎相同。每个子单元包含三个2位寄存器:移位寄存器AR、并行加载寄存器BR和并行加载输出寄存器OR。每个周期,每个子单元可以计算其单位vi输入与BR的乘积,其可以将所述乘积写入或累加到其OR中。没有位并行乘法器,这是由于子单元每周期处理单个激活位。相反,两个AND门、移位相加功能单元以及OR形成移位相加乘法器/累加器。每个AR可以每周期从i根导线中的一者加载单个位,并且BR可以从AR或从i根导线并行加载。
图15B到图15D展示我们的实施例如何处理卷积层。这些图抽象掉了单元细节,仅展示寄存器内容。如图15B展示,在周期1期间,将w突触经由i1和i0输入并行地加载到两个子单元的BR。在周期2期间,将a1和a2的位0分别经由v0和v1输入发送到第一子单元和第二子单元。子单元同时计算a1/0×w和a2/0×w,并且将这些结果累加到其OR中。最后,在周期3中,a1和a2的位1分别出现在v0和v1上。子单元分别计算a1/1×w和a2/1×w,将最终输出激活c1和c2累加到其OR中。
总的来说,其采用3个周期来处理所述层。然而,在第三个周期结束时,另一个w可以已经被加载到BR中(i输入是空闲的),从而允许新的一组输出在周期4期间开始计算。也就是说,可以除了第一次之外在当前输出激活的处理期间隐藏加载新权重。在稳定状态下,当以两个位表示输入激活时,这个引擎将每两个周期产生两个2b×2b项,因此匹配位并行引擎的带宽。
如果激活a1和a2可以仅用一个位来表示,则这个引擎将每周期产生两个输出激活,其是位并行引擎的带宽的两倍。后者不能够利用降低的精度来减少执行时间。一般来说,如果位并行硬件使用PBASE个位来表示激活,同时仅PL a个位就足够了,则这个实施例将比位并行引擎强PBASE/PL a倍。
图16A至图16E展示我们的单元的一个实施例将如何处理示例全连接层。如图16A展示,在周期1中,w1和w2的位1分别出现在线路i1和i0上。左边子单元的AR连接到i1,而右边子单元的AR连接到i0。AR以对应位数移位到其最低有效位中,所述最低有效位符号扩展到空白位置(在所述示例中展示为0位)。在周期2期间,如图16B展示,w1和w2的位0出现在相应i线路上,并且相应AR将其移入。在所述周期结束时,左边子单元的AR包含全2位w1,并且右边子单元的AR包含全2位w2。在周期3中,图16C展示每个子单元将AR的内容复制到其BR中。从下一个周期开始,计算乘积现在可以类似于针对CVL所做那样进行。然而,在这种情况下,每个BR包含不同权重,而当在先前部分中处理CVL时,所有BR都保持相同w值。AR的移位能力加上使每个子单元连接到不同i导线允许TRT在两个周期内位串行地加载不同权重。图16D和图16E分别展示周期4和周期5。在周期4期间,a1的位0出现在两个v输入上并且与每个子单元中的BR相乘。在周期5中,a1的位1出现在两个v输入上并且子单元完成f1和f2的计算。一旦正确输入出现到BR中,其便采用两个周期来产生两个2b×2b乘积。
尽管在我们的示例中没有展示额外输入或输出,但是将有可能在处理存储到BR中的当前权重的同时重叠将新的一组w输入加载到AR中。也就是说,加载到AR中、复制到BR中并且BR与激活的位串行相乘是三阶段流水线,其中每个阶段可以采用多个周期。一般来说,假设激活和权重两者均使用2个位表示,则这个引擎将在稳定状态下匹配位并行引擎的性能。当两组输入i和v均可以使用较少位(在这个示例中为1个位)来表示时,引擎将每周期产生两个项,这是先前部分的位并行引擎的带宽的两倍。
一般来说,如果PBASE是位并行引擎的精度,并且PL a和PL w是可以分别针对层L的激活和权重使用的精度,则根据一个实施例的引擎可以理想地针对卷积层比等效位并行引擎强PBASE/PL a倍并且针对全连接层比等效位并行引擎强PBASE/max(PL a,PL w)倍。
以上示例使用了最简单的引擎配置。由于典型的层展现巨大并行性,所以引擎可以被配置许多额外子单元,同时针对卷积层采用权重重用并且针对全连接层采用激活重用。
一次处理的激活位
为了改善面积和功率效率,可以在设计时调整一次处理的激活位的数目。此类配置的主要优点是需要较少SIP来实现相同吞吐量--例如,一次处理两个激活位将SIP列的数目从16个减少到8个并且将其总数目减少到一半。虽然总线导线的总数目相似,但是显著减少了其必须覆盖的距离。同样,加法器的总数目保持相似,但是其被更紧密地聚集在一起。这些配置的缺点是其放弃了一些性能潜力,因为其迫使激活精度为其每周期处理的位数目的倍数。设计者可以选择最符合其面积、能效和性能目标的配置。在这些配置中,权重一次与几个激活位相乘,并且相乘结果在被插入到其对应加法器树之前被部分地移位。
为了按时加载权重,必须修改SWR子寄存器1212,使得其可以并行地加载几个位,并且每个周期移位那个数目的位置。否定块1325(出于2的补码支持)将仅对最重要的乘积结果进行操作。
评估
图17报告用于卷积层和全连接层的各种图像分类深度学习网络的一组可接受的每层精度。所述表报告了可以在维持准确度(“100%准确度”)时使用的一组降低的精度以及可以在可以接受1%相对准确度降低的情况下使用的另外降低的精度。列“理想加速”报告了相对于同等配置的位并行常规引擎有可能的性能改善。
图18报告针对全连接层和卷积层并且针对“100%”和“99%”相对准确度精度配置的这个实施例相对于DaDianNao的执行时间性能(“性能”列)和相对能效(“效率”列)。图19报告每周期处理两个激活位的实施例的相对性能。报告两组测量:1)相对于DaDianNao,以及2)相对于图18的表的位串行配置。这组结果使用“100%”精度配置。
在运行时确定每神经元群组精度
我们先前描述的加速器利用深度学习神经网络的可变精度要求来改善性能和能效。在先前描述的设计中,硬件预期在处理每个层之前,那个层所需要的精度将由软件来传送。因此不在运行时调整这些每层精度以反映针对每个层或者甚至以较小粒度也许有可能的任何额外精度降低。然而,底层计算单元能够在比层精细得多的粒度上利用精度。在所描述的实施方式中,每个芯片包括16个瓦片,其各自处理16个滤波器以及每滤波器16个权重(突触)。每周期一个位地将一组256个激活广播到所有瓦片。对于每个层,每层调整激活的精度(也就是说,最高有效位和最低有效位(分别为MSB和LSB)的位置,即nH和nL)。然而,精度可以容易地以较小粒度进行调适。例如,在所描述的实施方式中,可以针对同时处理的每群组256个激活或者针对广播到相同SIP列的每群组16个激活调整精度。根据另一个实施例,有可能在最高有效位或最低有效位而不是两者上调整精度。这仍将在性能和能效方面提供一些改善,但是不如在两者上调整精度那么多。
根据另一个实施例,针对同时处理的每个群组256个神经元动态调整精度p。这个确定是由换位器在将神经元传送到单元以供处理之前执行的。对于待发送到所述单元的256个神经元中的每一者,即,ni,其中i=0...255,并且对于每个位nibj(j=0…16)并假设所有神经元都是正的,换位器首先计算相同位置处的所有位的逻辑OR:ORj=n0bj+…+n255bj,并且接着在ORj(j=0…16)上应用作为1检测器的前导位以确定nH,其是出现为1的位的最高位位置。类似地,换位器使用作为1检测器的尾随位来确定nL,其是出现为1的位的最低位位置。为了处理这些神经元,换位器还经由一组额外4根导线将其偏移量连同位一起发送出去。一根额外导线指示处理神经元群组的结束。假设处理在nH位位置处开始,则计数器跟踪正被广播的当前位位置,并且比较器在单元到达nL时设置群组结束信号。
针对每个神经元子群组(诸如一群组16个神经元)分别进行nH和nL的检测。图20展示此类实施例,其中同时处理一群组4个神经元,其各自具有8个位的基线精度。图20展示网络使用一组展示为菱形的级联OR门以及nH检测块加上偏移量编码器计算ORj。nL检测使用与nH块相同的块,其中ORj输入的优先级被反转。所述图式展示针对一组神经元值检测nH和nL的示例。由于输入神经元使用8个位,因此这两个偏移量各自使用3个位进行编码。为了处理这群组神经元,分派器将发送nH作为起始偏移量。单元将在每个后续周期中递减这个偏移量。在当前偏移量变得等于nL时,分派器将发信号通知用于这个群组的最后一个处理周期。假设处理在nH位位置处开始,计数器跟踪正被广播的当前位位置,并且比较器在我们到达nL时设置群组结束信号。一旦一个神经元群组被处理,便可以使对应神经元通道等待所有其它神经元通道完成,之后再前进到下一个神经元值群组。替代地,可以修改分派器和突触缓冲器以支持每神经元群组访问,代价是额外面积和存储器带宽。
如果使用功率门控,则还可以向权重应用动态精度检测,其可以减少处理时间并且改善全连接层的能效和卷积层的能效。
评估性能
与DaDianNao相比,这个实施例的执行时间性能对于AlexNet、NiN、GoogLeNet、VGG_2、VGGS、VGG19以及平均来说分别为2.8倍、2.4倍、2.6倍、3.2倍、3.3倍、1.7倍和2.6倍。
突触和神经元的位串行处理
另一个实施例通过不仅位串行地处理神经元而且还处理突触来改善性能。在这个实施例中,性能针对卷积层改善了256/(Ps×Pa)倍并且针对全连接层改善了16/Ps倍,其中Ps和Pa分别是突触和神经元的精度。
根据一个实施例,图21展示包括以128×16网格组织的2K个串行内积单元(SIP)270b的瓦片2100。这个瓦片2100被设计为总是至少与同时处理16个神经元和8个滤波器以及每滤波器16个突触的位并行瓦片一样好地执行。每个周期,每个SIP 270b将16个1位输入激活与16个1位权重相乘,并且将这些乘积精简为部分输出激活。沿相同行的SIP 270b共享共用的16位权重总线,并且沿相同列的SIP270b共享共用的16位激活总线2180。每个SIP270b具有一个16位权重寄存器WR 2122。SIP阵列由2K位权重总线和256位激活输入总线馈送。瓦片2100具有ABout 2130和ABin 2120以分别存储输出和输入激活(神经元)。瓦片2100位串行地处理激活和权重两者。
处理卷积层开始于从片外存储器2110并行读取2K个权重位,每SIP行将16个位加载到所有WR 2122。所加载的权重将在Pa L个周期内位串行地每SIP列乘以16个对应激活位,其中Pa L是用于这个层L的激活精度。接着,在Pa L个周期之后,权重的第二位将被加载到WR2122中,并且将每SIP行与和在第一Pa L个周期内相同的一组16个对应激活位相乘,以此类推。总的来说,位串行相乘将采用Pa L×Pw L个周期,其中Pw L是用于这个层L的权重精度。位并行引擎将在256个周期内处理16组16个激活和128个滤波器,而这个实施例在Pa L×Pw L个周期内同时但位串行地对其进行处理。如果Pa L和/或Pw L小于16,则这个实施例将比位并行引擎强256/(Pa L×Pw L)倍。否则,这个实施例可以匹配位并行引擎的性能。
处理全连接层开始于将一组权重的LSB(最低有效位)加载到第一SIP列的WR寄存器2122中并且将所加载的权重与对应激活的LSB相乘。在第二周期中,在第一列SIP仍然忙于将其WR 2122的LSB乘以激活的第二位的同时,可以将新的一组权重的LSB加载到第二SIP列的WR 2122中。每个权重位被重复使用持续16个周期,与输入激活的位0到位15相乘。因此,有足够时间使这个实施例在向其它15个列加载新的权重组时保持任何单个列的SIP270b忙碌。例如,如图21所示,引擎可以在周期0中将2K个权重的单个位加载到SIP(0,0)…SIP(0,127),接着在周期1中将接下来2K个权重的单个位加载到SIP(1,0)...SIP(1,127)中,以此类推。在前15个周期之后,所有SIP都被完全利用。这个设计将采用PwL×16个周期来处理16组16个激活和128个滤波器,而等效位并行设计在256个周期内对其进行处理。因此,当Pw L小于16时,这个设计将比位并行设计强16/Pw L倍,并且否则,可以匹配其性能。
图22展示用于这个实施例的经过修改的位串行内积单元(SIP)270b。每个时钟周期,每个SIP 270b将16个单位激活乘以16个单位权重以产生部分输出激活。在内部,每个SIP具有16个1位权重寄存器(WR)2122、用于将WR中的权重与传入输入激活位相乘的16个2输入AND门以及对这些部分乘积求和的16输入1位加法器树。
累加器1在Pa L个周期内累加并移位加法器树的输出。每Pa L个周期,累加器2移位累加器1的输出并且将其累加到OR中。在Pa L×Pw L个周期之后,输出寄存器(OR)包含激活和权重集的内积。在每个SIP中,在累加器1之后的多路复用器实施级联。为了支持带符号2的补码激活,当MSB为1时,否定块2225用于从部分和中减去与权重的最高有效位(MSB)对应的输入激活的总和。每个SIP 270b还包括比较器(最大值)2260以支持最大池化层。i_nbout输入支持用于具有少于2K个输出的全连接层的级联模式。
下一个部分解释这个实施例可以如何处理卷积层和全连接层,其中假设2位激活和权重。图28A展示常规位并行处理引擎,其将两个输入激活与两个权重相乘,每周期生成单个2位输出激活。引擎可以每周期处理两个新2位权重和/或激活,每周期具有两个2b×2b乘积的吞吐量。
根据本发明的一个实施例,图28B展示包括以4×4阵列组织的四个子单元的引擎。每个子单元每周期接受输入激活的2个位和权重的2个位。沿相同列的子单元共享激活输入,而沿相同行的子单元共享其权重输入。总的来说,这个引擎接受4个激活位和4个权重位,等于位并行引擎的输入带宽。每个子单元具有两个1位权重寄存器(WR)、一个2位输出寄存器(OR),并且可以执行两个1b×1b乘积,所述子单元可以将乘积累加到其OR中。
图28B到图28F展示这个实施例将如何处理全连接层。如图28B展示,在周期1中,左列子单元接收激活a0和a1的最低有效位(LSB)a0/0和a1/0,以及w0 0/0、w0 1/0、w1 0/0和w1 1/0,其是来自滤波器0和1的四个权重的LSB。这两个子单元中的每一者计算两个1b×1b乘积,并且将它们的总和存储到其OR中。在周期2中,如图28C展示,左列子单元现在将相同权重位分别与激活a0和a1的最高有效位(MSB)a0/1和a1/1相乘,将这些累加到其OR中。并行地,两个右列子单元加载a0/0和a1/0,即输入激活a0和a1的LSB,并且将其乘以来自滤波器2和3的权重的LSB w2 0/0、w2 1/0、w3 0/0和w3 1/0。在周期3中,左列子单元现在加载LSB a0/0和a1/0并且将其与来自滤波器0和1的四个权重的MSB w0 0/1,、w0 1/1、w1 0/1和w1 1/1相乘。并行地,右边子单元重复使用其WR保持的权重w2 0/0、w2 1/0、w3 0/0和w3 1/0并且将其乘以激活a0和a1的最高有效位a0/1和a1/1(图28D)。如图28E示出,在周期4中,左列子单元将其WR保持的权重乘以a0/1和a1/1(即,激活a0和a1的MSB)并且完成输出激活o0和o1的计算。同时,右列子单元加载w2 0/1、w2 1/1、w3 0/1和w3 1/1(即,来自滤波器2和3的权重的MSB)并且将其与a0/0和a1/0相乘。在周期5中,如图28F展示,右边子单元完成其WR保持的权重与a0/1和a1/1(即,两个激活的MSB)的相乘。在这个周期结束时,输出激活o2和o3也准备好了。
总的来说,其采用4+1个周期来处理32个1b×1b乘积(分别在周期2到5中的4、8、8、8、4个乘积)。请注意,在第五个周期结束时,左列子单元为空闲的,因此另一组权重可以已经被加载到WR中,从而允许新的一组输出开始计算。在稳定状态下,在以两个位表示输入激活和权重时,这个引擎将每个周期产生8个1b×1b项,因此匹配并行引擎的2个2b×2b吞吐量。
如果可以仅使用一个位来表示权重,则这个实施例可以每周期产生两个输出激活,其为位并行引擎的带宽的两倍。一般来说,如果位并行硬件使用Pbase个位来表示权重而实际上只需要Pw个位,则针对全连接层,所述引擎将比位并行引擎强Pbase/Pw倍。由于在全连接层中没有权重重用,所以需要Cn个周期来将不同的一组权重加载到Cn个列中的每一者。因此,具有使用少于Cn个位的激活不会改善性能,但是可以改善能效。
这个实施例与全连接层基本相似地处理卷积层,但是利用跨不同窗口的权重重用来降低权重和激活两者的精度。具体地说,在卷积层中,跨相同行的子单元共享相同权重位,其在单个周期内将所述权重位并行地加载到其WR中。这些权重位在Pa个周期内乘以对应激活位。需要每Pa个周期加载另一组权重位,其中Pa是输入激活精度。此处,这个实施例通过使每个子单元列处理不同的一组激活来利用跨多个窗口的权重重用。假设位并行引擎使用Pbase个位来表示输入激活和权重两者,则这个实施例可以比位并行引擎强P2 base/(Pw×Pa)倍,其中Pw和Pa分别是权重精度和激活精度。
级联模式
为了充分利用前述实施例,全连接层应当具有至少2K个输出神经元。一些被研究的网络具有只有1K个输出激活的层。为了避免利用率不足,沿着每个行的SIP 270b被级联成菊花链,其中一者的输出能够经由多路复用器馈送到下一者的输入中。这样,输出激活的计算可以拆分在沿着相同行的SIP上。在这种情况下,每个SIP仅处理输入激活的一部分,从而导致沿着相同行上的SIP的若干部分输出激活。在接下来NP个周期中,其中NP是所使用的切片的数目,NP个部分输出可以被精简为最终输出激活。用户可以选择多达16的任何数目的切片,使得即使是仅仅256个输出的全连接层,也可以充分利用引擎。这种级联模式可以在其它深度学习网络中为有用的,例如在NeuralTalk[Andrej Karpathy和Fei-Fei Li,“Deep Visual-Semantic Alignments for Generating Image Descriptions”,CoRR abs/1412.2306(2014年)。http://arxiv.org/abs/1412.2306]中,其中最小的全连接层可以具有600个或更少的输出。这种级联模式还可以与其它前述实施例一起使用。
每周期处理一个以上位
有可能通过每周期处理一个以上位激活来折衷一些执行时间性能好处以减少SIP数目和相应面积开销。使用这种方法,一个实施例将需要较少SIP 270b来匹配等效配置的位并行引擎的吞吐量。
评估性能
图23报告针对全连接层以及针对突触/权重的一组有效每层精度。用于激活的精度为如图17中报告。图24报告相对于等效配置的DaDianNao以及针对以下两种配置的执行时间性能:1)第一种配置每周期处理两个激活位(“2位”),以及2)第二种配置每周期处理4个激活位(“4位”)。所述两种配置分别需要8个和4个SIP列。由于激活现在被迫分别为2或4的倍数,所以这些配置放弃一些性能潜力。例如,对于4位配置,将Pa L从8个位减少到5个位不会产生性能好处,而对于位串行配置,其将会使性能改善1.6倍
跳过零位
至此所描述的实施例修整激活精度,使得多个前导位和尾随位被处理为零。然而,仍将存在将被处理的一些为零的位。另一个实施例通过跳过为零的神经元位来消除这些位并且改善性能。在位串行瓦片中并且在每个周期处,每个神经元位与若干突触进行AND运算。当神经元位是零时,结果也是零并且对最终输出神经元没有贡献。只有为一的神经元位才对输出神经元值有贡献。因此,位串行瓦片可以被扩展为仅处理为一的神经元位。
图25展示每个网络的输入神经元的一位计数的累积分布。对于所有网络,至少90%的输入神经元最多具有5个为一的位,并且几乎所有输入神经元最多具有8个为一的位。因此,能够跳过零位的位串行瓦片将需要在大部分时间(90%)处理多达5个位并且几乎在所有时间处理最多8个位。
为了仅处理为一的位,分派器被修改为使得其仅传送那些位。由于需要知道每个位的相对位置以便适当地乘以突触,所以在一个实施例中,分派器传送位偏移量。例如,如果输入神经元具有值0b11001,则分派器将传送与为一的位的位置对应的偏移量(0,3,4)。由于基线使用16位数字,所以偏移量需要为4位长。结果,每根神经元导线被4根导线取代。通过利用为一的位的空间分布,其它较低导线计数替代方案可以是有可能的。例如,代替绝对偏移量,分派器可以传送差量,在所述情况下先前的示例数字将被传送为(0,2,1)。对于这个示例,假设使用绝对偏移量。在另一个实施例中,分派器可以像以前那样但是以更快速率传送神经元,并且可以在每个处理瓦片处本地转换为偏移量表示。
在最初示例中,所有神经元通道以锁定步长进行操作,跨所有线路以相同偏移量发送位。为了允许零位跳过,神经元通道需要被去耦以使得其能够以不同偏移量传送位。使分派器发送偏移量使得这直截了当。然而,一旦一个神经元被完全处理,神经元通道便需要处理下一个输入神经元。因此,分派器将需要从NM取出神经元。在最坏情况下,所有256个神经元通道将完全独立运行并且需要各自属于不同砖的神经元。这将需要在分派器处维持256砖输入缓冲器。更糟糕的是,其将需要从NM进行多达256个独立砖读取。尽管带宽需求将不会增加超过被消除的位部分所需要的带宽,但是分派器将必须在这些请求当中进行仲裁。最后,每个SIP将以不同神经元偏移量进行操作并且因此还将需要以不同偏移量取出突触。这要求SB被拆分在所有SIP上,使得每个SIP具有其自己的SB切片。
支持零位跳过所需要的独立砖请求的数目可以通过对神经元通道进行分组并且要求其仅在所述群组内的所有神经元通道完成处理其当前神经元之后才前进到下一组输入神经元来减少。存在多种设计选项。一头是所有神经元通道独立操作的设计。这具有必须在分派器处取出多达256个不同神经元砖并且必须每SIP提供单独SB切片的潜在不合需要的要求。另一头是所有神经元通道形成单个群组的设计。在这种设计中,每个神经元通道以不同神经元位偏移量进行操作,但是只有在所有当前神经元均被处理时才允许所有神经元通道前进到下一组神经元。也就是说,在这种情况下,所有神经元通道等待正在处理具有最高计数的为一的位的神经元的神经元通道。这种设计的潜在附加优点是其根本不需要对SB进行拆分。位串行瓦片保持原样,只是在加法器树输入处引入移位器并且加法器被适当地扩展为处理经过移位的输入。存在具有不同需求程度的多个其它选择。例如,我们可以要求沿着相同行的SIP形成一个群组,在所述情况下,SB需要被拆分成16个切片,每个SIP行使用一个切片,并且分派器需要维持来自不同位置的多达16个输入砖。其可以类似地每两行、四行或八行进行分组。替代地,其可以沿列进行分组,从而需要多个SB切片以及从分派器的多个砖取出。
当所有神经元通道均以锁定步长前进,则每个SB列被读取一次并且被所有神经元通道重复使用。然而,在神经元通道以较小群组独立前进时,其将彼此领先地运行并且将独立地且有可能在不同时间读取相同SB列。通过在SB前面添加一组缓冲器,有可能使用较少能量满足这个要求。在这个实施例中,每个SB列被读入到缓冲槽中并且保持在那里,直到所有神经元通道均已经读取其为止。缓冲器数目规定神经元通道群组可以领先彼此多远。
在一个实施例中,位串行引擎的AND门被移位器替代,使得权重可以有效地与表示2的幂的输入偏移量相乘。认识到,此类设计在面积和功率方面是昂贵的。原因是在处理馈送给每个加法器树的16个神经元偏移量时,在最坏情况下有可能的是一个偏移量为0并且其它偏移量为15。因此,移位器需要获取16位输入突触并且将其转换为32位权重。此外,加法器树不再是16位加法器树,而是32位加法器树。通过放弃一些性能潜力,有可能使用“2阶段移位”方法来减少面积和能量开销。具体地说,在另一个实施例中,输入神经元以位群组进行处理,例如作为4个具有4个位的群组。例如,给定具有偏移量(5)和(0)的两个神经元,基线设计将在一个周期内同时处理两者。经过修改的设计将首先仅处理0到3的幂,并且接着在另一个周期中处理4到8的幂。因此,在我们的示例中,经过修改的设计将在两个周期内处理这两个神经元,而不是在一个周期内。这种设计利用了如下观察,即任何移位操作可以分两个阶段执行为两个较小移位:a<<K=a<<(K‘+C)=((a<<K’)<<C)。因此,为了以不同偏移量K0、...、KT移位并添加T个权重,我们可以将偏移量分解成具有共用项C的和,例如Ki=K’+C。因此,内积处理可以使用两阶段处理来重新布置,其中第一阶段使用每权重特定偏移量K’,并且第二阶段使用跨所有权重共用的偏移量C。如图26展示,这个布置可以用于通过在加法器树之后共享一个共用移位器来减小权重偏移器和加法器树的宽度。设计参数L定义控制权重移位器的位数,使得所述设计可以在单个周期内处理相差小于2L的偏移量。这减小了权重移位器的大小并且减小了加法器树的大小以仅支持具有16+2L-1个位的项。
图26展示用于这个实施例的串行内积单元2600。所示的移位器移位多达16个位位置。shift_B信号可以用于实施2阶段移位。在一个通道正在等待其它通道完成时,可以使用Done信号来抑制累加突触值。
图27展示使用零位跳过以及使用不同神经元通道分组可能实现的性能。具体地说,展示以下配置:COL:在每列同步SIP时执行跳过零位;ROW:在每行锁定SIP时执行跳过零位;以及PAL:在每板锁定SIP(也就是说,所有SIP被同步)时执行跳过零位。
每列设计实现可能的最高性能,其次是行设计,并且最后是板设计。板设计同步所有SIP单元,并且因此具有最多约束。然而,其实施起来最简单,因为分派器和SB保持原样。行设计要求将SB沿着行拆分成16个切片并且分派器需要跟踪16个独立砖。
改善的编码
由于SIP可以否定任何输入项,所以有可能通过使用布斯编码允许带符号的偏移量来减少针对包含一连串一的激活值进行处理的偏移量。这种改善的偏移量生成器将一连串相邻偏移量A...B精简为具有形式A+1,-B的对子。连串内的单个偏移量或间隙分别由正偏移量或负偏移量表示。例如,将通常用偏移量(4,3,1,0)编码的激活值11011可以改为用(5,-3,+2,-0)表示或者甚至更经济地用偏移量(5,-2,-0)表示。这相当于基4布斯编码。与基线编码相比,这种编码将永远不会产生更多偏移量。然而,由于2阶段移位,这种编码可能会增加所需要的周期数。当在2阶段移位期间一起处理的位群组当中的偏移量分布改变时将发生这种情况。
除了所描述的零位跳过设计之外,图13还展示每个选项的两种扩展,其中更改神经元值以减少为一的位的数目。在Ra扩展中,具有形式2n-1(其中n是所使用的精度)的神经元值被转换为2n,而在Rb扩展中,针对所有2的幂进行上述转换,也就是说,将具有形式2k-1的任何数字转换为2k。结果表明,这两种技术都可以提供额外性能改善。未分析对准确度的影响。在另一种编码中,每层或每群组神经元的阈值决定将被处理的2的幂的最大数目。例如,如果阈值为3并且神经元被编码为(4,3,0,-1),则将仅处理(4,3,0)。
如本领域的技术人员将了解,在操作中,前述部件可以由控制器控制,所述控制器可以是(例如)可编程有限状态机或可编程处理器,其可以将加速器作为功能单元来控制。根据一个实施例,可编程有限状态机可以具有若干控制和数据寄存器并潜在地具有程序和数据存储器,并且将各种控制信号输出到神经网络系统中的本文所述的其它部件。
根据一个实施例,还有可能使本发明的实施例适于一个层的若干部分而非完整层。此类对每层计算的替代方法可以(例如)将H和W维度中的输入矩阵划分为多个分区。可以接着将滤波器应用于那些分区中的一者或多者以产生部分输出。这些部分输出可以作为一个整体来处理或者进一步进行划分。可以处理所述部分输出直到网络的末端(假设没有全连接层)或者在某个点处停止并且转到分割点以继续处理更多分区。
本发明可以在不脱离其精神或基本特性的情况下以其它特定形式来体现。本发明的某些调适和修改将对本领域的技术人员是显而易见的。因此,目前论述的实施例被认为是说明性的而非限制性的,本发明的范围由所附权利要求书而不是前面描述来指示,并且落入权利要求书的等同物的含义和范围内的所有变化因此都希望包含在其中。

Claims (46)

1.一种用于在神经网络中进行位串行计算的系统,其包括:
一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触,并且生成输出神经元;
激活存储器,其用于存储神经元并且经由分派器和精简器与所述一个或多个位串行瓦片通信,
其中所述分派器从所述激活存储器读取神经元并且经由第一接口将所述神经元传送到所述一个或多个位串行瓦片,
并且其中所述分派器从存储器读取突触并且经由第二接口将所述突触传送到所述一个或多个位串行瓦片,
并且其中所述精简器从所述一个或多个位串行瓦片接收所述输出神经元,并且经由第三接口将所述输出神经元传送到所述激活存储器;
并且其中所述第一接口和所述第二接口中的一者将所述神经元或所述突触位串行地传送到所述一个或多个位串行瓦片,并且所述第一接口和所述第二接口中的另一者将所述神经元或所述突触位并行地传送到所述一个或多个位串行瓦片。
2.根据权利要求1所述的系统,其中所述分派器发送一个或多个偏移量,所述偏移量识别具有一个或多个神经元的块中的一位,从而跳过所述块的零位。
3.根据权利要求1所述的系统,其中所述分派器包括用于将所述神经元收集在一个或多个砖中的混洗器和用于将所述砖转换成串行位流的换位器。
4.根据权利要求3所述的系统,其中所述分派器将所述一个或多个砖收集到多个群组中的一个中。
5.根据权利要求1所述的系统,其中所述位串行瓦片各自进一步包括突触缓冲器、保持来自所述分派器的输入神经元的输入神经元缓冲器以及保持等待传送到所述精简器的输出神经元的神经元输出缓冲器。
6.根据权利要求1所述的系统,其中所述精简器在存储之前进一步将所述输出神经元从全精度值转换为最接近的降低精度值。
7.根据权利要求1所述的系统,其中所述激活存储器是所述一个或多个位串行瓦片的专用存储器。
8.根据权利要求1所述的系统,其中所述精简器进一步根据所需精度将所述输出神经元转换为一个或多个砖。
9.根据权利要求1所述的系统,其中所述分派器基于所述输入神经元的最高有效位值或最低有效位值来降低输入神经元的精度。
10.根据权利要求9所述的系统,其中所述分派器基于所述输入神经元的所述最高有效位值和所述最低有效位值来降低所述输入神经元的所述精度。
11.根据权利要求1所述的系统,其中由所述一个或多个位串行瓦片进行的所述位串行计算的处理时间与从所述神经元处理的位数目成比例。
12.根据权利要求1所述的系统,其中所述一个或多个位串行瓦片位并行地处理突触。
13.根据权利要求1所述的系统,其中所述一个或多个位串行瓦片包括权重寄存器。
14.根据权利要求13所述的系统,其中所述一个或多个位串行瓦片进一步包括串行权重寄存器。
15.根据权利要求14所述的系统,其中由所述一个或多个位串行瓦片进行的所述位串行计算的所述处理时间与从所述神经元和突触处理的位数目的乘积成比例。
16.根据权利要求1所述的系统,其中所述一个或多个位串行瓦片并行地处理两个或更多个窗口。
17.根据权利要求16所述的系统,其中所述两个或更多个窗口各自与窗口通道相关联,并且每个窗口通道包括一个或多个位串行神经元通道。
18.根据权利要求5所述的系统,其中所述突触缓冲器包括一个或多个滤波器通道。
19.根据权利要求18所述的系统,其中所述一个或多个滤波器通道各自包括一个或多个突触通道。
20.根据权利要求19所述的系统,其中所述突触缓冲器和所述输入神经元缓冲器与一个或多个串行内积子单元的二维阵列通信。
21.根据权利要求20所述的系统,其中所述一个或多个串行内积子单元中的每一者产生一个输出神经元。
22.根据权利要求21所述的系统,其中所述突触缓冲器的所述滤波器通道经由互连件与所述对应串行内积子单元通信。
23.根据权利要求22所述的系统,其中所述输入神经元缓冲器的所述窗口通道经由互连件与所述对应串行内积子单元通信。
24.根据权利要求21所述的系统,其进一步包括突触寄存器,所述突触寄存器用于向所述串行内积子单元提供一个或多个突触群组。
25.根据权利要求21所述的系统,其中每个串行内积子单元包括多输入加法器树。
26.根据权利要求25所述的系统,其中每个串行内积子单元进一步包括一个或多个否定块。
27.根据权利要求25所述的系统,其中每个串行内积子单元进一步包括比较器。
28.根据权利要求3所述的系统,其中所述混洗器包括一个或多个多路复用器。
29.根据权利要求1所述的系统,其进一步包括控制器,所述控制器用于控制所述系统的所述操作。
30.根据权利要求1所述的系统,其进一步包括第一串行内积子单元,所述第一串行内积子单元选择性地使用第二串行内积子单元的输出作为输入。
31.根据权利要求30所述的系统,其中所述第一串行内积子单元基于神经网络中的层的一个或多个维度来选择性地使用输出。
32.根据权利要求2所述的系统,其中所述分派器以位子群组处理所述一个或多个神经元以识别所述神经元中的所述一位。
33.根据权利要求2所述的系统,其中在传送一位的所述偏移量之前使用2的正幂和负幂对所述一个或多个神经元进行编码。
34.根据权利要求2所述的系统,其中所述一个或多个神经元中的至少两者或更多者被同时处理并且被分组为子群组。
35.根据权利要求34所述的系统,其中所述子群组中的至少一者能够独立地前进以处理新的一组神经元值而无需等待其它同时处理的子群组前进。
36.根据权利要求2所述的系统,其中在识别具有一个或多个神经元的块中的所述一位的所述一个或多个偏移量中所识别的至少一个最低有效位被丢弃并且不被串行内积子单元处理。
37.根据权利要求2所述的系统,其中所述一个或多个位串行瓦片将所述一个或多个神经元编码为一位偏移量。
38.根据权利要求1所述的系统,其中所述神经元或突触以降低的精度存储在存储器中。
39.根据权利要求38所述的系统,其中所述神经元或突触以块来存储,每个块具有起始存储器地址,其中所述起始存储器地址指定在存储器其它地方的阵列中。
40.根据权利要求1所述的系统,其中所述第二接口是位并行接口。
41.根据权利要求1所述的系统,其进一步包括一个或多个串行内积子单元,其中每个串行内积子单元处理神经元或突触块以及识别所述神经元或突触块中的所述一位的一个或多个偏移量,并且跳过所述块中的至少一个零位。
42.一种用于在神经网络中进行位串行计算的系统,其包括:
一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触,并且传送输出神经元;
激活存储器,其用于存储神经元并且经由分派器和精简器与所述一个或多个位串行瓦片通信,
其中所述分派器从所述激活存储器读取神经元并且经由第一接口将所述神经元传送到所述一个或多个位串行瓦片,
并且其中所述分派器从存储器读取突触并且经由第二接口将所述突触传送到所述一个或多个位串行瓦片,
并且其中所述精简器从所述一个或多个位串行瓦片接收所述输出神经元,并且经由第三接口将所述输出神经元传送到所述激活存储器;
并且其中所述第一接口和所述第二接口将所述神经元和所述突触位串行地传送到所述一个或多个位串行瓦片。
43.根据权利要求42所述的系统,其中所述分派器基于所述输入神经元的最高有效位值或最低有效位值来降低输入突触的精度。
44.根据权利要求42所述的系统,其中所述分派器基于所述输入神经元的所述最高有效位值和所述最低有效位值来降低所述输入突触的所述精度。
45.一种包括位串行神经网络加速器的集成电路,所述集成电路包括:
一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触,并且生成输出神经元;
激活存储器,其用于存储神经元并且经由分派器和精简器与所述一个或多个位串行瓦片通信,
其中所述分派器从所述激活存储器读取神经元并且经由第一接口将所述神经元传送到所述一个或多个位串行瓦片,
并且其中所述分派器从存储器读取突触并且经由第二接口将所述突触传送到所述一个或多个位串行瓦片,
并且其中所述精简器从所述一个或多个位串行瓦片接收所述输出神经元,并且经由第三接口将所述输出神经元传送到所述激活存储器;
并且其中所述第一接口和所述第二接口中的一者将所述神经元或所述突触位串行地传送到所述一个或多个位串行瓦片,并且所述第一接口和所述第二接口中的另一者将所述神经元或所述突触位并行地传送到所述一个或多个位串行瓦片。
46.一种包括位串行神经网络加速器的集成电路,所述集成电路包括:
一个或多个位串行瓦片,其用于在神经网络中执行位串行计算,每个位串行瓦片接收输入神经元和突触,并且传送输出神经元;
激活存储器,其用于存储神经元并且经由分派器和精简器与所述一个或多个位串行瓦片通信,
其中所述分派器从所述激活存储器读取神经元并且经由第一接口将所述神经元传送到所述一个或多个位串行瓦片,
并且其中所述分派器从存储器读取突触并且经由第二接口将所述突触传送到所述一个或多个位串行瓦片,
并且其中所述精简器从所述一个或多个位串行瓦片接收所述输出神经元,并且经由第三接口将所述输出神经元传送到所述激活存储器;
并且其中所述第一接口和所述第二接口将所述神经元和所述突触位串行地传送到所述一个或多个位串行瓦片。
CN201780039356.8A 2016-05-26 2017-05-26 用于深度神经网络的加速器 Active CN109416754B (zh)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201662341814P 2016-05-26 2016-05-26
US62/341,814 2016-05-26
US201662381202P 2016-08-30 2016-08-30
US62/381,202 2016-08-30
US201662395027P 2016-09-15 2016-09-15
US62/395,027 2016-09-15
US201662416782P 2016-11-03 2016-11-03
US62/416,782 2016-11-03
US201762448454P 2017-01-20 2017-01-20
US62/448,454 2017-01-20
US201762454268P 2017-02-03 2017-02-03
US62/454,268 2017-02-03
US201762490659P 2017-04-27 2017-04-27
US62/490,659 2017-04-27
PCT/CA2017/050638 WO2017201627A1 (en) 2016-05-26 2017-05-26 Accelerator for deep neural networks

Publications (2)

Publication Number Publication Date
CN109416754A true CN109416754A (zh) 2019-03-01
CN109416754B CN109416754B (zh) 2020-06-23

Family

ID=60412016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780039356.8A Active CN109416754B (zh) 2016-05-26 2017-05-26 用于深度神经网络的加速器

Country Status (7)

Country Link
US (3) US10387771B2 (zh)
EP (1) EP3465550B1 (zh)
JP (2) JP6890615B2 (zh)
KR (2) KR102459854B1 (zh)
CN (1) CN109416754B (zh)
CA (1) CA2990709C (zh)
WO (1) WO2017201627A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020518042A (ja) * 2017-04-19 2020-06-18 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. 処理装置と処理方法
CN111357016A (zh) * 2017-12-22 2020-06-30 阿里巴巴集团控股有限公司 用于神经网络处理器的片上通信系统
CN112990449A (zh) * 2019-12-12 2021-06-18 上海交通大学 一种面向神经网络的可变计算精度的simt微架构
WO2022027172A1 (zh) * 2020-08-03 2022-02-10 深圳市大疆创新科技有限公司 数据处理装置、方法和系统以及神经网络加速器
CN114254740A (zh) * 2022-01-18 2022-03-29 长沙金维信息技术有限公司 卷积神经网络加速计算方法、计算系统、芯片及接收机

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
US20180232627A1 (en) * 2017-02-16 2018-08-16 Intel IP Corporation Variable word length neural network accelerator circuit
WO2018184570A1 (zh) * 2017-04-06 2018-10-11 上海寒武纪信息科技有限公司 运算装置和方法
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
JP7065877B2 (ja) 2017-08-31 2022-05-12 カンブリコン テクノロジーズ コーポレーション リミテッド チップ装置および関連製品
CN109961137B (zh) * 2017-12-14 2020-10-09 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109978131B (zh) * 2017-12-28 2020-05-22 中科寒武纪科技股份有限公司 集成电路芯片装置、方法及相关产品
CN108256644B (zh) * 2018-01-05 2021-06-22 上海兆芯集成电路有限公司 微处理器电路以及执行神经网络运算的方法
KR102463532B1 (ko) * 2018-01-16 2022-11-08 한국전자통신연구원 신경망 컴퓨팅 장치 및 그것의 동작 방법
US11630997B2 (en) * 2018-01-23 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus with bit-serial data processing of a neural network
GB201801639D0 (en) * 2018-02-01 2018-03-21 Ruff Brendan Patrick Low precision efficient multiplication free convolutional filter bank device
CN111742331A (zh) * 2018-02-16 2020-10-02 多伦多大学管理委员会 神经网络加速器
US11256841B1 (en) * 2018-03-06 2022-02-22 Ansys Lumerical Ip, Llc Method and system to implement a composite, multi-domain model for electro-optical modeling and simulation
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
WO2019194466A1 (ko) * 2018-04-03 2019-10-10 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서
US10698730B2 (en) * 2018-04-03 2020-06-30 FuriosaAI Co. Neural network processor
KR102162749B1 (ko) * 2018-04-03 2020-10-07 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서
US10657442B2 (en) * 2018-04-19 2020-05-19 International Business Machines Corporation Deep learning accelerator architecture with chunking GEMM
US10522226B2 (en) * 2018-05-01 2019-12-31 Silicon Storage Technology, Inc. Method and apparatus for high voltage generation for analog neural memory in deep learning artificial neural network
EP3769266A4 (en) * 2018-05-08 2021-12-15 Tartan Ai Ltd. PROCESSING ELEMENT FOR NEURAL NETWORK
US20190378013A1 (en) * 2018-06-06 2019-12-12 Kneron Inc. Self-tuning model compression methodology for reconfiguring deep neural network and electronic device
US11275713B2 (en) * 2018-06-09 2022-03-15 International Business Machines Corporation Bit-serial linear algebra processor
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
KR102650660B1 (ko) * 2018-09-03 2024-03-25 삼성전자주식회사 뉴로모픽 장치 및 뉴로모픽 장치에서 멀티-비트 뉴로모픽 연산을 처리하는 방법
WO2020072619A1 (en) * 2018-10-02 2020-04-09 The Regents Of The University Of Michigan Addressing bottlenecks for deep neural network execution of a graphics processor unit
US11354888B2 (en) 2018-11-16 2022-06-07 GM Global Technology Operations LLC Method and apparatus for a neural network
KR102451519B1 (ko) * 2018-11-20 2022-10-07 삼성전자주식회사 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기
US10657617B1 (en) 2018-11-26 2020-05-19 GM Global Technology Operations LLC Method and apparatus for memory access management for data processing
KR102562320B1 (ko) 2018-12-24 2023-08-01 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
CN109711542B (zh) * 2018-12-29 2020-08-18 西安交通大学 一种支持动态精度的dnn加速器及其实现方法
US11551093B2 (en) * 2019-01-22 2023-01-10 Adobe Inc. Resource-aware training for neural networks
WO2020172494A1 (en) 2019-02-22 2020-08-27 Neureality Ltd. Directed and interconnected grid dataflow architecture
US11211944B2 (en) 2019-04-17 2021-12-28 Samsung Electronics Co., Ltd. Mixed-precision compression with random access
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
US10853066B1 (en) 2019-05-07 2020-12-01 Memryx Incorporated Memory processing units and methods of computing DOT products including zero bit skipping
US10998037B2 (en) 2019-05-07 2021-05-04 Memryx Incorporated Memory processing units and methods of computing dot products
US11488650B2 (en) 2020-04-06 2022-11-01 Memryx Incorporated Memory processing unit architecture
US11507349B2 (en) * 2019-06-26 2022-11-22 Microsoft Technology Licensing, Llc Neural processing element with single instruction multiple data (SIMD) compute lanes
US11604972B2 (en) * 2019-06-28 2023-03-14 Microsoft Technology Licensing, Llc Increased precision neural processing element
KR102435447B1 (ko) * 2019-07-23 2022-08-25 포항공과대학교 산학협력단 뉴럴 네트워크 시스템 및 이의 동작 방법
US20210150313A1 (en) * 2019-11-15 2021-05-20 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
KR102334473B1 (ko) * 2019-11-20 2021-12-03 한국전자기술연구원 적응형 딥러닝 가속 장치 및 방법
US11656872B2 (en) 2019-12-13 2023-05-23 Intel Corporation Systems and methods for loading weights into a tensor processing block
US11809798B2 (en) * 2019-12-13 2023-11-07 Intel Corporation Implementing large multipliers in tensor arrays
US11314483B2 (en) * 2020-01-08 2022-04-26 International Business Machines Corporation Bit-serial computation with dynamic frequency modulation for error resiliency in neural network
US11281554B2 (en) 2020-03-17 2022-03-22 Samsung Electronics Co., Ltd. System and method for in-memory computation
US20210312325A1 (en) * 2020-04-01 2021-10-07 Samsung Electronics Co., Ltd. Mixed-precision neural processing unit (npu) using spatial fusion with load balancing
US11514326B2 (en) 2020-06-18 2022-11-29 International Business Machines Corporation Drift regularization to counteract variation in drift coefficients for analog accelerators
KR102474054B1 (ko) * 2020-06-22 2022-12-06 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
KR102474053B1 (ko) * 2020-06-22 2022-12-06 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
CN114004347A (zh) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 用于加速图神经网络属性访问的硬件加速器、系统和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751913A (en) * 1996-07-29 1998-05-12 Industrial Technology Research Institute Reconfigurable neural network and difference-square neuron
WO2014085975A1 (zh) * 2012-12-04 2014-06-12 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN105488563A (zh) * 2015-12-16 2016-04-13 重庆大学 面向深度学习的稀疏自适应神经网络、算法及实现装置
WO2016073803A1 (en) * 2014-11-06 2016-05-12 Microsoft Technology Licensing, Llc Context-based actions in voice user interface

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3260357B2 (ja) * 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
WO1991018351A1 (en) * 1990-05-22 1991-11-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
JP2785155B2 (ja) * 1990-09-10 1998-08-13 富士通株式会社 ニューロコンピュータの非同期制御方式
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH07210533A (ja) * 1994-01-19 1995-08-11 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路及びこれを用いた演算方法
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
KR20000052725A (ko) * 1996-10-23 2000-08-25 제이. 알. 드로우일래드 비트-시리얼에 근거한 회귀성 뉴로프로세서를 포함하는 차량용 엔진 불발 감지 장치
RU2131145C1 (ru) * 1998-06-16 1999-05-27 Закрытое акционерное общество Научно-технический центр "Модуль" Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
JP2010134389A (ja) * 2008-12-08 2010-06-17 Oki Data Corp 定着装置及び画像形成装置
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US9400955B2 (en) * 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
US11551076B2 (en) * 2014-09-05 2023-01-10 Qualcomm Incorporated Event-driven temporal convolution for asynchronous pulse-modulated sampled signals

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751913A (en) * 1996-07-29 1998-05-12 Industrial Technology Research Institute Reconfigurable neural network and difference-square neuron
WO2014085975A1 (zh) * 2012-12-04 2014-06-12 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
WO2016073803A1 (en) * 2014-11-06 2016-05-12 Microsoft Technology Licensing, Llc Context-based actions in voice user interface
CN105488563A (zh) * 2015-12-16 2016-04-13 重庆大学 面向深度学习的稀疏自适应神经网络、算法及实现装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020518042A (ja) * 2017-04-19 2020-06-18 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. 処理装置と処理方法
CN111357016A (zh) * 2017-12-22 2020-06-30 阿里巴巴集团控股有限公司 用于神经网络处理器的片上通信系统
CN111357016B (zh) * 2017-12-22 2023-07-25 阿里巴巴集团控股有限公司 用于神经网络处理器的片上通信系统
CN112990449A (zh) * 2019-12-12 2021-06-18 上海交通大学 一种面向神经网络的可变计算精度的simt微架构
CN112990449B (zh) * 2019-12-12 2022-10-25 上海交通大学 一种面向神经网络的可变计算精度的simt系统
WO2022027172A1 (zh) * 2020-08-03 2022-02-10 深圳市大疆创新科技有限公司 数据处理装置、方法和系统以及神经网络加速器
CN114254740A (zh) * 2022-01-18 2022-03-29 长沙金维信息技术有限公司 卷积神经网络加速计算方法、计算系统、芯片及接收机

Also Published As

Publication number Publication date
EP3465550A4 (en) 2020-01-22
KR20200067915A (ko) 2020-06-12
JP7166389B2 (ja) 2022-11-07
CN109416754B (zh) 2020-06-23
CA2990709A1 (en) 2017-11-30
JP2019522271A (ja) 2019-08-08
KR20190010642A (ko) 2019-01-30
US20170357891A1 (en) 2017-12-14
US20230186065A1 (en) 2023-06-15
KR102459854B1 (ko) 2022-10-27
JP6890615B2 (ja) 2021-06-18
EP3465550B1 (en) 2023-09-27
KR102120396B1 (ko) 2020-06-08
WO2017201627A1 (en) 2017-11-30
EP3465550A1 (en) 2019-04-10
US11610100B2 (en) 2023-03-21
CA2990709C (en) 2018-09-04
US20200125931A1 (en) 2020-04-23
US10387771B2 (en) 2019-08-20
JP2021144727A (ja) 2021-09-24

Similar Documents

Publication Publication Date Title
CN109416754A (zh) 用于深度神经网络的加速器
CN207895435U (zh) 神经网络计算模组
CN111178519B (zh) 卷积神经网络加速引擎、卷积神经网络加速系统及方法
CN107153873B (zh) 一种二值卷积神经网络处理器及其使用方法
EP2122542B1 (en) Architecture, system and method for artificial neural network implementation
CN100495404C (zh) 基于流处理的生物序列数据库搜索多层次加速方法
US20190385046A1 (en) Parallel computational architecture with reconfigurable core-level and vector-level parallelism
CN107239829A (zh) 一种优化人工神经网络的方法
CN109543830A (zh) 一种用于卷积神经网络加速器的拆分累加器
CN113076521B (zh) 一种基于gpgpu可重构架构的方法及计算系统
CN102393839A (zh) 并行数据处理系统及方法
CN110414672B (zh) 卷积运算方法、装置及系统
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
CN105719018A (zh) 基于回声状态网络的用电预测方法和系统
CN115480919A (zh) 卷积优化运算方法、装置、计算机设备及存储介质
KR20230042052A (ko) 심층 학습 네트워크의 트레이닝을 가속화하기 위한 시스템 및 방법
Lu et al. TileSpTRSV: a tiled algorithm for parallel sparse triangular solve on GPUs
Sikdokur et al. Image Classification on Accelerated Neural Networks
US20240160894A1 (en) Mixture-of-experts layer with switchable parallel modes
US11610095B2 (en) Systems and methods for energy-efficient data processing
Geng FPGA-based high-performance neural network acceleration
Malysiak et al. A generic and adaptive approach for workload distribution in multi-tier cluster systems with an application to distributed matrix multiplication
CN115577759A (zh) 用于基于深度可分离卷积的神经网络计算加速的异构架构
CN117829705A (zh) 一种基于拉格朗日松弛的易碎品物流仓储调度方法及系统
JP2766858B2 (ja) ニューラルネットワーク並列シミュレーション方法及びそれに用いる装置

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210207

Address after: Toronto, Ontario, Canada

Patentee after: Datan artificial intelligence Co.,Ltd.

Address before: Ontario, Canada

Patentee before: THE GOVERNING COUNCIL OF THE University OF TORONTO

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: P Judd

Inventor after: J. Alberio

Inventor after: A. Delmas Laskoz

Inventor after: A. Mohovos

Inventor after: S. Sharif mogadam

Inventor before: P Judd

Inventor before: J. Alberio

Inventor before: A. Delmas Laskoz

Inventor before: A. Mohovos

Inventor before: S. Sally

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220330

Address after: Gyeonggi Do Korea Suwon

Patentee after: SAMSUNG ELECTRONICS Co.,Ltd.

Address before: Toronto, Ontario, Canada

Patentee before: Datan artificial intelligence Co.,Ltd.