CN115758054A - 一种卷积计算方法、数据处理方法、芯片及电子设备 - Google Patents
一种卷积计算方法、数据处理方法、芯片及电子设备 Download PDFInfo
- Publication number
- CN115758054A CN115758054A CN202310096518.9A CN202310096518A CN115758054A CN 115758054 A CN115758054 A CN 115758054A CN 202310096518 A CN202310096518 A CN 202310096518A CN 115758054 A CN115758054 A CN 115758054A
- Authority
- CN
- China
- Prior art keywords
- convolution
- sub
- convolution kernel
- kernel
- splitting
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本申请涉及一种卷积计算方法、数据处理方法、芯片及电子设备,属于计算机技术领域。卷积计算方法包括:获取多个子卷积核中的每个子卷积核对应的权重矩阵,其中,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值;获取每个子卷积核对应的输入特征矩阵;根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果。本申请中,通过将卷积计算所需的卷积核拆分为多个子卷积核,再分别获取多个子卷积核中的每个子卷积核对应的权重矩阵及输入特征矩阵进行卷积计算,从而实现任意形状的卷积核与输入特征图的卷积计算。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种卷积计算方法、数据处理方法、芯片及电子设备。
背景技术
卷积(convolution)是神经网络最常见和最繁重的操作之一。卷积的实现可以有多种算法,其中图像到列转换(Image to Column),并结合通用矩阵乘(GEneralMatrixMultiplication,GEMM)是目前最常用的算法之一,几乎所有的主流计算框架都采用了该算法。
图像到列转换通过将输入特征图(inputfeature map)的三维数据转换成大小为M*K的输入特征矩阵A,将卷积核(convolution kernel)转换成大小为K*N的权重矩阵B,从而使得卷积计算可表示成两个二维矩阵的乘积,最终得到大小为M*N的输出特征矩阵C。其中,M = OH (Output featuremap Height,输出特征图高度)* OW (Output feature mapWidth,输出特征图宽度),K= IC (Input Channel,输入通道数)* KH (Kernel Height,核高度)* KW (Kernel Width,核宽度),N = OC (Output Channel,输出通道数)。
然而受制于芯片面积与功耗,现有用于卷积计算的张量引擎的使用场景较为单一,在很多时候,无法实现卷积计算。
发明内容
鉴于此,本申请的目的在于提供一种卷积计算方法、数据处理方法、芯片及电子设备,以改善现有技术中张量引擎使用场景单一,在很多时候,无法实现卷积计算的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种卷积计算方法,包括:获取多个子卷积核中的每个子卷积核对应的权重矩阵,其中,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值;获取每个子卷积核对应的输入特征矩阵;根据每个子卷积核对应的权重矩阵、每个子卷积核对应的输入特征矩阵,得到卷积计算结果。
本申请实施例中,通过将卷积计算所需的卷积核拆分为多个子卷积核,再分别获取多个子卷积核中的每个子卷积核对应的权重矩阵及输入特征矩阵进行卷积计算,从而实现当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时的卷积计算,进而实现任意形状的卷积核与输入特征图的卷积计算,解决现有技术中张量引擎使用场景单一,在很多时候,无法实现卷积计算的问题。同时,通过拆分使得芯片中的张量引擎可以灵活设计,在确保不管K维多大,都能进行卷积计算前提下,还能使芯片满足PPA(Power,Performance,Area)要求。
结合第一方面实施例的一种可能的实施方式,获取多个子卷积核中的每个子卷积核对应的权重矩阵,包括:按照所述张量引擎的高度值对所述卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于所述张量引擎的高度值的多个第一卷积核;对每一个第一卷积核再次进行拆分,得到所述多个子卷积核;将每一个子卷积核转换成对应的权重矩阵,其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分。
本申请实施例中,先按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于张量引擎的高度值的多个第一卷积核,再对第一卷积核进行拆分,这样可以快速得到所需的子卷积核,即得到权重矩阵的K维中的元素个数不大于张量引擎的高度值的子卷积核。同时,先从输入通道数进行拆分,可以更好的复用输入特征图数据,相比于其他拆分方式,可以提高卷积计算的效率,并且再次拆分时,是将第一卷积核的宽、高作为一个整体(即将第一卷积核的宽、高作为一个维度)进行拆分,这样可以最大化的利用硬件资源,可以减少拆分的子卷积核的数量,从而提高卷积计算效率。
结合第一方面实施例的一种可能的实施方式,对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,包括:针对每一个第一卷积核,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分,得到所述多个子卷积核。
本申请实施例中,在对每一个第一卷积核进行拆分时,可以从第一维度、第二维度对该第一卷积核再次进行拆分,相比于其他拆分方式,可以尽可能的减少拆分的子卷积核的数量,提高拆分效率。
结合第一方面实施例的一种可能的实施方式,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分,包括:从所述第一维度对该第一卷积核进行拆分,将其拆分为至少一个第二卷积核,其中,每个所述第二卷积核在所述第一维度包含的元素个数为第一数值;从所述第二维度对每一个第二卷积核进行拆分,得到多个子卷积核,其中,拆分后的每一个子卷积核的输入通道数与所述第一数值的乘积不大于张量引擎的高度值。
本申请实施例中,先从第一维度第一卷积核拆分为至少一个第二卷积核,之后再从第二维度分别对每个第二卷积核进行拆分,这种拆分方式,可以适应于各种卷积核的形状,灵活性比较好,不需要对卷积核的大小作对齐,拆分效率比较高。
结合第一方面实施例的一种可能的实施方式,对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,包括:针对每一个第一卷积核,从该第一卷积核的宽、高所在面所在的第一维度对该第一卷积核再次进行拆分,得到所述多个子卷积核。
本申请实施例中,在对每一个第一卷积核再次进行拆分时,可以仅从第一维度对该第一卷积核再次进行拆分,增加了拆分的灵活性,同时,把W(宽)跟H(高)作为一个整体拆分,不需要对齐,拆分效率比较高。
结合第一方面实施例的一种可能的实施方式,从该第一卷积核的宽、高所在面所在的第一维度对该第一卷积核再次进行拆分,包括:从第一维度对该第一卷积核进行拆分,将其拆分为多个所述子卷积核,其中,每个子卷积核在第一维度包含的元素个数为第二数值,拆分后的每一个子卷积核的输入通道数与第二数值的乘积不大于张量引擎的高度值,且拆分后的每一个子卷积核的输入通道数等于第一卷积核的输入通道数。
本申请实施例中,在从第一维度对该第一卷积核进行拆分,使得拆分后的每一个子卷积核的输入通道数等于第一卷积核的输入通道数,在不改变输入通道数的情况下,仅需要调整第一维度上包含的元素个数,即可得到所需的子卷积核。
第二方面,本申请实施例还提供了一种芯片,包括:内部存储器以及张量引擎;内部存储器,用于存储卷积计算所需的输入特征图数据,以及多个子卷积核中的每个子卷积核;其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值;张量引擎,用于获取所述内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果。
结合第二方面实施例的一种可能的实施方式,所述张量引擎包括:权重组织单元、数据组织单元、矩阵乘引擎以及累加器;权重组织单元,用于获取所述内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵;数据组织单元,用于从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵;矩阵乘引擎,用于将每一个子卷积核对应的权重矩阵与该子卷积核对应的输入特征矩阵进行矩阵运算;累加器,用于将每一个子卷积核的矩阵运算结果相加,得到所述卷积计算结果。
结合第二方面实施例的一种可能的实施方式,所述芯片还包括:与所述张量引擎连接的向量引擎,用于对所述卷积计算结果进行指定的向量运算。
第三方面,本申请实施例还提供了一种芯片,包括:内部存储器和张量引擎;内部存储器,用于存储卷积计算所需的输入特征图数据以及卷积核数据;张量引擎,用于将所述卷积核数据拆分为多个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果;其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
第四方面,本申请实施例还提供了一种电子设备,包括:存储器,用于存储卷积计算所需的输入特征图数据和卷积核数据;和如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的芯片,所述芯片与所述存储器连接。
第五方面,本申请实施例还提供了一种数据处理方法,包括:按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于所述张量引擎的高度值的多个第一卷积核;对每一个第一卷积核再次进行拆分,得到多个子卷积核;其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种卷积计算方法的流程示意图。
图2示出了本申请实施例提供的一种卷积计算所需的卷积核的示意图。
图3A示出了本申请实施例提供的一种子卷积核的示意图。
图3B示出了本申请实施例提供的又一种子卷积核的示意图。
图3C示出了本申请实施例提供的又一种子卷积核的示意图。
图3D示出了本申请实施例提供的又一种子卷积核的示意图。
图3E示出了本申请实施例提供的又一种子卷积核的示意图。
图4示出了本申请实施例提供的一种卷积计算的原理示意图。
图5示出了本申请实施例提供的一种数据处理方法的流程示意图。
图6示出了本申请实施例提供的一种芯片的结构示意图。
图7示出了本申请实施例提供的又一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
鉴于现有技术中张量引擎使用场景单一,在很多时候,无法实现卷积计算。例如,当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时,现有张量引擎无法实现卷积计算。本申请实施例提供了一种卷积计算方法,以实现当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时的卷积计算。下面将结合图1对本申请实施例提供的卷积计算方法进行说明。
S1:获取多个子卷积核中的每个子卷积核对应的权重矩阵。
受制于芯片面积与功耗等因素的约束,张量引擎通常不会设计的太大,当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时,需要对卷积计算所需的卷积核进行拆分,将其拆分为多个子卷积核,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值,通过将一次完整的卷积计算拆分为多次小规模的卷积计算,从而可以实现当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时的卷积计算。
可以理解的是,并不是一次性获取多个子卷积核中的每个子卷积核对应的权重矩阵,而是分多次获取,例如,一次仅获取多个子卷积核中的一个子卷积核对应的权重矩阵,比如,在周期1,获取多个子卷积核中的第一个子卷积核对应的权重矩阵,在周期2,获取多个子卷积核中的第二个子卷积核对应的权重矩阵,以此类推,在周期n,获取多个子卷积核中的第n个子卷积核对应的权重矩阵,n为多个子卷积核中的子卷积核的数量。当然,如果硬件支持并行获取,也可以一次性获取多个每个子卷积核对应的权重矩阵,或者,一次性获取完所有子卷积核对应的权重矩阵。
一种实施方式下,获取多个子卷积核中的每个子卷积核对应的权重矩阵可以是分时从磁盘或存储器件中获取多个子卷积核中的每个子卷积核对应的权重矩阵。通过事先对卷积计算所需的卷积核进行拆分,将其拆分为多个子卷积核,并将每一个子卷积核转换成对应的权重矩阵,并存储起来;待后续需要进行卷积计算时,直接获取多个子卷积核中的每个子卷积核对应的权重矩阵即可。
其中,磁盘或存储器件可以是位于芯片所在设备中,也可以是位于设备之外的通过本地网络连接的设备中,或者在云端设备中。
可以理解的是,在对卷积计算所需的卷积核进行拆分,将其拆分为多个子卷积核之后,可以不将每一个子卷积核转换成对应的权重矩阵,而是直接存储起来。相应地,一种实施方式下,获取多个子卷积核中的每个子卷积核对应的权重矩阵的过程可以是:获取多个子卷积核中的每个子卷积核,将每个子卷积核转换成对应的权重矩阵。
一种实施方式下,获取多个子卷积核中的每个子卷积核对应的权重矩阵的过程可以是:对卷积计算所需的卷积核进行拆分,得到多个子卷积核,将每一个子卷积核转换成对应的权重矩阵。
可选地,对卷积计算所需的卷积核进行拆分,得到多个子卷积核的过程可以是:按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于张量引擎的高度值的多个第一卷积核,对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分,也即将第一卷积核的宽、高作为一个维度进行拆分,而不是作为2个维度(一个维度为第一卷积核的宽、一个维度为第一卷积核的高),这样可以最大化的利用硬件资源,可以减少拆分的子卷积核的数量,从而提高卷积计算效率。
一种实施方式下,对每一个第一卷积核再次进行拆分,得到多个子卷积核的过程可以是:针对每一个第一卷积核,分别从该第一卷积核的宽、高所在面所在的第一维度(即将第一卷积核的宽、高看作一个维度),输入通道数所在的第二维度,对该第一卷积核再次进行拆分,得到多个子卷积核。
其中,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分的过程可以是:从第一维度对该第一卷积核进行拆分,将其拆分为至少一个第二卷积核,从第二维度对每一个第二卷积核进行拆分,得到多个子卷积核,拆分后的每一个子卷积核的输入通道数与第一数值的乘积不大于张量引擎的高度值。其中,每个第二卷积核在第一维度包含的元素个数为第一数值。其中,至少一个第二卷积核中可能存在,在第一维度包含的元素个数不同的两种第二卷积核,即存在第一数值为A1(其值可以根据需要进行设定)或第二数值为A2(为第一维度包含的最大元素个数与A1的余数)的两种第二卷积核。例如,当第一维度包含的最大元素个数与A1的商不为整数时,此时,会存在两种不同的第二卷积核,若当第一维度包含的最大元素个数与A1的商为整数时,此时仅有一种第二卷积核。
第二卷积核的数量为第一维度包含的最大元素个数与A1的商向上取整所得的数。
可选地,A1的值可以根据需要进行设定,当第一维度包含的最大元素个数大于张量引擎的高度值,则A1的值最大为张量引擎的高度值。A2的值可以为第一维度包含的最大元素个数与A1的余数,例如,最大元素个数为25,A1=8,则最大元素个数与A1的余数为1,则A2为1。
又一种实施方式下,对每一个第一卷积核再次进行拆分,得到多个子卷积核的过程可以是:针对每一个第一卷积核,从第一维度对该第一卷积核进行拆分,将其拆分为多个子卷积核,其中,每个子卷积核在第一维度包含的元素个数为第二数值,拆分后的每一个子卷积核的输入通道数与第二数值的乘积不大于张量引擎的高度值,且拆分后的每一个子卷积核的输入通道数等于第一卷积核的输入通道数。
可选地,第二数值为张量引擎的高度值与第一卷积核的输入通道数的商的整数部分。
为了便于理解,下面结合示例进行说明。假设输入特征图大小为224*224,卷积核大小为5*5,输入通道数(IC)为96输出通道数(OC)为48,步长(stride)为8,填充(padding)为0。则按照该卷积核大小(示例为5*5)和步长(示例为8)在该输入特征图数据(示例为224*224)上进行滑窗操作,可得OH=28=((224-5)/8+1),OW=28。经过图像到列转换后的输入特征矩阵A大小为M *K=(OH * OW)*(IC *KH *KW)= (28 * 28)*(96 *5 *5)= 784*2400;权重矩阵B大小为K *N=(IC *KH* KW)*OC=2400x48,则可产生大小为784*48的输出特征矩阵C。则该卷积操作总共需要784*48 *2400次乘累加运算操作。
可以看出上述示例的K维是非常大的,而受制于芯片面积与功耗等因素的约束,张量引擎通常不会设计的太大,因此需要对图2所示的卷积核进行拆分。假设张量引擎的高度值为64,则按照张量引擎的高度值(示例为64)对卷积计算所需的卷积核的输入通道数(示例为96)进行拆分,将其拆分为2个第一卷积核,每个第一卷积核在第一维度上包含25个元素,即包含25个坐标点对应的25元素,其中,一个第一卷积核的输入通道数为64,另一第一卷积核的输入通道数为32。
之后对每一个第一卷积核再次进行拆分,便可得到满足要求的多个子卷积核。
一种实施方式下,可以分别从第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对第一卷积核再次进行拆分。比如,对于输入通道数为64的第一卷积核,首先从第一维度对该第一卷积核进行拆分,将其拆分为在第一维度上包含8个元素(此时A1为8)的3个第二卷积核,以及在第一维度上包含1个元素(此时A2为1)的1个第二卷积核,为了便于描述,下述将在第一维度上包含的元素个数为A2的第二卷积核,称为第三卷积核。
之后从第二维度,对每一个第二卷积核进行拆分,对于上述的3个第二卷积核,可以拆分为输入通道数为8的24个子卷积核。从第二维度,对第三卷积核进行拆分,可以拆分为输入通道数为64的1个子卷积核。示例中,由于第三卷积核在第一维度上仅包含1个元素,第三卷积核在第一维度上包含的元素个数(示例为1)与其输入通道数(示例为64)的乘积不大于张量引擎的高度值(示例为64),因此第三卷积核无需拆分,或者认为第三卷积核拆分后的子卷积核与第三卷积核一致。
可以理解的是,假设第一卷积核在第一维度上包含36个元素,则第三卷积核在第一维度上包含4(36与8的余数)个元素,则第三卷积核可以拆分为输入通道数为16的4个子卷积核。
同理,对于输入通道数为32的第一卷积核,首先从第一维度对该第一卷积核进行拆分,将其拆分为在第一维度上包含8个元素(此时A1为8)的3个第二卷积核,以及在第一维度上包含1个元素(此时A2为1)的1个第二卷积核(下面将这种在第一维度上包含的元素个数为A2的第二卷积核,称为第三卷积核)。此时,第二卷积核、第三卷积核的输入通道数均为32。之后从第二维度,对每一个第二卷积核进行拆分,可以拆分为输入通道数为8的12个子卷积核;从第二维度,对第三卷积核进行拆分,可以拆分为输入通道数为32的1个子卷积核。对图2所示的卷积核进行拆分,可以得到12个在第一维度上包含8个元素的如图3A、图3B、图3C的子卷积核,和得到在第一维度上包含1个元素的一个图3D、图3E所示的子卷积核。具体地,对于输入通道数为64的第一卷积核进行拆分,可以得到8个在第一维度上包含8个元素的如图3A、图3B、图3C的子卷积核和一个在第一维度上包含1个元素的图3D所示的子卷积核;对于输入通道数为32的第一卷积核进行拆分,可以得到4个在第一维度上包含4个元素的如图3A、图3B、图3C的子卷积核和一个在第一维度上包含1个元素的图3E所示的子卷积核。
其中,图3A、图3B、图3C所示的子卷积核的输入通道数相同,均为8,不同之处在于在第一维度上包含的元素不同。比如,图3A所示的子卷积核包含的元素如图中阴影部分所示,为(0,0), (0,1), (0,2), (0,3), (0,4), (1,0), (1,1), (1,2) 这8个坐标对应的元素。图3B所示的子卷积核包含的元素如图中阴影部分所示,为(1,3), (1,4), (2,0), (2,1), (2,2), (2,3), (2,4), (3,0)这8个坐标对应的元素。图3C所示的子卷积核包含的元素如图中阴影部分所示,为(3,1), (3,2), (3,3), (3,4), (4,0), (4,1), (4,2), (4,3)这8个坐标对应的元素。图3A、图3B、图3C中的n的取值为[0,11],n依次取0,1,2,3,4,5,6,7,8,9,10,11。
图3D、图3E所示的子卷积核在第一维度上包含的元素一样,如图中阴影部分所示为(4,4)这个坐标对应的元素,不同之处在于,输入通道数不同。
又一种实施方式下,可以仅从第一卷积核的宽、高所在面所在的第一维度,对第一卷积核再次进行拆分。对于输入通道数为64的第一卷积核,从第一维度对该第一卷积核进行拆分,将其拆分为25个输入通道数为64的子卷积核,每一个子卷积核在第一维度上包含1个元素。对于输入通道数为32的第一卷积核,从第一维度对该第一卷积核进行拆分,将其拆分为13个输入通道数为32的子卷积核,其中有12个子卷积核在第一维度上包含2个元素,一个子卷积核在第一维度上包含1个元素。
通过上述示例可以看出,通过对卷积计算所需的卷积核进行拆分,将其拆分为多个子卷积核,之后分别利用每一个子卷积核去进行卷积计算,这样可以实现当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时的卷积计算。
S2:获取每个子卷积核对应的输入特征矩阵。
卷积计算除了需要获取每个子卷积核对应的权重矩阵外,还需要获取每个子卷积核对应的输入特征矩阵。
一种实施方式下,可以是分时从磁盘或存储器件中获取每个子卷积核对应的输入特征矩阵。通过事先获取每个子卷积核对应的输入特征矩阵,并存储起来,待后续需要进行卷积计算时,直接获取即可,这样可以加快卷积运算。
一种实施方式下,获取每个子卷积核对应的输入特征矩阵的过程可以是:获取每个子卷积核对应的输入特征图数据,将每个子卷积核对应的输入特征图数据转换为对应的输入特征矩阵。
一种实施方式下,可以是从卷积计算所需的完整输入特征图数据中获取每个子卷积核对应的输入特征图数据,将每个子卷积核对应的输入特征图数据转换为对应的输入特征矩阵。
由于卷积核拆分成多个子卷积核后,相应的,每个子卷积核对应的输入特征矩阵变为卷积计算所需的完整输入特征矩阵中的一部分。
为了很好的理解,下面结合图4对其说明。卷积计算所需的完整输入特征图经过图像到列转换后,得到输入特征矩阵A,卷积计算所需的卷积核经过图像到列转换后,得到权重矩阵B,输入特征矩阵A与权重矩阵B相乘,得到输出特征矩阵C。由于有N个输出通道数,因此在每个输出通道数上相当于有一个卷积核,如图4中的N个卷积核对应N个输出通道数,每一个输出通道数上的卷积核对应权重矩阵B的一列,如图4中的卷积核7经过图像到列转换后,对应图4中权重矩阵B的阴影部分所示,该列与输入特征矩阵A对应的行(阴影部分所示)相乘,可以得到输出特征矩阵C中的一个点(阴影部分所示)。
将卷积核拆分成多个子卷积核后,每个子卷积核对应的权重矩阵仅为权重矩阵B中的一部分,即将图4中第7列的阴影部分拆分成多段,相应地,每个子卷积核对应的输入特征矩阵也为输入特征矩阵A中的一部分,如将图4中第3行的阴影部分拆分成对应的多段,即拆分后,会将原先的权重矩阵B的K维(列)拆分成多段,相应地,每个子卷积核对应的输入特征矩阵的K维(行)也变为原先的输入特征矩阵A的K维(行)的一部分。使得原本一次乘积就可以得到输出特征矩阵C中的一个点,变成需要多次乘累加才能得到输出特征矩阵C中的一个点。
S3:根据每个子卷积核对应的权重矩阵、每个子卷积核对应的输入特征矩阵,得到卷积计算结果。
根据每个子卷积核对应的权重矩阵、每个子卷积核对应的输入特征矩阵,得到卷积计算结果,也即,将每一个子卷积核对应的权重矩阵与该子卷积核对应的输入特征矩阵进行矩阵运算,将每一个子卷积核的矩阵运算结果相加,得到卷积计算结果。
依据存储器的带宽与延迟等多种因素的不同,图3A到图3D所示的6种不同类型的子卷积核,可采用不同的执行顺序。比如采用如下执行顺序时,通过一次抓取卷积核的前64个输入通道对应的一块输入特征图数据,图3A、图3B、图3C,图3D所示子卷积核可以复用该输入特征图数据,通过一次抓取后卷积核的32个输入通道对应的一块输入特征图数据,图3A、图3B、图3C,图3E所示子卷积核也可以复用该输入特征图数据,从而节省带宽并提高性能。
比如,对应卷积核的前64个输入通道的对应的一块输入特征图数据,循环执行图3A,图3B,图3C阴影部分所示子卷积核8次(i=[0,7])。
第i*3+1次执行,如图3A阴影部分所示子卷积核,IC=[i*8,i*8+7]。
第i*3+2次执行,如图3B阴影部分所示子卷积核,IC=[i*8,i*8+7]。
第i*3+3次执行,如图3C阴影部分所示子卷积核,IC=[i*8,i*8+7]。
第25次执行,如图3D阴影部分所示子卷积核,IC=[0,63]。
对应卷积核的后32个输入通道的对应的一块输入特征图数据,循环执行图3A,图3B,图3C阴影部分所示子卷积核4次(m=[0,3])。
第25+m*3+1次执行,如图3A阴影部分所示子卷积核,IC=[64+m*8, 64+m*8+7]。
第25+m*3+2次执行,如图3B阴影部分所示子卷积核,IC=[64+m*8, 64+m*8+7]。
第25+m*3+3次执行,如图3C阴影部分所示子卷积核,IC=[64+m*8, 64+m*8+7]。
第38次执行,如图3E阴影部分所示子卷积核,IC=[64,95]。
可以理解的是,上述子卷积核的执行顺序,并不限于上述示例。各个子卷积的执行顺序可以随意变化,只要每个子卷积均执行到即可。比如也可以先循环执行图3A阴影部分所述子卷积核的不同的IC集合,再循环执行图3B阴影部分所述子卷积核的不同的IC集合,再循环执行图3C阴影部分所述子卷积核的不同的IC集合。
基于同样的发明构思,本申请实施例还提供了一种数据处理方法,下面结合图5对其原理进行说明。
S10:按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于所述张量引擎的高度值的多个第一卷积核。
当权重矩阵和/或输入特征矩阵的K维大于张量引擎的高度值时,需要对卷积计算所需的卷积核进行拆分,一种实施方式下,可以按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于张量引擎的高度值的多个第一卷积核。
S20:对每一个第一卷积核再次进行拆分,得到多个子卷积核。
在将卷积核拆分为输入通道数不大于张量引擎的高度值的多个第一卷积核,对每一个第一卷积核再次进行拆分,得到多个子卷积核,使得拆后分的每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分,即将第一卷积核的宽、高作为一个维度)进行拆分,这样可以最大化的利用硬件资源,可以减少拆分的子卷积核的数量,从而提高卷积计算效率。
一种实施方式下,对每一个第一卷积核再次进行拆分,得到多个子卷积核的过程可以是:针对每一个第一卷积核,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分,得到多个子卷积核。
又一种实施方式下,对每一个第一卷积核再次进行拆分,得到多个子卷积核的过程可以是:
针对每一个第一卷积核,从第一维度对该第一卷积核进行拆分,得到多个子卷积核。
本申请实施例所提供的数据处理方法,其实现原理及产生的技术效果和前述卷积计算方法实施例相同,为简要描述,数据处理方法部分未提及之处,可参考前述卷积计算方法实施例中相应内容。
基于同样的发明构思,本申请实施例还提供了一种芯片,如图6所示。该芯片包括:内部存储器以及张量引擎,张量引擎与内部存储器连接。
内部存储器,用于存储卷积计算所需的输入特征图数据,以及多个子卷积核中的每个子卷积核。其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。通过存储卷积计算所需的输入特征图数据,该输入特征图数据可以是完整输入特征图数据,也可以是部分输入特征图数据,比如可以是卷积核的前64个输入通道对应的一块输入特征图数据,或者卷积核的后32个输入通道对应的一块输入特征图数据,使得各个子卷积核可以复用该输入特征图数据,从而减少该内部存储器与芯片外部之间的数据搬运。
内部存储器,可以是一次性存储多个子卷积核中的每个子卷积核,也可以是分时存储多个子卷积核中的每个子卷积核,即每次仅存储多个子卷积核中的部分子卷积核,比如仅存储一个子卷积核。
可以理解的是,一种实施方式下,内部存储器还可以用于存储卷积计算所需的完整卷积核数据以及卷积计算所需的输入特征图数据;或者,内部存储器还可以用于存储多个子卷积核中的每个子卷积核,以及每个子卷积核对应的输入特征图数据;或者,内部存储器还可以用于存储多个子卷积核中的每个子卷积核对应的权重矩阵,以及每个子卷积核对应的输入特征矩阵。也即,内部存储器中存储的数据可以根据实际需要进行设置,并不局限于某一种具体的数据。
内部存储器可以是目前市面上常用的存储器,该存储器可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(ErasableProgrammableRead-Only Memory,EPROM),电可擦除只读存储器(ElectricErasableProgrammable Read-Only Memory,EEPROM)等。
张量引擎,用于获取所述内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果。
可以理解的是,如果内部存储器直接存储每个子卷积核对应的权重矩阵,此时,张量引擎直接从内部存储器中获取每个子卷积核对应的权重矩阵。若内部存储器存储的是每个子卷积核,则张量引擎先从内部存储器中获取每个子卷积核,之后再将获取的每个子卷积核转换成对应的权重矩阵。若内部存储器存储的是卷积计算所需的完整卷积核数据,此时,张量引擎还可以用于对该内存存储器中的完整卷积核数据进行拆分,将其拆分为多个子卷积核,之后再获取每个子卷积核对应的权重矩阵。
即一种实施方式下,可以是张量引擎进行卷积核的拆分。此时,内部存储器,用于存储卷积计算所需的输入特征图数据以及卷积核数据。张量引擎,用于将卷积核数据拆分为多个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果;其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
一种实施方式下,张量引擎包括:权重组织单元、数据组织单元、矩阵乘引擎以及累加器。其中,张量引擎的高度值等于矩阵乘引擎的高度值。
权重组织单元,用于获取内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵,并发送给矩阵乘引擎;或者,用于将内部存储器中的每个子卷积核对应的权重矩阵,发送给矩阵乘引擎。此外,权重组织单元,还可以用于对卷积核数据进行拆分,将其拆分为多个子卷积核
数据组织单元,用于从内部存储器中的输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,之后发送给矩阵乘引擎。
矩阵乘引擎,用于将每一个子卷积核对应的权重矩阵与该子卷积核对应的输入特征矩阵进行矩阵运算,并将矩阵运算结果发送给累加器。
累加器,用于将每一个子卷积核的矩阵运算结果相加,得到卷积计算结果。
一种可选实施方式下,芯片还包括:与张量引擎连接的向量引擎,用于对卷积计算结果进行指定的向量运算,比如进行激活(activation)与池化(pooling)操作等向量运算。可选地,该向量引擎还可以与内存存储器连接,待向量运算完成后,输出数据会被写回到内部存储器。
可选地,该芯片还包括主机接口以及直接内存访问模块(Direct Memory Access,DMA),如图7所示。主机接口接收来自主机的命令,一方面控制DMA把数据从主机端搬运到内存存储器,一方面控制张量引擎在数据准备好后进行各种GEMM(通用矩阵乘)运算,比如卷积操作,完成后直接输出至内部存储器,或者由向量引擎进行各种向量运算,待向量运算完成后,输出数据会被写回到内部存储器。内部存储器中的数据可接着提供给下一层网络作为输入数据使用或者由DMA从内部存储器搬回到主机。
可以理解的是,图7所示的芯片仅为多种实施方式中的一种,并不能将其具体结构理解成是对本申请的限制,比如一种实施方式下,该芯片可以不包括向量引擎和/或DMA等。另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
本申请实施例提供的芯片可以是能执行上述卷积计算的芯片,该芯片可以是处理器。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
基于同样的发明构思,申请实施例还提供了一种电子设备,该电子设备包括存储器和上述的芯片。其中,存储器,可以用于存储卷积计算所需的输入特征图数据和卷积核数据。该存储器可以与芯片中的内部存储器相同,也可以不同。
该电子设备可以支持上述所示卷积计算,包括但不限于手机、平板、电脑等产品。
电子设备本申请实施例所提供的芯片,其实现原理及产生的技术效果和前述芯片实施例相同,为简要描述,电子设备实施例部分未提及之处,可参考前述芯片实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种卷积计算方法,其特征在于,包括:
获取多个子卷积核中的每个子卷积核对应的权重矩阵,其中,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值;
获取每个子卷积核对应的输入特征矩阵;
根据每个子卷积核对应的权重矩阵、每个子卷积核对应的输入特征矩阵,得到卷积计算结果。
2.根据权利要求1所述的方法,其特征在于,获取多个子卷积核中的每个子卷积核对应的权重矩阵,包括:
按照所述张量引擎的高度值对所述卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于所述张量引擎的高度值的多个第一卷积核;
对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分;
将每一个子卷积核转换成对应的权重矩阵。
3.根据权利要求2所述的方法,其特征在于,对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,包括:
针对每一个第一卷积核,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分,得到所述多个子卷积核。
4.根据权利要求3所述的方法,其特征在于,分别从该第一卷积核的宽、高所在面所在的第一维度,输入通道数所在的第二维度,对该第一卷积核再次进行拆分,包括:
从所述第一维度对该第一卷积核进行拆分,将其拆分为至少一个第二卷积核,其中,每个所述第二卷积核在所述第一维度包含的元素个数为第一数值;
从所述第二维度对每一个第二卷积核进行拆分,得到多个所述子卷积核,其中,拆分后的每一个子卷积核的输入通道数与所述第一数值的乘积不大于张量引擎的高度值。
5.根据权利要求2所述的方法,其特征在于,对每一个第一卷积核再次进行拆分,得到所述多个子卷积核,包括:
针对每一个第一卷积核,从该第一卷积核的宽、高所在面所在的第一维度对该第一卷积核再次进行拆分,得到所述多个子卷积核。
6.根据权利要求5所述的方法,其特征在于,从该第一卷积核的宽、高所在面所在的第一维度对该第一卷积核再次进行拆分,包括:
从第一维度对该第一卷积核进行拆分,将其拆分为多个所述子卷积核,其中,每个子卷积核在第一维度包含的元素个数为第二数值,拆分后的每一个子卷积核的输入通道数与所述第二数值的乘积不大于所述张量引擎的高度值,且拆分后的每一个子卷积核的输入通道数等于第一卷积核的输入通道数。
7.一种芯片,其特征在于,包括:
内部存储器,用于存储卷积计算所需的输入特征图数据,以及多个子卷积核中的每个子卷积核;其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值;
张量引擎,用于获取所述内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果。
8.根据权利要求7所述的芯片,其特征在于,所述张量引擎包括:
权重组织单元,用于获取所述内部存储器中的每个子卷积核,并将每个子卷积核转换成对应的权重矩阵;
数据组织单元,用于从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵;
矩阵乘引擎,用于将每一个子卷积核对应的权重矩阵与该子卷积核对应的输入特征矩阵进行矩阵运算;
累加器,用于将每一个子卷积核的矩阵运算结果相加,得到所述卷积计算结果。
9.根据权利要求7所述的芯片,其特征在于,所述芯片还包括:
与所述张量引擎连接的向量引擎,用于对所述卷积计算结果进行指定的向量运算。
10.一种芯片,其特征在于,包括:
内部存储器,用于存储卷积计算所需的输入特征图数据以及卷积核数据;
张量引擎,用于将所述卷积核数据拆分为多个子卷积核,并将每个子卷积核转换成对应的权重矩阵,以及从所述输入特征图数据中获取每个子卷积核对应的输入特征图数据,并将每个子卷积核对应的输入特征图数据转换成对应的输入特征矩阵,并根据每个子卷积核对应的权重矩阵、输入特征矩阵,得到卷积计算结果;其中,每个子卷积核对应卷积计算所需的卷积核的一部分,且每个子卷积核的对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
11.一种电子设备,其特征在于,包括:
存储器,用于存储卷积计算所需的输入特征图数据和卷积核数据;
和如权利要求7-9任一项所述的芯片,所述芯片与所述存储器连接。
12.一种数据处理方法,其特征在于,包括:
按照张量引擎的高度值对卷积计算所需的卷积核的输入通道数进行拆分,将其拆分为输入通道数不大于所述张量引擎的高度值的多个第一卷积核;
对每一个第一卷积核再次进行拆分,得到多个子卷积核;其中,再次拆分时,是将第一卷积核的宽、高作为一个整体进行拆分,每个子卷积核对应卷积计算所需的卷积核中的一部分,且每个子卷积核对应的权重矩阵的K维中的元素个数不大于张量引擎的高度值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096518.9A CN115758054B (zh) | 2023-02-10 | 2023-02-10 | 一种卷积计算方法、数据处理方法、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096518.9A CN115758054B (zh) | 2023-02-10 | 2023-02-10 | 一种卷积计算方法、数据处理方法、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115758054A true CN115758054A (zh) | 2023-03-07 |
CN115758054B CN115758054B (zh) | 2023-04-14 |
Family
ID=85348953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310096518.9A Active CN115758054B (zh) | 2023-02-10 | 2023-02-10 | 一种卷积计算方法、数据处理方法、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115758054B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN117763275A (zh) * | 2024-02-21 | 2024-03-26 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180373981A1 (en) * | 2017-06-21 | 2018-12-27 | TuSimple | Method and device for optimizing neural network |
CN110263923A (zh) * | 2019-08-12 | 2019-09-20 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
CN110647974A (zh) * | 2018-06-27 | 2020-01-03 | 杭州海康威视数字技术股份有限公司 | 深度神经网络中的网络层运算方法及装置 |
CN111047025A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种卷积计算方法及装置 |
CN111932437A (zh) * | 2020-10-10 | 2020-11-13 | 深圳云天励飞技术股份有限公司 | 图像处理方法、装置、电子设备及计算机可读存储介质 |
CN113627592A (zh) * | 2021-08-02 | 2021-11-09 | 西安交通大学 | 面向Winograd参数可调的卷积张量优化方法及系统 |
US20220114424A1 (en) * | 2020-10-08 | 2022-04-14 | Niamul QUADER | Multi-bandwidth separated feature extraction convolution layer for convolutional neural networks |
US20220405349A1 (en) * | 2019-11-01 | 2022-12-22 | Cambricon Technologies Corporation Limited | Data processing method and apparatus, and related product |
-
2023
- 2023-02-10 CN CN202310096518.9A patent/CN115758054B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180373981A1 (en) * | 2017-06-21 | 2018-12-27 | TuSimple | Method and device for optimizing neural network |
CN110647974A (zh) * | 2018-06-27 | 2020-01-03 | 杭州海康威视数字技术股份有限公司 | 深度神经网络中的网络层运算方法及装置 |
CN111047025A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种卷积计算方法及装置 |
CN110263923A (zh) * | 2019-08-12 | 2019-09-20 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
US20220405349A1 (en) * | 2019-11-01 | 2022-12-22 | Cambricon Technologies Corporation Limited | Data processing method and apparatus, and related product |
US20220114424A1 (en) * | 2020-10-08 | 2022-04-14 | Niamul QUADER | Multi-bandwidth separated feature extraction convolution layer for convolutional neural networks |
CN111932437A (zh) * | 2020-10-10 | 2020-11-13 | 深圳云天励飞技术股份有限公司 | 图像处理方法、装置、电子设备及计算机可读存储介质 |
CN113627592A (zh) * | 2021-08-02 | 2021-11-09 | 西安交通大学 | 面向Winograd参数可调的卷积张量优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
王庆林;李东升;梅松竹;赖志权;窦勇;: "面向飞腾多核处理器的Winograd快速卷积算法优化" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN116861149B (zh) * | 2023-09-05 | 2024-01-09 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN117763275A (zh) * | 2024-02-21 | 2024-03-26 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
CN117763275B (zh) * | 2024-02-21 | 2024-06-21 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN115758054B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115758054B (zh) | 一种卷积计算方法、数据处理方法、芯片及电子设备 | |
CN110245751B (zh) | 一种gemm运算方法及装置 | |
US11640316B2 (en) | Compiling and scheduling transactions in neural network processor | |
CN109213962B (zh) | 运算加速器 | |
CN110050267B (zh) | 用于数据管理的系统和方法 | |
CN108229645B (zh) | 卷积加速和计算处理方法、装置、电子设备及存储介质 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
US11328395B2 (en) | Image processing method, image processing device, electronic equipment and computer readable storage medium | |
CN112989267A (zh) | 用于执行卷积运算的方法和系统 | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
US11972348B2 (en) | Texture unit circuit in neural network processor | |
CN109615061B (zh) | 一种卷积运算方法及装置 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
US11853868B2 (en) | Multi dimensional convolution in neural network processor | |
US20220100814A1 (en) | Graphics processor and acceleration method thereof | |
JP6888073B2 (ja) | チップ装置および関連製品 | |
Wu et al. | Amoeba: An Efficient and Flexible FPGA-Based Accelerator for Arbitrary-Kernel CNNs | |
CN116108902B (zh) | 采样操作实现系统、方法、电子设备及存储介质 | |
JP2020177641A (ja) | チップ装置および関連製品 | |
US20220222509A1 (en) | Processing non-power-of-two work unit in neural processor circuit | |
CN116980277B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN117851742B (zh) | 数据存储方法、数据处理方法、数据存储器、数据处理器 | |
US12079724B2 (en) | Texture unit circuit in neural network processor | |
CN109615062B (zh) | 一种卷积运算方法及装置 | |
CN118132456A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |