CN113052291B - 数据处理方法和装置 - Google Patents

数据处理方法和装置 Download PDF

Info

Publication number
CN113052291B
CN113052291B CN201911374771.6A CN201911374771A CN113052291B CN 113052291 B CN113052291 B CN 113052291B CN 201911374771 A CN201911374771 A CN 201911374771A CN 113052291 B CN113052291 B CN 113052291B
Authority
CN
China
Prior art keywords
convolution
data block
data
output element
filling
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
Application number
CN201911374771.6A
Other languages
English (en)
Other versions
CN113052291A (zh
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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent 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 Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to CN201911374771.6A priority Critical patent/CN113052291B/zh
Publication of CN113052291A publication Critical patent/CN113052291A/zh
Application granted granted Critical
Publication of CN113052291B publication Critical patent/CN113052291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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

Landscapes

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

Abstract

本说明书实施例提供一种数据处理方法和装置,获取包括卷积核参数和填充参数的卷积参数,根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息,基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。

Description

数据处理方法和装置
技术领域
本公开涉及数据处理领域,尤其涉及数据处理方法和装置。
背景技术
卷积(Convolution)运算在基于深度神经网络的图像处理中有广泛的应用。其中,在分组卷积(Group Convolution)中,对待处理图像和卷积核分别分成多组,然后每组分别进行卷积,从而可以大幅地减少计算量。但是,分组卷积属于访存受限(memory-bound)模式,因此,在处理器上实现分组卷积时如何减少访存相关的操作是本领域待解决的问题。
发明内容
本公开提供一种数据处理方案。
根据本公开实施例的第一方面,提供一种数据处理方法,所述方法包括:获取卷积参数,所述卷积参数包括卷积核参数和填充参数;根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。
在一些实施例中,所述输出元素对应的填充数据信息指示所述输出元素对应的卷积数据块包括填充数据以及所述填充数据在所述卷积数据块中的位置;所述方法还包括:根据所述输出元素对应的填充数据信息,确定所述输出元素对应的卷积数据块中包括的填充数据和输入数据块。
在一些实施例中,所述基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,包括:若所述输出元素对应的卷积数据块包括填充数据,对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,并对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值;根据所述第一卷积值和第二卷积值,得到所述输出元素的数值。
在一些实施例中,所述对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,包括:调用所述输出元素对应的第一卷积函数模块对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值;和/或所述对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值,包括:调用所述输出元素对应的第二卷积函数模块,对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值。
在一些实施例中,所述填充参数包括填充宽度以及所述填充数据的数值。
在一些实施例中,若所述卷积数据块包括的填充数据的数值为0,确定所述输出元素对应的填充数据与所述卷积核参数的卷积处理结果均为0。
在一些实施例中,所述对所述输出元素对应的卷积数据块进行卷积处理,包括:对第一向量寄存器中的输入数据块和/或填充数据与第二向量寄存器中的卷积核参数进行卷积处理;其中,包含所述卷积数据块的数据块预先从内存加载到所述第一向量寄存器中,所述卷积核参数预先从内存加载到所述第二向量寄存器中,所述第一向量寄存器和第二向量寄存器的数量预先设定。
在一些实施例中,所述输入数据块包括X个输入通道,所述输入通道数X根据用于将数据加载到寄存器中的向量的宽度以及所加载的数据的长度之比确定。
在一些实施例中,所述方法还包括:将所述输出数据块存储至第三寄存器;将所述第三寄存器中的输出数据块加载到内存;其中,所述第三寄存器的数量预先设定。
根据本公开实施例的第二方面,提供一种数据处理装置,所述装置包括:获取模块,用于获取卷积参数,所述卷积参数包括卷积核参数和填充参数;第一确定模块,用于根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;卷积处理模块,用于基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
根据本公开实施例的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权任一实施例所述的方法。
本公开实施例获取包括卷积核参数和填充参数的卷积参数,根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息,基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。通过采用本公开实施例的方案,对包括填充数据的卷积数据块进行卷积处理时,无需先在内存中对输入数据块进行填充处理再对填充后的数据进行卷积处理,而是直接基于填充数据信息和卷积核参数对输出元素对应的卷积数据块进行卷积处理,减少了对内存的访存操作。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1是本公开实施例的Depthwise卷积过程示意图。
图2是本公开实施例的数据处理方法流程图。
图3是本公开一实施例的填充处理示意图。
图4是本公开一实施例的包含填充数据的卷积过程示意图。
图5是本公开一实施例的寄存器分配示意图。
图6是本公开另一实施例的寄存器分配示意图。
图7是本公开实施例的数据处理装置的框图。
图8是本公开实施例的用于实施本公开方法的计算机设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开实施例的一些方面相一致的装置和方法的例子。
在本公开实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开实施例。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
分组卷积(Group Convolution)是对输入特征图(feature map)和卷积核分别进行分组,然后每组数据分别进行卷积。假设输入的feature map的尺寸为[1,C,H,W],即batch为1,输入通道数为C,高和宽分别为H和W;同样假设卷积核为[N,C,K,K],即有N个卷积核,输入通道数为C,卷积核的高和宽均为K。如果分组数量为G,则输入的特征图就被分为G组[1,C/G,H,W],卷积核被分为G组[N/G,C/G,K,K]。由此可见,相比于分组之前,卷积核的总参数量减少为之前的1/G。Depthwise卷积是分组卷积的一种特殊情况,在目前一些主流的深度神经网络中有广泛的应用。在Depthwise卷积中,分组数量G等于特征图的输入通道数C和卷积核的数量N,在上面的例子里,在Depthwise卷积中,每组特征图为[1,1,H,W],每组卷积核为[1,1,K,K],一共有G组,卷积核的总参数量为[G,1,K,K]。
图1示例性地示出了一个[1,4,H,W]的输入特征图经过3x3卷积核的Depthwise卷积过程。其中,输入特征图被分成四组[1,1,H,W],分别和一个[1,1,3,3]的卷积核做卷积,卷积核的总数为[4,1,3,3],最后得到一个输出通道数同样为4的输出特征图。
由上可知,从计算的角度来看,分组卷积可以大幅地减少卷积核的参数量,同时由于不需要再和常规卷积一样累加多个输入通道的值,计算量也因此大幅减少。分组卷积的计算模式是典型的memory-bound(访存受限)模式,相比于常规卷积而言,分组卷积中输入特征图的数据无法给多个卷积核复用。因此,在处理器上实现分组卷积时需要进行额外的设计,尽可能地减少访存相关的操作。
基于此,本公开实施例提供了一种数据处理方法,如图2所示,所述方法可包括:
步骤201:获取卷积参数,所述卷积参数包括卷积核参数和填充参数;
步骤202:根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;
步骤203:基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。
本公开实施例的步骤可由处理器(CPU)、GPU或其他类型的处理器或处理设备执行,输入数据块和卷积核参数可以存储在内存中,填充参数可以由处理器获取。在进行卷积处理时,处理器将内存中的输入数据块和卷积核参数从内存加载到寄存器中,并可选地将填充数据写入到寄存器中,进行完卷积处理之后,处理器再将卷积处理得到的输出数据块从寄存器加载到内存中。输入数据块可以是输入特征图中的一个数据块(称为输入特征数据块),也可以是原始图像中的一个数据块(称为输入图像数据块)。
在步骤201中,卷积数据块中可以仅包括输入数据块,也可以包括输入数据块和填充数据,也可以仅包括填充数据。填充(padding)处理是指在输入数据块的周围增加一圈填充数据,例如,在3×3的输入数据块周围增加一层填充数据,得到5×5的数据块,如图3所示,其中,白色方格为输入数据块,灰色方格为填充数据。填充参数中可以包括填充宽度,还可以包括填充数据的数值。在输入数据块周围填充N行/列数据,则填充宽度即为N,例如,在图3所示的实施例中,填充宽度为1。填充数据的数值可以是各种常数,各个位置处填充数据的数值可以相同,也可以不同。例如,可以将各个填充数据的数值均设为0或者1或其他数值。
在步骤202中,输出数据块中每个元素对应的填充数据信息是不同的。因此,可以根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息。其中,可选地,所述输出元素对应的填充数据信息指示所述输出元素对应的卷积数据块是否包括填充数据,以及在包括填充数据的情况下指示所述填充数据在所述卷积数据块中的位置。
在一些实施例中,输出元素对应的填充数据信息用于指示输出元素对应的卷积数据块中是否包括填充数据。例如,所述输出元素对应的填充数据信息中可以包括不同的标识信息,用于指示输出元素对应的卷积数据块中包括或者不包括填充数据。又例如,当输出元素对应的填充数据信息为空时,输出元素对应的卷积数据块中不包括填充数据;当输出元素对应的填充数据信息非空时,输出元素对应的卷积数据块中包括填充数据。例如,当填充宽度为1时,位于输出数据块边界上的输出元素对应的卷积数据块中包括填充数据,位于输出数据块非边界位置处的输出元素对应的卷积数据块中不包括填充数据。
当输出元素对应的卷积数据块中包括填充数据时,可以根据所述输出元素对应的填充数据信息,确定所述输出元素对应的卷积数据块中包括的填充数据和输入数据块。如图4所示,是本公开一些实施例的输出元素的位置与卷积数据块中的填充数据的关系示意图,假设将3×3的卷积核参数与图3所示的卷积数据块进行卷积处理,得到一个同为3×3的输出数据块,如图4正中间的黑色方块所示,则输出数据块中位于第1行第1列的输出元素对应的卷积数据块中第1行以及第1列的数据均为填充数据,其余位置为输入数据块;输出数据块中位于第1行第2列的输出元素对应的卷积数据块中第1行的数据均为填充数据,其余位置为输入数据块。其他输出元素对应的卷积数据块中的填充数据以及输入数据块分别如图中灰色方块以及白色方块所示,此处不再赘述。
通过本公开实施例的方案,仅需将图中白色部分的输入数据块存储至内存,图中灰色部分的填充数据可以通过获取填充参数的方式得到,不需要将其存储至内存,也不需要与输入数据块进行填充处理。
在步骤203中,若所述输出元素对应的卷积数据块包括填充数据,对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,并对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值;根据所述第一卷积值和第二卷积值,得到所述输出元素的数值。
在本公开实施例中,可以对填充数据和输入数据块分别进行卷积处理。以图4所示的第1行第1列的输出元素对应的卷积数据块为例,该卷积数据块对应的第一卷积值为填充数据(各个灰色方块)与卷积核参数中第1行第1至3列、第2行第1列以及第3行第1列的数据相乘相加之后的结果。该卷积数据块对应的第二卷积值为输入数据块(各个白色方块)与卷积核参数中第2行第2列和第3列,以及第3行第2列和第3列的数据相乘相加之后的结果。
特别地,当各个填充数据的数值均为0时,填充数据与卷积核参数的卷积运算结果即为0;又例如,当各个填充数据的数值均为1时,填充数据与卷积核参数的卷积运算结果为对应位置的卷积核参数的累加值。当各个填充数据的数值均为相同的常数时,填充数据与卷积核参数的卷积运算结果为对应位置的卷积核参数的累加值与该常数的乘积。
在一些实施例中,可通过调用所述输出元素对应的第一卷积函数模块对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值。在另一些实施例中,可通过调用所述输出元素对应的第二卷积函数模块,对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值。
第一卷积函数模块和第二卷积函数模块可用是两个单独的函数模块,也可以是一个函数模块中的两个子模块。在得到第一卷积值和第二卷积值之后,还可以采用一个函数模块来根据第一卷积值和第二卷积值计算得到输出元素的数值。
对于包含填充数据时的卷积处理,传统的处理方式是在内存中分配一块临时空间,该临时空间的大小预留了padding处理所需要的大小,再在临时空间进行填充处理得到填充后的数据块,然后对填充后的数据块进行卷积处理。虽然这样做使得包含填充数据的数据块可以直接由核心代码计算得到卷积结果,但是,这种方式不仅增加了访存次数,还占用了更多的内存空间。而本公开实施例根据输出元素在输出数据块中的第一位置和填充参数确定该输出元素对应的填充数据信息,再基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,无需在内存中先进行填充处理,再对填充后的数据进行卷积处理。这样,就减少了访存次数,同时也减少了对内存空间的占用。
在一些实施例中,所述对所述输出元素对应的卷积数据块进行卷积处理,包括:对第一向量寄存器中的输入数据块和/或填充数据与第二向量寄存器中的卷积核参数进行卷积处理;其中,包含所述卷积数据块的数据块预先从内存加载到所述第一向量寄存器中,所述卷积核参数预先从内存加载到所述第二向量寄存器中,所述第一向量寄存器和第二向量寄存器的数量预先设定。
所述卷积数据块中的填充数据可以由处理器直接加载到第一向量寄存器中,该填充数据可以由处理器基于输出元素的第一位置和填充参数来确定,而填充参数可以存储在一个文件中并由处理器读取到。处理器在获取到填充数据之后,直接将填充数据加载到第一向量寄存器,无需从内存中加载到第一向量寄存器。包括所述卷积数据块中的输入数据块的数据块可以预先从内存加载到第一向量寄存器。
为了减少访存次数,每次加载的卷积数据块的数据量可以大于一次卷积运算所需的卷积数据块的数据量。假设每次进行卷积处理的卷积数据块包含A1行B1列,则每次加载到第一向量寄存器中的卷积数据块可以包括A2行B2列,其中,A2大于A1且B2不小于B1,或者A2不小于A1且B2大于B1。
通过这种方式,一次加载数据可以计算出多个输出元素,减少了处理器把数据从缓存或者内存加载到寄存器的次数,从而减少了访存次数。如果处理器从缓存或内存加载数据的能力比较弱,通过尽可能地复用寄存器中的数据,可以减少从缓存或内存加载数据的次数,从而避免多次进行数据加载操作降低性能。
每次加载的卷积核参数可以是卷积核参数中的全部数据,也可以是卷积核参数中的部分数据。例如,对于3×3的卷积核,如果第二向量寄存器的数量是9个,则每次可以加载卷积核参数中的全部数据;如果第二向量寄存器的数量是3个,则每次可以加载卷积核参数中的一行数据,向将加载到第二向量寄存器中的一行卷积核参数与第一向量寄存器中的卷积数据块进行卷积处理;处理完成之后,再将卷积核参数中的第二行加载到第二向量寄存器,并与第一向量寄存器中的卷积数据块进行卷积处理;以此类推,直到卷积核参数中的全部数据均完成卷积处理。
除了上述实施例中的加载方式以外,每次加载到第一向量寄存器中的卷积数据块的行数和列数可以根据第一向量寄存器的数量而确定,每次加载到第二向量寄存器中的卷积核参数的行数和列数可以根据第二向量寄存器的数量而确定。相应向量寄存器的数量越多,每次可以加载的行列数也越多。
在一些实施例中,所述方法还包括:将所述输出数据块存储至第三向量寄存器;将所述第三寄存器中的输出数据块加载到内存;其中,所述第三寄存器的数量预先设定。如图5所示,是本公开一实施例的寄存器分配示意图。其中,寄存器1至3是第一向量寄存器,用于存储卷积数据块;寄存器4至6是第二向量寄存器,用于存储卷积核参数;寄存器7至9是第三向量寄存器,用于存储输出数据块。第一向量寄存器、第二向量寄存器和第三向量寄存器的数量之和不大于处理器可用的向量寄存器的总数。应当说明的是,在实际应用中,第一向量寄存器、第二向量寄存器和第三向量寄存器均可以是连续或者不连续的寄存器。此外,第一向量寄存器、第二向量寄存器和第三向量寄存器的数量不限于此,可根据处理器架构预先对第一向量寄存器、第二向量寄存器和第三向量寄存器的数量进行分配。例如假设处理器中可用的向量寄存器数量为32个,那么可以使用4个或8个用来存放输出数据块,剩下28或24个用来存放卷积核参数和卷积数据块。
在一些实施例中,所述输入数据块包括X个输入通道,所述输入通道数X根据用于将数据加载到寄存器中的向量的宽度以及所加载的数据的长度之比确定。如图6所示,是本公开另一实施例的寄存器分配示意图。
假设图中输入通道1至输入通道X中3×3的数据为输入数据块,共有9个值,可采用寄存器1至寄存器9来存储这9个值。其中,每个寄存器都存储输入数据块在这X个输入通道上的值。以寄存器1为例,假设数据类型的长度为P个字节,则寄存器1的前P个字节用来存储A1,第P+1至第2P个字节用来存储A2,以此类推,直至存完全部X个输入通道中第1行第1列的数据。通过这种方式,充分利用了寄存器空间,每次可以读取X个输入通道的数据。
同理,当图中输入通道1至输入通道X中3×3的数据为卷积核参数,寄存器1至寄存器9为第二向量寄存器的时候,每个寄存器可分别存储卷积核参数在X个输入通道的数据,充分利用了寄存器空间,每次可以读取X个输入通道的数据。写入第一向量寄存器的输入数据块的通道与写入第二向量寄存器的卷积核参数的通道可以一一对应,例如,写入第一向量寄存器的输入数据块的通道为通道1至通道5,则写入第二向量寄存器的卷积核参数的通道也是通道1至通道5。
假设数据类型的长度为P,向量宽度为Q,令X=Q/P,则使用的数据排布为NCXHWX,即每X个输入通道连续放在一起,每次通过向量寄存器读取X个输入通道的数据,每次输出X个输出通道的输出特征数据块。例如假设处理FP32(即32位浮点型数据)的数据类型,数据类型长度为4字节,处理器的向量宽度为16字节,采用的数据排布就为NC4HW4;假设处理FP16的数据类型,数据类型长度为2字节,处理器的向量宽度为32字节,采用的数据排布就为NC16HW16。应当说明的是,在实际应用中,输入通道数和输出通道数可以不同,例如,在NCXHWX的数据排布方式中,先输入X个输入通道的数据,计算得到X个输出通道的数据,然后再同样输入X个输入通道的数据,计算得到另外X个输出通道的数据,将两次计算得到的共2X个输出通道的数据一起输出,这样,输入通道数就是X,输出通道数就是2X。
数据排布的改变不会对核心汇编代码造成太大影响,汇编代码中只需要批量修改指令的数据类型即可,不需要对指令的顺序、写法等进行改变。当数据排布确定之后,因为卷积核参数必须和对应位置的输入特征图做乘加运算,需要实现相应的卷积核转换代码(convert filter),将卷积核参数的位置也进行调整。即,假设第一向量寄存器存储X个输入通道的输入特征数据块,则第二向量寄存器也相应地存储所述X个输入通道的卷积核参数块。由于该步骤可以在进行模型的推理之前完成,因此不计入推理耗时。
在一些实施例中,卷积的方向可以是先沿着通道的方向进行卷积,再沿着列的方向进行卷积,最后沿着行的方向进行卷积。举例来说,假设某一次加载到第一向量寄存器中的输入数据块是输入数据中通道1至通道3的数据,且每个通道加载的都是第1到3行第1到3列的数据,则下一次加载到第一向量寄存器中的输入数据块可以是通道4至通道6的数据,且每个通道加载的都是第1到3行第1到3列的数据,以此类推,直到各个通道上第1到3行第1到3列的数据都执行完卷积处理。然后,再按照上述方式对各个通道中第1到3行第4到6列的数据进行卷积处理,直到第1到3行的各列数据都执行完卷积处理。然后,再按照上述方式对各个通道中第4到6行的各列数据进行卷积处理,直到第4到6行的各列数据都执行完卷积处理。
在一些实施例中,每处理完一个第二向量寄存器中的卷积核参数,即刻对该第二向量寄存器中的卷积核参数进行刷新。由于卷积核的数据能被缓存在cache中,在这种情况下,核心代码会比较频繁地访问cache,通过调整指令顺序,每次在对下一个第二向量寄存器中的数据执行卷积处理指令时,访问cache更新前一个第二向量寄存器的值,访问cache的延迟能够被掩盖掉。
与之前的一些常见框架中的实现方案相比,本公开实施例在汇编级别优化了寄存器的使用策略,大幅减少了访存操作的次数,由于分组卷积是属于访存受限的计算类型,上述优化手段可以给分组卷积带来很大的性能提升。
通过使用本公开实施例方案,可以减少分组卷积的卷积处理时间,从而减少执行神经网络进行推理的时间。提高应用执行神经网络的效率,由于推理时间减少,可以提升单位时间内网络处理数据的吞吐量,也可以降低单位时间内处理相同数据规模的延时和功耗。本公开实施例可以应用于使用处理器进行前向推理优化的产品中。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
如图7所示,本公开还提供一种数据处理装置,所述装置包括:
获取模块701,用于获取卷积参数,所述卷积参数包括卷积核参数和填充参数;
第一确定模块702,用于根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;
卷积处理模块703,用于基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块和/或填充数据。
在一些实施例中,所述输出元素对应的填充数据信息指示所述输出元素对应的卷积数据块包括填充数据以及所述填充数据在所述卷积数据块中的位置;所述装置还包括:第二确定模块,用于根据所述输出元素对应的填充数据信息,确定所述输出元素对应的卷积数据块中包括的填充数据和输入数据块。
在一些实施例中,所述卷积处理模块包括:卷积处理单元,用于若所述输出元素对应的卷积数据块包括填充数据,对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,并对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值;获取单元,用于根据所述第一卷积值和第二卷积值,得到所述输出元素的数值。
在一些实施例中,所述卷积处理单元用于:调用所述输出元素对应的第一卷积函数模块对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值;和/或所述卷积处理单元用于:调用所述输出元素对应的第二卷积函数模块,对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值。
在一些实施例中,所述填充参数包括填充宽度以及所述填充数据的数值。
在一些实施例中,若所述卷积数据块包括的填充数据的数值为0,确定所述输出元素对应的填充数据与所述卷积核参数的卷积处理结果均为0。
在一些实施例中,所述卷积处理模块用于:对第一向量寄存器中的输入数据块和/或填充数据与第二向量寄存器中的卷积核参数进行卷积处理;其中,包含所述卷积数据块的数据块预先从内存加载到所述第一向量寄存器中,所述卷积核参数预先从内存加载到所述第二向量寄存器中,所述第一向量寄存器和第二向量寄存器的数量预先设定。
在一些实施例中,所述输入数据块包括X个输入通道,所述输入通道数X根据用于将数据加载到寄存器中的向量的宽度以及所加载的数据的长度之比确定。
在一些实施例中,所述装置还包括:存储模块,用于将所述输出数据块存储至第三寄存器;加载模块,用于将所述第三寄存器中的输出数据块加载到内存;其中,所述第三寄存器的数量预先设定。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中,再从内存中读取到处理器中运行形成的。从硬件层面而言,如图8所示,为本说明书装置所在计算机设备的一种硬件结构图,除了图8所示的处理器801、内存802、网络接口803、以及非易失性存储器804之外,实施例中装置所在的服务器或电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
相应地,本公开实施例还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
相应地,本公开实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
本公开可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读命令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑说明书及实践这里公开的说明书后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。

Claims (18)

1.一种数据处理方法,其特征在于,所述方法包括:
获取卷积参数,所述卷积参数包括卷积核参数和填充参数;
根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;
基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块,或者包括输入数据块和填充数据;若所述输出元素对应的卷积数据块包括填充数据,对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,并对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值;根据所述第一卷积值和第二卷积值,得到所述输出元素的数值;
仅将所述输入数据块和所述卷积核参数存储在内存中;在进行卷积处理时,所述输入数据块和所述卷积核参数被从内存加载到寄存器中;在卷积处理完成之后,所述输出数据块被从寄存器加载到内存中。
2.根据权利要求1所述的方法,其特征在于,所述输出元素对应的填充数据信息指示所述输出元素对应的卷积数据块包括填充数据以及所述填充数据在所述卷积数据块中的位置;
所述方法还包括:
根据所述输出元素对应的填充数据信息,确定所述输出元素对应的卷积数据块中包括的填充数据和输入数据块。
3.根据权利要求1所述的方法,其特征在于,所述对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,包括:
调用所述输出元素对应的第一卷积函数模块对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值;和/或
所述对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值,包括:
调用所述输出元素对应的第二卷积函数模块,对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值。
4.根据权利要求1所述的方法,其特征在于,所述填充参数包括填充宽度以及所述填充数据的数值。
5.根据权利要求1所述的方法,其特征在于,若所述卷积数据块包括的填充数据的数值为0 ,确定所述输出元素对应的填充数据与所述卷积核参数的卷积处理结果均为0。
6.根据权利要求1所述的方法,其特征在于,所述对所述输出元素对应的卷积数据块进行卷积处理,包括:
对第一向量寄存器中的输入数据块和/或填充数据与第二向量寄存器中的卷积核参数进行卷积处理;
其中,包含所述卷积数据块的数据块预先从内存加载到所述第一向量寄存器中,所述卷积核参数预先从内存加载到所述第二向量寄存器中,所述第一向量寄存器和第二向量寄存器的数量预先设定。
7.根据权利要求6所述的方法,其特征在于,所述输入数据块包括X个输入通道,所述输入通道数X根据用于将数据加载到寄存器中的向量的宽度以及所加载的数据的长度之比确定。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
将所述输出数据块存储至第三寄存器;
将所述第三寄存器中的输出数据块加载到内存;其中,所述第三寄存器的数量预先设定。
9.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取卷积参数,所述卷积参数包括卷积核参数和填充参数;
第一确定模块,用于根据输出数据块中各个输出元素的第一位置和所述填充参数,确定所述输出元素对应的填充数据信息;
卷积处理模块,用于基于所述输出元素对应的填充数据信息和所述卷积核参数,对所述输出元素对应的卷积数据块进行卷积处理,得到所述输出元素的数值,其中,所述卷积数据块包括输入数据块,或者包括输入数据块和填充数据;若所述输出元素对应的卷积数据块包括填充数据,对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值,并对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值;根据所述第一卷积值和第二卷积值,得到所述输出元素的数值;
仅所述输入数据块和所述卷积核参数存储在内存中;在进行卷积处理时,所述输入数据块和所述卷积核参数被从内存加载到寄存器中;在卷积处理完成之后,所述输出数据块被从寄存器加载到内存中。
10.根据权利要求9所述的装置,其特征在于,所述输出元素对应的填充数据信息指示所述输出元素对应的卷积数据块包括填充数据以及所述填充数据在所述卷积数据块中的位置;
所述装置还包括:
第二确定模块,用于根据所述输出元素对应的填充数据信息,确定所述输出元素对应的卷积数据块中包括的填充数据和输入数据块。
11.根据权利要求9所述的装置,其特征在于,所述卷积处理单元用于:
调用所述输出元素对应的第一卷积函数模块对所述输出元素对应的卷积数据块中包括的填充数据与所述卷积核参数进行卷积处理,得到第一卷积值;和/或
所述卷积处理单元用于:
调用所述输出元素对应的第二卷积函数模块,对所述输出元素对应的卷积数据块中包括的输入数据块与所述卷积核参数进行卷积处理,得到第二卷积值。
12.根据权利要求9所述的装置,其特征在于,所述填充参数包括填充宽度以及所述填充数据的数值。
13.根据权利要求9所述的装置,其特征在于,若所述卷积数据块包括的填充数据的数值为0 ,确定所述输出元素对应的填充数据与所述卷积核参数的卷积处理结果均为0。
14.根据权利要求9所述的装置,其特征在于,所述卷积处理模块用于:
对第一向量寄存器中的输入数据块和/或填充数据与第二向量寄存器中的卷积核参数进行卷积处理;
其中,包含所述卷积数据块的数据块预先从内存加载到所述第一向量寄存器中,所述卷积核参数预先从内存加载到所述第二向量寄存器中,所述第一向量寄存器和第二向量寄存器的数量预先设定。
15.根据权利要求14所述的装置,其特征在于,所述输入数据块包括X个输入通道,所述输入通道数X根据用于将数据加载到寄存器中的向量的宽度以及所加载的数据的长度之比确定。
16.根据权利要求9至15中任一项所述的装置,其特征在于,所述装置还包括:
存储模块,用于将所述输出数据块存储至第三寄存器;
加载模块,用于将所述第三寄存器中的输出数据块加载到内存;其中,所述第三寄存器的数量预先设定。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至8任意一项所述的方法。
18.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至8任意一项所述的方法。
CN201911374771.6A 2019-12-27 2019-12-27 数据处理方法和装置 Active CN113052291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911374771.6A CN113052291B (zh) 2019-12-27 2019-12-27 数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911374771.6A CN113052291B (zh) 2019-12-27 2019-12-27 数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN113052291A CN113052291A (zh) 2021-06-29
CN113052291B true CN113052291B (zh) 2024-04-16

Family

ID=76506159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911374771.6A Active CN113052291B (zh) 2019-12-27 2019-12-27 数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN113052291B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113050988A (zh) * 2019-12-27 2021-06-29 上海商汤智能科技有限公司 数据处理方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133270A (zh) * 2018-01-12 2018-06-08 清华大学 卷积神经网络加速方法及装置
CN108229645A (zh) * 2017-04-28 2018-06-29 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
CN108875925A (zh) * 2018-06-28 2018-11-23 中国科学院计算技术研究所 一种针对卷积神经网络处理器的控制方法及装置
CN109840584A (zh) * 2017-11-24 2019-06-04 腾讯科技(深圳)有限公司 卷积神经网络模型、数据处理方法及装置
CN109886400A (zh) * 2019-02-19 2019-06-14 合肥工业大学 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法
CN110555793A (zh) * 2018-06-04 2019-12-10 北京亮亮视野科技有限公司 高效的深度卷积实现方法及包括该方法的视觉处理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180060149A (ko) * 2016-11-28 2018-06-07 삼성전자주식회사 컨볼루션 처리 장치 및 방법
CN107145939B (zh) * 2017-06-21 2020-11-24 北京图森智途科技有限公司 一种低计算能力处理设备的计算机视觉处理方法及装置
CN107844828B (zh) * 2017-12-18 2021-07-30 南京地平线机器人技术有限公司 神经网络中的卷积计算方法和电子设备
EP3514733A1 (en) * 2018-01-18 2019-07-24 Aptiv Technologies Limited A device and a method for image classification using a convolutional neural network
CN110197217B (zh) * 2019-05-24 2020-12-18 中国矿业大学 一种基于深度交错融合分组卷积网络的图像分类方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229645A (zh) * 2017-04-28 2018-06-29 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
CN109840584A (zh) * 2017-11-24 2019-06-04 腾讯科技(深圳)有限公司 卷积神经网络模型、数据处理方法及装置
CN108133270A (zh) * 2018-01-12 2018-06-08 清华大学 卷积神经网络加速方法及装置
CN110555793A (zh) * 2018-06-04 2019-12-10 北京亮亮视野科技有限公司 高效的深度卷积实现方法及包括该方法的视觉处理方法
CN108875925A (zh) * 2018-06-28 2018-11-23 中国科学院计算技术研究所 一种针对卷积神经网络处理器的控制方法及装置
CN109886400A (zh) * 2019-02-19 2019-06-14 合肥工业大学 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Cost Effective CNN Accelerator Design with Configurable PU on FPGA;Chi Fung Brain Fong等;2019 IEEE Computer Socity Annual Symposium on VLSI (ISVLSI);第2019卷;全文 *
基于特征图切分的轻量级卷积神经网络;张雨丰;郑忠龙;刘华文;向道红;何小卫;李知菲;何依然;KHODJA Abd Erraouf;;模式识别与人工智能(第03期);全文 *
基于矩阵转换的卷积计算优化方法;方玉玲等;计算机工程;20190731;第45卷(第7期);217-228 *

Also Published As

Publication number Publication date
CN113052291A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US20210390368A1 (en) Buffer Addressing for a Convolutional Neural Network
CN114565501B (zh) 用于卷积运算的数据加载方法及其装置
EP3816867A1 (en) Data reading/writing method and system in 3d image processing, storage medium, and terminal
CN111310115B (zh) 数据处理方法、装置及芯片、电子设备、存储介质
CN113052291B (zh) 数据处理方法和装置
CN110009103B (zh) 一种深度学习卷积计算的方法和装置
CN118193410A (zh) 一种内存搬运算子的执行方法、设备及存储介质
US5861888A (en) Method and a system for the nonlinear storage of a texture map within a linear memory device
CN112988080B (zh) 多数据页同时写入方法、3d闪存装置及计算机存储介质
CN109324984B (zh) 在卷积运算中使用循环寻址的方法和装置
JP2024516514A (ja) 畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング
KR102202575B1 (ko) 메모리 관리 방법 및 장치
CN117473949A (zh) 表单动态布局方法及系统
US11467973B1 (en) Fine-grained access memory controller
CN111882482A (zh) 图形分块数据读写方法、装置、设备及存储介质
JP7437135B2 (ja) プロセッシングシステム
CN112308762A (zh) 一种数据处理方法及装置
US20100122039A1 (en) Memory Systems and Accessing Methods
CN111913744B (zh) Ai深度学习数据处理方法及系统
CN116721006B (zh) 特征图处理方法和装置
CN113553009B (zh) 数据读取方法、数据写入方法及数据读写方法
CN114091085B (zh) 用于二元操作的数据访问控制系统及其方法
CN110728367B (zh) 用于神经网络的数据存储方法及装置
CN106649136A (zh) 一种数据存储方法和存储装置
CN118227516A (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