CN114692843A - 计算神经网络的装置、板卡、方法及可读存储介质 - Google Patents
计算神经网络的装置、板卡、方法及可读存储介质 Download PDFInfo
- Publication number
- CN114692843A CN114692843A CN202011566115.9A CN202011566115A CN114692843A CN 114692843 A CN114692843 A CN 114692843A CN 202011566115 A CN202011566115 A CN 202011566115A CN 114692843 A CN114692843 A CN 114692843A
- Authority
- CN
- China
- Prior art keywords
- sub
- weight
- graph
- ith
- chip
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 242
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 abstract description 2
- 239000010410 layer Substances 0.000 description 229
- 230000004927 fusion Effects 0.000 description 87
- 210000004027 cell Anatomy 0.000 description 65
- 238000010586 diagram Methods 0.000 description 26
- 238000011176 pooling Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 17
- 238000013135 deep learning Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000003062 neural network model Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000009795 derivation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000007418 data mining Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007500 overflow downdraw method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
- Memory System (AREA)
Abstract
本发明涉及计算神经网络的装置、板卡、方法及可读存储介质,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。
Description
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及计算神经网络的装置、板卡、方法及可读存储介质。
背景技术
神经网络是按照一定规则连接起来的多个神经元系统,大致上是由以下四种层结构所组成:输入层、卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)。
输入层是自输入数据中截取部分信息,转化成特征矩阵方式呈现,其中载有对应该部分信息的特征。卷积层配置成接收来自输入层的特征矩阵,通过卷积操作对输入数据进行特征抽取。卷积层在实际运用时可以建制多层卷积层。池化层配置成对数据的某一个区域用一个值代替,这值通常是该区域所有数值里的最大值或平均值。通过池化,在不至于损失过多信息的前提下,可以缩减模型大小、提高计算速度。全连接层在整个卷积神经网络中起到分类器的作用,相当于特征空间变换,把前面所有有用的信息提取整合,基于不同的分类做信息比对,借以判断输入数据是否相似于比对的标的。
随着科技的发展,神经网络的层数越来越多,以经典的VGG架构为例,VGG-A共有11个权重层、VGG-B有13个权重层、VGG-C有16个权重层、VGG-D共有16个权重层、VGG-E共有19个权重层。其中,卷积层和全连接层的泛指权重层。有些神经网络更是具有上百层结构。不仅如此,随着层数的增加,神经网络的参数数量也呈指数级的增加,例如AlexNet具有6000万个参数参与计算。
多层数与多参数都需要大量片上片外的输入/输出访问及足够大存储空间。因此一种减少输入/输出访问与存储空间占用的机制是人工智能领域中迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种计算神经网络的装置、板卡、方法及可读存储介质。
在一个方面中,本发明揭露一种利用计算装置计算神经网络的方法。所述计算装置连接至片外内存,所述片外内存载有片上单元图及相对应的权值。所述计算装置包括多个集群,每个集群包括共享存储单元及多个处理器核。
所述方法包括:将所述片上单元图及所述权值中的第i个子权值自所述片外内存载入至所述共享存储单元中;将所述片上单元图中的第i个子图及所述第i个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i个子权值对应所述第i个子图;根据所述第i个子图及所述第i个子权值,计算第i个中间结果;将所述权值中的第i+1个子权值自所述片外内存载入至所述共享存储单元中;将所述片上单元图中的第i+1个子图自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i+1个子权值对应所述第i+1个子图;以及将所述第i+1个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一。
在另一个方面,本发明揭露一种计算装置,连接至片外内存,所述片外内存载有片上单元图及相对应的权值,所述计算装置包括多个集群,每个集群包括共享存储单元、直接内存访问模块、多个处理器核、广播总线。
直接内存访问模块用以:将所述片上单元图及所述权值中的第i个子权值自所述片外内存载入至所述共享存储单元中;以及将所述权值中的第i+1个子权值自所述片外内存载入至所述共享存储单元中。
广播总线用以:将所述片上单元图中的第i个子图及所述第i个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i个子权值对应所述第i个子图;将所述片上单元图中的第i+1个子图自所述共享存储单元中广播至所述多个处理器核至少其中之一,所述第i+1个子权值对应所述第i+1个子图;将所述第i+1个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一。
多个处理器核至少其中之一根据所述第i个子图及所述第i个子权值,计算第i个中间结果。
在另一个方面,本发明揭露一种集成电路装置,包括前述的计算装置,以及一种板卡,包括根据前述的集成电路装置。
另一个方面,本发明揭露一种计算机可读存储介质,其上存储有利用计算装置计算神经网络的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
本发明基于片上系统-集群-处理器核的三级运算层次,以及DRAM-SRAM-NRAM/WRAM的三层内存设计,建立起两层三级流水线,充分利用硬件资源,提升神经网络计算效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的计算装置的内部结构示意图;
图4是示出本发明实施例的处理器核的内部结构示意图;
图5是示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;
图6是示出本发明实施例两层三级流水线的示意图;
图7A是示出本发明实施例搬移权值的策略的示意图;
图7B是示出本发明实施例搬移权值的另一策略的示意图;
图7C是示出本发明实施例搬移权值的另一策略的示意图;
图7D是示出本发明实施例搬移权值的另一策略的示意图;
图8是示出本发明实施例的两个卷积层融合在一起的示意图;
图9是示出NCHW与NHWC的格式示意图;
图10是示出本发明实施例根据融合策略动态融合神经网络的流程图;
图11是示出本发明实施例执行计算程序的流程图;
图12是示出本发明实施例根据搬移权值策略的流程图;
图13是示出本发明实施例根据另一个搬移权值策略的流程图;
图14是示出本发明实施例根据另一个搬移权值策略的流程图;以及
图15是示出本发明实施例根据另一个搬移权值策略的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
神经网络是由输入层、卷积层、激活函数、池化层、全连接层所组成,少则数层,多则上百层,每层执行一个算子,例如卷积层执行卷积算子,有多少层便需要执行多少算子。在本发明中,当提及特定层时,便表示该层相对应的算子。
在进行神经网络计算时,输入信息和模型各层的输出结果在每次推理计算时是不同的,它们被视为变量数据,变量数据一般都是以特征图(矩阵)来表现的,在本发明中,整个神经网络模型的输入信息和模型各层的输入图统称为特征图,一旦特征图加载到片上存储器部件上,在本发明中称为片上单元图。训练网络模型的参数在训练稳定之后通常不会频繁改动,或是网络拓扑结构和硬件参数确定后就可以编译生成,在计算过程中不会变更,因此它们可以被视为常量数据,常量数据包括但不限于权值、偏置、设备硬件指令、批标准化(batchnorm)的均值和方差等,在本发明中统一以权值代表所有的常量数据。而本发明中提及“数据”时,泛指根据融合策略使得神经网络模型中允许对应算子的运算操作融合在一起的图结构,该图结构所涉及变量数据和常量数据,也就是特征图加上相应的权值。
图1示出本发明实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204是一种片外内存,用以存储待处理的数据,为DDR,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM431用以存储供处理器核306计算的特征图及计算后的中间结果;WRAM432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图3,GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 311的功能和IODMA 433的功能可以整合在同一部件中。本发明为了方便描述,将GDMA 311和IODMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,GDMA 311的功能、IODMA 433的功能、CDMA 310的功能、MVDMA 434的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本发明类似,均属于本发明的保护范围。
在前述的硬件结构中,计算装置201内部称为片上,计算装置201外的部件称为片外。在执行深度学习的各层计算时,需要大量的片外片上访问,特别是将数据自DRAM 204读取至计算装置201中,再将计算装置201的计算结果存储至DRAM 204。这种频繁的访问会耗去极大的硬件资源。为了解决这个问题,本发明的一个实施例通过规划权值的搬运机制,在很大程度上减少了片外片上的访问,同时降低片上权值存储要求。
计算装置201具有很强算力的一个重要原因在于片上系统-集群-处理器核的三级运算层次,搭配DRAM-SRAM-NRAM/WRAM这样的三层内存设计,使得数据能够在适当的层级里缓存并计算,形成充分的流水。
计算装置201在进行计算时,主要可以分为以下三大阶段。载入阶段(load):将数据载入;计算阶段(compute):搬运数据、计算、搬运中间结果;存回阶段(store):存回结果。
更详细来说,此实施例采两层三级流水线,如图6所示,第一层的载入阶段601、计算阶段602、存回阶段603发生在集群层次中。第一层载入阶段601由GDMA 330将数据自DRAM204载入至SRAM 308中,第一层计算阶段602是集群305对载入的片上单元图进行计算,并产生计算结果,第一层存回阶段603是GDMA 330将计算结果从SRAM 308存回至DRAM 204中。
由于集群305包括多个处理器核306,第一层计算阶段602实际上会透过存储核307将片上单元图分割成对应子图,广播发送给至少一个处理器核306进行计算,因此,第二层的三级水线发生在处理器核306中。更详细来说,第二层载入阶段604是由MVDMA 434从SRAM308中将子图载入到NRAM 431中,第二层计算阶段605是将子图和子权值搬运至运算模块42,进行计算,再将中间结果搬运回NRAM 431中,第二层存回阶段606则是MVDMA 434将中间结果从NRAM 431存回至SRAM 308中。
第一层的流水线指的是第一层载入阶段601、第一层计算阶段602和第一层存回阶段603可以同时并行。现以同一个集群305欲处理第j个片上单元图、第j+1个片上单元图和第j+2个片上单元图为例,首先,第j个片上单元图在第一层载入阶段601载入到SRAM 308中。接着第j个片上单元图在第一层计算阶段602被计算,并将第一计算结果搬运回SRAM308中,在计算第j个片上单元图的同时,第j+1个片上单元图在第一层载入阶段607载入到SRAM 308中。当第一计算结果在第一层存回阶段603被存回至DRAM 204中时,第j+1个片上单元图在第一层计算阶段608被计算,并将第二计算结果搬运回SRAM 308中,同时第j+2个片上单元图在第一层载入阶段610被载入到SRAM 308中。第一层流水线依此方式滚动进行。
为了配合前述流水线的操作,此实施例的SRAM 308包括2个存储空间:乒存储单元与乓存储单元。数据的流水按照SRAM 308的乒乓属性分为3种:输入/输出乒乓(IOparity)、输入乒乓(input parity)、无乒乓(no parity)。输入/输出乒乓可以支援载入、计算和存回并行,为实现输入/输出乒乓,乒存储单元与乓存储单元需要完全相等,分别供载入和存回使用。输入乒乓仅支援存回和计算并行,会额外增加SRAM 308上搬运的时间,与输入/输出乒乓相比,乒存储单元与乓存储单元不需要完全相等,但是需要多分配一块与存回存储空间大小相等的高速缓存(cache)。无乒乓指的是载入/存回和计算串行,空间不需要进行额外分配。
为了实现前述的第一层流水线,此实施例的SRAM 308具有相同大小的乒存储单元与乓存储单元,以达到输入/输出乒乓的效果。继续以图6做说明,第j个片上单元图的第一层载入阶段601、第一层计算阶段602和第一层存回阶段603所涉及的存储区域限定在乒存储单元,而第j+1个片上单元图的第一层载入阶段607、第一层计算阶段608和第一层存回阶段609所涉及的存储区域限定在为乓存储单元,第j+2个片上单元图的第一层载入阶段610、第一层计算阶段611和第一层存回阶段612所涉及的存储区域又限定在乒存储单元,依此方式交替使用乒存储单元与乓存储单元存储。
第二层的流水线指的是第二层载入阶段604、第二层计算阶段605和第二层存回阶段606可以同时并行。试以同一个处理器核306欲处理第j个片上单元图中的第i个子图、第i+1个子图和第i+2个子图为例。首先,第i个子图在第二层载入阶段604被广播到NRAM 431中。接着第i个子图在第二层计算阶段605进行计算以产生第i个中间结果,并将第i个中间结果搬运回NRAM 431中,同时,第i+1个子图在第二层载入阶段613被广播到NRAM 431中。而第i个中间结果在第二层存回阶段606被存回至SRAM 308中,同时第i+1个子图在第二层计算阶段614被计算以产生第i+1个中间结果,并将第i+1个中间结果搬运回NRAM 431中,且第i+2个子图在第二层载入阶段615被载入到NRAM 431中。
考虑到每个集群305的任务不同,完成的时间自然不一致,此实施例的同步模块304会利用同步屏障指令来同步任务完成的时间,以避免时序出现错误。
对于权值来说,欲实现前述的双层流水线,有以下几种搬移权值的策略。
一种策略如图7A所示,SRAM 308被分割成4个空间,分别是其他参数存储单元701、权值存储单元702、乒存储单元703与乓存储单元704,其中其他参数存储单元701用以自DRAM 204载入偏置数据等除权值之外的参数;权值存储单元702是一整块的存储空间,用以自DRAM 204载入权值数据;乒存储单元703与乓存储单元704如前所述,用以自DRAM 204载入不同的片上单元图,或来自NRAM 321存回的对应中间结果。而WRAM 432是一整块的存储空间。
在第一层载入阶段601,GDMA 311将第j个片上单元图自DRAM 204载入至乒存储单元703,亦将权值中的第i个子权值(对应第j个片上单元图的第i个子图)自DRAM 204载入至权值存储单元702。在第一层计算阶段602中,广播总线309在第二层载入阶段604将片上单元图中的第i个子图及第i个子权值自SRAM 308广播至多个处理器核306至少其中之一的NRAM 431与WRAM 432中,处理器核306的运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将第j个片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中。由于第i个子权值已被载入至WRAM 432中,权值存储单元702的空间可以被释放出来,因此在同一时间,GDMA 311将权值中的第i+1个子权值(对应第i+1个子图)自DRAM 204载入至权值存储单元702中,由于权值存储单元702是一整块的存储空间,因此权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在产生第i个中间结果后,广播总线309才将第i+1个子权值自权值存储单元702广播至WRAM 432中,由于WRAM 432也是一整块的存储空间,因此第i个子权值同样被第i+1个子权值所覆盖。需特别注意的是,广播总线309是在产生第i个中间结果后才将第i+1个子权值广播至WRAM 432中,原因在于如果在计算第i个中间结果时便将第i+1个子权值广播至WRAM 432中,计算过程中可能随时需要自WRAM 432读取第i个子权值,而第i个子权值已被覆盖,会导致计算结果错误。
在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中,且在同一时间,GDMA 311将权值中的第i+2个子权值(对应第i+2个子图)自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在产生第i+1个中间结果后,广播总线309才将第i+2个子权值自权值存储单元702广播至WRAM 432中,WRAM 432中的第i+1个子权值同样被第i+2个子权值所覆盖。
在此策略中,计算第j个片上单元图所需的权值并不是一次性地与第j个片上单元图一同载入至SRAM 308中,而是每次仅载入对应子图的子权值至SRAM 308中,同一时间仅有一个子权值存储在权值存储单元702中,为此,在执行计算任务前,计算装置201会先识别权值中所有子权值中最大者,再根据子权值中最大者,来决定权值存储空间702的大小。例如权值会被拆分成5个子权值,其大小分别为50KB、100KB、120KB、300KB、200KB,其中最大者为300KB,计算装置201便分割300KB的空间给权值存储空间702,这样的空间已足够存储各个子权值,节省了片上的存储空间。
另一种策略如图7B所示,SRAM 308同样被分割成4个空间,但WRAM 432被分割成多个存储空间,图中示例性的显示3个空间,分别是第一存储空间705、第二存储空间706、第三存储空间707。
在第一层载入阶段601,GDMA 311将第j个片上单元图自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至权值存储单元702。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第i个子图广播至NRAM 431,亦将第i个子权值广播至第一存储空间705中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将第j个片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中,同时GDMA 311将第i+1个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在第i+1个子权值载入至权值存储单元702后,不论第i个中间结果是否计算完毕,广播总线309将第i+1个子权值自权值存储单元702广播至第二存储空间706,由于第i个子权值存储在第一存储空间705中,因此不会被第i+1个子权值所覆盖,不至于影响第i个中间结果的正确性。
在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中,且在同一时间,GDMA 311将第i+2个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在第i+2个子权值载入至权值存储单元702后,不论第i+1个中间结果是否计算完毕,广播总线309将第i+2个子权值自权值存储单元702广播至第三存储空间707中,第i+1个子权值未被覆盖,不至于影响第i+1个中间结果的正确性。
在此策略中,WRAM 432被分割成多个存储空间,因此子权值无需等候前一个中间结果完成后才被广播,也就是子权值可以在前一个中间结果计算的同时被广播至WRAM432,缩短了流水线运行时间。
另一种策略如图7C所示,与图7A不同处在于,权值存储单元702被分割成多个存储空间,图中示例性的显示3个空间,分别是第一存储空间708、第二存储空间709、第三存储空间710。
在第一层载入阶段601,GDMA 311将第j个片上单元图自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至第一存储空间708,将第i+1个子权值自DRAM204载入至第二存储空间709,将第i+2个子权值自DRAM 204载入至第三存储空间710。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第j个片上单元图中的第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中。
在产生第i个中间结果后,广播总线309才将第i+1个子权值自第二存储空间709广播至WRAM 432中,由于WRAM 432是一整块的存储空间,因此第i个子权值被第i+1个子权值所覆盖。在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM308广播至NRAM 431中。在产生第i+1个中间结果后,广播总线309才将第i+2个子权值自第三存储空间710广播至WRAM 432中,WRAM 432中的第i+1个子权值被第i+2个子权值所覆盖。
在此策略中,多个子权值可以一次性地与片上单元图一同载入至SRAM 308中,由于片上片外的输入/输出访问是运算效率的一大瓶颈,在权值存储单元702上分割出多个存储空间分别存储不同的子权值,虽然占用SRAM 308较多的存储空间,但仍对减少输入/输出访问有极大的帮助。
另一种策略如图7D所示,权值存储单元702与WRAM 432均被分割成多个存储空间。
在第一层载入阶段601,GDMA 311将第j个片上单元图自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至第一存储空间708,将第i+1个子权值自DRAM204载入至第二存储空间709,将第i+2个子权值自DRAM 204载入至第三存储空间710。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第j个片上单元图中的第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将第j个片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中。
在第i+1个子权值载入至第二存储空间709后,不论第i个中间结果是否计算完毕,广播总线309将第i+1个子权值自第二存储空间709广播至第二存储空间706,由于第i个子权值存储在第一存储空间705中,因此不会被第i+1个子权值所覆盖,不至于影响第i个中间结果的正确性。在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中,不论第i+1个中间结果是否计算完毕,广播总线309将第i+2个子权值自第三存储空间710广播至第三存储空间707中,第i+1个子权值未被覆盖,不至于影响第i+1个中间结果的正确性。
在此策略中,不仅多个子权值可以一次性地与片上单元图一同载入至SRAM 308中,子权值也无需等候前一个计算结果完成后才能被广播,换言之,子权值可以在前一个中间结果计算的同时被广播至WRAM 432,同时缩短了输入/输出与流水线运行时间。
如前所述,在执行深度学习的各层计算时,需要大量的片外片上访问,特别是将数据自DRAM 204读取至计算装置201中,再将计算装置201的计算结果存储至DRAM 204。这种频繁的访问会耗去极大的硬件资源。实务上会融合神经网络的相邻层,在很大程度上减少了片外片上的数据传输。
图8示出将两个卷积层融合在一起的示意图。第一层卷积层810的输入为7×7的特征图801,该层将特征图801与3×3的内核(未示出)进行卷积后,得到第一层卷积层810的特征图802。其中,5×5特征子图804的数值会影响3×3特征子图805。假设步长(stride)为1,在计算完5×5特征子图804后,第一层卷积层810会接着计算5×5特征子图806,而5×5特征子图806的数值会影响3×3特征子图807。
在进行第二层卷积层811的计算时,特征图802成为第二层卷积层811的输入,同样与3×3的内核进行卷积,得到第二层卷积层811的特征图803。其中,3×3特征子图805的数值会影响特征图803中的1×1特征子图808。在计算完3×3特征子图805后,第二层卷积层811会接着计算3×3特征子图807,而3×3特征子图807的数值会影响特征图803中的1×1特征子图809。
如果未融合,计算装置201在进行第一层卷积810时,自DRAM 204读取5×5特征子图804,计算完后将3×3特征子图805存储回DRAM 204,接着再从DRAM 204读取5×5特征子图806,计算完后将3×3特征子图807存储至DRAM 204。在进行第二层卷积811时,同样需要自DRAM 204读取3×3特征子图805,计算完后将1×1特征子图808存储至DRAM 204,接着自DRAM 204读取3×3特征子图807,计算完后将1×1特征子图809存储至DRAM 204。通过上述说明可知,特征图802作为中间数据反复在片外片上被读取存储,相当占用系统资源。
如果将第一层卷积层810与第二层卷积层811进行融合,也就是把特征图802存储在NRAM 431中,如此便可减少计算装置201与DRAM 204间的访问次数,进而提高整体神经网络的执行效率。由于参与融合的特征图(如特征图801、特征图802、特征图803)在神经网络模型上下文逻辑中整体看起来像倒金字塔,故称金字塔融合。
以下试以一种融合方式对本发明相关的金字塔融合进行说明,该融合方式是利用前述图1、图2、图3及图4的硬件结构来实施的,这种融合称为模板融合单元(template fuseunit,TFU)。模板融合单元主要是通过一定的融合策略弹性地将多个层融合成一个层,来减少网络的输入/输出开销,这些被融合的层的集合即为模板融合单元,可以视为是新的层或是自定义的层。
此融合方式一次性将模板融合单元所需的特征图自DRAM 204载入至片上的SRAM308,特征图载入至SRAM 308后称为片上单元图,片上单元图会被切割成子图,每次自SRAM308载入一份子图到被指派计算该子图的处理器核306的NRAM 431,且计算该子图所需的子权值亦会在适当时机自SRAM 308被载入至WRAM 432上,每个子图计算完成后获得对应的中间结果,中间结果被存回SRAM 308,所有子图都完成计算后再一次性地将计算结果存回DRAM 204。也就是说,片上单元图和权值参与神经网络模型中算子的运算操作获得的对应结果在DRAM 204与SRAM 308间传递,子图对应的输出(中间结果)在SRAM 308与NRAM 431间传递。从计算装置201的角度来看,模板融合单元的特征图载入是以片上单元图为单位,而计算是以子图为单位。
更详细来说,SRAM 308是融合策略的重要参考指标之一,其空间大小决定了模板融合单元为大图模式或是小图模式。小图模式与大图模式是指存储在DRAM 204的一张特征图是否能一次性地搬到SRAM 308进行处理,处理装置203会将该特征图所需存储空间与SRAM 308可用空间进行比较。如果SRAM 308空间不足,特征图摆不下,则为大图模式;如果SRAM 308足以容纳整张特征图,就是小图模式。需特别注意的是,在大图模式下,片上单元图只是特征图的一部分;在小图模式下,如果SRAM 308的可用空间足够大,或是特征图足够小,SRAM 308或许可以一次性地容纳多张特征图,即片上单元图可以包括多张特征图。
如是大图模式,则必须拆分该特征图方能载入计算装置201中。处理装置203会在DRAM 204上将该特征图进行拆分,直到产生足够小的片上单元图能够满足SRAM 308的空间需求,使得该片上单元图可以一次性地搬到SRAM 308进行处理。而特征图在进行拆分时,可能会产生输入依赖运算和输出依赖运算。
输入依赖运算是指拆分后的各片上单元图至少部分重叠,每个子集都需要一些输入的额外副本,以进行完整的运算,从而导致拆分操作中的数据冗余,所谓的数据冗余是指同一段数据在系统中被复用。当模板融合单元包括卷积、池化或矩阵乘等层时都会导致输入依赖运算。
输出依赖运算是指每个子图产出中间结果后,还需要进行归约(reduce),才能得到计算结果。归约是指在基于对片上单元图本身内容理解的基础上,拆分成子图后分别计算,以缩减计算规模,从而在尽可能保持原片上单元图原貌的前提下,最大限度地精简数据量,再以子图为基础还原或整合计算结果。进行归约时计算结果是互为依赖的。当模板融合单元包括内积、卷积、矩阵乘、排序、计数等层时都会导致输出依赖运算。
特征图的数据格式包括N、H、W、C维度,其中N代表批处理(batch)、H代表高度(height)、W代表宽度(width)、C代表通道(channel)。以图像数据为例,N表示这批图像共有几张,H表示图像在竖直方向有多少像素,W表示水平方向像素数,C表示通道数(例如黑白图像的通道数C为1,而RGB彩色图像的通道数C为3)。
这些维度的排序决定了数据的组成方式,常见的组成方式有NHWC和NCHW两种,图9示出NCHW与NHWC的格式区别,此图是以RGB彩色图像为例,图中R表示红色像素、G表示绿色像素、B表示蓝色像素。数列91为NCHW格式,N排列在外层,每个通道内像素紧挨在一起,再依RGB的顺序排列,坐标为(n,c,h,w)的元素在存储中的偏移为((n×C+c)×H+h)×W+w。数列92是NHWC格式,C排列在最内层,多个通道对应空间位置的RGB像素紧挨在一起。图中亦显示出输入像素901、输入像素902、输入像素903在不同排列方式下所处的位置,而这三个输入像素901、输入像素902、输入像素903合起来便是图像中一个点的颜色。坐标为(n,c,h,w)的元素相应的坐标向偏移的换算方法是((n×H+h)×W+w)×C+c。NHWC首先相比NCHW更加接近BMP的图片数据存储格式,BMP格式的文件中按照一个个像素点来存储数据,每个像素点存储了所有通道的颜色值,这使得在读取输入图片时不需要进行额外的维度转换。因此,NHWC的访存局部性较佳,每三个输入像素即可得到一个输出像素,NCHW则必须等所有通道输入准备好才能得到最终输出结果,需要占用较大的缓存空间。
图10示出该融合方式的流程图。
在步骤1001中,根据融合策略的起始规则,选择模板融合单元的起始层。处理装置203根据融合策略的起始规则,选择模板融合单元的起始层,也就是在神经网络里尚未融合的层中选择开始融合的层。
在一种应用场景下,所述起始规则可以是起始层为神经网络中最前未被融合的层,处理装置203会搜索出最前未被融合的层。在另一种应用场景下,考虑到卷积和池化层最消耗输入/输出资源,因此起始规则为起始层为最前未被融合的卷积或池化层,处理装置203会先找出神经网络模型中未融合层的所有卷积和池化层,从最前未被融合的卷积或池化层开始融合。
在步骤1002中,以起始层为基准进行融合,逐一排查融合策略的所有规则,以建立模板融合单元。处理装置203以起始层为基准进行融合,逐一排查融合策略的所有规则,以建立模板融合单元。在满足所有规则的前提下,计算装置201的硬件资源足以支撑一次性地载入计算模板融合单元所需的片上单元图,进而根据模板融合单元执行神经网络计算。除了前述的起始规则外,融合策略示例性地还可以包括以下规则:
规则一:向后融合
所谓的向后融合指的是自起始层往神经网络模型推理的方向融合,即是按着第一层→第二层→第三层的方向融合。如果起始层之前还有未融合层,则在此规则下这些未融合层将不被考虑纳入模板融合单元中。
规则二:优先向前融合
所谓的向前融合指的是自起始层往神经网络推理的反方向融合,即按着第三层→第二层→第一层的方向融合。此规则通常与前述起始层为最前未被融合的卷积或池化层的起始规则搭配,原因在于所述的卷积或池化层前可能还有未被融合的层。在选定起始层后,处理装置203优先向前融合,试图把起始层前尚未被融合的层纳入模板融合单元中。假设第1层至第2层已融合,处理装置203发现最前未被融合的卷积或池化层是第5层,故起始层为第5层,优先向前融合第4层、第3层,如果还能继续融合,则接着向后融合第6层、第7层等。
规则三:单分支输出
该融合方式的融合策略不支持模板融合单元为多输出网络,其原因在于模板融合单元内部实现的形状推导主要采用从后向前推导的形式,多输出网络意味着需要从不同的输出分别向前推导,推导的结果不必然会归结到同一个特征图上,以至于无法收敛。
规则四:包括至少2个主层
当层逻辑过于简单时,模板融合单元的性能还不如未融合的层的性能,故以层逻辑作为融合策略时,处理装置203会评估所融合的各层的运算是否足够复杂,使得融合产生效益。欲产生效益,就需要尽量将主层纳入模板融合单元,主层指的是矩阵乘、池化或卷积等耗费大量输入/输出资源的层,此处的池化包括各类池化,像是最大池化(maxpool)或均值池化(avgpool),卷积也包括各类卷积,像是普通卷积、带均值的卷积、分通道卷积(depthwise conv)等。此规则为模板融合单元包括至少2个主层。当处理单元203判断此规则未被满足时,处理装置203会调整模板融合单元直到此规则被满足。
规则五:包括主层、主层、非主层依次相邻的连续结构
此规则为模板融合单元需包括主层、主层及非主层的连续结构,即:主层、主层以及非主层依次相邻的连续结构。这样的运算足够复杂,使得融合具有效益。当处理单元203判断此规则未被满足时,处理装置203会调整模板融合单元直到此规则被满足。
规则六:卷积层的权值不与神经网络的任一层共用
由于模板融合单元涉及的神经网络模型中算子的权值具有特别的摆放形式,当被融合的卷积算子与其他算子共用权值时,权值的摆放逻辑会发生冲突,此规则为模板融合单元中的卷积算子的权值不与神经网络的任一层共用。当处理单元203判断此规则未被满足时,处理装置203会将此卷积算子自模板融合单元中移除。
规则七:权值不大于WRAM的可用空间
在小图模式下,片上单元图可能会包括多张特征图,在这种情况下所需的权值会变多,便要谨慎评估WRAM 432的可用空间是否足够。此规则为片上单元图中的权值所需存储空间不大于WRAM 432的可用空间,当处理装置203判断此规则未被满足时,处理装置203会减少片上单元图的大小。如果WRAM 432被拆分成多个存储空间,则此规则为子权值所需存储空间不大于权值存储空间的可用空间。
规则八:冗余百分比
冗余百分比为当输入依赖运算与输出依赖运算所产生的冗余总和与模板融合单元正常输入/输出量的比例,此处正常输入/输出量指的是片上单元图在未被拆分前没有冗余的数据量。处理装置203会计算模板融合单元将当前层融合进来后,片上单元图从DRAM204至SRAM 308的访存量sizeTFU,与正常输入/输出量(不含冗余)sizeori的百分比,其中访存量sizeTFU指的是理论的访存量sizeori加上冗余总和。其公式如下:
处理装置203会将模板融合单元的拆分信息和形状推导计算在内,并设定百分比阈值为50%、75%、100%、125%或150%,较佳为100%。以百分比阈值为100%为例,表示当冗余总和大于模板融合单元正常输入/输出量的2倍时,便不再融合。此规则为拆分片上单元图所产生的冗余总和不超出与百分比阈值相关的特定比例,一旦超过,表示冗余部分过多,大量的资源将耗费在计算冗余上,效能下降,因此当处理装置203判断此规则未被满足时,处理装置203会停止融合。
需要注意的是,在小图模式下,由于从DRAM 204至SRAM 308过程一次加载至少一整张完整的特征图,故不会产生冗余。此规则不适用于小图模式。
规则九:片上单元图输入输出尺寸
假设SRAM 308的空间尺寸为S,片上单元图所需存储空间为IN,片上单元图的计算结果所需存储空间为OUT,则此规则为SRAM 308的空间尺寸需要满足以下条件:
如果IN和OUT不能复用存储空间的话,IN+OUT<S
如果IN和OUT可以复用存储空间的话,MAX(IN,OUT)<S
即如果IN和OUT不能复用存储空间的话,片上单元图的存储空间与计算结果的存储空间之和小于SRAM 308的可用空间;如果IN和OUT可复用存储空间的话,片上单元图的存储空间与计算结果的存储空间较大者小于SRAM 308的可用空间。
如果SRAM 308被拆分成乒存储空间和乓存储空间,则此规则为片上单元图的存储空间与其计算结果的存储空间之和小于乒存储空间或乓存储空间的可用空间。
规则十:子图所需存储空间不大于NRAM的可用空间
此规则为子图所需存储空间不大于NRAM 431的可用空间。当SRAM308上的片上单元图要被拆分成子图搬运至NRAM 431时,处理装置203可以在N、H、W维度上进行细粒度拆分。如果NRAM 431的空间不足,处理装置203会把片上单元图拆分得更细,直到此规则被满足。一般来说,NRAM 431都会具有合理的可用空间,使得片上单元图被拆分到合理的程度便可一次性地被载入,就融合策略的角度来看,模板融合单元不会受到批处理数目的影响。然而,片上单元图被拆分的越小(即子图越多),处理速度会下降,故处理装置203需要评估NRAM 431的空间。
在一些实施例中,SRAM 308的空间与集群305内的处理器核306的NRAM 431的个数相对应,例如集群305包括4个处理器核306,则SRAM 308的空间为NRAM 431的空间的4倍。换言之,大图模式下的片上单元图一般能分配给4个处理器核306处理,这种架构设计已考虑载入SRAM 308的数据能一次性地分配给所有NRAM 431。因此在大图模式下不需要考虑此规则。
规则十一:步长冗余
步长冗余指的是:当模板融合单元融合层数太多,再加上卷积和池化的内核的长宽大于步长时,每个输出点需要的输入数据存在重叠部分,也就是前述的输入依赖运算,该重叠部分即为步长冗余。步长冗余使得每个处理器核306需要多读取一些数据,但是这一部分复用的数据会占去片上片外的访问资源,模板融合单元包括的层数越多,步长冗余越严重。此规则为卷积层或池化层的内核的边长与步长的差值总和不大于冗余阈值。
冗余阈值的定义如下。假设卷积和池化层的内核的长和宽为kx和ky,长和宽方向的步长分别为sx和sy,则长方向的步长冗余为模板融合单元内所有卷积及池化层的kx-sx的总和;同理,宽方向的步长冗余为模板融合单元内所有卷积及池化层的ky-sy的总和。此实施例的冗余阈值可以为3、4、5或6,较佳为4。只要长方向或宽方向任一方向的步长冗余大于冗余阈值,此规则便不被满足。处理装置203调整模板融合单元,通常为减少被融合的层数,直到此规则被满足。
融合策略对于步长冗余设定了例外规则。如欲融合的层里存在多分支且模板融合单元能融合整个多分支的前提下,模板融合单元的性能会表现的更为优异,在这种情况下,处理装置203会忽略步长冗余的规则,亦即步长冗余不会限制模板融合单元融合多分支,即在此实施例的融合策略中,融合多分支优先于步长冗余的限制。也就是说,步长冗余只有在单分支的情况下才会被考虑。
以上的规则仅为示例,本发明并不限制各规则执行的顺序,亦不限制这些规则需同时被考虑,本领域技术人员在不同的应用场景下可以根据实际情况增删规则,以实现符合当下应用场景的融合策略。
回到图10,在步骤1003中,根据建立后的模板融合单元执行神经网络计算。计算装置201基于片上系统-集群-处理器核的三级运算层次,搭配DRAM-SRAM-NRAM/WRAM这样的三层内存设计,将模板融合单元视为神经网络中一个自定义的层,一次性地自DRAM 204载入计算模板融合单元所需的片上单元图至SRAM 308,使得数据能够在适当的层级里缓存并计算,形成充分的流水,计算完成后再将计算结果自SRAM 308传送至DRAM 204,大大减少神经网络计算中的输入/输出开销。
当计算机视觉、语音、自然语言处理、数据挖掘等领域的输入数据欲进行各类深度学习和机器学习算法时,本发明基于模板融合单元,可以减少神经网络计算中的输入/输出开销。本发明的另一个实施例是一种利用模板融合单元执行神经网络计算的方法。
更详细来说,此实施例同样采如图6所示的两层三级流水线。在此实施例中,片上单元图是模板融合单元的输入图,权值指的是计算所述输入图所需的权值。如前所述,在大图模式下,片上单元图仅是一张特征图的一部分;在小图模式下,片上单元图包括至少一张特征图。此实施例同样具有如图7所示的多种搬移权值的策略。
一种策略如图7A所示,权值存储单元702与WRAM 432均为一块完整的存储空间。在第一层载入阶段601,GDMA 311将模板融合单元的输入(片上单元图)自DRAM 204载入至乒存储单元703,亦将权值中的第i个子权值(对应片上单元图的第i个子图)自DRAM 204载入至权值存储单元702。在第一层计算阶段602中,广播总线309在第二层载入阶段604将片上单元图中的第i个子图及第i个子权值自SRAM 308广播至多个处理器核306至少其中之一的NRAM 431与WRAM 432中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中。由于第i个子权值已被载入至WRAM 432中,权值存储单元702的空间可以被释放出来,因此在同一时间,GDMA 311将权值中的第i+1个子权值(对应第i+1个子图)自DRAM 204载入至权值存储单元702中,由于权值存储单元702是一整块的存储空间,因此权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在产生第i个中间结果后,广播总线309才将第i+1个子权值自权值存储单元702广播至WRAM 432中,由于WRAM 432也是一整块的存储空间,因此第i个子权值同样被第i+1个子权值所覆盖。
在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中,且在同一时间,GDMA 311将权值中的第i+2个子权值(对应第i+2个子图)自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在产生第i+1个中间结果后,广播总线309才将第i+2个子权值自权值存储单元702广播至WRAM 432中,WRAM 432中的第i+1个子权值同样被第i+2个子权值所覆盖。
在此策略中,对应于片上单元图的权值并不是一次性地与片上单元图一同载入至SRAM 308中,而是每次仅载入对应子图的子权值至SRAM 308中,同一时间仅有一个子权值存储在权值存储单元702中,因此,计算装置201会先识别多个子权值中最大者,再根据子权值中最大者,来决定权值存储空间702的大小。这样的配置导致在计算模板融合单元的过程当中依旧频繁访问DRAM 204,使得融合的优势受到影响,但是如果SRAM 308的空间有限,这种策略不失为是一种折中的手段。
另一种策略如图7B所示,WRAM 432被分割成多个存储空间。在第一层载入阶段601,GDMA 311将模板融合单元的输入图(片上单元图)自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至权值存储单元702。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第i个子图广播至NRAM 431,亦将第i个子权值广播至第一存储空间705中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将第i+1个子图自SRAM 308广播至NRAM431中,同时GDMA 311将第i+1个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在第i+1个子权值载入至权值存储单元702后,不论第i个中间结果是否计算完毕,广播总线309将第i+1个子权值自权值存储单元702广播至第二存储空间706,由于第i个子权值存储在第一存储空间705中,因此不会被第i+1个子权值所覆盖,不至于影响第i个中间结果的正确性。
在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中,且在同一时间,GDMA 311将第i+2个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在第i+2个子权值载入至权值存储单元702后,不论第i+1个中间结果是否计算完毕,广播总线309将第i+2个子权值自权值存储单元702广播至第三存储空间707中,第i+1个子权值未被覆盖,不至于影响第i+1个中间结果的正确性。
在此策略中,WRAM 432被分割成多个存储空间,因此子权值无需等候前一个中间结果完成后才被广播,也就是子权值可以在前一个中间结果计算的同时被广播至WRAM432,缩短了流水线运行时间。
另一种策略如图7C所示,与图7A不同处在于,权值存储单元702被分割成多个存储空间。在第一层载入阶段601,GDMA 311将模板融合单元的输入图(片上单元图)自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至第一存储空间708,将第i+1个子权值自DRAM 204载入至第二存储空间709,将第i+2个子权值自DRAM 204载入至第三存储空间710。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将第i+1个子图自SRAM 308广播至NRAM 431中。
在产生第i个中间结果后,广播总线309才将第i+1个子权值自第二存储空间709广播至WRAM 432中,由于WRAM 432是一整块的存储空间,因此第i个子权值被第i+1个子权值所覆盖。在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM308广播至NRAM 431中。在产生第i+1个中间结果后,广播总线309才将第i+2个子权值自第三存储空间710广播至WRAM 432中,WRAM 432中的第i+1个子权值被第i+2个子权值所覆盖。
在此策略中,多个子权值可以一次性地与片上单元图一同载入至SRAM 308中,因此可以完全实现融合的优势,对运算效益有极大的帮助。
另一种策略如图7D所示,权值存储单元702与WRAM 432均被分割成多个存储空间。在第一层载入阶段601,GDMA 311将模板融合单元所需的输入图(片上单元图)自DRAM 204载入至乒存储单元703,亦将第i个子权值自DRAM 204载入至第一存储空间708,将第i+1个子权值自DRAM 204载入至第二存储空间709,将第i+2个子权值自DRAM 204载入至第三存储空间710。在第一层计算阶段602中,广播总线309在第二层载入阶段604将第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中,运算单元42根据第i个子图及第i个子权值,在第二层计算阶段605中计算第i个中间结果,同时,广播总线309在第二层载入阶段613将片上单元图中的第i+1个子图自SRAM 308广播至NRAM431中。
不论第i个中间结果是否计算完毕,广播总线309将第i+1个子权值自权值存储单元702广播至第二存储空间706,由于第i个子权值存储在第一存储空间705中,因此不会被第i+1个子权值所覆盖,不至于影响第i个中间结果的正确性。在第二层存回阶段606中,MVDMA 434将第i个中间结果存回至乒存储单元703中,同一时间,运算单元42根据第i+1个子图及第i+1个子权值,在第二层计算阶段614中计算第i+1个中间结果,且第i+2个子图进入第二层载入阶段615,广播总线309将第i+2个子图自SRAM 308广播至NRAM 431中。不论第i+1个中间结果是否计算完毕,广播总线309将第i+2个子权值自权值存储单元702广播至第三存储空间707中,第i+1个子权值未被覆盖,不至于影响第i+1个中间结果的正确性。
在此策略中,不仅多个子权值可以一次性地与片上单元图一同载入至SRAM 308中,子权值也无需等候前一个计算结果完成后才被广播,换言之,子权值可以在前一个中间结果计算的同时被广播至WRAM 432,缩短了输入/输出与流水线运行时间。
图11示出另一实施例利用计算装置201执行计算程序的流程图。
在步骤1101中,将片上单元图及权值中的至少第1个子权值(对应片上单元图的第1个子图)自DRAM 204载入至SRAM 308。在步骤1102中,判断片上单元图的所有子图是否都计算完毕。如否,则执行步骤1103,选择一个未计算的子图并将其所需的数据搬运到NRAM411和WRAM 432上。在步骤1104中,执行计算任务。在步骤1105中,将产出的中间结果自NRAM411搬运至SRAM 308,并回到步骤1102。
如果在步骤1102中,判断所有的子图都已计算完毕,则执行步骤1106,将所有中间结果进行归约,以产生计算结果。在步骤1107中,将计算结果从SRAM 308搬运到DRAM 204上。
图12示出另一实施例的两层三级流水线的流程图。在步骤1201中,载入第j个片上单元图及第i个子权值。在步骤1202中,同步计算第j个片上单元图并产生第j个计算结果,及载入第j+1个片上单元图。在步骤1203中,同步存回第j个计算结果、计算第j+1个片上单元图并产生第j+1个计算结果、及载入第j+2个片上单元图。
当计算装置201具有如图7A的存储空间配置时,步骤1202更包括以下步骤。
在步骤1204中,将第j个片上单元图中的第i个子图及第i个子权值自SRAM 308广播至多个处理器核306至少其中之一的NRAM 431与WRAM 432中。
在步骤1205中,根据第i个子图及第i个子权值,计算第i个中间结果,同时,将片上单元图中的第i+1个子图自乒存储单元703广播至NRAM 431中。由于第i个子权值已被载入至WRAM 432中,权值存储单元702的空间可以被释放出来,因此在同一时间,亦将权值中的第i+1个子权值(对应第i+1个子图)自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在步骤1206中,在获得第i个中间结果后,将第i+1个子权值自权值存储单元702广播至WRAM 432中,由于WRAM 432也是一整块的存储空间,因此第i个子权值同样被第i+1个子权值所覆盖。
在步骤1207中,将第i个中间结果存回至乒存储单元703中,同一时间,根据第i+1个子图及第i+1个子权值,计算第i+1个中间结果,将第i+2个子图自SRAM 308广播至NRAM431中,并将权值中的第i+2个子权值(对应第i+2个子图)自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在步骤1208中,在获得第i+1个中间结果后,将第i+2个子权值自权值存储单元702广播至WRAM 432中,WRAM 432中的第i+1个子权值同样被第i+2个子权值所覆盖。
当计算装置201具有如图7B的存储空间配置时,步骤1202更包括如图13所示的步骤。
在步骤1301中,将第i个子图广播至NRAM 431,亦将第i个子权值广播至第一存储空间705中。
在步骤1302中,根据第i个子图及第i个子权值,计算第i个中间结果,同时,将片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中,亦将第i+1个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i个子权值被第i+1个子权值所覆盖。
在步骤1303中,不论第i个中间结果是否计算完毕,将第i+1个子权值自权值存储单元702广播至第二存储空间706,由于第i个子权值存储在第一存储空间705中,因此不会被第i+1个子权值所覆盖,不至于影响第一计算结果的正确性。
在步骤1304中,将第i个中间结果存回至乒存储单元703中,同一时间,根据第i+1个子图及第i+1个子权值,计算第i+1个中间结果,且将第i+2个子图自SRAM 308广播至NRAM431中,以及将第i+2个子权值自DRAM 204载入至权值存储单元702中,权值存储单元702中的第i+1个子权值被第i+2个子权值所覆盖。
在步骤1305中,不论第i+1个中间结果是否计算完毕,将第i+2个子权值自权值存储单元702广播至第三存储空间707中,第i+1个子权值未被覆盖,不至于影响第二计算结果的正确性。
图14示出另一实施例的两层三级流水线的流程图,其计算装置201具有如图7C的存储空间配置。在步骤1401中,载入第j个片上单元图及第j个权值。在步骤1402中,同步计算第j个片上单元图并产生第j个计算结果,及载入第j+1个片上单元图。在步骤1403中,同步存回第j个计算结果、计算第j+1个片上单元图并产生第j+1个计算结果、及载入第j+2个片上单元图。步骤1402更包括以下步骤。
在步骤1404中,将第j个片上单元图中的第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中。
在步骤1405中,根据第i个子图及第i个子权值,计算第i个中间结果,同时,将第i+1个子图自SRAM 308广播至NRAM 431中。
在步骤1406中,在获得第i个中间结果后,将第i+1个子权值自第二存储空间709广播至WRAM 432中,由于WRAM 432是一整块的存储空间,因此第i个子权值被第i+1个子权值所覆盖,
在步骤1407中,将第i个中间结果存回至乒存储单元703中,同一时间,根据第i+1个子图及第i+1个子权值,计算第i+1个中间结果,且将第i+2个子图自SRAM 308广播至NRAM431中。
在步骤1408中,在获得第i+1个中间结果后,将第i+2个子权值自第三存储空间710广播至WRAM 432中,WRAM 432中的第i+1个子权值被第i+2个子权值所覆盖。
当计算装置201具有如图7D的存储空间配置时,步骤1402更包括如图15所示的步骤。
在步骤1501中,将片上单元图中的第i个子图及第i个子权值自SRAM 308广播至NRAM 431与WRAM 432中。
在步骤1502中,根据第i个子图及第i个子权值,计算第i个中间结果,同时,将片上单元图中的第i+1个子图自SRAM 308广播至NRAM 431中。
在步骤1503中,不论第i个中间结果是否计算完毕,将第i+1个子权值自权值存储单元702广播至第二存储空间706。
在步骤1504中,将第i个中间结果存回至乒存储单元703中,并根据第i+1个子图及第i+1个子权值,计算第i+1个中间结果,再将第i+2个子图自SRAM 308广播至NRAM 431中。
在步骤1505中,不论第i+1个中间结果是否计算完毕,将第i+2个子权值自权值存储单元702广播至第三存储空间707中。
在图15的流程中,由于权值存储单元702与WRAM 432均被分割成多个存储空间,故此实施例可以一次性地将存储在权值存储单元702的子权值广播至WRAM 432中,存储在WRAM 432中的子权值各有存储空间,不会相互覆盖,因此并不会影响中间结果的计算。
本发明另一个实施例为一种计算机可读存储介质,其上存储有计算神经网络的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前述各实施例所披露的方法。
本发明基于片上系统-集群-处理器核的三级运算层次,以及DRAM-SRAM-NRAM/WRAM的三层内存设计,建立起两层三级流水线,支持多种载入/广播权值的方式,使得本领域技术人员可以依实际需要,选择减少输入/输出开销或是降低硬件空间需求的优势来运行神经网络模型,充分利用硬件资源,提升神经网络计算效率。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (23)
1.一种利用计算装置计算神经网络的方法,所述计算装置连接至片外内存,所述片外内存载有片上单元图及相对应的权值,所述计算装置包括多个集群,每个集群包括共享存储单元及多个处理器核,所述方法包括:
将所述片上单元图及所述权值中的第i个子权值自所述片外内存载入至所述共享存储单元中;其中,i取值为正整数;
将所述片上单元图中的第i个子图及所述第i个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i个子权值对应所述第i个子图;
根据所述第i个子图及所述第i个子权值,计算第i个中间结果;
将所述权值中的第i+1个子权值自所述片外内存载入至所述共享存储单元中;
将所述片上单元图中的第i+1个子图自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i+1个子权值对应所述第i+1个子图;以及
将所述第i+1个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一。
2.根据权利要求1所述的方法,其中在计算第i个中间结果的同时,同步执行所述载入所述第i+1个子权值的步骤。
3.根据权利要求2所述的方法,其中所述权值包括多个子权值,所述方法还包括:
识别所述多个子权值中存储空间的最大者;以及
根据所述多个子权值中存储空间的最大者,决定在所述共享存储单元中的权值存储空间的大小。
4.根据权利要求3所述的方法,其中所述第i+1个子权值在所述权值存储空间内覆盖所述第i个子权值。
5.根据权利要求1所述的方法,其中所述载入所述片上单元图及所述第i个子权值的步骤与所述载入第i+1个子权值的步骤同步执行。
6.根据权利要求5所述的方法,其中所述共享存储单元中的权值存储空间包括第一存储空间及第二存储空间,所述方法还包括:
存储所述第i个子权值至所述第一存储空间;以及
存储所述第i+1个子权值至所述第二存储空间。
7.根据权利要求1-6任一项所述的方法,其中所述广播所述第i+1个子权值的步骤与所述计算步骤同步执行。
8.根据权利要求7所述的方法,其中每个处理器核包括权值存储单元,所述权值存储单元包括第一存储空间及第二存储空间,所述方法还包括:
存储所述第i个子权值至所述第一存储空间;以及
存储所述第i+1个子权值至所述第二存储空间。
9.根据权利要求1-6任一项所述的方法,其中所述广播所述第i+1个子权值的步骤在所述计算步骤后执行。
10.根据权利要求9所述的方法,其中每个处理器核包括权值存储单元,所述方法还包括:
存储所述第i个子权值至所述权值存储单元;以及
存储所述第i+1个子权值至所述权值存储单元,以覆盖所述第i个子权值。
11.一种计算装置,连接至片外内存,所述片外内存载有片上单元图及相对应的权值,所述计算装置包括多个集群,每个集群包括:
共享存储单元;
直接内存访问模块,用以:
将所述片上单元图及所述权值中的第i个子权值自所述片外内存载入至所述共享存储单元中;以及
将所述权值中的第i+1个子权值自所述片外内存载入至所述共享存储单元中;
多个处理器核;以及
广播总线,用以:
将所述片上单元图中的第i个子图及所述第i个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一,其中所述第i个子权值对应所述第i个子图;
将所述片上单元图中的第i+1个子图自所述共享存储单元中广播至所述多个处理器核至少其中之一,所述第i+1个子权值对应所述第i+1个子图;
将所述第i+1个子权值自所述共享存储单元中广播至所述多个处理器核至少其中之一;
其中,所述多个处理器核至少其中之一根据所述第i个子图及所述第i个子权值,计算第i个中间结果。
12.根据权利要求11所述的计算装置,其中所述多个处理器核至少其中之一在计算所述第i个中间结果时,所述直接内存访问模块同步载入所述第i+1个子权值。
13.根据权利要求12所述的计算装置,其中所述权值包括多个子权值,所述计算装置根据所述多个子权值中存储空间的最大者,决定在所述共享存储单元中的权值存储空间的大小。
14.根据权利要求13所述的计算装置,其中所述第i+1个子权值在所述权值存储空间内覆盖所述第i个子权值。
15.根据权利要求12所述的计算装置,其中所述直接内存访问模块载入所述片上单元图及所述第i个子权值时,同步载入所述第i+1个子权值。
16.根据权利要求15所述的计算装置,其中所述共享存储单元中的权值存储空间包括:
第一存储空间,用以存储所述第i个子权值;以及
第二存储空间,用以存储所述第i+1个子权值。
17.根据权利要求11-16任一项所述的计算装置,其中所述多个处理器核至少其中之一计算所述第i个中间结果时,所述广播总线同步广播所述第i+1个子权值。
18.根据权利要求17所述的计算装置,其中每个处理器核包括权值存储单元,所述权值存储单元包括:
第一存储空间,用以存储所述第i个子权值;以及
第二存储空间,用以存储所述第i+1个子权值。
19.根据权利要求11-16任一项所述的计算装置,其中所述多个处理器核至少其中之一计算所述第i个中间结果后,所述广播总线广播所述第i+1个子权值。
20.根据权利要求19所述的计算装置,其中每个处理器核包括权值存储单元,用以存储所述第i个子权值及所述第i+1个子权值,所述第i+1个子权值覆盖所述第i个子权值。
21.一种集成电路装置,包括根据权利要求11-20的任意一项所述的计算装置。
22.一种板卡,包括根据权利要求21所述的集成电路装置。
23.一种计算机可读存储介质,其上存储有利用计算装置计算神经网络的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求1至10任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011566115.9A CN114692843A (zh) | 2020-12-25 | 2020-12-25 | 计算神经网络的装置、板卡、方法及可读存储介质 |
PCT/CN2021/141394 WO2022135600A1 (zh) | 2020-12-25 | 2021-12-25 | 计算神经网络的装置、板卡、方法及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011566115.9A CN114692843A (zh) | 2020-12-25 | 2020-12-25 | 计算神经网络的装置、板卡、方法及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692843A true CN114692843A (zh) | 2022-07-01 |
Family
ID=82130585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011566115.9A Pending CN114692843A (zh) | 2020-12-25 | 2020-12-25 | 计算神经网络的装置、板卡、方法及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114692843A (zh) |
WO (1) | WO2022135600A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229967B (zh) * | 2016-08-22 | 2021-06-15 | 赛灵思公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
US11119507B2 (en) * | 2018-06-27 | 2021-09-14 | Intel Corporation | Hardware accelerator for online estimation |
CN109784372B (zh) * | 2018-12-17 | 2020-11-13 | 北京理工大学 | 一种基于卷积神经网络的目标分类方法 |
CN111461296B (zh) * | 2018-12-29 | 2023-09-22 | 中科寒武纪科技股份有限公司 | 数据处理方法、电子设备和可读存储介质 |
CN110490302B (zh) * | 2019-08-12 | 2022-06-07 | 中科寒武纪科技股份有限公司 | 一种神经网络编译优化方法、装置以及相关产品 |
-
2020
- 2020-12-25 CN CN202011566115.9A patent/CN114692843A/zh active Pending
-
2021
- 2021-12-25 WO PCT/CN2021/141394 patent/WO2022135600A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022135600A1 (zh) | 2022-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN112799726A (zh) | 数据处理装置、方法及相关产品 | |
CN112633490A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114692843A (zh) | 计算神经网络的装置、板卡、方法及可读存储介质 | |
CN114282659A (zh) | 计算神经网络的装置、板卡、方法及可读存储介质 | |
CN113469337A (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN114330676A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN114330679A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114692837A (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
WO2022135599A1 (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
CN114330680A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN114330677A (zh) | 动态融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114330678A (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2022063217A1 (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2022063183A1 (zh) | 执行神经网络计算的装置、板卡、方法及可读存储介质 | |
CN114358262A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN114358264A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN114757327A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN115221103A (zh) | 计算装置、数据处理方法及相关产品 | |
CN114358263A (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 |