CN113222125A - 卷积运算方法及芯片 - Google Patents

卷积运算方法及芯片 Download PDF

Info

Publication number
CN113222125A
CN113222125A CN202010070627.XA CN202010070627A CN113222125A CN 113222125 A CN113222125 A CN 113222125A CN 202010070627 A CN202010070627 A CN 202010070627A CN 113222125 A CN113222125 A CN 113222125A
Authority
CN
China
Prior art keywords
sub
data
convolution operation
input data
output data
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
CN202010070627.XA
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.)
Beijing Simm Computing Technology Co ltd
Original Assignee
Beijing Simm Computing Technology 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 Beijing Simm Computing Technology Co ltd filed Critical Beijing Simm Computing Technology Co ltd
Priority to CN202010070627.XA priority Critical patent/CN113222125A/zh
Publication of CN113222125A publication Critical patent/CN113222125A/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本公开实施例公开了一种卷积运算方法及芯片。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;所述处理核根据所述子输入数据的存储地址以及权重数据的存储地址获取子输入数据和权重数据;所述处理核根据所述子输入数据和所述权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将输入数据划分为多个子输入数据并分配个多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。

Description

卷积运算方法及芯片
技术领域
本公开涉及神经网络计算领域,尤其涉及一种卷积运算方法及芯片。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,是人们获得数据的种类越来越多,获得数据的量越来越大,并且对处理数据的速度要求越来越高。
芯片是数据处理的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如CPU(Central Processing Unit,中央处理器)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如TPU(tensor processing unit,张量处理器)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。
神经网络是人工智能的重要模型,其核心为卷积计算。现有的技术方案在处理卷积运算时一般有两种方案:
(1)整体计算方案:该方案在单核CPU中使用,其按照卷积的计算公式,单核实现输入数据和权重数据的逐点相乘再累加,得到最终结果。
(2)多线程并行拆分方案:该方案在GPU中使用,将卷积拆分成多个线程并行运算,所有的数据和权重拆散成以线程数为单位的运算份数,将这些份数都运行完了则此卷积完成。
但是方案(1)处理的处理粒度太粗,用一个处理核实现整个卷积,并行化差;在对延时要求高的应用中无法满足要求,如果要降低延时,需要提高处理核的计算能力,硬件代价大。方案(2)的输入数据和权重数据的拆分粒度太细,拆分的过程复杂,需要设计复杂的调度器,效率低,代价大。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中的在进行卷积计算的上述技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种卷积方法,包括:
所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;
所述处理核根据所述子输入数据的存储地址以及权重数据的存储地址获取子输入数据和权重数据;
所述处理核根据所述子输入数据和所述权重数据执行所述卷积运算子任务得到子输出数据。
进一步的,所述方法还包括:
所述处理核将所述子输出数据按照其在输出数据中的位置存储到系统存储空间中。
进一步的,所述子输入数据由输出数据确定,包括:
在宽度或高度方向上将输出数据划分为多个子输出数据;
将在卷积运算中参与运算以得到所述子输出数据的部分输入数据,作为所述子输入数据。
进一步的,所述在宽度或高度方向上将输出数据划分为多个子输出数据,包括:
根据处理核的个数在在宽度或高度方向上将输出数据划分为多个子输出数据。
进一步的,所述多个子输入数据的大小与所述多个处理核的存储空间大小相适应。
第二方面,本公开实施例提供一种卷积方法,包括:
获取卷积运算中所需要的输入数据以及权重数据;
根据输出数据将输入数据划分为多个子输入数据;
将所述多个子输入数据与所述权重数据分别输入多个处理核进行卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
第三方面,本公开实施例提供一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行上述第一方面所述的卷积运算方法以完成卷积运算。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第一方面或者第二方面中的任一所述卷积运算方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面或者第二方面中的任一所述卷积运算方法。
第六方面,本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第一方面或者第二方面中的任一所述卷积运算方法。
第七方面,本公开实施例提供一种计算装置,其特征在于,包括所述第三方面中的所述的芯片。
本公开实施例公开了一种卷积运算方法及芯片。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;所述处理核根据所述子输入数据的存储地址以及权重数据的存储地址获取子输入数据和权重数据;所述处理核根据所述子输入数据和所述权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将输入数据划分为多个子输入数据并分配个多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为卷积运算的过程示意图;
图2为执行本公开实施例所提供的卷积运算方法的芯片的结构示意图;
图3为本公开实施例提供的卷积运算方法的流程图;
图4为通过输出数据确定子输入数据的示例图;
图5为根据处理核的个数划分输出数据和输入数据的示意图;
图6a-图6b为根据本公开实施例的卷积运算方法的一个具体实例。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1为卷积运算的过程示意图。如图1所述,卷积运算的输入数据(即输入特征图)的大小为Win*Hin*Cin,其中Win表示输入数据的宽度,Hin表示输入数据的高度,Cin表示输入数据的深度。权重数据中(即一个或多个卷积核)一共有Cout个卷积核,每一个卷积核的大小是Kw*Kh*Cin,其中Kw表示卷积核的宽度,Kh表示卷积核的高度,Cin表示卷积核的深度。在卷积过程中,每一个卷积核,都会在输入数据上滑动,在每一个滑动位置上以和其对应的输入数据进行对应元素乘累加,提取出此卷积核对应的输出数据中的元素(即输出特征图上的特征点);由于权重数据中有Cout个卷积核,每一个卷积核均会与此同一位置上的输入数据进行对应元素乘累加,从而得到Cout个输出数据元素;Cout个输出数据元素组成输出数据上的一个带深度的输出数据的元素,此输出数据的元素的深度即Cout;所有卷积核会在整个输入数据上滑动完,每个滑动位置均得到一个深度为Cout的元素,从而得到整个输出数据。
对于处于某一深度l(1<=l<=Cout)上的某个元素,对它进行乘累加的公式如下:
Figure BDA0002377225140000051
Dout是输出数据中的某个带深度的元素,其上标l表示在输出深度上的深度为l;Din是指输入数据对应于卷积核的数据块,其上标i对应输入数据的深度,j和k分别对应卷积核的宽度和高度;w是卷积核中的元素,也就是神经网络计算中的权重,其上标l和i分别对应输出数据的深度和输入数据的深度。
本公开将卷积运算中可以独立进行的运算拆分成多个子任务,每个子任务有其对应的子输入数据和权重数据;所述子任务被分配给包括多个处理核的芯片中的处理核单独执行。
图2为执行本公开实施例所提供的卷积运算方法的芯片的结构示意图。如图2所示,所述芯片为多核架构的芯片,其中包括多个处理核C1、C2……CM,所述的多个处理核都具备独立处理任务的能力。处理核能够按照自身的程序独立运行,不需要接受调度器的任务分发。处理核的程序可以由服务器端动态更新,也可以在处理核启动后写入该处理核,或者是在处理核运行的过程中,按照其自身的初始化程序从系统的内存空间中自动更新。
图3为本公开实施例提供的卷积运算方法的流程图。本公开实施例中的所述卷积运算方法,用于如图2所示的包括多个处理核的芯片中,下面方法以多个处理核中的一个处理核为例进行描述,所述方法包括:
步骤S301,所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;
在该步骤中,所述处理核获取卷积运算子任务,所述卷积运算子任务为所述卷积运算的一部分,所述卷积运算子任务与其他处理核的卷积运算子任务在运算顺序上互不相关。
所述卷积运算子任务中包括所述卷积子任务所需要的子输入数据的存储地址以及权重数据的存储地址,其中所述存储地址为系统存储空间的存储地址。可以理解的,所述子输入数据的存储地址和所述权重数据的存储地址为区间地址,即包括起始存储地址以及结束存储地址,或者所述子输入数据的存储地址和所述权重数据的存储地址为起始存储地址,此时卷积运算子任务中还需要包括所述子输入数据和所述权重数据的大小信息。
在本公开的实施例中,所述子输入数据由输出数据确定。图4为通过输出数据确定子输入数据的一个示例。如图4所示,输入数据为3*3的输入特征图,权重数据为一个2*2的卷积核,输出数据为一个2*2的输出特征图,卷积核在所述输入数据上滑动,步长为1。在该示例中,将所述输出数据划分为两个部分401和402,又卷积运算的规则可以得到401所包括的两个输出特征图中的元素是由卷积核在输入数据的403部分上滑动计算得到的,而402所包括的两个输出特征图中的元素是由卷积核在输入数据的404部分上滑动计算得到的,因此将输入数据的403部分作为一个子输入数据,将输入数据的404部分作为另一个子输入数据。
可选的,所述子输入数据由输出数据确定,包括:
在宽度或高度方向上将输出数据划分为多个子输出数据;
将在卷积运算中参与运算以得到所述子输出数据的部分输入数据,作为所述子输入数据。
在该可选实施例中,在宽度方向或高度方向上将输出数据划分为多个部分,如图4中所示,为在宽度方向上将输出数据划分为两个子输出数据,则对应的所述输入数据也被划分为两个子输入数据,并且所述子输入数据与所述子输出数据一一对应。在确定出子输出数据之后,与之相对应的子输入数据与卷积运算中所使用的权重数据的宽度、高度以及权重数据在输入数据上滑动的步长均有关系。如图4所示,子输出数据401是由权重数据在子输入数据403上上下滑动计算得到的,子输出数据402是由权重数据在子输入数据404上上下滑动计算得到的,虽然401和402没有重叠,但是两个子输入数据有部分数据是重叠的;但是如果权重数据为1*1的卷积核,则输出数据为3*3的特征图像,此时如果仍然以步长为1滑动权重数据,则对输出数据划分之后,其子输出数据对应的子输入数据之间没有数据重叠。其他的情况一样可以通过实际卷积运算的过程反推出输入数据的划分方式。
可选的,所述在宽度或高度方向上将输出数据划分为多个子输出数据,包括:根据处理核的个数在在宽度或高度方向上将输出数据划分为多个子输出数据。在该实施例中,所述子输出数据的划分个数根据所述芯片中的所述处理核的个数设置。图5为根据处理核的个数划分输出数据和输入数据的示意图。如图5所示,芯片中的处理核为N个,则在宽度方向上将所述输出数据划分为N个子输出数据,通过卷积运算可以反推出每个子输出数据所对应的子输入数据,据此将所述输入数据也划分为N个子输入数据,且这N个子输入数据与N个子输出数据一一对应。可以理解的,所述子输出数据和子输入数据的个数可以与所述芯片的处理核的个数不相等,例如在某些场景下,芯片中的某些处理核在执行其他任务,无法执行卷积运算,此时可以按照芯片中实际可用的处理核的个数对所述输出数据和所述输入数据进行划分,在此不再赘述。
可选的,所述多个子输入数据的大小与所述多个处理核的存储空间大小相适应。所述处理核自身带有处理核内的存储空间,用于存储所述卷积运算子任务以及卷积运算子任务所需要的子输入数据和权重数据。在上述可选实施例中,没有考虑处理核自身的存储空间大小,这样可能会导致所划分的子输入数据和权重数据的大小与所述处理核的存储空间的大小不匹配,进而导致处理核无法完成卷积运算子任务。此时,可以根据每个处理核的存储空间的大小计算一个合适的值,根据该值来划分每一份子输出数据,使得所述子输出数据所对应的子输入数据不大于该存储空间的大小,此时每一个处理核所处理的子输入数据的大小可以不同,即输出数据和输入数据不是平均等分的,而是根据各个可用处理核的存储能力划分的。或者,对于自身的存储空间较小的处理核,可以将所述子输入数据和权重数据进一步划分成多份,所述处理核每次根据其中一份计算出对应的子输出数据的一部分,此时对于该存储空间较小的处理核来说,其计算子输出数据的过程是一个串行的过程,在对子输入数据和权重数据进一步划分时,可以按照所述处理核的自身存储空间进行平分,每一份子输入数据和权重数据的大小都不大于所述存储空间,或者将每一份的大小设置为存储空间的大小进行划分。当然,根据存储空间的大小划分输入数据和权重数据,就避免了再次划分的问题,提高了数据计算效率。
步骤S302,所述处理核根据所述子输入数据的存储地址以及权重数据的存储地址获取子输入数据和所述权重数据;
所述处理核自身带有处理核内的存储空间,用于存储所述卷积运算子任务以及卷积运算子任务所需要的子输入数据和权重数据。在该步骤中,所述处理核根据步骤S301中得到的卷积运算子任务中的子输入数据的存储地址以及权重数据的存储地址从系统存储空间中获取子输入数据和权重数据,并存储在处理核的存储空间中。
步骤S303,所述处理核根据所述子输入数据和权重数据执行所述卷积运算子任务得到子输出数据。
所述处理核在得到其自身的卷积运算子任务所需要的子输入数据和权重数据之后,按照卷积运算的规则计算所述子输入数据和权重数据的累加和得到子输出数据。具体的计算过程可以参见图1,单个处理核的卷积运算子任务的运算过程与通常的卷积运算过程相同,只是此时参与计算的子输入数据的宽度或高度不再是Win或Hin,而是小于Win的宽度或小于Hin的高度,权重数据在子输入数据上按照正常的步长进行滑动计算出子输出数据,如图5中所示。
通过上述步骤S301-步骤S303,处理核已经完成了分配给其自身的卷积运算子任务。但是此时还未得到最终的输出数据,因此所述方法,还包括:
步骤S304,所述处理核按照所述子输出数据在所述输出数据中的位置存储到系统存储空间中。通过上述卷积运算方法得到的均为输出数据的子输出数据,根据上述描述可以知道,每个所述子输出数据为完整的输出数据部分数据,只需要将多个子输出数据按照其在输出数据中的位置存储到系统存储空间中就构成了完整的输出数据,不需要经过其他运算。如图5所示,处理核C1计算输出数据的第1个子输出数据,处理核C2计算输出数据的第2个子输出数据,……,处理核CN计算输出数据的第N个子输出数据,处理核只需要按照自身程序中所预先设定的存储空间地址将所述子输出数据存储到所述存储空间中即可,这样,多个处理核的计算结果在存储空间中行程一个完整的输出数据,每一份子输出数据的存储地址与其在输出数据中的位置相关,所述多个子输出数据的存储地址在逻辑上是连续的。
本公开另一实施例提供了又一卷积运算的方法,所述卷积运算方法包括:
获取卷积运算中所需要的输入数据以及权重数据;
根据输出数据将输入数据划分为多个子输入数据;
将所述多个子输入数据与所述权重数据分别输入多个处理核进行卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
在上述示例中,还包括了根据输出数据将输入数据划分为多个子输入数据的过程,其具体的划分过程可以与步骤S302中所描述的相同,在此不再赘述。另外,可以理解的,上述划分过程可以是逻辑上的划分过程,即仅仅对输出数据和输入数据的存储空间进行划分,得到每个子输入数据在系统存储空间中的起始存储地址以及结束存储地址,使得所述处理核可以获取到子输入数据即可,而不需要真正的将数据划分为多份。
图6a-图6b为根据本公开实施例的卷积运算方法的一个具体实例。如图6a所示,芯片中包括两个处理核C1和C2,输入数据的宽度和高度相同:Win=Hin=8,输入数据的深度为:Cin=4;输出数据的宽度和高度相同:Wout=Hout=6,输出数据的深度为:Cout=8;卷积核的宽度和高度相同:Kw=Kh=3,卷积核的深度为:Cin=4,卷积核的个数为:Cout=8,卷积核的滑动步长为1。如图6a所示,在该实例中,所述输出数据在宽度方向上按照处理核的个数进行平均划分,即输出数据在宽度方向上划分为两个1和2两个子输出数据,每个子输出数据的宽度为3;具体的,如图6b所示,输出数据被分为1(3)和2(3)两部分,其中括号中的3表示宽度为3,得到两个子输出数据均为3*6*8的子输出数据,通过卷积运算的定义可以得到输出数据中的每个元素都是权重数据在输入数据上的对应位置与对应的输入数据块的乘累加得到的,因此子输出数据上的宽度为3是由权重数据在输入数据上滑动2次计算3次得到的,而权重数据为3*3*4的数据,其在输出数据的宽度方向上以步长1滑动2次所覆盖到的输入数据的宽度为3+1+1=5,因此输出数据被分成的两个子输出数据的宽度范围分别为1-5和4-8,因此两个子输入数据在宽度方向上有4和5两个位置的数据是重叠的,如图6b所示,输入数据被分为1(5)和2(5)两个子输入数据,两个子输入数据均为5*8*4的数据。在得到子输入数据的大小之后,可以得到子输入数据的存储地址,这样在给处理核可以根据该存储地址获取对应的子输入数据。其计算过程如图6b所示,每个处理核的计算过程与普通的卷积计算相同,只不过被限定在子输入数据上,利用权重数据在每个5*8*4的子输入数据上滑动,得到两个3*6*8的子输出数据,将所述两个子输出数据按照输入数据的存储顺序存储到系统的存储空间中得到完整的输出数据。
本公开实施例公开了一种卷积运算方法。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;所述处理核根据所述子输入数据的存储地址以及权重数据的存储地址获取子输入数据和权重数据;所述处理核根据所述子输入数据和所述权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将输入数据划分为多个子输入数据并分配个多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。
本公开实施例还提供了一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行所述卷积运算方法以完成卷积运算。
本公开实施例还提供了一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述实施例中的任一所述卷积运算方法。
本公开实施例还提供了一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述卷积运算方法。
本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述卷积运算方法。
本公开实施例提供一种计算装置,其特征在于,包括前述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

Claims (10)

1.一种卷积运算方法,用于包括多个处理核的芯片中,其特征在于,包括:
所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括子输入数据的存储地址以及权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分,所述子输入数据是所述卷积运算的输入数据的一部分且由所述卷积运算的输出数据确定,所述权重数据为所述卷积运算的权重数据;
所述处理核根据所述子输入数据的存储地址以及所述权重数据的存储地址获取所述子输入数据和所述权重数据;
所述处理核根据所述子输入数据和所述权重数据执行所述卷积运算子任务得到子输出数据。
2.如权利要求1所述的卷积运算方法,其特征在于,所述方法还包括:
所述处理核按照所述子输出数据在所述输出数据中的位置存储到系统存储空间中。
3.如权利要求1所述的卷积运算方法,其特征在于,所述子输入数据由输出数据确定,包括:
在宽度或高度方向上将所述输出数据划分为多个所述子输出数据;
将在所述卷积运算中参与运算以得到所述子输出数据的部分输入数据,作为所述子输入数据。
4.如权利要求3所述的卷积运算方法,其特征在于,所述在宽度或高度方向上将输出数据划分为多个子输出数据,包括:
根据所述处理核的个数在所述宽度或所述高度方向上将所述输出数据划分为多个所述子输出数据。
5.如权利要求1-4中的任一项所述的卷积运算方法,其中所述多个子输入数据的大小与所述多个处理核的存储空间大小相适应。
6.一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行所述权利要求1-5中的卷积运算方法以完成卷积运算。
7.一种卷积计算方法,其特征在于,包括:
获取卷积运算中所需要的输入数据以及权重数据;
根据输出数据将输入数据划分为多个子输入数据;
将所述多个子输入数据与所述权重数据分别输入多个处理核进行卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
8.一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现权利要求1-5或权利要求7所述卷积运算方法。
9.一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行权利要求1-5或权利要求7所述卷积运算方法。
10.一种计算装置,其特征在于,包括权利要求6中所述的芯片。
CN202010070627.XA 2020-01-21 2020-01-21 卷积运算方法及芯片 Pending CN113222125A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010070627.XA CN113222125A (zh) 2020-01-21 2020-01-21 卷积运算方法及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010070627.XA CN113222125A (zh) 2020-01-21 2020-01-21 卷积运算方法及芯片

Publications (1)

Publication Number Publication Date
CN113222125A true CN113222125A (zh) 2021-08-06

Family

ID=77085163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010070627.XA Pending CN113222125A (zh) 2020-01-21 2020-01-21 卷积运算方法及芯片

Country Status (1)

Country Link
CN (1) CN113222125A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023045446A1 (zh) * 2021-09-26 2023-03-30 寒武纪(西安)集成电路有限公司 计算装置、数据处理方法及相关产品
CN116700995A (zh) * 2023-08-03 2023-09-05 浪潮电子信息产业股份有限公司 一种异构内存池并发访问方法、装置、设备及存储介质
CN116756472A (zh) * 2023-08-17 2023-09-15 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140156901A1 (en) * 2005-10-26 2014-06-05 Cortica Ltd. Computing device, a system and a method for parallel processing of data streams
CN107437110A (zh) * 2017-07-11 2017-12-05 中国科学院自动化研究所 卷积神经网络的分块卷积优化方法及装置
CN108304923A (zh) * 2017-12-06 2018-07-20 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
CN108388527A (zh) * 2018-02-02 2018-08-10 上海兆芯集成电路有限公司 直接存储器存取引擎及其方法
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器
CN110473137A (zh) * 2019-04-24 2019-11-19 华为技术有限公司 图像处理方法和装置
US20190370692A1 (en) * 2018-05-30 2019-12-05 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
CN110580522A (zh) * 2019-11-07 2019-12-17 深圳云天励飞技术有限公司 卷积计算方法及相关设备
CN110689115A (zh) * 2019-09-24 2020-01-14 上海寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140156901A1 (en) * 2005-10-26 2014-06-05 Cortica Ltd. Computing device, a system and a method for parallel processing of data streams
CN107437110A (zh) * 2017-07-11 2017-12-05 中国科学院自动化研究所 卷积神经网络的分块卷积优化方法及装置
CN108304923A (zh) * 2017-12-06 2018-07-20 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
CN108388527A (zh) * 2018-02-02 2018-08-10 上海兆芯集成电路有限公司 直接存储器存取引擎及其方法
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器
US20190370692A1 (en) * 2018-05-30 2019-12-05 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
CN110473137A (zh) * 2019-04-24 2019-11-19 华为技术有限公司 图像处理方法和装置
CN110689115A (zh) * 2019-09-24 2020-01-14 上海寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
CN110580522A (zh) * 2019-11-07 2019-12-17 深圳云天励飞技术有限公司 卷积计算方法及相关设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023045446A1 (zh) * 2021-09-26 2023-03-30 寒武纪(西安)集成电路有限公司 计算装置、数据处理方法及相关产品
CN116700995A (zh) * 2023-08-03 2023-09-05 浪潮电子信息产业股份有限公司 一种异构内存池并发访问方法、装置、设备及存储介质
CN116700995B (zh) * 2023-08-03 2023-11-03 浪潮电子信息产业股份有限公司 一种异构内存池并发访问方法、装置、设备及存储介质
CN116756472A (zh) * 2023-08-17 2023-09-15 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法
CN116756472B (zh) * 2023-08-17 2024-03-29 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法

Similar Documents

Publication Publication Date Title
CN109993299B (zh) 数据训练方法及装置、存储介质、电子装置
US11151442B2 (en) Convolutional neural network processing method and device
CN113222125A (zh) 卷积运算方法及芯片
US20140333638A1 (en) Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
WO2017076296A1 (zh) 处理图数据的方法和装置
US8887165B2 (en) Real time system task configuration optimization system for multi-core processors, and method and program
CN113994350A (zh) 为神经网络生成并行计算方案
CN101398753A (zh) 用于执行扫描运算的系统、方法及计算机程序产品
CN111338695B (zh) 基于流水线技术的数据处理方法及相关产品
CN108108233B (zh) 任务多副本执行的集群作业调度方法及系统
US10782897B2 (en) Memory reduction for neural networks with fixed structures
CN113222099A (zh) 卷积运算方法及芯片
CN113222136A (zh) 卷积运算方法及芯片
CN114503126A (zh) 矩阵运算电路、装置以及方法
CN110008436B (zh) 基于数据流架构的快速傅里叶变换方法、系统和存储介质
JP2008171153A (ja) タスク管理装置
CN114283046B (zh) 基于icp算法的点云文件配准方法、装置及存储介质
CN114691142A (zh) 执行程序的编译方法、芯片、电子设备及计算机可读存储介质
US10475151B2 (en) Graphics engine resource management and allocation system
CN111159283A (zh) 一种区块链中区块的合并方法、装置及设备
Neelima et al. Yet another proposal for all pair shortest path on gpu
WO2018036336A1 (zh) 一种数据处理方法和装置
TWI753728B (zh) 運算單元架構、運算單元叢集及卷積運算的執行方法
US20240061718A1 (en) Method and system for managing hybrid spark cluster for efficient spark job execution
CN110308988B (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