CN113222136A - 卷积运算方法及芯片 - Google Patents
卷积运算方法及芯片 Download PDFInfo
- Publication number
- CN113222136A CN113222136A CN202010070481.9A CN202010070481A CN113222136A CN 113222136 A CN113222136 A CN 113222136A CN 202010070481 A CN202010070481 A CN 202010070481A CN 113222136 A CN113222136 A CN 113222136A
- Authority
- CN
- China
- Prior art keywords
- sub
- convolution operation
- data
- weight data
- convolution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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)
- 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)
- Complex Calculations (AREA)
Abstract
本公开实施例公开了一种卷积运算方法及芯片。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是所述卷积运算的一部分;所述处理核根据所述输入数据的存储地址以及所述子权重数据的存储地址从***存储空间中获取所述输入数据和所述子权重数据,其中所述子权重数据是所述卷积运算的权重数据的一部分;所述处理核根据所述输入数据和所述子权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将权重数据划分为多个子权重数据并分配给多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。
Description
技术领域
本公开涉及神经网络计算领域,尤其涉及一种卷积运算方法及芯片。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,是人们获得数据的种类越来越多,获得数据的量越来越大,并且对处理数据的速度要求越来越高。
芯片是数据处理的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如CPU(Central Processing Unit,中央处理器)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如TPU(tensor processing unit,张量处理器)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。
神经网络是人工智能的重要模型,其核心为卷积计算。现有的技术方案在处理卷积运算时一般有两种方案:
(1)整体计算方案:该方案在单核CPU中使用,其按照卷积的计算公式,单核实现输入数据和权重数据的逐点相乘再累加,得到最终结果。
(2)多线程并行拆分方案:该方案在GPU中使用,将卷积拆分成多个线程并行运算,所有的数据和权重拆散成以线程数为单位的运算份数,将这些份数都运行完了则此卷积完成。
但是方案(1)处理的处理粒度太粗,用一个处理核实现整个卷积,并行化差;在对延时要求高的应用中无法满足要求,如果要降低延时,需要提高处理核的计算能力,硬件代价大。方案(2)的输入数据和权重数据的拆分粒度太细,拆分的过程复杂,需要设计复杂的调度器,效率低,代价大。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中的在进行卷积计算的上述技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种卷积运算方法,用于包括多个处理核的芯片中,其特征在于,包括:
所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是所述卷积运算的一部分;
所述处理核根据所述输入数据的存储地址以及所述子权重数据的存储地址从***存储空间中获取所述输入数据和所述子权重数据,其中所述输入数据为所述卷积运算的输入数据,其中所述子权重数据是所述卷积运算的权重数据的一部分,所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
所述处理核根据所述输入数据和所述子权重数据执行所述卷积运算子任务得到子输出数据。
进一步的,所述方法还包括:
所述处理核将所述子输出数据按照顺序存储到所述***存储空间中。
进一步的,所述子权重数据中所述卷积核的个数由所述处理核的个数确定。
进一步的,所述子权重数据的大小与所述处理核的存储空间大小相关。
进一步的,所述子输出数据为所述输出数据在深度方向上的子输出数据。
第二方面,本公开实施例提供一种卷积运算方法,包括:
获取所述卷积运算中所需要的输入数据以及权重数据;
将所述权重数据划分为多个子权重数据,其中所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
将所述输入数据与所述多个子权重数据分别输入多个所述处理核进行所述卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
第三方面,本公开实施例提供一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行上述第一方面所述的卷积运算方法以完成卷积运算。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第一方面或者第二方面中的任一所述卷积运算方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面或者第二方面中的任一所述卷积运算方法。
第六方面,本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第一方面或者第二方面中的任一所述卷积运算方法。
第七方面,本公开实施例提供一种计算装置,其特征在于,包括所述第三方面中的所述的芯片。
本公开实施例公开了一种卷积运算方法及芯片。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分;所述处理核根据所述输入数据的存储地址以及子权重数据的存储地址从***存储空间中获取输入数据和子权重数据,其中所述输入数据为所述卷积运算的输入数据,其中所述子权重数据是卷积运算的权重数据的一部分,所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;所述处理核根据所述输入数据和子权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将权重数据划分为多个子权重数据并分配给多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为卷积运算的过程示意图;
图2为执行本公开实施例所提供的卷积运算方法的芯片的结构示意图;
图3为本公开实施例提供的卷积运算方法的流程图;
图4为本公开实施例提供的卷积运算方法的运算示意图;
图5为根据本公开实施例的卷积运算方法的一个具体实例;
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1为卷积运算的过程示意图。如图1所述,卷积运算的输入数据(即输入特征图)的大小为Win*Hin*Cin,其中Win表示输入数据的宽度,Hin表示输入数据的高度,Cin表示输入数据的深度。权重数据中(即一个或多个卷积核)一共有Cout个卷积核,每一个卷积核的大小是Kw*Kh*Cin,其中Kw表示卷积核的宽度,Kh表示卷积核的高度,Cin表示卷积核的深度。在卷积过程中,每一个卷积核,都会在输入数据上滑动,在每一个滑动位置上以和其对应的输入数据进行对应元素乘累加,提取出此卷积核对应的输出数据中的元素(即输出特征图上的特征点);由于权重数据中有Cout个卷积核,每一个卷积核均会与此同一位置上的输入数据进行对应元素乘累加,从而得到Cout个输出数据元素;Cout个输出数据元素组成输出数据上的一个带深度的输出数据的元素,此输出数据的元素的深度即Cout;所有卷积核会在整个输入数据上滑动完,每个滑动位置均得到一个深度为Cout的元素,从而得到整个输出数据。
对于处于某一深度l(1<=l<=Cout)上的某个元素,对它进行乘累加的公式如下:
Dout是输出数据中的某个带深度的元素,其上标l表示在输出深度上的深度为l;Din是指输入数据对应于卷积核的数据块,其上标i对应输入数据的深度,j和k分别对应卷积核的宽度和高度;w是卷积核中的元素,也就是神经网络计算中的权重,其上标l和i分别对应输出数据的深度和输入数据的深度。
本公开将卷积运算中可以独立进行的运算拆分成多个子任务,每个子任务有其对应的输入数据和子权重数据;所述子任务被分配给包括多个处理核的芯片中的处理核单独执行。
图2为执行本公开实施例所提供的卷积运算方法的芯片的结构示意图。如图2所示,所述芯片为多核架构的芯片,其中包括多个处理核C1、C2……CM,所述的多个处理核都具备独立处理任务的能力。处理核能够按照自身的程序独立运行,不需要接受调度器的任务分发。处理核的程序可以由服务器端动态更新,也可以在处理核启动后写入处理核,或者是在处理核运行的过程中,按照其自身的初始化程序从***的内存空间中自动更新。
图3为本公开实施例提供的卷积运算方法的流程图。本公开实施例中的所述卷积运算方法,用于如图2所示的包括多个处理核的芯片中,下面方法以多个处理核中的一个处理核为例进行描述,所述方法包括:
步骤S301,所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是卷积运算的一部分;
在该步骤中,所述处理核获取卷积运算子任务,所述卷积运算子任务为所述卷积运算的一部分,所述卷积运算子任务与其他处理核的卷积运算子任务在运算顺序上互不相关。
所述卷积运算子任务中包括所述卷积子任务所需要的输入数据的存储地址以及子权重数据的存储地址,其中所述存储地址为***存储空间的存储地址。可以理解的,所述输入数据的存储地址和所述子权重数据的存储地址为数据的起始存储地址以及结束存储地址,或者所述输入数据的存储地址和所述子权重数据的存储地址为起始存储地址,此时卷积运算子任务中还需要包括所述输入数据和所述子权重数据的大小信息。
步骤S302,所述处理核根据所述输入数据的存储地址以及子权重数据的存储地址从***存储空间中获取输入数据和子权重数据,其中所述输入数据为所述卷积运算的输入数据,其中所述子权重数据是卷积运算的权重数据的一部分,所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
所述处理核自身带有处理核内的存储空间,用于存储所述卷积运算子任务以及卷积运算子任务所需要的输入数据和子权重数据。在该步骤中,所述处理核根据步骤S301中得到的输入数据的存储地址以及子权重数据的存储地址从***存储空间中获取输入数据和子权重数据,并存储在处理核的存储空间中。
可以理解的,所述权重数据包括多个卷积核,如图1所示,完整的权重数据中包括Cout个卷积核,由于每个卷积核与所述输入数据的计算是相互独立的,因此可以将所述权重数据中的多个卷积核划分成多个分组,每一组可以使用一个处理核单独进行卷积运算。
可选的,所述子权重数据中所述卷积核的个数由所述处理核的个数确定。示例性的,所述子权重数据的个数与所述处理核的个数相等。如图4所示,所述芯片的处理核的个数为N,分别为C1、C2……CN,则将所述权重数据分为N份,如果是平均划分,则每个子权重数据中包括Cout/N个卷积核,需要注意的是,在这种情况下,需要Cout/N为正整数,如果Cout/N不为正整数,则每一个子权重数据所包括的卷积核可以设置为则其中一个所述处理核所获取的子权重数据中的卷积核不足个。如图4所示,假设Cout/N为正整数,则可以将第1到Cout/N个卷积核作为第一个子权重数据,将第(Cout/N+1)到(2Cout/N)个卷积核作为第二个子权重数据,……,将第((N-1)*Cout/N+1)到Cout个卷积核作为第N个子权重数据。可以理解的,所述子权重数据的个数与所述处理核的个数可以不相等,例如在某些场景下,芯片中的某些处理核在执行其他任务,无法执行卷积运算,此时可以按照芯片中实际可用的处理核的个数对所述输入数据和所述权重数据进行划分,在此不再赘述。
可选的,所述子权重数据的大小与所述处理核的存储空间大小相关。在上述可选实施例中,没有考虑处理核自身的存储空间大小,这样可能会导致子权重数据的大小与所述处理核的存储空间的大小不匹配,进而导致处理核执行卷积运算子任务时效率较低。此时,可以根据每个处理核的存储空间的大小计算一个合适的值,根据该值来划分每一份子权重数据,此时每一个处理核所获取的子权重数据大小可以不同,权重数据不是平均等分的,而是根据各个可用处理核的存储能力划分的。示例性的,在计算所述处理核自身的存储空间大小时,需要通过处理核的存储空间中的可用空间减去卷积运算子任务所对应的程序所需要的空间以及输入数据所占据的空间大小,根据剩余的存储空间大小来给所述处理核划分合适的子权重数据。或者,对于自身的存储空间较小的处理核,可以将所述子权重数据进一步划分成多份,所述处理核每次根据其中一份计算出对应的子输出数据的一部分,此时对于该存储空间较小的处理核来说,其计算子输出数据的过程是一个串行的过程,在对子权重数据进一步划分时,可以按照所述处理核的自身存储空间进行平分,每一份子权重数据的大小都不大于所述存储空间,或者将每一份的大小设置为存储空间的大小进行划分。当然,根据存储空间的大小划分权重数据,就避免了再次划分的问题,提高了数据计算效率。
步骤S303,所述处理核根据所述输入数据和子权重数据执行所述卷积运算子任务得到子输出数据。
所述处理核在得到其自身的卷积运算子任务所需要的输入数据和子权重数据之后,按照卷积运算的顺序计算所述输入数据和子权重数据的乘累加和得到子输出数据。具体的计算过程可以参见图1,单个处理核的卷积运算子任务的运算过程与通常的卷积运算过程相同,只是此时单个处理核中参与计算的卷积核不再是Cout个,而是根据步骤S302中所述的方式确定出的子权重数据的卷积核的个数,子权重数据根据计算的步长在所述输入数据上滑动计算乘累加和得到子输出数据。如图4中所示,N个处理核分别计算子权重数据与输入数据的乘累加和,得到编号为1-N的N个子输出数据。
通过上述步骤S301-步骤S303,处理核已经完成了分配给其自身的卷积运算子任务。但是此时还未得到最终的输出数据,因此所述方法,还包括:
步骤S304,所述处理核将所述子输出数据按照顺序存储到所述***存储空间中。通过上述卷积运算方法得到的均为输出数据的子输出数据,根据上述描述可以知道,所述的多个子输出数据为完整的输出数据在深度方向上的部分数据,且不需要在经过其他运算,只需要将其按照输出数据的深度存储顺序存储到***存储空间中。如图4所示,处理核C1计算输出数据的第1个子输出数据,处理核C2计算输出数据的第2个子输出数据,……,处理核CN计算输出数据的第N个子输出数据,处理核只需要按照自身程序中所预先设定的存储空间地址将所述子输出数据存储到所述存储空间中即可得到完整的输出数据,每一份子输出数据的存储地址与其在输出数据中深度方向上的位置相关。
本公开另一实施例提供了又一卷积运算的方法,所述卷积运算方法包括:
获取所述卷积运算中所需要的输入数据以及权重数据;
将所述权重数据划分为多个子权重数据,其中所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
将所述输入数据与所述多个子权重数据分别输入多个所述处理核进行所述卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
在上述示例中,还包括了将权重数据划分为多个子权重数据的过程,其具体的划分过程可以与步骤S302中所描述的相同,在此不再赘述。另外,可以理解的,上述划分过程可以是逻辑上的划分过程,即仅仅对权重数据的存储空间进行划分,得到每个权重数据在***存储空间中的起始存储地址以及结束存储地址,使得所述处理核可以获取到子权重数据即可,而不需要真正的将数据划分为多份。
图5为根据本公开实施例的卷积运算方法的一个具体实例。如图5所示,芯片中包括两个处理核C1和C2,输入数据的宽度和高度相同:Win=Hin=8,输入数据的深度为:Cin=4;输出数据的宽度和高度相同:Wout=Hout=6,输出数据的深度为:Cout=8;卷积核的宽度和高度相同:Kw=Kh=3,卷积核的深度为:Cin=4,卷积核的个数为:Cout=8,卷积核的滑动步长为1。如图5所示,在该实例中,所述权重数据按照处理核的个数平均划分,即按照卷积核的编号顺序划分为两个子权重数据,即包括编号为1-4的4个卷积核的第一个子权重数据,和包括编号为5-8的4个卷积核的第二个子权重数据;将第一个子权重数据和输入数据送入C1进行卷积计算,将第二个子权重数据和输入数据送入C2进行卷积计算。C1和C2并行进行卷积运算,并分别输出一个子输出数据,每个子输出数据的大小为6*6*4,其中C1输出的为输出数据中深度为1-4的子输出数据,C2输出的为输出数据中深度为5-8的子输出数据,将两个子输出数据按照深度的顺序存储即得到完整的输出数据。
本公开实施例公开了一种卷积运算方法及芯片。其中该卷积运算方法包括:所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是所述卷积运算的一部分;所述处理核根据所述输入数据的存储地址以及所述子权重数据的存储地址从***存储空间中获取所述输入数据和所述子权重数据,其中所述输入数据为所述卷积运算的输入数据,其中所述子权重数据是所述卷积运算的权重数据的一部分,所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;所述处理核根据所述输入数据和所述子权重数据执行所述卷积运算子任务得到子输出数据。通过上述方法,将权重数据划分为多个子权重数据并分配给多个处理核并行进行卷积运算,解决了现有技术中卷积计算并行化差、效率低的技术问题。
本公开实施例还提供了一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行所述卷积运算方法以完成卷积运算。
本公开实施例还提供了一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述实施例中的任一所述卷积运算方法。
本公开实施例还提供了一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述卷积运算方法。
本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述卷积运算方法。
本公开实施例提供一种计算装置,其特征在于,包括前述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
Claims (10)
1.一种卷积运算方法,用于包括多个处理核的芯片中,其特征在于,包括:
所述处理核获取卷积运算子任务,其中所述卷积运算子任务中包括输入数据的存储地址以及子权重数据的存储地址,所述卷积运算子任务是所述卷积运算的一部分;
所述处理核根据所述输入数据的存储地址以及所述子权重数据的存储地址从***存储空间中获取所述输入数据和所述子权重数据,其中所述输入数据为所述卷积运算的输入数据,其中所述子权重数据是所述卷积运算的权重数据的一部分,所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
所述处理核根据所述输入数据和所述子权重数据执行所述卷积运算子任务得到子输出数据。
2.如权利要求1所述的卷积运算方法,其特征在于,所述方法还包括:
所述处理核将所述子输出数据按照顺序存储到所述***存储空间中。
3.如权利要求1或2所述的卷积运算方法,其特征在于:
所述子权重数据中所述卷积核的个数由所述处理核的个数确定。
4.如权利要求1-3中任一项所述的卷积运算方法,其特征在于:
所述子权重数据的大小与所述处理核的存储空间大小相关。
5.如权利要求1-4中任一项所述的卷积运算方法,其特征在于:
所述子输出数据为所述输出数据在深度方向上的子输出数据。
6.一种芯片,包括多个处理核,其中所述多个处理核中的至少两个执行所述权利要求1-5中的卷积运算方法以完成卷积运算。
7.一种卷积运算方法,其特征在于,包括:
获取所述卷积运算中所需要的输入数据以及权重数据;
将所述权重数据划分为多个子权重数据,其中所述权重数据包括多个卷积核,所述子权重数据为所述多个卷积核中的至少一个卷积核;
将所述输入数据与所述多个子权重数据分别输入多个所述处理核进行所述卷积运算得到多个子输出数据;
将所述多个子输出数据合并得到输出数据。
8.一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现权利要求1-5或者权利要求7所述卷积运算方法。
9.一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行权利要求1-5或者权利要求7所述卷积运算方法。
10.一种计算装置,其特征在于,包括权利要求6中所述的芯片。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010070481.9A CN113222136A (zh) | 2020-01-21 | 2020-01-21 | 卷积运算方法及芯片 |
PCT/CN2020/136383 WO2021147567A1 (zh) | 2020-01-21 | 2020-12-15 | 卷积运算方法及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010070481.9A CN113222136A (zh) | 2020-01-21 | 2020-01-21 | 卷积运算方法及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113222136A true CN113222136A (zh) | 2021-08-06 |
Family
ID=76991794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010070481.9A Pending CN113222136A (zh) | 2020-01-21 | 2020-01-21 | 卷积运算方法及芯片 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113222136A (zh) |
WO (1) | WO2021147567A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113837922A (zh) * | 2021-09-26 | 2021-12-24 | 安徽寒武纪信息科技有限公司 | 计算装置、数据处理方法及相关产品 |
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885700A (zh) * | 2017-12-29 | 2018-04-06 | 中国人民解放军国防科技大学 | 一种大规模矩阵卷积的多核实现方法 |
US20190138898A1 (en) * | 2017-11-07 | 2019-05-09 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN110473137A (zh) * | 2019-04-24 | 2019-11-19 | 华为技术有限公司 | 图像处理方法和装置 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11315018B2 (en) * | 2016-10-21 | 2022-04-26 | Nvidia Corporation | Systems and methods for pruning neural networks for resource efficient inference |
CN107862650B (zh) * | 2017-11-29 | 2021-07-06 | 中科亿海微电子科技(苏州)有限公司 | 加速计算二维图像cnn卷积的方法 |
CN108416434B (zh) * | 2018-02-07 | 2021-06-04 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
CN109165734B (zh) * | 2018-07-11 | 2021-04-02 | 中国人民解放军国防科技大学 | 一种矩阵局部响应归一化的向量化实现方法 |
CN110009103B (zh) * | 2019-03-26 | 2021-06-29 | 深兰科技(上海)有限公司 | 一种深度学习卷积计算的方法和装置 |
-
2020
- 2020-01-21 CN CN202010070481.9A patent/CN113222136A/zh active Pending
- 2020-12-15 WO PCT/CN2020/136383 patent/WO2021147567A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190138898A1 (en) * | 2017-11-07 | 2019-05-09 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN107885700A (zh) * | 2017-12-29 | 2018-04-06 | 中国人民解放军国防科技大学 | 一种大规模矩阵卷积的多核实现方法 |
CN110473137A (zh) * | 2019-04-24 | 2019-11-19 | 华为技术有限公司 | 图像处理方法和装置 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113837922A (zh) * | 2021-09-26 | 2021-12-24 | 安徽寒武纪信息科技有限公司 | 计算装置、数据处理方法及相关产品 |
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN115858178B (zh) * | 2023-02-21 | 2023-06-06 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2021147567A1 (zh) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109993299B (zh) | 数据训练方法及装置、存储介质、电子装置 | |
US20180174036A1 (en) | Hardware Accelerator for Compressed LSTM | |
US9152601B2 (en) | Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units | |
US9053067B2 (en) | Distributed data scalable adaptive map-reduce framework | |
US8887165B2 (en) | Real time system task configuration optimization system for multi-core processors, and method and program | |
CN113222125A (zh) | 卷积运算方法及芯片 | |
Peng et al. | GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation | |
US20200184366A1 (en) | Scheduling task graph operations | |
CN113994350A (zh) | 为神经网络生成并行计算方案 | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN113222136A (zh) | 卷积运算方法及芯片 | |
CN112784973A (zh) | 卷积运算电路、装置以及方法 | |
CN113222099A (zh) | 卷积运算方法及芯片 | |
CN114503126A (zh) | 矩阵运算电路、装置以及方法 | |
Aksenova et al. | The models and methods of optimal control of three work-stealing deques located in a shared memory | |
Schmidt et al. | Load-balanced parallel constraint-based causal structure learning on multi-core systems for high-dimensional data | |
Al Maruf et al. | Optimizing DNNs Model Partitioning for Enhanced Performance on Edge Devices. | |
CN114283046A (zh) | 基于icp算法的点云文件配准方法、装置及存储介质 | |
CN114691142A (zh) | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 | |
TWI753728B (zh) | 運算單元架構、運算單元叢集及卷積運算的執行方法 | |
Souissi et al. | Optimization of matching and scheduling on heterogeneous CPU/FPGA architectures | |
CN115705499B (zh) | 量子计算机操作***以及量子计算机 | |
CARMONA et al. | REINSURANCE ANALYTICS USING SERIAL AND PARALLEL COMPUTATION ON THE MULTIOBJECTIVE EVOLUTIONARY ALGORITHM SPEA2 | |
Soiman et al. | A parallel accelerated approach of HMM Forward Algorithm for IBM Roadrunner clusters | |
Malaschonok et al. | Control of matrix computations on distributed memory |
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 |