CN115221107A - 数据处理电路、数据处理方法及相关产品 - Google Patents
数据处理电路、数据处理方法及相关产品 Download PDFInfo
- Publication number
- CN115221107A CN115221107A CN202110482914.6A CN202110482914A CN115221107A CN 115221107 A CN115221107 A CN 115221107A CN 202110482914 A CN202110482914 A CN 202110482914A CN 115221107 A CN115221107 A CN 115221107A
- Authority
- CN
- China
- Prior art keywords
- data
- fused
- processing
- circuit
- index
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Image Processing (AREA)
Abstract
本披露公开了一种数据处理电路、数据处理方法及相关产品。该数据处理电路可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了数据融合处理的流水实现方案,其可以简化处理,提高机器的处理效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及数据处理电路、数据处理方法、芯片和板卡。
背景技术
近年来,在基于卷积神经网络的目标检测、实例分割和关键点检测中已经取得了巨大的进步。这些检测通常基于光达(LiDAR)数据或基于RGB-D数据,其可以应用于自动驾驶、机器人视觉等领域中。
不同于图像数据是密集的,LiDAR点云数据通常是稀疏的,并且由于诸如3D空间的不均匀采样、传感器的有效范围、遮挡和相对姿势等因素,点密度变化剧烈。因此,传统的适合于密集型数据的卷积神经网络在应用于这种稀疏型数据时,效率将变得非常低,尤其是涉及卷积运算时,会在零值数据点上浪费大量的算力等资源。
鉴于此,期望提供一种改进的数据处理方案,以适合于诸如点云数据之类的稀疏型数据,从而提高处理效率。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种数据处理电路、数据处理方法、芯片和板卡。
在第一方面中,本披露公开一种数据处理电路,包括控制电路、存储电路和运算电路,其中:所述控制电路用于解析融合指令,以及根据所述融合指令控制所述存储电路和所述运算电路对多路待融合数据执行融合处理;所述存储电路配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与所述运算电路之间进行数据访存,所述缓冲区用于存储信息,所述信息包括处理前和/或处理后的信息;以及所述运算电路用于在所述控制电路的控制下,将来自所述存储电路的多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素,所述数据元素包括标量、向量或更高维数据中任一。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的数据处理电路。在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。在第四方面中,本披露提供一种使用前述第一方面任一实施例的数据处理电路来处理数据的方法。
通过如上所提供的数据处理电路、使用数据处理电路来处理数据的方法、芯片和板卡,本披露实施例针对稀疏型数据的卷积运算处理中的数据融合处理步骤,提供了一种流水方案,从而缩短处理时间,提高整体效率。进一步地,在存储电路的空间不足以一次完成所有运算处理时,可以通过多轮流水处理来实现。在多轮流水处理中,可以采用桶排序方式来分配各轮流水处理的数据部分,进而实现各轮流水处理的输出数据的有序拼接。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4示出常规卷积方案的运算原理;
图5示出本披露实施例的稀疏卷积方案的示例性原理图;
图6示出本披露实施例的高维稀疏输入数据的预处理的示意图;
图7示出本披露实施例的乘法运算的含义;
图8A-图8C示出乘积结果与卷积运算结果之间的索引映射关系;
图9示出卷积运算的填补处理对输入数据索引的影响;
图10示出MERGE指令的示例性原理;
图11示出本披露实施例的数据处理电路的结构示意图;
图12示意性示出了存储电路中的缓冲空间划分;
图13示出了桶排序的示例性原理图;
图14示出了根据本披露实施例的融合处理的示例性流水过程;以及
图15示出本披露实施例的数据处理方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核或多核装置时处理器核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。
基于前述硬件环境,在一个方面中,本披露实施例提供了一种数据处理电路,根据专门的融合指令来实现多路数据的融合处理。在另一个方面中,本披露实施例还提供了一种适合稀疏型数据的卷积运算方案,此稀疏卷积运算方案可以采用本披露第一方面的融合处理。为了更好地理解多路数据融合处理的作用,下面首先描述适合稀疏型数据的卷积运算方案。这种稀疏卷积方案可以适用于多维卷积运算,包括但不限于二维卷积和三维卷积。为了简便起见和易于理解,在一些实施例中采用二维卷积作为示例进行阐述。
本披露实施例中所提到的“N维卷积”,其中N表示卷积运算中执行滑动累加的卷积维度数。例如,当N=2时,卷积核在两个维度(例如,宽度W和高度H)上根据对应的卷积步长进行平移累加。当N=3时,卷积核在三个维度(例如,宽度W、高度H和深度D)上根据对应的卷积步长进行平移累加。当N=4时,卷积核在四个维度(例如,宽度W、高度H、深度D和批次batch)上根据对应的卷积步长进行平移累加。在本披露实施例中所提到的“非卷积维度”,是指卷积核不在该维度上进行滑动累加的维度。
为了更清楚地理解本披露实施例的卷积方案,先以二维卷积为例描述常规卷积方案的运算原理。
图4示出了常规卷积方案的运算原理。在此示例中,卷积核410是致密的,为3×3的矩阵,卷积核中的数字为对应的权值数据。输入数据420为6×6的矩阵,其是稀疏的,仅具有三个非零数据:2、3和5,如深色方块所示。为了简便起见,在此示例性卷积过程中,两个维度的卷积步长均设为1,填补量为0,没有膨胀。图中3×3大小的灰色方块代表卷积核在输入数据上的滑动累加过程。430示出了卷积开始时的计算,440示出了向右滑动一步的计算,450示出了向下滑动一步的计算。在每步计算中,卷积核的权值数据与输入数据对位相乘并累加。460为作为输出数据的最终计算结果。输出数据为4×4大小的矩阵。可以看出,430的计算对应于输出数据中坐标(1,1)处的数据,440的计算对应于输出数据中坐标(1,2)处的数据,而450的计算对应于输出数据中坐标(2,1)处的数据。
在本披露实施例的稀疏卷积运算过程中,卷积核是致密的,其输入格式可以与常规卷积相同;而输入数据是稀疏的,其输入格式可以不同于常规卷积的输入数据,由此节省存储空间。在一些实施例中,输入数据是稀疏化数据,每个输入数据元素具有索引和数值信息,其可以表示为(index,value)。取决于不同的应用、数据类型或规模,此处的索引可以是一维、二维或更多维,本披露在此方面没有限制。不同维度的索引可以相互进行转换,例如按照预定遍历规则,将二维或更多维的索引转换成一维索引,反之亦然。同样地,取决于不同的应用、数据类型或规模,此处的数值信息可以包括标量、向量、或更高维数据。
以图4中的示例为例,输入数据具有三个非稀疏的点,分别是((1,4),2)、((3,3),3)和((5,6),5)。对于第一个非稀疏点,此处(1,4)表示二维的索引坐标,2代表索引所指向位置的具体数值,此示例中为标量;其余非稀疏点的含义类似。
从图4的描述可以看出,稀疏卷积运算的最终结果只与非零输入数据元素的运算结果有关,因此,可以仅针对这些非零输入数据元素,执行与卷积核的乘加运算。进一步地,从图4的输出数据460可以看出,这些乘加运算可以进一步拆分成乘法运算和相应位置的累加运算。相应地,在本披露实施例的稀疏卷积方案中,稀疏卷积运算可以包括三个步骤:计算卷积核与稀疏输入数据的运算结果(例如乘积结果或乘加结果,考虑到数据有些维度还需要进行累加,例如后面描述的输入通道维度Ci);确定每个运算结果的索引;以及将多路运算结果按索引顺序归并为一路融合数据,作为稀疏卷积运算的结果。在归并过程中,具有相同索引的运算结果进行累加。下文描述中,取决于数据的维度,在未提及输入通道维度Ci的场景下,有时候也将多路运算结果直接称为多路乘积结果。本领域技术人员根据上下文,可以理解其对应的含义。
图5示出了根据本披露实施例的稀疏卷积方案的示例性原理。图5仍然以图4的数据为例来描述本披露实施的稀疏卷积运算方案。
如图5所示,在MAC步骤中,将输入数据元素520与卷积核510执行乘法运算,获得多路乘积结果530。在计算卷积核与稀疏输入数据的乘积结果时,可以将卷积核各卷积维度上的权值数据合并成一个维度,维度大小为offset,offset是卷积维度上的权值数据总个数。
如前面所提到的,本披露实施例提供的稀疏卷积方案可以适用于多维卷积运算,包括但不限于二维卷积和三维卷积。图5中示出了将二维卷积核的两个卷积维度(宽度W和高度H)上的权值数据合并成一个维度,例如将3×3矩阵上的权值数据展开成一列,其包括9个权值数据,也可以称为9个权值标量。
可以理解,当卷积核为三维卷积核时,其三个卷积维度(宽度W、高度H和深度D)上的权值数据也可以合并成一个维度,例如将3×3×3立方块卷积核上的27个权值数据展开成一列,从而包括27个权值标量。其他情况可以依次类推。若卷积核还具有非卷积维度,例如输入通道Ci维度和/或输出通道Co维度,由于不在这些维度上执行卷积运算,因此可以保留这些维度。在此情况下,例如卷积核包括3×3的卷积维度,同时还包括非卷积维度Ci=2时,则经过上述维度合并后,卷积核变为9×2,其可以视为9个长度为2的权值向量。又例如,卷积核包括3×3×3的卷积维度,同时还包括非卷积维度Ci=2以及Co=4时,则经过上述维度合并后,卷积核变为27×2×4,其可以视为Co维度上的4组权值,每组包括27个长度为2的权值向量。
待卷积处理的输入数据可以包括多维数据,并且其在多个维度上是稀疏的。例如,在基于LiDAR数据的目标检测中,输入数据是三维空间内的检测数据,其例如表征每个三维空间坐标点的灰度值、RGB、信号强度等,因此根据其要表征的信息内容,每个坐标点处的输入数据元素可以是一维、二维、三维或更高维数据。由于点云数据的特性,具有非零值数据元素的坐标点是稀疏的,也即其在三个空间维度(例如,宽度W、高度H和深度D)上是稀疏的。
取决于输入数据的初始状态,可以在将稀疏的输入数据提供给运算电路进行运算之前进行预处理。在一些实施例中,这种预处理例如可以包括:将稀疏的多个维度合并成一个维度;将输入数据中的稀疏数据点在合并的维度上致密化以形成输入数据元素;以及使用索引和数值信息来表示每个输入数据元素。索引可以是一维或多维索引,并且数值信息可以包括标量、向量或更高维数据中任一。
在一个示例中,例如参考图4,输入数据是二维的6×6矩阵,其在宽度W和高度H两个维度上是稀疏的。在进行预处理时,将W和H合并成一个维度,将稀疏数据点(此示例中为2、3和5)在合并后的维度上进行致密化,从而形成三个致密的输入数据元素。接着,使用索引和数值信息来表示每个输入数据元素。数据元素的索引可以表示其在致密化前、稀疏形式的输入数据中的位置关系。例如,图4示例中的三个输入数据元素的索引分别为:(1,4)、(3,3)和(5,6)。此示例中的索引为二维索引,其也可以转换为一维索引,例如分别为4、15和29。这三个数据元素的数值信息分别为2、3和5,也即三个标量。
在另一示例中,例如参考图6,其示出了根据本披露实施例的高维稀疏输入数据的预处理的示意图。如图所示,稀疏形式的输入数据610包括五个维度,批次batch(B)维度、HWD三维空间维度和输入通道Ci维度。输入数据在B维度和HWD三维空间是稀疏的,图中HWD立体矩阵中的深色方块代表有数值的地方,其他部分全部为零值。B维度上存在多个这种HWD立体矩阵,每个立体矩阵上的稀疏样式(也即深色方块的位置)可以不同。输入数据在Ci维度是致密的,Ci维度是最低维度。由于附图表现能力有限,图中610仅示出了四个维度,但是Ci维度可以理解为每个深色方块的厚度。Ci维度的大小是统一的,也即每个深色方块的厚度是一样。在预处理过程中,可以将输入数据的四个稀疏维度(B维度和HWD三维空间维度)合并成一个维度Ni,将稀疏数据点(图中的深色方块)在合并后的维度上进行致密化,从而形成致密的输入数据元素。也即,B维度上的每个HWD立体矩阵都执行同样的维度合并和致密化处理,从而得到预处理后的致密形式的输入数据620,其为二维矩阵,低维是Ci,高维是BHWD的合并维度Ni。
接着,使用索引和数值信息来表示每个致密化的输入数据元素。图6示例中的输入数据元素的索引可以使用其在致密化前的BHWD四维空间中的坐标来表示,也可以将其转换为一维索引。每个输入数据元素的数值信息可以看成是一个Ci向量。
经过上述预处理后的输入数据可以提供给运算电路进行后续处理。
输入数据元素可以排列成一个输入向量,以便与卷积核执行乘法运算。在一些实施例中,考虑到后续的归并融合,可以将输入数据元素按其索引顺序(例如从小到大的顺序)进行排列。输入向量中的每个向量元素包括一个输入数据元素。如前面所描述的,每个输入数据元素可以是标量、向量或更高维数据。
回到图5,接着可以对维度合并后的卷积核510与输入数据元素构成的输入向量520在卷积维度上执行乘法运算,得到offset路数据530,其中每路数据包括若干乘积结果,每个乘积结果包括标量、向量或更高维数据中任一。在图5的示例中,维度合并后的卷积核510(图中的9个标量)与输入向量520(2、3和5构成的长度为3的向量)执行标量向量乘法运算,得到9个向量,也即9路乘积结果530。在此示例中,每个乘积结果是一个标量。
MAC步骤的运算相当于针对维度合并后的卷积核上的每行数据,在输入向量上进行1×1的点级卷积,得到一个卷积结果。为了更好地理解上述MAC步骤中乘法运算的意义,图7示例性示出了其中几个乘法运算的含义。
如图所示,针对图5中的第1个权值标量的运算:1*[2,3,5]=[2,3,5],可以理解为分别对应图中710、720和730的运算,也即2、3和5分别位于卷积核的第1个位置上时产生的乘积结果。类似地,针对图5中的第2个权值标量的运算:2*[2,3,5]=[4,6,10],可以理解为分别对应图中740、750和760的运算,也即2、3和5分别位于卷积核的第2个位置上时产生的乘积结果。
如前所述,输入数据还可以包括非卷积维度,例如前面参考图6描述的输入通道Ci维度。在一些实施例中,输入数据可以包括N个卷积维度和至少一个非卷积维度,相应地,卷积核也可以包括N个卷积维度和至少一个非卷积维度。此时,在上述MAC步骤中,可以按照具体的运算要求,在非卷积维度上执行对应的运算处理。例如,在一些示例中,输入数据的非卷积维度包括输入通道Ci维度,卷积核的非卷积维度包括输入通道Ci维度和输出通道Co维度,这些非卷积维度上的运算处理例如可以包括但不限于:保持Ci维度的结果不进行累加(例如在depthwise卷积中);在Ci维度上将卷积维度上的乘法运算结果进行对位累加运算(例如Ci维度累加);和/或将Ci维度上的累加结果在Co维度上堆叠(例如Ci维度累加,但Co维度不累加),以作为多路运算结果,其中每个运算结果为Co维度上的向量。
继续图5,MAC步骤可以获取与非零数值相关的运算结果,为了在后续的归并融合MERGE步骤中得到最终卷积运算结果,还需要确定这些运算结果的索引,以便进行对应的累加。因此,在INDEX步骤中,可以获取这些运算结果的对应索引。具体地,在一些实施例中,根据索引映射关系来确定多路运算结果中每个运算结果的索引。每个运算结果是通过卷积核中的权值数据与输入数据元素的乘法运算或乘加运算得到的,因此索引映射关系指示了权值数据的位置和输入数据元素的索引与卷积运算结果中对应结果元素之间的关系,换言之,可以基于权值数据在卷积核中的位置以及输入数据元素的索引来确定与该权值数据相乘或乘加得到的运算结果的索引。
图8A示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中810A、820A和830A的含义与图7的710、720和730类似,代表第1个权值标量与输入向量的乘积运算:1*[2,3,5]=[2,3,5]。图中箭头指示了各个乘积运算结果(810A、820A和830A)在卷积运算结果(840A)中的对应位置。具体地,810A的乘积结果对应于4×4的卷积结果中的(1,4)位置,820A的乘积结果对应于卷积结果中的(3,4)位置,830A的乘积结果已经溢出卷积结果范围,属于无效结果。
从图8A可以看出,当输入向量与卷积核的第1个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第1个权值数据乘积运算的乘积结果的索引也是(x,y)。
图8B示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中810B、820B和830B代表第2个权值标量与输入向量的乘积运算:2*[2,3,5]=[4,6,10]。图中箭头指示了各个乘积运算结果(810B、820B和830B)在卷积运算结果(840B)中的对应位置。具体地,810B的乘积结果对应于4×4的卷积结果中的(1,3)位置,820B的乘积结果对应于卷积结果中的(3,2)位置,830B的乘积结果已经溢出卷积结果范围,属于无效结果。
从图8B可以看出,当输入向量与卷积核的第2个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第2个权值数据乘积运算的乘积结果的索引为(x,y-1)。
图8C示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中810C、820C和830C代表第9个权值标量与输入向量的乘积运算:1*[2,3,5]=[2,3,5]。图中箭头指示了各个乘积运算结果(810C、820C和830C)在卷积运算结果(840C)中的对应位置。具体地,810C的乘积结果已经溢出卷积结果范围,属于无效结果;820C的乘积结果对应于4×4的卷积结果中的(1,1)位置,830C的乘积结果对应于卷积结果中的(3,4)位置。
从图8C可以看出,当输入向量与卷积核的第9个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第9个权值数据乘积运算的乘积结果的索引为(x-2,y-2)。
综合图8A-图8C可以看出,输入向量中的每个向量元素(也即数据点2、3和5)会依次遍历3×3的卷积核,因此数据点相对于卷积核中心点(此处3×3卷积核中心为第5个权值数据)的偏移是固定的。根据这一特性,可以基于数据点的具体位置,依次求解得到卷积核中心点的点索引,接着将中心点的点索引映射到输出点的索引即可。由此,可以直接基于输入向量中每个向量元素的索引,来确定与该向量元素关联的乘积结果的索引。也即,只需知晓输入数据元素的索引,即可确定该输入数据元素与所有权值数据相乘的乘积结果的索引。
例如,对于3×3的二维卷积核,数据点遍历卷积核时,相对于此二维卷积核中心点的坐标偏移是一个常数。在此示例中,这9个坐标偏移例如可以构造为:
(1,1),(0,1),(-1,1);
(1,0),(0,0),(-1,0);
(1,-1),(0,-1),(-1,-1)。
又例如,对于3×3×3的三维卷积核,数据点遍历卷积核时,相对于此三维卷积核中心点的坐标偏移是一个常数。在此示例中,这27个坐标偏移例如可以构造为:
(1,1,1),(0,1,1),(-1,1,1),(1,0,1),(0,0,1),(-1,0,1),(1,-1,1),(0,-1,1),(-1,-1,1);
(1,1,0),(0,1,0),(-1,1,0),(1,0,0),(0,0,0),(-1,0,0),(1,-1,0),(0,-1,0),(-1,-1,0);
(1,1,-1),(0,1,-1),(-1,1,-1),(1,0,-1),(0,0,-1),(-1,0,-1),(1,-1,-1),(0,-1,-1),(-1,-1,-1)。
因此,根据输入数据点的索引,基于上述固定的坐标偏移,可以依次求解出其遍历卷积核时对应的卷积核中心点的索引。继而将中心点的索引映射到输出点的索引即可确定输入数据点产生的每个乘积结果的索引。
从图8A-图8C的图示还可以看出,有些乘积结果已经溢出了卷积结果范围,属于无效结果。对于这些情况,可以将超出卷积结果范围(也即输出数据维度大小范围)的索引设置为预定值,例如-1,以便在后续处理中识别这些无效结果,不对其进行归并融合处理。
在一些实施例中,卷积运算存在填补(padding)操作。例如,在基于LiDAR数据的目标检测算法中,需要进行相同填补(same padding),也即通过填补,使得输入数据的形状与卷积运算后输出数据的形状相同。可以理解,在其他卷积运算的应用场景中,可能存在不同的填补规则。
图9示出了卷积运算的填补处理对输入数据索引的影响。
如图所示,矩阵910代表初始输入数据,矩阵920代表填补后输入数据。初始输入数据例如是2×3的矩阵。填补后输入数据根据填补规则,在初始输入数据的基础上左边添加1列、右边添加3列、上面添加4行、下面添加1行数据,填补数据例如可以是零。
对于初始输入数据中的任一数据点(x,y),其在填补后输入数据中的坐标变为(x+pad_left,y+pad_top),其中pad_left是左边填充量,pad_top是上部填充量。由此可知,可以通过简单的加法运算、根据填补规则来调整输入数据的索引。
在这种实施例下,在根据索引映射关系确定乘积结果的索引之前,可以基于卷积运算的填补规则,调整输入数据元素的索引。
本领域技术人员可以理解,索引调整处理也可以在索引映射之后或期间进行,只需能够考虑到填补规则带来的影响即可,本披露实施例在此方面没有限制。
回到图5,图中540示出了INDEX步骤所确定的9路乘积结果所对应的索引,每个乘积结果具有一个对应的索引。深色方块示出了无效结果,其索引设置为-1。
在通过MAC步骤获得多路乘积结果,通过INDEX步骤确定每个乘积结果的索引之后,可以将这多路乘积结果进一步融合,以得到卷积运算结果。
具体地,在MERGE步骤中,将多路乘积结果按照索引顺序进行归并融合,以得到卷积运算结果,其中索引相同的乘积结果进行累加。图中550示出了融合后的索引,其中去除了重复的索引,例如索引2和3。图中560示出了融合后的数据,其中索引相同的乘积结果进行累加,例如两个索引2分别对应的数据6和12进行累加,两个索引3分别对应的数据4和3进行累加。
通过对比图4和图5的运算结果可以看出,基于图5的融合索引550和融合数据560,可以恢复稀疏形式的卷积运算结果,其完全对应于图4的4×4的常规卷积运算结果460。
由此可见,上面描述了针对稀疏型数据的一种卷积运算方案,其中通过数据融合处理(MERGE步骤)可以实现有效乘积结果的排序和累加。针对此数据融合步骤,可以通过专门设计的硬件指令MERGE指令来实现。MERGE指令的基本功能就是将多路待融合数据,按照其索引顺序,合并成一路融合数据。MERGE指令可以存在多种处理模式,以适应不同的需求。MERGE指令中可以包括模式标识位,以指示不同的处理模式。
图10示出了MERGE指令的示例性原理。图中示例性示出了4路待融合的数据,每路数据包括6个数据元素。数据元素可以是标量、向量或更高维度的张量。图中数据元素示例性示出为向量,例如D11,D12,…D46。这些向量具有统一的向量长度,例如D11为(d1,d2,d3,…,dn),长度为n。每个数据元素具有关联的索引,用于指示该数据元素在对应的一路数据中的位置信息。例如,原始的一路数据可能包括1000个数据元素,但是仅部分位置上的数据元素是有效的,此时,可以将这些有效元素提取出来形成上述待融合数据,同时提取这些有效元素对应的索引以指示其在原始数据中的位置,这些索引形成上述待融合索引。
图中示意性示出了对应的4路待融合的索引,每路索引对应一路待融合的数据。第1路索引用于标识第1路数据中各数据元素的位置信息,第2路索引用于标识第2路数据中各数据元素的位置信息,以此类推。进一步地,每路索引中的索引元素均有序存储,并与对应的一路数据中的数据元素一一对应。在图中示例中,各路索引中的索引元素均按照第一顺序(例如,从小到大的顺序)排列,每路数据中的数据元素也按照对应索引的顺序有序排列。例如,第1路索引中的第1个索引元素指示第1路数据中的第1个数据元素的索引为0,也即首个元素;第1路索引中的第2个索引元素指示第1路数据中的第2个数据元素的索引为2,也即第3个元素;以此类推。
图中示出了MERGE指令在不同处理模式下的示例性结果。
在第一处理模式Mode1中,也称为“归并排序模式”,仅对上述各路数据的索引进行处理。具体地,经过融合处理后,将各路数据的索引归并为一路融合索引,融合后的索引元素按照第二顺序(例如,从小到到的顺序)排列。在此归并排序处理中,保留了重复的索引元素。如图所示,4路待融合的索引归并为一路融合索引,包括24个数据元素。
在第二处理模式Mode2中,也称为“排序累加模式”,其将多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,融合数据中具有相同索引的数据元素进行累加,合并为一个融合数据元素。如图所示,4路待融合的数据按照其对应的索引,归并为一路有序的融合数据,并且具有相同索引的数据元素累加合并成一个融合数据元素。在此示例中,融合后的索引包括16个索引元素,按照第二顺序(例如,从小到大的顺序)排列,其中去除了待融合索引中重复的索引元素,如图中深色方块所示。相应地,融合后的数据也包括16个数据元素,按照对应索引的顺序有序排列,并且具有相同索引的数据元素累加合并成一个融合数据元素,如图中深色方块所示。第二处理模式Mode2通常应用在稀疏矩阵乘法运算中,因此,也可以称为“矩阵乘模式”。
在第三处理模式Mode3中,其与第二处理模式Mode2类似,同样需要进行排序累加处理,因此在图10中使用同一处理结果来示出第二处理模式与第三处理模式。这两种处理模式的不同之处在于处理结果的输出形式。在第二处理模式下,对于融合数据元素中存在累加的情况,直接输出累加后的结果。在第三处理模式下,至少对于融合数据元素中存在累加的情况,不输出累加后的结果,而是输出相关的累加运算式。在一些实现中,可以对于所有融合数据元素都以运算式的形式输出,以方便统一处理。例如,对于无累加的融合数据元素,可以表示为与0的累加运算式。这种累加运算式可以称为运算结构体。在一些实现中,每个运算结构体指示原位相加操作,其包括指向两个加数的地址。第三处理模式尤其适合于待融合的数据元素是向量或更高维度张量的情况,例如在基于LiDAR数据的雷达算法中,因此,第三处理模式也可以称为“雷达算法模式”。
本领域技术人员可以理解,上面提到的第一顺序与第二顺序可以相同,也可以不同,并且二者都可以选自以下任一:从小到大的顺序,或从大到小的顺序。本领域技术人员还可以理解,尽管在图中示出各路数据具有相等的数据元素个数,但是各路数据中的数据元素个数可以相同,也可以不同,本披露在此方面没有限制。此外,本领域技术人员可以理解,由于MERGE指令可以存在多种处理模式,因此在不同处理模式下,所需要的参数也可以相应变化,例如,在第一处理模式下,无需提供待融合的数据,因为只针对数据的索引进行排序。在第三处理模式下,输出参数还包括运算结构体。
为了加速MERGE指令的处理效率,在本披露实施例中,提供了一种流水方案,支持MERGE指令的并行处理。
图11示例性示出了可以实施本披露实施例的数据处理电路的示例性结构图。如图所示,数据处理电路1100包括控制电路1110、存储电路1120和运算电路1130。
控制电路1110负责处理数据处理电路1100上的各种功能,包括但不限于控制、取指、译码、计算等。控制电路1110例如可以包括图3中的控制模块31。
在一些实施例中,控制电路1110可以配置用于解析融合指令,以及根据融合指令控制存储电路1120和运算电路1130对多路待融合数据执行融合处理。
存储电路1120可以用于存储信息,这些信息至少包括处理前和/或处理后的信息,也可以包括处理期间需要缓存的中间信息,其例如可以是图3所示的各种RAM,或称片上缓存。
在一些实施例中,存储电路1120可以配置有至少两个缓冲区1121和1122,用以支持在其中一个缓冲区(例如1121)与外部存储电路之间进行数据访存的同时,在另一缓冲区(例如1122)与运算电路1130之间进行数据访存。这两个缓冲区可以称为乒缓冲空间与乓缓冲空间,也即采用乒乓(pingpong)流水方式。
具体地,在运算电路1130针对存储电路1120的乒缓冲空间上的数据执行计算时,存储电路1120可以从外部存储电路(例如,图2的存储装置204,其例如为DRAM)向其乓缓冲空间上加载下一次的计算数据。存储电路1120与外部存储电路之间的访存接口不同于存储电路1120与运算电路1130之间的访存接口,因此,可以支持上述并行方式,从而构成流水线处理。
运算电路1130可以配置用于根据相关指令执行各种运算操作。具体地,运算电路1130可以配置用于在控制电路1110的控制下,将来自存储电路1120的多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素。这里,数据元素可以包括标量、向量或更高维度数据中任一。
在一些实施例中,运算电路1130还可以配置用于执行前面实施例中描述的稀疏型卷积运算中的MAC步骤和INDEX步骤,也即对输入数据元素与卷积核执行乘法运算,获得多路乘积结果,以及计算对应的索引。
在一个实施例中,运算电路1130还可以包括运算处理电路(未示出),其可以配置成根据运算指令对运算电路执行运算前的数据进行预处理或者对运算后的数据进行后处理。在一些应用场景中,前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。
如前面所提到的,存储电路1120例如可以是图3中示出的各种RAM,诸如NRAM、WRAM等。这些RAM的使用空间有限,诸如512KB,而且还需要为编译器预留空间,例如预留128KB,则在执行MERGE指令运算时的可用空间只有512-128=384KB。进一步地,为了支持流水处理,存储电路的可用空间可以划分为两个缓冲空间:乒缓冲空间和乓缓冲空间。在一些实现中,平均分配这两个缓冲空间以最大化流水效率。在前述示例中,每次执行MERGE指令时可以使用的空间大小RAM_merge_size是384/2=192KB。
受限于存储电路上的可用空间大小,需要合理地进行空间管理,以高效地执行MERGE指令。在空间管理时,需要考虑两个因素:首先,空间申请不能污染和堆叠;其次,缓冲空间能够放得下每一次处理的数据。
基于上述考虑,在一些实施例中,控制电路1110可以进一步用于根据存储电路1120的可用空间大小以及融合处理的相关参数,确定一次融合处理最多能处理的索引个数Nmax,从而根据所确定的Nmax,在每个缓冲区中,为融合处理的各个相关参数分配缓冲空间。
融合处理的相关参数主要包括以下至少一项:多路待融合数据的尺寸(size_addr);多路待融合数据的数值(merge_input_mac_result);多路待融合数据的索引(merge_input_output_index);融合后数据的数值(output_data);融合后数据的索引(output_index);表示融合数据元素的运算结构体(out_op_addr);以及每轮融合处理中的待融合数据(Compute_buffer)。
多路待融合数据的尺寸是指输入的需要融合的K路数据的尺寸,其例如可以通过每路数据的起始地址来指示。该地址是一个一级指针,可以标记为size_addr,其包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。可以理解,在将MERGE指令用于前述实施例的稀疏型卷积运算时,K=offset。在存储电路中需要为size_addr预留缓冲空间,其大小为K*index_data_type=offset*index_data_type,其中index_data_type表示该地址中元素的数据类型。
其他参数的数量与一次融合处理最多能处理的索引个数Nmax有关,因此可以根据存储电路的可用空间大小和这些参数的需求来确定最多能处理的索引个数Nmax,从而再具体确定各个参数的占用空间大小。在下面的说明中,以前述实施例的稀疏型卷积运算场景为例,描述各个参数的占用空间。
对于多路待融合数据的数值,也即输入的K路数据,其占用空间可以计算为:Nmax*Co*input_data_type,其中Co表示输出通道维度,input_data_type表示输入数据的数据类型。在稀疏型卷积运算的示例中,该多路待融合数据的数值即图5的MAC步骤中计算的乘积结果,因此可以表示为merge_input_mac_result。
对于多路待融合数据的索引,由于数据与索引具有一一对应关系,因此输入的K路数据对应的K路索引所占用的空间可以计算为:Nmax*index_data_type,其中index_data_type表示索引的数据类型。在稀疏型卷积运算的示例中,该多路待融合数据的索引即图5的INDEX步骤中计算的索引,因此可以表示为merge_input_output_index。在一些实施例中,输入的K路索引中的索引元素在各路中按照例如从小到大的顺序有序排列。
对于融合后数据的数值,可以理解,由于会对待融合数据进行融合处理,因此融合后的输出数据的个数一定小于等于待融合数据的个数,其占用空间最多为:Nmax*Co*output_data_type,其中output_data_type表示输出数据的数据类型。融合后数据的数值可以使用output_data来表示。
对于融合后数据的索引,也即输出索引(表示为output_index),类似地,其占用空间最多为:Nmax*index_data_type。
对于表示融合数据元素的运算结构体(表示为out_op_addr),其占用空间最多为:Nmax*2*8。此时,运算结构体最多有Nmax个元素,每个元素是一个结构体,而每个运算结构体元素指示原位相加操作,其包括指向两个加数的地址,每个地址例如可以使用8byte。
对于每轮融合处理中的待融合数据(表示为Compute_buffer),其表示实际执行MERGE指令的输入索引,也称为计算缓冲空间,后面将对其含义进行详细描述。该部分的占用空间可以最多可以计算为:Nmax*index_data_type。
上面分析了融合处理的相关参数的占用空间,由此可以得出总占用空间,也即各项占用空间的总和,其最多等于存储电路的可用空间。该关系可以表示为下述公式(1):
K*index_data_type+Nmax*Co*input_data_type+Nmax*index_data_type+Nmax*Co*output_data_type+Nmax*index_data_type+Nmax*2*8+Nmax*index_data_type=RAM_merge_size (1)
由此,可以确定一次融合处理最多能处理的索引个数Nmax,如下:Nmax=(RAM_merge_siz-K*index_data_type)/(Co*input_data_type+index_data_type+Co*output_data_type+index_data_type+2*8+index_data_type) (2)
在确定了Nmax之后,上面各个参数的占用空间大小也都可以确定。
图12示意性示出了存储电路中的缓冲空间划分。如图所示,存储电路的可用空间平均地划分为两个缓冲空间:乒缓冲空间1210和乓缓冲空间1220。每个缓冲空间中都为上述参数分配了相应的缓冲空间,由此符合空间互不污染和干扰的原则。
在为各个参数分配了空间资源之后,可以按流水方式执行MERGE指令。从前面对MERGE原理的描述可知,此融合处理与待融合数据的K路索引(也即merge_input_output_index)强相关,因此其流水也与待融合数据的K路索引强相关。在一些实施例中,针对存储电路的可用空间无法一次性处理所有待融合数据的情况,可以采用桶排序方式,对待融合数据进行分批次处理。进一步地,在各批次处理中,按照加载-计算-回存(LCS)的流水方式实现对多路待融合数据的融合处理。
图13示出了桶排序的示例性原理图。桶排序的基本工作原理是将待排序的数据分到有限的桶中,每个桶再分别进行排序。
如图所示,假设待排序的原始数组包括12个数据,其顺序是混乱的,假设桶数为4。每个桶负责一定数据范围的数据排序,各个桶的数据范围之间是有序的。例如,在图中示例中,四个桶的数据范围基本平均分配,按照从小到大的顺序,桶1的数据范围为0~25,桶2的数据范围为26~50,桶3的数据范围为51~75,桶4的数据范围为76~100。由此可以根据各个桶的数据范围,将原始数组中的数据分配到对应的桶中。图中示出桶1有5个数,桶2有2个数,桶3有1个数,桶4有4个数。接着在每个桶中进行排序,最后把各个桶中的排序的有序数组直接按桶的顺序拼接起来,就得到最后的排序结果。图中示出了拼接后的排序结果。
将数据分配到桶的过程也可以表示为一个映射函数f,通过映射函数f,将待排序的关键字k映射到第i个桶中,此时该关键字k即为桶B[i]中的元素。
如前面所描述的,在一些实施例中,存储电路的可用空间无法一次性处理所有待融合数据,其容量有限,因此可以将存储电路看成上述桶排序中的桶,其容量也是有限的。将待融合数据分成多个批次在存储电路上进行处理,可以等效于将待融合数据放入多个桶中进行处理。然后,各批次的融合处理结果直接回存到外部存储电路(例如,图2的存储装置204,其例如为DRAM)上,可以类似于所有桶排序的结果进行顺序拼接。MERGE指令所执行的融合处理操作可以视为每个桶内的排序操作。
因此,在一些实施例中,应用桶排序方式以利用有限空间的存储电路,实现所有待融合数据的流水式融合处理。在每轮流水处理中,控制电路可以根据多路待融合数据的索引,从这些索引中选取落入当前轮次所对应索引范围内的输入索引,并将其加载到存储电路的计算缓冲空间(也即前面分配的compute_buffer)中。继而,运算电路可以针对计算缓冲空间中的索引以及这些索引对应的待融合数据执行MERGE指令所指示的融合处理。最后,将融合处理后的数据回存到指定位置,例如片外存储电路DDR。
为了尽量充分利用每轮流水处理中的存储空间,可以根据待融合数据的索引分布进行划分,从而确保在各轮流水处理中,尽可能多地占满存储空间。
在一些实施例中,控制电路可以按如下分配各轮流水处理的索引范围,以使得每轮流水中处理的数据量大致相同并尽可能占满可用存储空间。根据前面描述的空间管理计算方法,可以确定融合后数据的数值在缓冲区中分配的缓冲空间最多占用:Nmax*Co*output_data_type,因此可以将Nmax*Co作为每轮流水处理(也即每个桶)中能够处理的数据个数,其也可以称为桶距Nspacing。
确定桶距之后,可以相应地确定桶数Nbucket为总数据个数除以桶距Nspacing。在应用于稀疏型卷积运算时,待融合的总数据个数可以表示为Nin*offset,其中Nin表示输入数据中非稀疏点的个数,offset表示卷积核的卷积维度上的权值数据总个数。因此,桶数可以表示为:
Nbucket=Nin*offset/Nspacing (3)
从上述公式可以看出,流水处理的轮数(桶数)与输入数据中的非稀疏点的个数成正比关系,换言之,与输入数据的稀疏度成正比关系。
确定了桶距和桶数之后,可以将待融合数据的索引进行排序,然后将排序后的索引按照桶距Nspacing进行顺序分割,以确定各轮流水处理对应的索引范围,或者每个桶的索引范围或索引区间。这种分割方式,可以保证每轮流水处理中待融合的数据尽量占满存储电路的可用空间。
在一些实施例中,针对待融合数据的索引的排序,可以使用前面描述的MERGE指令的第一处理模式来执行。具体地,调用融合指令的归并排序模式来对多路待融合数据的索引进行排序。可以理解,也可以采用其他排序方式来实现索引的预排序,从而进行上述各个桶的索引区间的分割。
在基于前述方法确定了每轮流水处理的索引范围后,可以在每轮流水处理中捞取落入对应索引范围的索引及关联的数据,执行融合处理。
图14示出了根据本披露实施例的融合处理的示例性流水过程。
图中1410示出了9路待融合数据的索引,每路有6个索引元素,总计54个索引元素。假设桶距为20,则需要3轮流水处理。根据前面的排序后区间分割,第一轮流水处理(第一个“桶”)的索引范围是0~13,有20个数;第二个“桶”的索引范围是14~31,有20个数;第三个“桶”的索引范围是32~99,有14个数。本领域技术人员可以理解,区间划分不限于上述示例,当最后一个桶中数据个数较少时,可以适当调整分配,以实现整体效率最大化。
在第一轮流水处理中,如1420所示,从待融合数据中取出所有落入0~13之间的索引以及对应的数据。图中深色方块表示第一轮取出的索引。
如前面所提到的,多路待融合数据的索引在每路中是有序的,例如按照从小到大的顺序排列。因此,在每轮的取数过程中,可以逐路按序选取,从而选出所有落入对应索引范围内的索引。
具体地,在一些实施例中,从多路待融合数据的索引中逐路选取落入本轮流水处理所对应的索引范围内的索引及其对应的待融合数据,其中每路中取出的索引的数量不超过剩余可处理数量。此处,剩余可处理数量等于数据个数Nspacing与当前已选出的索引的数量之差。
以图14为例,在每轮流水处理中,存储电路会预留20(桶距)个数的空间。因此,可以针对每路索引捞取20个数,之后使用大小比较操作(例如,__bang_ge(大于)/__bang_le(小于)函数),选择落入0~13区间中的索引,结果存储到计算缓冲空间中。在图中示例中,需要加载9次(9路索引),每次加载20个数,因为不确定每路索引中有多少个索引在0~13之间,但是可以确定最多是20个。
在一些实现中,取数步骤可以如下:从第一路索引捞出20个数,发现2个数符合要求;接着从第二路索引捞出20-2=18个数,发现2个数符合要求;接着从第三路索引捞取20-2-2=16个数,以此类推。从上述步骤可以看出,由于每次捞出的索引个数逐渐减少,因此可以减少IO量。
接着,在每轮流水处理中,如1430所示,针对取出的索引及其对应的待融合数据,执行MERGE指令的融合处理。融合处理后的数据可以直接存储到指定位置,例如外部存储电路,如1440所示。可以理解,由于各轮流水之间也是有序的,也即桶间是有序的,因此将各轮流水处理得到的融合处理后的数据按轮次顺序进行拼接,即可得到最终结果。
此外,从前面针对稀疏型卷积运算的描述可以看出,MAC步骤的乘加结果可能是无效的,其对应的索引被设为固定值,例如-1。在这种情况下,当执行MERGE指令时,硬件在遇到索引为-1,可以不输出任何数据,从而避免无效处理。
在待融合数据的索引中存在无效索引(例如-1)时,当采用桶排序方式执行流水处理时,可以对桶距进行适当地调整。
如前所述,Nmax是根据存储电路的可用空间大小和融合处理的相关参数计算出来的一个固定的数据,也即,一次最多能够处理的索引个数。如果索引中的无效索引(-1)很多,则桶距就会减小。这是因为无效索引的个数也会占用Nmax里的个数。为此,可以在对待融合数据的索引进行预先排序之后,将无效索引的个数统计出来,其可以记为Ninvaild,然后在存储电路中预留相应的缓冲空间。这样,每次将待融合的索引取出并存储到存储电路上时,存储电路上始终要预留出Ninvaild个数的空间,以防止数据溢出。
从前面参考图7-图8的描述可以发现,只有输入数据的上下左右4个最外围的边框中的数据,会出现无效索引“-1”的情况。因此,即使输入数据再大,也只有上下左右4个最外围的边框中的数据会出现“-1”。由此可见,无效索引的数量会很少,预留小部分空间就足够。
在实际应用中,例如在雷达算法中,大部分情况下卷积运算需要四周补零(例如前面参考图9的描述),上下左右会至少补上一圈零(例如填补量=1或2)。在补完零之后,输入数据的上下左右4个最外围的边框都是0了,则索引出现“-1”的数就少很多。此外,雷达算法所处理的是点云数据,根据对真实数据的观察发现,点云数据越到四周,数据越稀疏,也即点云物体一般位于输入图像的中间。因此,在边框处出现无效索引的概率较低,为无效索引预留少量空间就足够。
以上结合数据处理电路描述了本披露实施例的数据融合处理的流水方案。图15示出了根据本披露实施例的由数据处理电路实施的数据处理方法的示例性流程图。在此数据处理方法中,控制电路解析融合指令,以及根据融合指令控制存储电路和运算电路对多路待融合数据执行融合处理。运算电路在控制电路的控制下,将来自存储电路的多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素。数据元素可以包括标量、向量或更高维数据中任一。
存储电路配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与运算电路之间进行数据访存。缓冲区用于存储信息,这些信息包括处理前和/或处理后的信息。
更具体地,在步骤1510中,控制电路解析融合指令。
接着,在步骤1520中,控制电路可以根据解析的融合指令,在存储电路中分配相应的缓冲空间。具体地,控制电路可以根据存储电路的可用空间大小以及融合指令中的相关参数,确定一次融合处理最多能处理的索引个数Nmax。接着,根据Nmax,在存储电路的每个缓冲区中,为融合处理的各个相关参数分配缓冲空间。
在一些实施例中,融合指令的执行过程可以通过多轮流水处理来实现,以解决存储电路的可用空间不足的问题。在每轮流水处理中,可以按照加载-计算-回存的流水方式实现。
具体地,在步骤1531中,加载落入当前轮次的流水处理所对应的索引范围内的索引及其数据。选择索引的方式参考前文描述,此处不再重复。
接着,在步骤1532中,针对所加载的索引和数据,执行MERGE指令的融合处理,得到融合处理后的数据。
最后,在步骤1533中,将融合处理后的数据回存到指定位置,从而完成本轮次流水处理。
在步骤1540中,判断数据是否已处理完,如果未处理完,则返回到步骤1531,执行下一轮处理。如果已处理完,则前进到步骤1550,结束处理。
可以理解,虽然在图中将各轮流水处理示出为顺序执行,但是在实际执行中,可以并行进行多轮流水处理的不同步骤。例如,可以在执行第一轮流水的计算步骤的同时,执行第二轮流水的加载步骤。又例如,可以在执行第一轮流水的回存步骤的同时,执行第二轮流水的计算步骤。本领域技术人员可以基于本文描述的原理,合理设计并行流水过程,以提高处理效率。
本领域技术人员可以理解,前面结合附图描述的本披露实施例的数据融合处理的描述可以同样应用于图15的数据处理方法,因此不再进行重复描述。
本披露还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的数据处理电路。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (13)
1.一种数据处理电路,包括控制电路、存储电路和运算电路,其中:
所述控制电路用于解析融合指令,以及根据所述融合指令控制所述存储电路和所述运算电路对多路待融合数据执行融合处理;
所述存储电路配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与所述运算电路之间进行数据访存,所述缓冲区用于存储信息,所述信息包括处理前和/或处理后的信息;以及
所述运算电路用于在所述控制电路的控制下,将来自所述存储电路的多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素,所述数据元素包括标量、向量或更高维数据中任一。
2.根据权利要求1所述的数据处理电路,其中,所述控制电路进一步用于:
根据所述存储电路的可用空间大小以及所述融合处理的相关参数,确定一次融合处理最多能处理的索引个数Nmax;以及
根据所述Nmax,在每个所述缓冲区中,为所述融合处理的各个相关参数分配缓冲空间。
3.根据权利要求2所述的数据处理电路,其中所述融合处理的相关参数包括以下至少一项:
所述多路待融合数据的尺寸;
所述多路待融合数据的数值;
所述多路待融合数据的索引;
所述融合后数据的数值;
所述融合后数据的索引;
表示融合数据元素的运算结构体;以及
每轮融合处理中的待融合数据。
4.根据权利要求1-3任一所述的数据处理电路,其中所述控制电路进一步用于控制所述存储电路和所述运算电路按加载-计算-回存(LCS)的流水方式实现对所述多路待融合数据的融合处理,其中在每轮流水处理中:
所述控制电路用于根据所述多路待融合数据的索引,从所述索引中选取落入对应索引范围内的索引,并加载到所述存储电路的计算缓冲空间中;以及
所述运算电路用于针对所述计算缓冲空间中的索引以及所述索引对应的待融合数据执行所述融合处理;以及将融合处理后的数据回存到指定位置。
5.根据权利要求4所述的数据处理电路,其中所述控制电路进一步用于:
根据为所述融合后数据的数值在所述缓冲区中分配的缓冲空间的大小,确定每轮流水处理中能够处理的数据个数Nspacing;
对所述多路待融合数据的索引进行排序;以及
将排序后的索引按照所述Nspacing进行顺序分割,以确定各轮流水处理对应的索引范围。
6.根据权利要求5所述的数据处理电路,其中所述控制电路进一步用于:从所述多路待融合数据的索引中逐路选取落入本轮流水处理所对应的索引范围内的索引及对应的待融合数据,其中每路中取出的索引的数量不超过剩余可处理数量,所述剩余可处理数量等于所述数据个数Nspacing与当前已选出的索引的数量之差。
7.根据权利要求所述的数据处理电路,其中所述控制电路进一步用于:
统计所述多路待融合数据的索引中的无效索引的个数;以及
根据所述无效索引的个数,在所述存储电路中预留相应的缓冲空间。
8.根据权利要求5-7任一所述的数据处理电路,其中所述控制电路进一步用于:调用融合指令的归并排序模式来对所述多路待融合数据的索引进行排序。
9.根据权利要求5-8任一所述的数据处理电路,其中所述流水处理的轮数基于所述多路待融合数据的数据总个数和每轮流水处理中能够处理的数据个数而确定。
10.根据权利要求4-9任一所述的数据处理电路,其中所述控制电路进一步用于:将各轮流水处理得到的融合处理后的数据按轮次顺序进行拼接,得到最终结果。
11.一种芯片,包括根据权利要求1-10任一所述的数据处理电路。
12.一种板卡,包括根据权利要求11所述的芯片。
13.一种使用权利要求1-10任一所述的数据处理电路来处理数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110482914.6A CN115221107A (zh) | 2021-04-30 | 2021-04-30 | 数据处理电路、数据处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110482914.6A CN115221107A (zh) | 2021-04-30 | 2021-04-30 | 数据处理电路、数据处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221107A true CN115221107A (zh) | 2022-10-21 |
Family
ID=83606686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110482914.6A Pending CN115221107A (zh) | 2021-04-30 | 2021-04-30 | 数据处理电路、数据处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221107A (zh) |
-
2021
- 2021-04-30 CN CN202110482914.6A patent/CN115221107A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656910B2 (en) | Data sharing system and data sharing method therefor | |
CN109284823B (zh) | 一种运算装置及相关产品 | |
CN110262901A (zh) | 一种数据处理方法及数据处理系统 | |
CN110163334A (zh) | 集成电路芯片装置及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
WO2023123919A1 (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN112633490A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN110490317B (zh) | 神经网络运算装置及运算方法 | |
CN109325530A (zh) | 基于少量无标签数据的深度卷积神经网络的压缩方法 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN111767243A (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN115221103A (zh) | 计算装置、数据处理方法及相关产品 | |
US20200125937A1 (en) | Integrated circuit chip device and related product | |
WO2023045638A1 (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN115221107A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN110069647A (zh) | 图像标签去噪方法、装置、设备及计算机可读存储介质 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
US11734548B2 (en) | Integrated circuit chip device and related product | |
CN115221106A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN111291871B (zh) | 一种计算装置及相关产品 | |
CN113469365B (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 |