CN112036545A - 基于数据流的分块计算方法、系统、设备和存储介质 - Google Patents

基于数据流的分块计算方法、系统、设备和存储介质 Download PDF

Info

Publication number
CN112036545A
CN112036545A CN202010837168.3A CN202010837168A CN112036545A CN 112036545 A CN112036545 A CN 112036545A CN 202010837168 A CN202010837168 A CN 202010837168A CN 112036545 A CN112036545 A CN 112036545A
Authority
CN
China
Prior art keywords
original
feature map
block
input feature
neural network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010837168.3A
Other languages
English (en)
Inventor
郭理源
黄炯凯
蔡权雄
牛昕宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Corerain Technologies Co Ltd
Original Assignee
Shenzhen Corerain Technologies Co Ltd
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 Shenzhen Corerain Technologies Co Ltd filed Critical Shenzhen Corerain Technologies Co Ltd
Priority to CN202010837168.3A priority Critical patent/CN112036545A/zh
Publication of CN112036545A publication Critical patent/CN112036545A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本发明实施例公开了一种基于数据流的分块计算方法、系统、设备和存储介质。该方法包括:判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。本发明实施例实现了输入特征图过大时,提高基于数据流架构的神经网络计算效率。

Description

基于数据流的分块计算方法、系统、设备和存储介质
技术领域
本发明实施例涉及神经网络技术,尤其涉及一种基于数据流的分块计算方法、系统、设备和存储介质。
背景技术
随着计算机的快速发展,神经网络数据的计算越来越重要。神经网络的计算需要大量的数据。传统的指令集架构要经过几个阶段才能完成一次完整操作,取指令阶段,指令译码阶段,执行指令阶段,访存取数阶段,结果写回阶段,整个过程效率极低,而数据流架构是根据数据的不断流动完成整个计算过程,其中没有指令集的参与。和指令集架构相比,数据流架构可以最大化芯片的性能和效率,但是因为数据流架构要求时刻有数据在流动,因此对存储、总线和带宽提出了严格的需求。
数据流架构依赖神经网络计算引擎在计算之前,需要通过直接内存存取器(DMA)把某一层的输入特征图放在片内的数据缓存器(data buffer),再让神经网络计算引擎开始计算。
但是由于硬件资源的限制,对于输入特征图太大的计算层,神经网络计算引擎中的数据缓存器无法将其全部装载进去,十分影响数据流架构的计算效率。
发明内容
本发明实施例提供一种基于数据流的分块计算方法、系统、设备和存储介质,以实现输入特征图过大时,提高基于数据流架构的神经网络计算效率。
为达此目的,本发明实施例提供了一种基于数据流的分块计算方法,该方法包括:
判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
进一步的,所述对所述待计算输入特征图进行分块之前包括:
将所述待计算输入特征图的转换为三维矩阵,所述三维矩阵包括多个原始块。
进一步的,所述对所述待计算输入特征图进行分块包括:
沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块。
进一步的,所述沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块包括:
获取每个所述原始块的尺寸;
根据每个所述原始块的尺寸计算每个所述原始块的高度或长度;
确定每个所述原始块之间的重叠部分;
根据所述重叠部分每个所述原始块的高度或长度确定所述原始块分块后的分块后原始块的数量;
根据所述分块后原始块的数量对所述原始块进行分块。
进一步的,所述沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块之后包括:
更新所述分块后原始块的参数信息。
进一步的,所述更新所述分块后原始块的参数信息包括:
根据所述分块后原始块的数量计算所述分块后原始块的参数信息;
将分块后原始块的参数信息转换为寄存器信息以配置给每个所述分块后原始块和所述神经网络计算引擎中的直接内存存取器。
进一步的,所述神经网络计算引擎的计算过程包括卷积、池化、卷积叠加池化、去卷积、膨胀卷积、数据复制和双线性上采样。
一方面,本发明实施例还提供了一种基于数据流的分块计算系统,该系统包括:
判断模块,用于判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
分块模块,用于若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
计算模块,用于驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
另一方面,本发明实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例提供的方法。
又一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例提供的方法。
本发明实施例通过判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图,解决了对于输入特征图太大的计算层,神经网络计算引擎中的数据缓存器无法将其全部装载进去,十分影响数据流架构的计算效率的问题,实现了输入特征图过大时,提高基于数据流架构的神经网络计算效率的效果。
附图说明
图1是本发明实施例一提供的基于数据流的分块计算方法的流程示意图;
图2是本发明实施例二提供的基于数据流的分块计算方法的流程示意图;
图3是本发明实施例二提供输入特征图的三维矩阵的结构示意图;
图4是本发明实施例二提供的步骤S230的流程示意图;
图5是本发明实施例二提供的采用卷积或池化算法时原始块的结构示意图;
图6是本发明实施例二提供的采用卷积或池化算法时原始块的结构示意图;
图7a是本发明实施例二提供的采用卷积叠加池化算法时卷积过程中原始块的结构示意图;
图7b是本发明实施例二提供的采用卷积叠加池化算法时池化过程中原始块的结构示意图;
图7c是本发明实施例二提供的采用卷积叠加池化算法时输出的分块后原始块的结构示意图;
图8a是本发明实施例二提供的采用去卷积算法时原始块的结构示意图;
图8b是本发明实施例二提供的采用去卷积算法时输出的分块后原始块的结构示意图;
图9a是本发明实施例二提供的采用膨胀卷积算法时原始块的结构示意图;
图9b是本发明实施例二提供的采用膨胀卷积算法时输出的分块后原始块的结构示意图;
图10a是本发明实施例二提供的采用双线性上采样算法时没有设置抵消值原始块的结构示意图;
图10b是本发明实施例二提供的采用双线性上采样算法时设置了抵消值原始块的结构示意图;
图11a是本发明实施例二提供的采用数据复算法时没有设置抵消值原始块的结构示意图;
图11b是本发明实施例二提供的采用数据复算法时设置了抵消值原始块的结构示意图;
图12是本发明实施例三提供的基于数据流的分块计算系统的结构示意图;
图13为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一模块称为第二模块,且类似地,可将第二模块称为第一模块。第一模块和第二模块两者都是模块,但其不是同一模块。术语“第一”、“第二”等不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明实施例的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
如图1所示,本发明实施例一提供了一种基于数据流的分块计算方法、系统、设备和存储介质,该方法包括:
S110、判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图。
S120、若缓存器不能存下待计算输入特征图,对待计算输入特征图进行分块。
本实施例中,在基于数据流架构的神经网络的计算开始之前,需要判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图。其中,待计算输入特征图包括多层的输入特征图,判断时为逐层判断,若当前层的输入特征图缓存器可以存下,则不需要进行分块处理,若下一层的输入特征图缓存下不能存下,则说明需要对该层的输入特征图进行分块处理,直至待计算输入特征图的所有层的输入特征图判断完毕。
S130、驱动神经网络计算引擎计算分块后的待计算输入特征图以得到输出特征图。
本实施例中,在一层的输入特征图判断完毕后,若不需要分块处理,则直接驱动神经网络计算引擎计算该层的输入特征图以得到输出特征图,在下一层的输入特征图判断完毕后,若需要分块处理,则分块处理后再驱动神经网络计算引擎计算该层的输入特征图以得到输出特征图。因数据流架构中的神经网络计算是连续的,每一层的输入特征图经过判断后,若需要分块处理则分块处理后直接进行计算,若不需要分块处理则直接进行计算,在该层的输入特征图进行计算的同时,判断下一层的输入特征图是否需要分块处理,使得整个计算过程是连续的,即使存在缓存器无法存下的输入特征图,也可以使数据流架构得到实现。需要说明的是,分块后的输入特征图相当于增加了输入特征图的层数,神经网络计算引擎或其他硬件并不感知,不会增加硬件消耗。
本发明实施例通过判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图,解决了对于输入特征图太大的计算层,神经网络计算引擎中的数据缓存器无法将其全部装载进去,十分影响数据流架构的计算效率的问题,实现了输入特征图过大时,提高基于数据流架构的神经网络计算效率的效果。
实施例二
如图2所示,本发明实施例二提供了一种基于数据流的分块计算方法、系统、设备和存储介质,本发明实施例二是在本发明实施例一的基础上进一步的说明解释,该方法包括:
S210、判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图。
S220、若缓存器不能存下待计算输入特征图,将待计算输入特征图的转换为三维矩阵,三维矩阵包括多个原始块。
S230、沿三维矩阵的高度方向或长度方向对三维矩阵的原始块进行分块。
本实施例中,如图3所示,对待计算输入特征图进行分块时,首先需要将待计算输入特征图的转换为三维矩阵,其中,三维矩阵包括多个原始块,该三维矩阵包括三个方向,分别为长度(Channel)方向10、高度(Height)方向20和宽度(Width)方向30,由于待计算输入特征图的数据在缓存器里面按照Height-Width-Channel的顺序排列,即按照高度方向20-宽度方向30-长度方向10的顺序排列,实际情况下大部分待计算输入特征图主要采用高度方向20切割分块,某些情况采用长度方向10切割分块。
具体的,得到待计算输入特征图中当前层输入特征图的特征矩阵后,沿三维矩阵的高度方向20或长度方向10对三维矩阵的原始块进行分块,得到分块后原始块,即完成了对当前层输入特征图进行分块,进入计算阶段,然后同时判断下一层的输入特征图是否需要分块,需要则将下一层的输入特征图转换为三维矩阵,并进行分块处理,得到分块后原始块,直至将待计算输入特征图中全部需要进行分块的输入特征图完成分块处理,每一层的输入特征图分块处理后立即输入至缓存器中以供神经网络计算引擎获取并进行计算。
进一步的,如图4所示,步骤S230可以具体包括:
S231、获取每个原始块的尺寸。
S232、根据每个原始块的尺寸计算每个原始块的高度或长度。
S233、确定每个原始块之间的重叠部分。
S234、根据重叠部分每个原始块的高度或长度确定原始块分块后的分块后原始块的数量。
S235、根据分块后原始块的数量对原始块进行分块。
本实施例中,在沿三维矩阵的高度方向或长度方向对三维矩阵的原始块进行分块中,具体的,首先获取三维矩阵的每个原始块的尺寸,然后根据每个原始块的尺寸计算每个原始块的高度或长度,并确定每个原始块之间的重叠部分,然后根据重叠部分每个原始块的高度或长度确定原始块分块后的分块后原始块的数量,最后根据分块后原始块的数量对原始块进行分块。其中,神经网络计算引擎的计算过程包括卷积(convolution)、池化(pooling)、卷积叠加池化(convolution+pooling)、去卷积(deconvolution)、膨胀卷积(dilated convolution)、数据复制(datacopy)和双线性上采样(bilinear upsample)。
一实施例中,如图5所示,图5中的星号表示一个二维数据点(未表示三维矩阵的长度方向),虚线框表示原始块的卷积核,当该原始块需要使用卷积或池化的算法时,可以发现两个原始块之间存在重叠部分(overlap),其中重叠部分的行数可以由下述公式得出:
o=kh-s
其中,o(overlap)为重叠部分的行数,kh(kernel height)为卷积核的高,s(stride)为卷积核的步长。确定重叠部分的大小之后,可以根据下述公式,算出按高度方向分块的分块后原始块的数量:
cnt=(ih-ihf-ihl+ihm-1)/(ihm-o)+2
其中,如图6所示,cnt为分块后原始块的数量,ih为输入高度(input height),ihf和ihl分别为第一个原始块和最后一个原始块的输入高度,ihm是中间原始块的输入高度。它们不同的原因在于第一个原始块和最后一个块原始包含填充(padding),为了最大化利用硬件资源,第一个原始块和最后一个原始块所能存储的数据量会和普通的原始块不一样。
若按长度方向信息分块,则不需要考虑填充,则分块后原始块的数量为:
cnt=(c-1)/cm+1
其中,c为原始的长度方向原始块的数量,cm为分块后长度方向原始块的数量。
一实施例中,如图7a、图7b和图7c所示,当该原始块需要使用卷积叠加池化的算法时,与单独使用卷积或池化的算法相比,还需要考虑池化的算子的重叠部分,重叠部分的计算公式为:
o=kh+s*(khp-sp-1)
其中,khp表示池化的卷积核的高,sp表示池化的卷积核的步长。
一实施例中,如图8a和图8b所示,当该原始块需要使用去卷积的算法时,因去卷积算法是在数据中间先插入填充再作卷积运算,中间的原始块会存在填充的划分,这里我们默认中间的原始块带上填充,而不带下填充,重叠部分的计算公式为:
o=kh/s
其中,公式结果取整数,上填充padup的计算公式为:
padup=kh%s
一实施例中,如图9a和图9b所示,当该原始块需要使用膨胀卷积的算法时,可以视为卷积核被放大,然后正常进行卷积。卷积核被重新计算为:
kh=kh*dr-dr+1
其中dr为扩张率(dilated rate)。图中空心的星号代表一个原始块的有效行的二维数据点,即一个卷积核并不需要所有的二维数据点去进行计算,因此为了节省硬件资源,只传送有效行的二维数据点到缓存器。
一实施例中,如图10a所示,当该原始块需要使用双线性上采样的算法时,图中由虚线连接形成多个矩阵中的端点,为输入二维数据点,其余点为二维数据输出点,由于算子没有卷积核,每个二维数据输出点需要相应的4个二维数据输入点去计算,因此每个原始块之间的重叠部分固定为1。为了保证计算的精确性,如图10b所示,除了第一个原始块以外,后面的原始块需要一个抵消(offset)值来记录二维数据输入点在高度方向的位置(因为每个二维数据输出点的值,跟其在二维数据输入点上的映射地点相关),这使得每个原始块的输出参数需要在循环计算原始块参数的时候重新计算。
一实施例中,如图11a所示,当该原始块需要使用数据复制的算法时,与双线性上采样的分块方法类似,如图11b所示,除了重叠部分为0以外,也需要当前原始块计算一个抵消值来表示下一个原始块的第一行二维数据输出点的起始位置。
需要说明的是,上述算法的算子可以组合,即对应的分块算法也可以相应组合,以实现针对多种不同算法的分块。
S240、根据分块后原始块的数量计算分块后原始块的参数信息。
S250、将分块后原始块的参数信息转换为寄存器信息以配置给每个分块后原始块和神经网络计算引擎中的直接内存存取器。
本实施例中,在分块完成后得到分块后原始块,因分块会导致参数变化,若当前层的输入特征图的原始块进行了分块处理,还需要更新分块后原始块的参数信息。具体的,首先根据分块后原始块的数量计算分块后原始块的参数信息,然后将分块后原始块的参数信息转换为寄存器信息以配置给每个分块后原始块,并更新至神经网络计算引擎中的直接内存存取器,最后根据上一个分块后原始块的参数信息计算下一个分块后原始块的地址信息,这样每个分块后原始块的参数信息和地址信息得到了更新,神经网络计算引擎可以对分块后原始块进行计算。
S260、驱动神经网络计算引擎计算分块后的待计算输入特征图以得到输出特征图。
本发明实施例通过获取每个原始块的尺寸。根据每个原始块的尺寸计算每个原始块的高度或长度。确定每个原始块之间的重叠部分。根据重叠部分每个原始块的高度或长度确定原始块分块后的分块后原始块的数量。根据分块后原始块的数量对原始块进行分块。解决了对于输入特征图太大的计算层,神经网络计算引擎中的数据缓存器无法将其全部装载进去,十分影响数据流架构的计算效率的问题,实现了输入特征图过大时,提高基于数据流架构的神经网络计算效率的效果。
实施例三
如图12所示,本发明实施例三提供了一种基于数据流的分块计算系统100,本发明实施例三所提供的基于数据流的分块计算系统100可执行本发明任意实施例所提供的基于数据流的分块计算方法,具备执行方法相应的功能模块和有益效果。该基于数据流的分块计算系统100包括判断模块200、分块模块300和计算模块400。
具体的,判断模块200用于判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;分块模块300用于若缓存器不能存下待计算输入特征图,对待计算输入特征图进行分块;计算模块400用于驱动神经网络计算引擎计算分块后的待计算输入特征图以得到输出特征图。
本实施例中,分块模块300还用于将待计算输入特征图的转换为三维矩阵,三维矩阵包括多个原始块。分块模块300具体用于沿三维矩阵的高度方向或长度方向对三维矩阵的原始块进行分块。分块模块300具体还用于获取每个原始块的尺寸;根据每个原始块的尺寸计算每个原始块的高度或长度;确定每个原始块之间的重叠部分;根据重叠部分每个原始块的高度或长度确定原始块分块后的分块后原始块的数量;根据分块后原始块的数量对原始块进行分块。
进一步的,分块模块300还用于更新分块后原始块的参数信息。分块模块300具体用于根据分块后原始块的数量计算分块后原始块的参数信息;将分块后原始块的参数信息转换为寄存器信息以配置给每个分块后原始块和神经网络计算引擎中的直接内存存取器。
本实施例中,神经网络计算引擎的计算过程包括卷积、池化、卷积叠加池化、去卷积、膨胀卷积、数据复制和双线性上采样。
实施例四
图13为本发明实施例四提供的一种计算机设备12的结构示意图。图13示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图13显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图13所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图13未显示,通常称为“硬盘驱动器”)。尽管图13中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的方法:
判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的方法:
判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种基于数据流的分块计算方法,其特征在于,包括:
判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
2.根据权利要求1所述的方法,其特征在于,所述对所述待计算输入特征图进行分块之前包括:
将所述待计算输入特征图的转换为三维矩阵,所述三维矩阵包括多个原始块。
3.根据权利要求2所述的方法,其特征在于,所述对所述待计算输入特征图进行分块包括:
沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块。
4.根据权利要求3所述的方法,其特征在于,所述沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块包括:
获取每个所述原始块的尺寸;
根据每个所述原始块的尺寸计算每个所述原始块的高度或长度;
确定每个所述原始块之间的重叠部分;
根据所述重叠部分每个所述原始块的高度或长度确定所述原始块分块后的分块后原始块的数量;
根据所述分块后原始块的数量对所述原始块进行分块。
5.根据权利要求4所述的方法,其特征在于,所述沿所述三维矩阵的高度方向或长度方向对所述三维矩阵的原始块进行分块之后包括:
更新所述分块后原始块的参数信息。
6.根据权利要求5所述的方法,其特征在于,所述更新所述分块后原始块的参数信息包括:
根据所述分块后原始块的数量计算所述分块后原始块的参数信息;
将分块后原始块的参数信息转换为寄存器信息以配置给每个所述分块后原始块和所述神经网络计算引擎中的直接内存存取器。
7.根据权利要求1所述的方法,其特征在于,所述神经网络计算引擎的计算过程包括卷积、池化、卷积叠加池化、去卷积、膨胀卷积、数据复制和双线性上采样。
8.一种基于数据流的分块计算系统,其特征在于,包括:
判断模块,用于判断神经网络计算引擎中的缓存器是否能存下待计算输入特征图;
分块模块,用于若所述缓存器不能存下所述待计算输入特征图,对所述待计算输入特征图进行分块;
计算模块,用于驱动所述神经网络计算引擎计算分块后的所述待计算输入特征图以得到输出特征图。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202010837168.3A 2020-08-19 2020-08-19 基于数据流的分块计算方法、系统、设备和存储介质 Pending CN112036545A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010837168.3A CN112036545A (zh) 2020-08-19 2020-08-19 基于数据流的分块计算方法、系统、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010837168.3A CN112036545A (zh) 2020-08-19 2020-08-19 基于数据流的分块计算方法、系统、设备和存储介质

Publications (1)

Publication Number Publication Date
CN112036545A true CN112036545A (zh) 2020-12-04

Family

ID=73577585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010837168.3A Pending CN112036545A (zh) 2020-08-19 2020-08-19 基于数据流的分块计算方法、系统、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112036545A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477677B1 (en) * 2013-05-07 2016-10-25 Veritas Technologies Llc Systems and methods for parallel content-defined data chunking
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法
CN108475347A (zh) * 2017-11-30 2018-08-31 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
CN109359735A (zh) * 2018-11-23 2019-02-19 浙江大学 深度神经网络硬件加速的数据输入装置与方法
US20190220742A1 (en) * 2018-01-17 2019-07-18 Mediatek Inc. Neural network engine with tile-based execution
CN111445018A (zh) * 2020-03-27 2020-07-24 国网甘肃省电力公司电力科学研究院 基于加速卷积神经网络算法的紫外成像实时信息处理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477677B1 (en) * 2013-05-07 2016-10-25 Veritas Technologies Llc Systems and methods for parallel content-defined data chunking
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法
CN108475347A (zh) * 2017-11-30 2018-08-31 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
US20190220742A1 (en) * 2018-01-17 2019-07-18 Mediatek Inc. Neural network engine with tile-based execution
CN109359735A (zh) * 2018-11-23 2019-02-19 浙江大学 深度神经网络硬件加速的数据输入装置与方法
CN111445018A (zh) * 2020-03-27 2020-07-24 国网甘肃省电力公司电力科学研究院 基于加速卷积神经网络算法的紫外成像实时信息处理方法

Similar Documents

Publication Publication Date Title
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
CN110163903B (zh) 三维图像的获取及图像定位方法、装置、设备和存储介质
US6678754B1 (en) Methods and structure for recursive scatter/gather lists
CN112214727A (zh) 运算加速器
JP2011524049A (ja) 超並列アクセラレータを使用して学習機械の訓練と分類とを並列化し高速化するシステム及び方法
US11455781B2 (en) Data reading/writing method and system in 3D image processing, storage medium and terminal
CN111752691B (zh) Ai计算图的排序方法、装置、设备及存储介质
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
US12086711B2 (en) Data dividing method and processor for convolution operation
US8554013B2 (en) Selectively transforming a multi-dimensional array
JP7492555B2 (ja) 複数の入力データセットのための処理
WO2022012563A1 (zh) 神经网络数据处理方法、装置、设备及存储介质
CN117370488A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN112036545A (zh) 基于数据流的分块计算方法、系统、设备和存储介质
CN115829820A (zh) 插值方法、图像处理方法、gpu及芯片
CN111913812B (zh) 一种数据处理方法、装置、设备及存储介质
CN115827552A (zh) 计算任务处理方法、装置以及存储介质
US9183435B2 (en) Feature generalization using topological model
CN109543835B (zh) 运算方法、装置及相关产品
CN109542837B (zh) 运算方法、装置及相关产品
CN109558565B (zh) 运算方法、装置及相关产品
CN111488970A (zh) 神经网络的执行优化方法及装置
CN114781634B (zh) 一种基于忆阻器的神经网络阵列的自动映射方法和装置
CN113591764B (zh) 手势识别方法、装置、存储介质和电子设备
WO2023123914A1 (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