CN112100118B - 神经网络计算方法、装置和存储介质 - Google Patents
神经网络计算方法、装置和存储介质 Download PDFInfo
- Publication number
- CN112100118B CN112100118B CN202010776845.5A CN202010776845A CN112100118B CN 112100118 B CN112100118 B CN 112100118B CN 202010776845 A CN202010776845 A CN 202010776845A CN 112100118 B CN112100118 B CN 112100118B
- Authority
- CN
- China
- Prior art keywords
- data
- calculation
- neural network
- module
- cache module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本申请提供了一种神经网络计算方法、装置和存储介质,该方法包括:用片上缓存模块对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存;基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重定向操作,并输入到计算模块中;基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重定向操作,并输入到计算模块中;由计算模块基于重定向操作后的片外输入数据或中间计算结果数据以及经重定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到片上缓存模块中。本发明能克服现有计算架构与神经网络模型不匹配导致资源利用率低下的问题。
Description
技术领域
本申请涉及数据处理和人工智能技术领域,尤其涉及一种神经网络计算方法、装置和存储介质。
背景技术
随着人工智能算法的繁荣发展,其在很多方面的性能已经超过了人类的极限,如围棋对战,图像分类等。人工智能正在被广泛地应用于各行各业中,逐步地改变着人类生活的方方面面。
神经网络是一类非常重要的人工智能算法,已经有很多影响力较大的神经网络模型被提出,并实现了很好的应用效果,如2012年在大规模视觉识别挑战赛(ILSVRC,ImageNet Large Scale Visual Recognition Competition)中取得图像分类冠军的AlexNet,2014年提出的VGG和GoogLeNet,以及后来更复杂的ResNet等。这些模型的准确率和识别率越来越高,同时各神经网络模型规模也越来越大,所需计算量也急剧增加。神经网络模型分类性能优势主要来源于其复杂的数据处理模型和巨大的计算量。并且,神经网络模型仍朝着更加复杂和计算量更大化的方向展。若使用传统的通用处理器来实现神经网络模型,效率将变得非常低下,需要经过很长(通常需要几十分钟甚至几个小时)的计算时间才能得到不错的结果,无法满足实时性的要求。随着应用对实时性要求不断提高,使用硬件方案进行加速的需求变得越来越迫切。
现有的神经网络硬件加速方案,主要采用全定制的方案,根据给定神经网络模型计算模式,定制控制和数据通路。这种实现方案,往往仅能够支持一种特定的计算模式。但是,发明人发现,随着神经网络模型不同,其对应的最高效的计算模式差异非常大。当神经网络运算在一种低效率的计算模式下,硬件计算资源利用率低下,导致计算性能衰减严重。
发明人在进行神经网络算法的具体实现过程中发现:大部分神经网络模型都无法与现有的计算架构很好的匹配,导致真正计算过程中计算资源利用率极其低下,性能衰减严重。
如何解决上述随着神经网络模型不同导致计算资源利用率低下的问题,变得尤为迫切。
发明内容
有鉴于此,本发明提出了一种计算机软件定义的数据流驱动的神经网络计算方法和装置,以克服上述现有计算架构与神经网络模型不匹配导致资源利用率低下的问题。
本发明的一个方面提供一种数据流驱动的神经网络计算方法,该分法包括:
用片上缓存模块对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存;
基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作,并输入到计算模块中;
基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重新定向操作,并输入到计算模块中;
由所述计算模块基于重新定向操作后的片外输入数据或中间计算结果数据以及经重新定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到所述片上缓存模块中。
在一实施例中,所述计算模块包括多个基本处理单元,每个基本处理单元包括:局部寄存器,用于局部存储操作数据和/或结果数据;基本运算器,其包括以下基本运算器中的至少一种:乘法器、加法器和非线性操作器;以及控制器,其用于按照预定的运算模式控制所述局部寄存器中数据的存取以及所述基本运算器的运算操作。
在一实施例中,各基本处理单元按照最简元方式连接;并且各基本处理单元以一维或二维方式连接。
在一实施例中,所述片上缓存模块包括:第一片上缓存模块、第二片上缓存模块和第三片上缓存模块;所述第一片上缓存模块用于对片外输入数据进行缓存;所述第二片上缓存模块用于对神经网络计算参数数据进行缓存;所述第三片上缓存模块用于对神经网络计算中的中间计算结果数据进行缓存。
在一实施例中,所述第一片上缓存模块和所述第三片上缓存模块按照乒乓缓存方式工作;所述数据流重新定向操作包括以下操作中的至少一种:数据交叉、数据广播复制以及数据交换。
本发明的另一方面提供一种数据流驱动的神经网络计算装置,该装置包括:
片上缓存模块,其用于对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存;
第一重新定向模块,其基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作,并输入到计算模块中;
第二重新定向模块,其基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重新定向操作,并输入到计算模块中;
所述计算模块,其基于重新定向操作后的片外输入数据或中间计算结果数据以及经重新定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到所述片上缓存模块中。
在一实施例中,所述计算模块包括多个基本处理单元,每个基本处理单元包括:局部寄存器,用于局部存储操作数据和/或结果数据;基本运算器,其包括以下基本运算中的至少一种:乘法器、加法器和非线性操作器;以及控制器,其用于按照预定的运算模式控制所述局部寄存器中数据的存取以及所述基本运算器的运算操作。
在一实施例中,各基本处理单元以最简元方式连接;并且各基本处理单元以一维或二维方式连接。
在一实施例中,所述片上缓存模块包括:第一片上缓存模块、第二片上缓存模块和第三片上缓存模块;所述第一片上缓存模块用于对片外输入数据进行缓存;所述第二片上缓存模块用于对神经网络计算参数数据进行缓存;所述第三片上缓存模块用于对神经网络计算中的中间计算结果数据进行缓存。
在一实施例中,所述装置还包括:第三重定向模块,其用于将所述计算模块的中间计算结果进行重定向操作并缓存到所述第三片上缓存模块。
在一实施例中,所述第一片上缓存模块和所述第三片上缓存模块按照乒乓缓存方式工作;
所述第一重新定向模块和所述第二重新定向模块的数据流重新定向操作包括以下操作中的至少一种:数据交叉、数据广播复制以及数据交换。
在一实施例中,所述数据流驱动的神经网络计算装置为现场可编程门阵列FPGA芯片或专用集成电路ASIC芯片。
本发明另一方面还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前所述方法的步骤。
本发明实施例所所提供的方案可以根据具体的运算模式通过数据重定向模块进行数据映射,从而可以根据负载特性自由的调整映射方式,保证资源利率最大化,从而能够解决现有计算架构与神经网络模型不匹配导致资源利用率低下的问题。
此外,本发明实施例进一步地可以简化基本处理单元之间的连接,使其以最简元方式进行连接,因此各处理单元之间摆脱了彼此之间复杂数据交互的限制,但又不失一般的数据交互能力,从而获得了数据映射上的灵活性。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一实施例中软件定义的数据流驱动的神经网络计算架构示意图。
图2示出了本发明一实施例中各计算模块的处理单元的结构示意图。
图3示出了本发明一实施例中数据重定向模块的结构示意图。
图4示出了本发明一实施例中各计算模块的处理单元的一维连接方式示例。
图5示出了本发明一实施例中各计算模块的处理单元的二维连接方式示例。
图6示出了本发明另一实施例中各计算模块的处理单元的二维连接方式示例。
图7示出了本发明一实施例中卷积神经网络中一个简单卷积层计算的示例。
图8示出了本发明一实施例中一种可行的卷积层计算模式的实现方式。
图9示出了本发明一实施例中另一种可行的卷积层计算模式的实现方式。
图10示出了本发明一实施例中神经网络计算方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。术语“第一”、“第二”用来修饰特征、要素、步骤或组件时,仅用于将这些特征、要素、步骤或组件相区别,而非暗示他们的次序或顺序,除非上下文有明确表示。
在此,还需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合。
为了解决现有计算架构与神经网络模型不匹配导致资源利用率低下的问题,本发明的发明人发现需要赋予计算架构足够的灵活性,同时赋予软件开发人员一定调控能力,从而能够根据负载网络模型参数不同动态调整计算架构从而获得较高资源利用率。基于此,本发明提出了一种简化的计算架构,通过软件来定义数据流的流向,从而驱动出不同计算模式来解决上述问题。也即,本发明提出了一种软件定义的数据流驱动的神经网络计算方法和装置。
图1所示为本发明一实施例中软件定义的数据流驱动的神经网络计算架构(计算装置)示意图,该装置例如可由现场可编程门阵列FPGA芯片或专用集成电路ASIC芯片来实现,但并不限于此。如图1所示,该装置可包括:片上缓存模块、数据流重定向模块和计算模块40。
其中,片上缓存模块用于对片外(即芯片外部)输入的数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存,此外,片上缓存模块还可以对神经网络计算中的最终计算结果数据进行缓存。
数据流重定向模块用于基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作,以及将缓存的神经网络计算参数数据进行数据流重新定向操作,并将重定向后的数据输入到计算模块中。可通过软件配置控制该模块,使得该模块可根据计算模式的要求,将缓存的片外输入数据(和/或中间计算结果数据)以及神经网络计算参数数据分别按照所需格式进行重定向,并输送到计算模块中进行计算。可选地,在本发明另一实施例中,重定向模块还可根据后续计算对数据格式的要求,对计算模块输出的计算结果数据进行重定向,并以特定格式存到数据片上缓存模块中,以便后续计算读取使用。
在图1所示的示例中,片上缓存模块可包括:第一片上缓存模块(或称第一片上缓存器)110、第二片上缓存模块(或称第二片上缓存器)210和第三片上缓存模块(或称第一片上缓存器)310。此外,数据流重定向模块可以包括第一数据流重定向模块(可简称第一重定向模块)120和第二数据流重定向模块(可简称第二重定向模块)220。此外,还可包括第三数据流重定向模块(可简称第三重定向模块)320。
第一片上缓存模块110用于对片外输入数据或中间计算产生的数据进行缓存,以方便由计算模块进行读取,该缓存的数据可以被多次读取复用。第一重定向模块120通过软件配置来基于预定的神经网络计算模式将缓存在第一片上缓存模块110中的数据进行数据流重新定向操作,输入到计算模块40对应的处理单元中。
第二片上缓存模块210用于将片外存储的神经网络计算参数数据进行缓存,以方便由计算模块进行读取,该缓存的数据可以被多次读取复用。第二重定向模块220通过软件配置来基于预定的神经网络计算模式将缓存在第二片上缓存模块210上的神经网络计算参数数据进行数据流重新定向操作,输入到计算模块40对应的处理单元中。
计算模块40从第一片上缓存模块110和第二片上缓存模块210中读取数据,基于重新定向操作后的片外输入数据(和/或中间计算结果数据)以及经重新定向操作后的神经网络计算参数数据按照预定的运算算法进行神经网络计算,并将计算结果缓存到第三片上缓存模块310中。
第三片上缓存模块310用于将神经网络计算产生的结果数据进行缓存,以方便后续计算使用,从而减少与片外存储器进行数据交互,从而降低带宽需求。第三重定向模块320通过软件配置来进行控制,从而可根据本次计算与后续计算的数据映射关系要求,将计算模块产生的结果数据进行重定向,以按照重定向后的数据顺序存到第三片上缓存模块310中,以便后续计算读取使用。
在一些实施例中,第一片上缓存模块110和第三片上缓存模块310通常以乒乓缓存的方式工作。在本发明另一些实施例中,三个片上缓存模块110、210、310可以合并为一个大的缓存模块,只要能实现上述缓存片外输入数据(和/或中间结果数据)、计算参数数据和计算结果数据的功能即可。
同样,在本发明另一实施例中,三个重定向模块120、220、320也可以合并为一个重定向模块,以基于计算对应的数据映射关系进行数据的重定向。
在本发明实施例中,数据流重定向模块进行的重定向操作通常包括以下操作中的至少一种:数据交叉、数据复制广播和/或数据交换等。图3所示的示例中,上半部分为数据交叉的示例,下半部分为数据复制广播的示例,即由一个单元向多个单元进行广播。
在本发明一些实施例中,计算模块40可包括多个基本处理单元,每个基本处理单元可包括:基本运算器和控制器。
基本运算器包括以下基本运算器中的至少一种:诸如乘法器和/或加法器之类的线性操作器和非线性操作器,非线性操作器诸如指数运算器和对数运算器等,但并不限于此。基本运算器用于完成一些基本的数学线性运算和非线性运算。
控制器用于按照预定的运算模式控制基本运算器的运算操作。
此外,如图2所示,每个基本处理单元还可包括一个或多个局部寄存器,其用于局部存储操作数据和/或结果数据,此处,操作数据可以是诸如片外输入数据和/或计算参数数据之类的运算数据。
在一些实施例中,各基本处理单元可按最简元方式连接,此处,最简元方式连接是指神经网络计算过程中不同计算模式共同使用的基本运算操作所对应的连接方式,如向量相乘、相加,各处理单元中加法器可以连接成加法树的形式。最简元连接方式通常需视优化计算的具体粒度而定。本发明实施例中,各基本处理单元可以一维或二维方式连接,如图4-图6所示,其中,图4为各基本处理单元以一维方式连接的一种示例情况,图5为各基本处理单元以二维方式连接的一种示例情况,其中每行的基本处理单元顺次连接,不同行的基本处理单元之间无连接。图6为各基本处理单元以二维方式连接的另一种示例情况,其中,不同行的基本处理单元按照预定计算模式连接,该预定的计算模式可以是从预先设置的多种计算模式中选择的一种,其可以灵活地被修改为预先设置的多种计算模式中的另外一种。
处理单元之间以最简元连接方式连接之后,各处理单元可获得足够灵活性,之后可通过数据流重定向来实现多种复杂运算。
本发明实施例所所提供的架构可以根据具体的运算模式通过数据重定向模块向处理单元进行数据映射,从而可以根据负载特性自由的调整映射方式,保证资源利率最大化,从而能够解决现有计算架构与神经网络模型不匹配导致资源利用率低下的问题。
进一步地,与现有技术相比,本实发明所提供的架构大大简化了处理单元之间的连接,使其以最简元方式进行连接,因此各处理单元之间摆脱了彼此之间复杂数据交互的限制,但又不失一般的数据交互能力,从而获得了数据映射上的灵活性,可以根据具体的运算模式通过数据重定向模块进行数据映射,从而可以根据负载特性自由的调整映射方式,保证资源利率最大化。
下面以图7所示的卷积神经网络中一个简单卷积层为例,并结合说明书中其他附图对本发明实施例的数据流驱动的神经网络计算架构和方法作进一步详细描述。
本实施例中,第一片上缓存模块110被配置为输入特征图像数据元素的缓存区。即,片外输入数据为输入特征图像数据(如图7中的输入特征图像1和输入特征图像2),其首先缓存在该第一片上缓存模块110中,等待第一数据重定向模块120读取然后将数据传递给计算模块的处理单元进行相应的计算。该第一片上缓存模块110主要有两个作用:1)应对计算模块的处理速度与外部输入数据速度之间的差异,缓存在此模块中的数据可以被多次复用,通过数据复用来减少外部数据读取带宽;2)以计算模式所需数据形式对阵列数据进行逻辑分组存储,从而可以方便第一数据重定向模块120进行读取分组,从而及时充足的为计算模块的处理单元提供每次计算所需数据。
类似的,本实施例中,第二片上缓存模块210被配置为卷积核参数数据元素的缓冲区。即,神经网络计算参数数据为卷积核参数数据(如图7中的卷积核11,卷积核12,卷积核21,卷积核22),其缓存在该第二片上缓存模块210中,等待第二数据重定向模块220读取然后按照预定的计算模式将数据传递给计算模块40的相应处理单元进行相应的计算。第二片上缓存模块210的作用与第一片上缓存模块110类似。
本发明实施例的计算模块中,各个基本处理单元以2维的方式进行连接,例如形成4×4的二维的基本处理单元阵列,每一行的基本处理单元相连接,在此,4×4仅为示例。每个基本处理单元中可包含一个乘法器、一个加法器、一个输入特征图像数据寄存器、一个卷积核参数数据寄存器以及一个控制单元。上述输入特征图像数据寄存器用来缓存从第一数据重定向模块120发送来的特征图像数据,方便乘法器进行处理。上述卷积核参数数据寄存器用来缓存从第二数据重定向模块220发送来的卷积核参数,方便乘法器进行处理。上述控制单元可包含两个状态机,分别控制特征图像数据寄存器和卷积核参数数据寄存器的读取。上述两个状态机可由上位主机根据具体的计算模式进行配置。每行处理单元中的加法器连接成一个加法树,对各个乘法器的结果进行相加集成,完成一次卷积操作,从而生成输出特征图像,如图7中的输出特征图像1’和2’。
进一步地,图8和图9分别列出了图7所示卷积层的两种计算模式。
对于图8所示计算模式,两幅输入特征图像1和2已缓存在第一片上缓存模块110中,四幅卷积核参数已经缓存在第二片上缓存模块210中。在每个时钟周期,第一数据重定向模块120从第一片上缓存模块110中分别读取两幅输入特征图像中各一个数据元素,传送到计算模块的处理单元中,第二数据重定向模块220从第二片上缓存模块210中分别读取四幅卷积核参数中对应参数元素,并传送(定向)到相应的处理单元中。例如,在第一时钟周期,第一数据重定向模块120从第一片上缓存模块110中分别读取两幅输入特征图像中第一个数据元素传送到计算模块的预定处理单元中;第二数据重定向模块220从第二片上缓存模块210中分别读取四幅卷积核参数中第一个数据元素,并传送到相应的处理单元中。然后,计算模块中,各处理单元分别完成其计算。即,在第一时钟周期,将第一幅特征图像中的第一个数据元素“1”与第一幅卷积核参数中第一个数据元素“1”在第一行第一个处理单元中进行乘法计算;将第二幅特征图像中的第一个数据元素“-1”与第二幅卷积核参数中第一个数据元素“0”在第一行第二个处理单元中进行乘法计算;将第一幅特征图像中的第一个数据元素“1”与第三幅卷积核参数中第一个数据元素“0”在第二行第一个处理单元中进行乘法计算;将第二幅特征图像中的第一个数据元素“-1”与第四幅卷积核参数中第一个数据元素“0”在第二行第二个处理单元中进行乘法计算。类似地,在第二时钟周期,将第一幅特征图像中的第二个数据元素“2”与第一幅卷积核参数中第二个数据元素“0”在第一行第一个处理单元中进行乘法计算;将第二幅特征图像中的第二个数据元素“-2”与第二幅卷积核参数中第二个数据元素“1”在第一行第二个处理单元中进行乘法计算;将第一幅特征图像中的第二个数据元素“2”与第三幅卷积核参数中第一个数据元素“0”在第二行第一个处理单元中进行乘法计算;将第二幅特征图像中的第二个数据元素“-2”与第四幅卷积核参数中第二个数据元素“0”在第二行第二个处理单元中进行乘法计算。后面依次类推。
最后,各行处理单元结果进行集成,并通过第三数据重定向单元32按照预定顺序输出(即定向)到第三片上缓存模块310中。在进行下一层计算时,第一片上缓存模块110与第三片上缓存模块310的角色可进行互换,从而减少数据搬移。具体的计算如图8所示,可以发现,每行处理单元可以完成部分卷积操作,其结果分别输出不同的输出特征图像。同时,可以发现,对于这种计算模式计算资源利用率仅为25%。
对于图9所示的计算模式,两幅输入特征图像1和2已经缓存在第一片上缓存模块110中,四幅卷积核参数已经缓存在第二片上缓存模块210中。在每个时钟周期,第一数据重定向模块120从第一片上缓存模块110中分别读取特征图像1中属于2个卷积窗口的数据元素,传送(定向)到计算模块的预定处理单元中,第二数据重定向模块220从第二片上缓存模块210中分别读取两幅输入特征图像对应的2幅卷积核参数,并传送(定向)到计算模块的相应处理单元中。然后,计算模块中,各处理单元分别完成其计算。例如,在第一时钟周期,将第一幅特征图像中属于第一个卷积窗口的数据元素与第一幅卷积核参数在第一行的4个处理单元中进行卷积计算;将第一幅特征图像中属于第二个卷积窗口的数据元素与第一幅卷积核参数在第二行的4个处理单元中进行乘法计算;将第一幅特征图像中属于第一个卷积窗口的数据元素与第三幅卷积核参数在第三行的4个处理单元中进行乘法计算;将第一幅特征图像中属于第二个卷积窗口的数据元素与第三幅卷积核参数在第四行的4个处理单元中进行乘法计算。类似地,在第二时钟周期,将第一幅特征图像中属于第三个卷积窗口的数据元素与第一幅卷积核参数在第一行的4个处理单元中进行卷积计算;将第一幅特征图像中属于第四个卷积窗口的数据元素与第一幅卷积核参数在第二行的4个处理单元中进行乘法计算;将第一幅特征图像中属于第三个卷积窗口的数据元素与第三幅卷积核参数在第三行的4个处理单元中进行乘法计算;将第一幅特征图像中属于第四个卷积窗口的数据元素与第三幅卷积核参数在第四行的4个处理单元中进行乘法计算。在后面的时钟周期依次进行该层剩下的卷积计算。
各行处理单元结果进行集成后,并通过第三数据重定向单元32按照预定顺序输出到第三片上缓存模块310中。在进行下一层计算时,第一片上缓存模块110与第三片上缓存模块310角色进行互换,从而减少数据搬移。具体的计算如图9所示,可以发现,每行处理单元可以完成每个输出元素对应输入特征图像1中单个卷积窗口中的所有操作,并且不同处理单元行输出既有属于同一输出特征图像又有属于不同输出特征图像的。同时,可以发现,对于这种计算模式计算资源可以充分被利用,利用率达100%。
基于如前描述的神经网络计算装置示意图,本发明还提供了一种神经网络计算方法,如图10所示,该方法包括以下步骤:
步骤S110,用片上缓存模块对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存。
其中,片上缓存模块可包括:第一片上缓存模块、第二片上缓存模块和第三片上缓存模块;第一片上缓存模块用于对片外输入数据进行缓存;第二片上缓存模块用于对神经网络计算参数数据进行缓存;第三片上缓存模块用于对神经网络计算中的中间计算结果数据进行缓存。
步骤S120,基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作,并输入到计算模块中。
更具体地,计算模块可包括多个基本处理单元,每个基本处理单元包括:局部寄存器、基本运算器和控制器。局部寄存器用于局部存储操作数据和/或结果数据;基本运算器包括以下基本运算器中的至少一种:诸如乘法器和/或加法器之类的线性操作器和非线性操作器;控制器其用于按照预定的运算模式控制所述局部寄存器中数据的存取以及基本运算器的运算操作。
作为示例,各基本处理单元可按照最简元方式连接,且各基本处理单元以一维或二维方式连接。
步骤S130,基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重新定向操作,并输入到计算模块中。
其中,数据流重新定向操作包括以下操作中的至少一种:数据交叉、数据广播复制以及数据交换。
步骤S140,由计算模块基于重新定向操作后的片外输入数据或中间计算结果数据以及经重新定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到片上缓存模块中。
更具体地,将中间计算结果缓存到所述片上缓存模块中的步骤可包括:将中间计算结果进行重定向操作并缓存到所述第三片上缓存模块中。
本发明申请实施例在不改变计算架构组织方式的基础上,可以通过软件配置的方式,来改变对计算模块数据流的供应,从而改变具体的计算模式,实现了计算资源的充分利用,大大提高整个系统的计算性能和能效比。
本领域内的技术人员应明白,本申请的实施例可提供方法、计算机程序产品和计算机存储介质。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所付权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种神经网络计算方法,其特征在于,该方法包括以下步骤:
用片上缓存模块对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存;
基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作以根据负载特性调整数据映射方式,并输入到计算模块中;
基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重新定向操作以根据负载特性调整数据映射方式,并输入到所述计算模块中,所述计算模块包括多个基本处理单元,每个基本处理单元包括:基本运算器和控制器,所述控制器用于按照预定的运算模式控制基本运算器的运算操作;各基本处理单元按照最简元方式以二维方式连接,不同行的基本处理单元按照从预先设置的多种计算模式中选择的一种预定计算模式对应的连接方式连接;
由所述计算模块基于重新定向操作后的片外输入数据或中间计算结果数据以及经重新定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到所述片上缓存模块中。
2.根据权利要求1所述的方法,其特征在于,每个基本处理单元还包括:局部寄存器,用于局部存储操作数据和/或结果数据;
每个基本处理单元的基本运算器包括以下基本运算器中的至少一种:乘法器、加法器和非线性操作器;
每个基本处理单元的控制器用于按照预定的运算模式控制所述局部寄存器中数据的存取以及所述基本运算器的运算操作。
3.根据权利要求1所述的方法,其特征在于,所述片上缓存模块包括:第一片上缓存模块、第二片上缓存模块和第三片上缓存模块;
所述第一片上缓存模块用于对片外输入数据进行缓存;
所述第二片上缓存模块用于对神经网络计算参数数据进行缓存;
所述第三片上缓存模块用于对神经网络计算中的中间计算结果数据进行缓存。
4.根据权利要求3所述的方法,其特征在于:
所述第一片上缓存模块和所述第三片上缓存模块按照乒乓缓存方式工作;
所述数据流重新定向操作包括以下操作中的至少一种:数据交叉、数据广播复制以及数据交换。
5.根据权利要求3所述的方法,其特征在于,所述将中间计算结果缓存到所述片上缓存模块中的步骤包括:
将中间计算结果进行重定向操作并缓存到所述第三片上缓存模块中。
6.一种神经网络计算装置,该装置包括:
片上缓存模块,其用于对片外输入数据、神经网络计算参数数据以及神经网络计算中的中间计算结果数据进行缓存;
第一重定向模块,其基于预定的神经网络计算模式将缓存的片外输入数据或中间计算结果数据进行数据流重新定向操作以根据负载特性调整数据映射方式,并输入到计算模块中;
第二重定向模块,其基于预定的神经网络计算模式将缓存的神经网络计算参数数据进行数据流重新定向操作以根据负载特性调整数据映射方式,并输入到所述计算模块中;
所述计算模块,其基于重新定向操作后的片外输入数据或中间计算结果数据以及经重新定向操作后的神经网络计算参数数据按照预定的运算模式进行神经网络计算,并将中间计算结果缓存到所述片上缓存模块中,所述计算模块包括多个基本处理单元,每个基本处理单元包括:基本运算器和控制器,所述控制器用于按照预定的运算模式控制基本运算器的运算操作;各基本处理单元按照最简元方式以二维方式连接,不同行的基本处理单元按照从预先设置的多种计算模式中选择的一种预定计算模式对应的连接方式连接。
7.根据权利要求6所述的装置,其特征在于:
每个基本处理单元还包括:局部寄存器,用于局部存储操作数据和/或结果数据;
每个基本处理单元的基本运算器包括以下基本运算器中的至少一种:乘法器、加法器和非线性操作器;以及
每个基本处理单元的控制器用于按照预定的运算模式控制所述局部寄存器中数据的存取以及所述基本运算器的运算操作。
8.根据权利要求6所述的装置,其特征在于:
所述片上缓存模块包括:第一片上缓存模块、第二片上缓存模块和第三片上缓存模块;
所述第一片上缓存模块用于对片外输入数据进行缓存;
所述第二片上缓存模块用于对神经网络计算参数数据进行缓存;
所述第三片上缓存模块用于对神经网络计算中的中间计算结果数据进行缓存。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三重定向模块,其用于将所述计算模块的中间计算结果进行重定向操作并缓存到所述第三片上缓存模块。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
所述第一片上缓存模块和所述第三片上缓存模块按照乒乓缓存方式工作;
所述第一重定向模块和所述第二重定向模块的数据流重新定向操作包括以下操作中的至少一种:数据交叉、数据广播复制以及数据交换。
11.根据权利要求6所述的装置,其特征在于,所述神经网络计算装置为现场可编程门阵列FPGA芯片或专用集成电路ASIC芯片。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776845.5A CN112100118B (zh) | 2020-08-05 | 2020-08-05 | 神经网络计算方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776845.5A CN112100118B (zh) | 2020-08-05 | 2020-08-05 | 神经网络计算方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100118A CN112100118A (zh) | 2020-12-18 |
CN112100118B true CN112100118B (zh) | 2021-09-10 |
Family
ID=73750328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010776845.5A Active CN112100118B (zh) | 2020-08-05 | 2020-08-05 | 神经网络计算方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100118B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076135B (zh) * | 2021-04-06 | 2023-12-26 | 谷芯(广州)技术有限公司 | 一种针对专用指令集处理器的逻辑资源共享方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275393B2 (en) * | 2015-10-08 | 2019-04-30 | Via Alliance Semiconductor Co., Ltd. | Tri-configuration neural network unit |
CN107609641B (zh) * | 2017-08-30 | 2020-07-03 | 清华大学 | 稀疏神经网络架构及其实现方法 |
CN108182471B (zh) * | 2018-01-24 | 2022-02-15 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
WO2020034079A1 (zh) * | 2018-08-14 | 2020-02-20 | 深圳市大疆创新科技有限公司 | 基于脉动阵列的神经网络处理装置 |
CN109886400B (zh) * | 2019-02-19 | 2020-11-27 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN110516801B (zh) * | 2019-08-05 | 2022-04-22 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器 |
CN110991630A (zh) * | 2019-11-10 | 2020-04-10 | 天津大学 | 一种面向边缘计算的卷积神经网络处理器 |
US20200134417A1 (en) * | 2019-12-24 | 2020-04-30 | Intel Corporation | Configurable processor element arrays for implementing convolutional neural networks |
-
2020
- 2020-08-05 CN CN202010776845.5A patent/CN112100118B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
Also Published As
Publication number | Publication date |
---|---|
CN112100118A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Efficient long-range attention network for image super-resolution | |
US11531540B2 (en) | Processing apparatus and processing method with dynamically configurable operation bit width | |
Yu et al. | Path-restore: Learning network path selection for image restoration | |
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
US10846591B2 (en) | Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks | |
Wang et al. | Multi-scale dilated convolution of convolutional neural network for image denoising | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN107797962B (zh) | 基于神经网络的计算阵列 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN111310904A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
EP3564863B1 (en) | Apparatus for executing lstm neural network operation, and operational method | |
CN105681628A (zh) | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 | |
CN117933327A (zh) | 处理装置、处理方法、芯片及电子装置 | |
CN112860320A (zh) | 基于risc-v指令集进行数据处理的方法、系统、设备及介质 | |
Wu et al. | A flexible and efficient FPGA accelerator for various large-scale and lightweight CNNs | |
EP3388981B1 (en) | Convolutional processing system | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
EP4379607A1 (en) | Neural network accelerator, and data processing method for neural network accelerator | |
CN109754062A (zh) | 卷积扩展指令的执行方法以及相关产品 | |
CN112100118B (zh) | 神经网络计算方法、装置和存储介质 | |
CN115803754A (zh) | 用于在神经网络中处理数据的硬件架构 | |
CN109146065A (zh) | 二维数据的卷积运算方法及装置 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
CN115345285B (zh) | 基于gpu的时序图神经网络训练方法、系统及电子设备 | |
Hu et al. | Data optimization cnn accelerator design on fpga |
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 |