CN111971693A - 神经推理处理器的中央调度器和指令分配器 - Google Patents
神经推理处理器的中央调度器和指令分配器 Download PDFInfo
- Publication number
- CN111971693A CN111971693A CN201980022184.2A CN201980022184A CN111971693A CN 111971693 A CN111971693 A CN 111971693A CN 201980022184 A CN201980022184 A CN 201980022184A CN 111971693 A CN111971693 A CN 111971693A
- Authority
- CN
- China
- Prior art keywords
- core
- memory
- cores
- computation unit
- neural
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
Abstract
提供了神经推理处理器。在各种实施例中,处理器包括多个核。每个核包括神经计算单元、激活存储器和局部控制器。所述神经计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活。激活存储器适于存储输入激活和输出激活。该局部控制器适于将输入激活从该激活存储器加载到该神经计算单元并且用于将多个输出激活从该神经计算单元存储到该激活存储器。该处理器包括神经网络模型存储器,其适于存储包括多个突触权重的网络参数。该处理器包括全局调度器,该全局调度器被操作地耦合至该多个核,适于将突触权重从神经网络模型存储器提供给每个核。
Description
背景技术
本公开的实施例涉及神经网络处理组件,并且更具体地,涉及用于神经推理处理器的中央调度器和指令分配器。
发明内容
根据本公开的实施例,提供了神经推理处理器。一种处理器包括多个核。每个核包括神经计算单元、激活存储器和局部控制器。该神经计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活。激活存储器适于存储输入激活和输出激活。该局部控制器适于将输入激活从该激活存储器加载到该神经计算单元并且用于将该多个输出激活从该神经计算单元存储到该激活存储器。该处理器包括神经网络模型存储器,其适于存储多个突触权重。该处理器包括全局调度器,该全局调度器可操作地耦合至该多个核,适于将突触权重从神经网络模型存储器提供给每个核。
根据本公开的实施例,提供了神经推理处理器。提供了一种神经计算单元。该神经计算单元被适于将多个突触权重应用于多个输入激活以产生多个输出激活。神经网络模型存储器适于存储多个突触权重。激活存储器适于存储输入激活和输出激活。调度器被操作地耦合到神经计算单元、神经网络模型存储器和激活存储器。调度器适于:将所述突触权重从所述神经网络模型存储器加载到所述神经计算单元;将所述输入激活从所述激活存储器加载到所述神经计算单元;以及将来自神经计算单元的多个输出激活存储到激活存储器。
根据本公开的实施例,提供了用于操作神经推理处理器的方法和计算机程序产品。全局调度器将来自神经网络模型存储器的突触权重提供给多个核中的每个核。每个核的局部控制器将来自该核的激活存储器的输入激活加载到该核的神经计算单元。每个核的神经计算单元将该多个突触权重应用于该多个输入激活以产生多个输出激活。每个核的局部控制器将来自该核的神经计算单元的多个输出激活存储到该核的激活存储器。
附图说明
现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:
图1示出了根据本公开的实施例的示例性推理处理单元(IPU)。
图2是图1的IPU的流水线时序图。
图3示出了根据本公开的实施例的多核推理处理单元(IPU)。
图4示出了根据本公开的实施例的多核推理处理单元(IPU)。
图5示出了根据本公开的实施例的示例性IPU片上网络(NoC)。
图6示出了根据本公开的实施例的示例性IPU片上网络(NoC)。
图7示出了根据本公开的实施例的示例性IPU片上网络(NoC)。
图8示出了根据本发明的实施例的图7的IPU的示例性存储器配置。
图9示出了根据本公开的实施例的操作神经推理处理器的方法。
图10描述了根据本发明实施例的计算节点。
具体实施方式
人工神经元是其输出是其输入的线性组合的非线性函数的数学函数。如果一个神经元的输出是另一个神经元的输入,则两个神经元被连接。权重是对一个神经元的输出与另一个神经元的输入之间的连接的强度进行编码的标量值。
神经元通过将非线性激活函数应用于其输入的加权和来计算其输出,称为激活。加权和是通过将每个输入乘以相应的权重并累加乘积而计算的中间结果。部分和是输入子集的加权和。所有输入的加权和可以通过累加一个或多个部分和而分阶段被计算。
神经网络是一个或多个神经元的集合。神经网络通常被分成称为层的神经元组。层是一个或多个神经元的集合,所述一个或多个神经元全部从相同层接收输入并且全部向相同层发送输出,并且通常执行类似的功能。输入层是从神经网络外部的源接收输入的层。输出层是向神经网络外部的目标发送输出的层。所有其它层是中间处理层。多层神经网络是具有多于一层的神经网络。深度神经网络是具有多个层的多层神经网络。
张量是数值的多维阵列。张量块是张量中的元素的连续子阵列。
每个神经网络层与权重张量、参数张量、输入张量、输出张量和中间张量相关。权重张量包含将输入连接到层的所有权重。参数张量包含控制层中的神经元激活函数的所有参数。输入张量包含层消耗的作为输入的所有数据。输出张量包含层计算的作为输出的所有数据。中间张量包含层产生的作为中间计算的任何数据,例如部分和。
神经核是计算输出张量的一个块的可平铺计算单元。神经核具有M个输入和N个输出。在各种实施例中M=N。为了计算输出张量块,神经核将M×1个输入张量块与M×N个权重张量块相乘,并将乘积累加为加权和,该加权和被存储在1×N个中间张量块中。U×N个参数张量块包含指定N个神经元激活函数中的每个神经元激活函数的U个参数,所述神经元激活函数被应用于中间张量块以产生1×N个输出张量块。
多个神经核可以平铺在神经核阵列中。在一些实施方案中,阵列是2维的。
神经网络模型是一组常数,其共同指定由神经网络执行的整个计算,包括神经元之间的连接图以及每个神经元的权重和激活函数参数。训练是修改神经网络模型以执行期望的函数的过程。推理是将神经网络应用于输入以产生输出的过程,不修改神经网络模型。
推理处理单元是执行神经网络推理的一类处理器。神经推理芯片是推理处理单元的特定物理实例。
参考图1,根据本公开的实施例示出了示例性推理处理单元(IPU)。IPU100包括用于神经网络模型的存储器101。如上所述,神经网络模型可包括要计算的神经网络的突触权重。IPU100包括可以是瞬态激活存储器102。激活存储器102可以被划分成输入和输出区域,并且存储神经元激活以供处理。IPU100包括神经计算单元103,其加载有来自模型存储器101的神经网络模型。在每个计算步骤之前从激活存储器102提供输入激活。来自神经计算单元103的输出被写回到激活存储器102以在同一或另一神经计算单元上处理。
在各种实施例中,调度器104被包括在IPU100中。在这样的实施例中,IPU中的所有操作由调度器引导。如下面所阐述的,在各种实施例中可以提供中央和/或分布式调度器。全局调度器可以被称为芯片微引擎,而局部调度器可以被称为核微引擎或局部控制器。在各种实施例中,调度器包括一个或多个微引擎、微控制器、状态机、CPU或其他控制器。
参考图2,为图1的IPU提供了流水线时序图,在111,计算指令从模型存储器101加载到神经计算单元103。在112处,将参数(例如,神经网络/突触权重)从模型存储器101加载到神经计算单元103。在113,神经网络激活数据从激活存储器102被加载到神经计算单元103。如上所述,激活被提供给由模型定义的特定神经网络的轴突,并且可以源自相同的或另一神经计算单元,或者源自系统外部。在114处,神经计算单元103执行计算以生成输出神经元激活。具体地,该计算包括将输入突触权重应用于输入激活。应当理解,各种方法可用于执行这种计算,包括在硅树突中以及矢量乘法单元。在115处,将来自计算的结果存储在激活存储器102中。如图所示,这些阶段可以是流水线的,以便提供神经计算单元的有效使用。
参考图3,根据本公开的实施例示出了多核推理处理单元(IPU)。IPU300包括用于神经网络模型的模型存储器301。如上所述,神经网络模型可包括要计算的神经网络的突触权重。IPU300包括可以是瞬态的激活存储器302。激活存储器302可以被划分成输入和输出区域,并且存储神经元激活以供处理。IPU300包括多个核303。每个核303包括神经计算单元333,其加载有来自模型存储器301的神经网络模型。每个核还包括局部激活存储器332。在每个计算步骤之前从局部激活存储器332提供输入激活。来自神经计算单元333的输出被写回到激活存储器332以在同一或另一神经计算单元上处理。
在各种实施例中,全局调度器304被包括在IPU300中。在各种实施例中,局部核控制器334被包括在每个核303上。在这样的实施例中,操作的方向在全局调度器(芯片微引擎)和局部核控制器(核微引擎)之间共享。具体地,在311处,全局调度器304将计算指令从模型存储器301加载到每个核303上的神经计算单元333。在312处,全局调度器304将参数(例如,神经网络/突触权重)从模型存储器301加载到每个核303上的神经计算单元333。在313处,通过局部核控制器334将神经网络激活数据从激活局部激活存储器332加载到每个核303上的神经计算单元333。如上所述,激活被提供给由模型定义的特定神经网络的轴突,并且可以源自相同的或另一神经计算单元,或者源自系统外部。在314处,神经计算单元333执行该计算以生成如由局部核控制器334指导的输出神经元激活。具体地,该计算包括将输入突触权重应用于输入激活。应当理解,各种方法可用于执行这种计算,包括在硅树突中以及矢量乘法单元。在315处,计算结果按照局部核控制器334的指示存储在局部激活存储器332中。如上所述,这些阶段可以是流水线的,以便在每个核上提供神经计算单元的有效使用。还应当理解,根据给定神经网络的要求,输入和输出可以从局部激活存储器332传递到全局激活存储器302。
因此,本公开提供了推理处理单元(IPU)中的操作的运行时调度。在一些实施例中,该操作调度器是集中式的(单一调度器)。在一些实施例中,IPU计算是分布式的(由核阵列执行)。在一些实施例中,操作的运行时调度是分级的—中央调度器和分布式调度器都参与。
该调度器或多个调度器指导IPU中所有操作的执行。每个调度器指令对应于几个子操作(例如,地址生成、加载、计算、存储等)。在分布式情况下,在核微引擎(例如,334)上运行核微代码。核微代码包括执行完整的单张量操作的指令。例如权重张量和数据张量之间的卷积。在单核的上下文中,核微代码包括对本地存储的数据张量(和部分和)的子集执行单张量操作的指令。芯片微代码在芯片微引擎(例如304)上运行。微代码包括执行神经网络中的所有张量操作的指令。
参考图4,根据本公开的实施例示出了多核推理处理单元(IPU)。IPU400包括用于神经网络模型的模型存储器401。如上所述,神经网络模型可包括要计算的神经网络的突触权重。在一些实施例中,模型存储器401包括一个或多个物理存储器,其可以被分别分配给突触权重和指令。IPU400包括可以是瞬态的激活存储器402。激活存储器402可以被划分成输入和输出区域,并且存储神经元激活以供处理。IPU400包括多个核403。每个核403可以如上文关于图3所描述的那样进行配置。
IPU400包括一个或多个片上网络(NoC)404。如上所述,网络权重和指令被存储在存储器401中。为了配置每个核,调度器(芯片微引擎)404产生读地址,并从(权重/指令)参数存储器401创建读事务。读权重和指令通过NoC404被发送到目的地核(例如,403)。使用分布式权重组,在每个核上对该核的局部数据执行分布式指令。
因此,在一些实施例中,调度器经由片上网络(NoC)从参数存储器分发权重块。在一些实施例中,调度器经由片上网络(NoC)从指令存储器分发指令。在一些实施例中,指令包括存储器操作、计算操作和控制操作。在一些实施例中,提供了一个NoC。在一些实施例中,提供了多个NoC。在一些这样的实施例中,权重是在不同于指令的NoC上的分布。在一些实施例中,指令存储器是与参数存储器相同的物理存储器,而在一些实施例中,它是分离的。
参考图5,根据本公开的实施例示出了示例性IPU片上网络(NoC)。IPU400包括树形片上网络504。可以理解,这种树形网络可用于将权重和指令分发给包含在IPU中的每个核。
特别地,在一些实施例中,IPU可以在单指令、多数据(SIMD)模式下操作。在这样的实施例中,相同的权重和指令被分发给所有核。因此,尽管每个核具有不同的激活数据,但是所有权重和指令对于每个核都是相同的。
在一些实施例中,IPU可以在多指令、多数据(MIMD)模式下操作。在这样的实施例中,不同的权重和指令被分发给不同的核。如上所述,每个核具有不同的激活数据。在一些这样的MIMD实施例中,调度器顺序地向每个核发送不同的权重和指令。如果权重和指令必须频繁地被分发,则这种方法具有相对低的吞吐量。如果权重和指令不是频繁分地被分发,则该方法可以具有合理的吞吐量。
参考图6,根据本公开的实施例示出了示例性IPU片上网络(NoC)。IPU600包括芯片604上的行广播网络。网络604包括多个行网络641…644,每个连接IPU600内的一行核。这样的实施例适于与单个调度器、多个并行调度器或者其中单个调度器并行驱动多个调度器的分级配置一起使用。
在一些实施例中,IPU可以在多指令、多数据(MIMD)模式下操作。在这样的实施例中,每个核具有不同的激活数据。权重和指令在核的每行内是相同的。然而,在行之间,每行核具有不同的权重和/或指令。在一些实施例中,每个并行行网络641…644具有对应的存储器库611…614,其保存用于对应的核行的权重和指令。因此,通过从每个存储体611…614读取相同的数据(如615处突出显示的并行地址所示),可以向所有核发送相同的权重和指令。通过从每个存储体611、611…614、614读取不同的数据(如616处的突出显示的地址所示),可以将不同的权重和指令发送到每行中的核。
在一些实施例中,单个调度器用于在IPU600中实现MIMD模式。在这样的实施例中,可以跨所有存储器存储体使用相同的源地址(如615处所示)。或者,可针对每一存储器库使用不同的源地址(如616处所示)。在一些这样的实施例中,调度器代码包括用于每个存储器存储体的地址。在其它这样的实施例中,调度器代码使用单个地址来索引到存储每个存储器存储体的地址的查找表(LUT)中。
在一些实施例中,多个调度器被用于在IPU600中实现更多的MIMD。在一些这样的实施例中,每个存储体611…614提供一个调度器。每个存储体调度器运行独立的微码,并且生成用于相应存储器存储体的源地址。
在一些实施例中,分层调度器被用于在IPU600中实现MIMD模式。在一些实施例中,每个存储体提供一个调度器,并且提供监督调度器。在这样的实施例中,每个存储体调度器运行独立的微代码,并且生成用于相应的存储器存储体的源地址。监控调度器在存储体调度器之间同步操作。
参考图7,根据本公开的实施例示出了示例性IPU片上网络(NoC)。IPU700包括芯片上的行广播网络704。网络704包括多个行网络741…744,每个连接IPU700内的一行核。行网络741…744耦合到存储体旁路总线705和全局总线706。行分布网络741…744可从存储体旁路总线705提供权重和指令,从而从与每个相应行相关联的存储器存储体711…714获得输入。特别地,存储体旁路总线可以在用于每行的存储体输入和全局输入之间切换。行分布网络741…744可从全局总线提供权重和指令,全局总线可从存储器存储体711…714中的任一个提取输入。特别地,全局总线可以在各个存储体之间切换。这样,每行可以接收行特定输入或所选择的全局输入。应当理解,各种互连都适合于这种切换,包括本领域已知的各种开关和门。
这样的实施例适合于在SIMD和MIMD模式中操作。在各种实施例中,SIMD或MIMD操作是可编程的。对于给定的微代码指令,系统可以是SIMD或MIMD(但不是两者)。同样,它可以在每个微代码指令之后在SIMD和MIMD操作模式之间切换(反之亦然)。
现在参考图8,根据本公开的实施例示出了图7的IPU的示例性存储器配置。存储器存储体811被划分为多个子存储体815。从每一子存储体中,从非邻接存储器位置816选择数据。以此方式,可以从存储器中的非连续位置提取的多个子向量来组装突触权重块。如图所示,不同的子存储体提供每个子向量wb。芯片微引擎例如直接、算法地或用LUT对每个子存储体进行寻址。
可以被称为权重块的神经网络权重可以被表示为矩阵W。在一些实施例中,W是B×B维,其中B被称为块大小。该W矩阵可以被分解成B个子向量wb,每个都是1B×维。代替从存储器中的邻接位置读出矩阵W,可以从子向量wb构造矩阵W,所述子向量wb从存储器中的非邻接位置读出。如果子向量wb在若干权重块W之间是公共的,则只需要在加权存储器中存储wb的一个拷贝。这使得能够减少所需的物理权重存储器的量,并且增加可以存储在相同量的物理重存储器中的权重块的有效数量。
例如,大小为4的权重矩阵W可以被定义为如等式1所示的向量的组合。
w0=[3,5,1,6]
w1=[2,4,2,-1]
w2=[-2,-4,7,0]
w3=[1,2,-2,-1]
等式1
现在参考图9,根据本公开的实施例示出了操作神经推理处理器的方法。在901处,全局调度器将来自神经网络模型存储器的突触权重提供给多个核中的每个核。在902处,每个核的局部控制器将输入激活从核的激活存储器加载到核的神经计算单元。在903处,每个核的神经计算单元将该多个突触权重应用于该多个输入激活以产生多个输出激活。在904处,每个核的局部控制器将来自该核的神经计算单元的多个输出激活存储至该核的激活存储器。
现在参考图10,示出了计算节点的示例的示意图。计算节点10仅是合适的计算节点的一个示例,并且不旨在启示对本文所述的本发明的实施例的使用范围或功能的任何限制。无论如何,计算节点10能够被实现和/或执行上文阐述的任何功能。
在计算节点10中,存在计算机系统/服务器12,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图10所示,计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移除和不可移除介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可被提供用于从不可移除、非易失性磁介质(未示出,并且通常被称为"硬盘驱动器")读取和向其写入。尽管未示出,但是可以提供用于从可移除、非易失性磁盘(例如,"软盘")读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移除、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可作为示例而非限制存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块42通常执行本文描述的本发明实施例的功能和/或方法。
计算机系统/服务器12还可以与以下设备通信:诸如键盘、指示设备、显示器24等的一个或多个外部设备14;使得用户能够与计算机系统/服务器12交互的一个或多个设备;和/或任何使计算机系统/服务器12能够与一个或多个其它计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口22发生,然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其它组件通信,应当理解,尽管未示出,其它硬件和/或软件组件可以与计算机系统/服务器12结合使用,示例包括但不限于:微代码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或对象代码,所述编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及常规的过程式编程语言(例如"C"编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实现中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
Claims (25)
1.一种系统,包括:
多个核,每个核包括
神经计算单元,所述神经计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活,
激活存储器,适于存储所述输入激活和所述输出激活,
局部控制器,所述局部控制器适于将所述输入激活从所述激活存储器加载到所述神经计算单元并且将所述多个输出激活从该神经计算单元存储到所述激活存储器;
神经网络模型存储器,适于存储所述多个突触权重;
全局调度器,被操作地耦合至所述多个核,适于将来自所述神经网络模型存储器的所述突触权重提供给每个核。
2.根据权利要求1所述的系统,其中,所述全局调度器适于向每个核提供局部控制器指令。
3.根据权利要求1所述的系统,其中所述全局调度器向所述核中的每个核提供相同的突触权重。
4.根据权利要求2所述的系统,其中所述全局调度器向所述核中的每个核提供相同的局部控制器指令。
5.根据权利要求1所述的系统,其中所述全局调度器向所述核中的至少一些核提供不同的突触权重。
6.根据权利要求2所述的系统,其中所述全局调度器向所述核中的至少一些核提供不同的局部控制器指令。
7.根据权利要求1所述的系统,还包括被耦合到所述多个核的网络。
8.根据权利要求7所述的系统,其中所述全局调度器经由所述网络来提供所述突触权重。
9.根据权利要求7所述的系统,其中所述全局调度器经由所述网络向每个核提供局部控制器指令。
10.根据权利要求7所述的系统,其中所述网络包括树形网络。
11.根据权利要求7所述的系统,其中所述网络包括行广播网络。
12.根据权利要求11所述的系统,其中所述网络包括多个行,每一行被连接到所述多个核的子集。
13.根据权利要求12所述的系统,其中每一行包括可操作用于在广播输入和特定行输入之间进行选择的互连。
14.根据权利要求13所述的系统,其中所述互连由所述全局调度器可操作。
15.根据权利要求1所述的系统,其中所述全局调度器适于提供来自所述神经网络模型存储器的多个非连续区域的所述突触权重。
16.一种系统,包括:
神经计算单元,所述神经计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活;
神经网络模型存储器,适于存储所述多个突触权重;
激活存储器,适于存储所述输入激活和所述输出激活;
调度器,被操作地耦合到所述神经计算单元、所述神经网络模型存储器和所述激活存储器,所述调度器适于:
将所述突触权重从所述神经网络模型存储器加载到所述神经计算单元;
将所述输入激活从所述激活存储器加载到所述神经计算单元;
将来自所述神经计算单元的所述多个输出激活存储到所述激活存储器。
17.一种方法,包括:
由全局调度器将来自神经网络模型存储器的突触权重提供给多个核中的每个核;
由每个核的局部控制器将输入激活从所述核的激活存储器加载到所述核的神经计算单元;
由每个核的神经计算单元将所述多个突触权重应用于所述多个输入激活以产生多个输出激活;
由每个核的所述局部控制器将来自所述核的所述神经计算单元的所述多个输出激活存储到所述核的所述激活存储器。
18.根据权利要求17所述的方法,还包括:
由所述全局调度器向所述多个核中的每个核提供局部控制器指令。
19.根据权利要求17所述的方法,其中所述全局调度器向所述多个核中的每个核提供相同的突触权重。
20.根据权利要求18所述的方法,其中所述全局调度器向所述多个核中的每个核提供相同的局部控制器指令。
21.根据权利要求17所述的系统,其中所述全局调度器向所述核中的至少一些核提供不同的突触权重。
22.根据权利要求18所述的系统,其中所述全局调度器向所述核中的至少一些核提供不同的局部控制器指令。
23.根据权利要求17所述的方法,其中所述全局调度器经由网络提供所述突触权重。
24.根据权利要求17所述的方法,其中所述全局调度器经由网络向每个核提供局部控制器指令。
25.根据权利要求17所述的方法,其中所述全局调度器提供来自所述神经网络模型存储器的多个非连续区域的所述突触权重。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/965,248 | 2018-04-27 | ||
US15/965,248 US20190332924A1 (en) | 2018-04-27 | 2018-04-27 | Central scheduler and instruction dispatcher for a neural inference processor |
PCT/IB2019/052539 WO2019207376A1 (en) | 2018-04-27 | 2019-03-28 | Central scheduler and instruction dispatcher for a neural inference processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111971693A true CN111971693A (zh) | 2020-11-20 |
Family
ID=68290707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980022184.2A Pending CN111971693A (zh) | 2018-04-27 | 2019-03-28 | 神经推理处理器的中央调度器和指令分配器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20190332924A1 (zh) |
JP (1) | JP7332247B2 (zh) |
CN (1) | CN111971693A (zh) |
DE (1) | DE112019000676T5 (zh) |
GB (1) | GB2586763B (zh) |
WO (1) | WO2019207376A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2580664B (en) * | 2019-01-22 | 2021-01-13 | Graphcore Ltd | Double load instruction |
US20210125049A1 (en) * | 2019-10-29 | 2021-04-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | System for executing neural network |
US20210209450A1 (en) * | 2020-01-03 | 2021-07-08 | International Business Machines Corporation | Compressed weight distribution in networks of neural processors |
US11977916B2 (en) | 2020-08-21 | 2024-05-07 | Deepx Co., Ltd. | Neural processing unit |
US20220121951A1 (en) * | 2020-10-21 | 2022-04-21 | International Business Machines Corporation | Conflict-free, stall-free, broadcast network on chip |
CN112364988A (zh) * | 2020-11-12 | 2021-02-12 | 天津大学 | 一种基于fpga的分层异构类脑计算系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095967A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 一种多模态神经形态网络核 |
US20160335535A1 (en) * | 2015-03-18 | 2016-11-17 | International Business Machines Corporation | Implementing a neural network algorithm on a neurosynaptic substrate based on criteria related to the neurosynaptic substrate |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3096387B2 (ja) * | 1994-01-28 | 2000-10-10 | 三菱電機株式会社 | 数値演算処理装置 |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
US9159020B2 (en) * | 2012-09-14 | 2015-10-13 | International Business Machines Corporation | Multiplexing physical neurons to optimize power and area |
US9239984B2 (en) * | 2012-12-21 | 2016-01-19 | International Business Machines Corporation | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a neural network |
US20140365413A1 (en) | 2013-06-06 | 2014-12-11 | Qualcomm Incorporated | Efficient implementation of neural population diversity in neural system |
CN106201651A (zh) * | 2016-06-27 | 2016-12-07 | 鄞州浙江清华长三角研究院创新中心 | 神经形态芯片的模拟器 |
CN106779059B (zh) * | 2016-12-30 | 2019-03-05 | 华中科技大学 | 一种基于忆阻的巴普洛夫联想记忆的人工神经网络电路 |
-
2018
- 2018-04-27 US US15/965,248 patent/US20190332924A1/en active Pending
-
2019
- 2019-03-28 CN CN201980022184.2A patent/CN111971693A/zh active Pending
- 2019-03-28 DE DE112019000676.2T patent/DE112019000676T5/de active Pending
- 2019-03-28 JP JP2020556803A patent/JP7332247B2/ja active Active
- 2019-03-28 WO PCT/IB2019/052539 patent/WO2019207376A1/en active Application Filing
- 2019-03-28 GB GB2018196.2A patent/GB2586763B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160335535A1 (en) * | 2015-03-18 | 2016-11-17 | International Business Machines Corporation | Implementing a neural network algorithm on a neurosynaptic substrate based on criteria related to the neurosynaptic substrate |
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN105095967A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 一种多模态神经形态网络核 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
Also Published As
Publication number | Publication date |
---|---|
DE112019000676T5 (de) | 2020-12-03 |
GB202018196D0 (en) | 2021-01-06 |
JP2021521539A (ja) | 2021-08-26 |
US20190332924A1 (en) | 2019-10-31 |
WO2019207376A1 (en) | 2019-10-31 |
JP7332247B2 (ja) | 2023-08-23 |
GB2586763B (en) | 2021-08-11 |
GB2586763A (en) | 2021-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12056598B2 (en) | Runtime reconfigurable neural network processor core | |
CN111971693A (zh) | 神经推理处理器的中央调度器和指令分配器 | |
US11847553B2 (en) | Parallel computational architecture with reconfigurable core-level and vector-level parallelism | |
US20200042856A1 (en) | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit | |
US20200117988A1 (en) | Networks for distributing parameters and data to neural network compute cores | |
US11263011B2 (en) | Compound instruction set architecture for a neural inference chip | |
US20210209450A1 (en) | Compressed weight distribution in networks of neural processors | |
US11663461B2 (en) | Instruction distribution in an array of neural network cores | |
US11238347B2 (en) | Data distribution in an array of neural network cores | |
JP7220007B2 (ja) | 並列性及びオンチップ・メモリを介した時間、空間及びエネルギー効率のよいニューラル推論 | |
CN114556373A (zh) | 用于大规模并行神经推理引擎的多模式低精度内积计算电路 | |
CN112384935A (zh) | 分布式神经网络核心网络中的层级并行 | |
AU2020395435B2 (en) | Flexible precision neural inference processing units | |
EP4133418B1 (en) | Neural network weight distribution from a grid of memory elements | |
US20220180177A1 (en) | An efficient method for vlsi implementation of useful neural network activation functions | |
CN114386585A (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 |