CN115221103A - 计算装置、数据处理方法及相关产品 - Google Patents
计算装置、数据处理方法及相关产品 Download PDFInfo
- Publication number
- CN115221103A CN115221103A CN202110480510.3A CN202110480510A CN115221103A CN 115221103 A CN115221103 A CN 115221103A CN 202110480510 A CN202110480510 A CN 202110480510A CN 115221103 A CN115221103 A CN 115221103A
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- index
- fused
- core
- 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
-
- 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)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Algebra (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本披露公开了一种计算装置、数据处理方法及相关产品。该计算装置可以实现为组合处理装置,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了多核处理器上的数据融合处理实现方案,其可以简化处理,提高机器的处理效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及计算装置、数据处理方法、芯片和板卡。
背景技术
近年来,在基于卷积神经网络的目标检测、实例分割和关键点检测技术中已经取得了巨大的进步。这些检测通常基于光达(LiDAR)数据或基于RGB-D数据,其可以应用于自动驾驶、机器人视觉等领域中。
不同于图像数据是密集的,LiDAR点云数据通常是稀疏的,并且由于诸如3D空间的不均匀采样、传感器的有效范围、遮挡和相对姿势等因素,点密度变化剧烈。因此,传统的适合于密集型数据的卷积神经网络在应用于这种稀疏型数据时,效率将变得非常低,尤其是涉及卷积运算时,会在零值数据点上浪费大量的算力等资源。
鉴于此,期望提供一种改进的数据处理方案,以适合于诸如点云数据之类的稀疏型数据,从而提高处理效率。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种计算装置、数据处理方法、芯片和板卡。
在第一方面中,本披露公开一种计算装置,包括主设备和从设备,所述从设备包括多个处理核,其中:所述主设备配置用于发射第一任务,所述第一任务用于执行融合处理,所述融合处理指示将多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素,所述数据元素包括标量、向量或更高维数据中任一;以及所述从设备配置用于根据所述第一任务的拆分策略,调度相应数量的所述处理核执行所述第一任务,其中每个处理核针对所述多路待融合数据中的一部分执行所述融合处理。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的计算装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种使用前述第一方面任一实施例的计算装置来处理数据的方法。
通过如上所提供的计算装置、使用计算装置来处理数据的方法、芯片和板卡,本披露实施例针对可用于稀疏型数据的卷积运算处理中的数据融合处理步骤,提供了一种多核处理器架构上的实施方案,其可以有效拆分任务,从而缩短处理时间,提高整体效率。进一步地,在一些实施例中,通过在多核处理器上实现多轮流水处理,可以快速完成融合处理任务。在多轮流水处理中,可以采用桶排序方式来分配各轮流水处理的数据部分,进而实现各轮流水处理的输出数据的有序拼接。在一些实施例中,还可以在不同的输出通道维度上复用索引,从而减小数据吞吐量,进一步加速处理。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核计算装置的内部结构示意图;
图4示出本披露实施例的多核计算装置的内部结构示意图;
图5示出常规卷积方案的运算原理;
图6示出本披露实施例的稀疏卷积方案的示例性原理图;
图7示出本披露实施例的高维稀疏输入数据的预处理的示意图;
图8示出本披露实施例的乘法运算的含义;
图9A-图9C示出乘积结果与卷积运算结果之间的索引映射关系;
图10示出卷积运算的填补处理对输入数据索引的影响;
图11示出MERGE指令的示例性原理;
图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间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置400采用分层结构设计,多核计算装置400作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置400是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、同步模块44以及多个集群45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个集群45连接起来,用以在各个模块间传输数据和控制信号。同步模块44是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群45是多核计算装置400的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核计算装置400还可以包括8个、16个、64个、甚至更多的集群45。集群45用以高效地执行深度学习算法。
以集群的层级来看,如图4右上方所示,每个集群45包括处理单元402和存储核(MEM core)404。处理单元402执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理核(IPU core)411-1~411-n,以完成诸如大规模向量计算任务。本公开不限制处理核411的数量。
处理核411的内部架构如图4下方所示。每个处理核411内可以具有多个用于执行计算任务的计算模块424-1~424-m,以及为执行计算任务所需要的本地存储模块423。需特别说明的是,本地存储模块423可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块423可以包括通信模块421,以与存储核404中的共享存储模块415通信。通信模块421例如可以是搬运直接内存访问模块(move direct memory access,MVDMA)。本地存储模块423还可以包括通信模块422,以与片外内存,例如DRAM 408进行数据交换。通信模块422例如可以是输入/输出直接内存访问模块(input/output direct memory access,IODMA)。IODMA 422控制本地存储模块423中的NRAM/WRAM(图4未示出,参见图3)与DRAM 408的访存;MVDMA 421则用以控制本地存储模块423中的NRAM/WRAM与共享存储模块415的访存。
继续图4右上方视图,存储核404主要用以存储和通信,即存储处理核411间的共享数据或中间结果、以及执行集群45与DRAM 408之间的通信、集群45间彼此的通信、处理核411间彼此的通信等。在其他实施例中,存储核404具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。
存储核404包括一个较大的共享存储模块(SRAM)415、广播总线414、集群直接内存访问模块(cluster direct memory access,CDMA)418、全局直接内存访问模块(globaldirect memory access,GDMA)416及通信时计算模块417。SRAM 415承担高性能数据中转站的角色,在同一个集群45内不同处理核411之间所复用的数据不需要通过处理核411各自向DRAM 408获得,而是经SRAM 415在处理核411间中转,存储核404只需要将复用的数据从SRAM 415迅速分发给多个处理核411即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线414、CDMA 418及GDMA 416则分别用来执行处理核411间的通信、集群45间的通信和集群45与DRAM 408的数据传输。以下将分别说明。
广播总线414用以完成集群45内各处理核411间的高速通信,此实施例的广播总线414支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理核至单一处理核)的数据传输,多播是将一份数据从SRAM 415传输到特定几个处理核411的通信方式,而广播则是将一份数据从SRAM 415传输到所有处理核411的通信方式,属于多播的一种特例。
CDMA 418用以控制在同一个计算装置201内不同集群45间的SRAM 415的访存。
GDMA 416与外部存储控制器41协同,用以控制集群45的SRAM 415到DRAM 408的访存,或是将数据自DRAM 408读取至SRAM 415中。从前述可知,DRAM 408与本地存储模块423中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 422直接联系DRAM 408与本地存储模块423;第二个渠道是先经由GDMA 416使得数据在DRAM 408与SRAM415间传输,再经过MVDMA 421使得数据在SRAM 415与本地存储模块423间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 408与本地存储模块423间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。
在一些实施例中,存储核404可以作为集群45内的一个缓存层级,达到拓宽通信带宽的作用。进一步地,存储核404还可以完成与其他集群45之间的通信。存储核404例如能够实现集群45之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有集群;撒播是指将不同数据分发给不同的集群;收集是指将多个集群的数据会聚在一起;规约是指将多个集群中的数据按照指定的映射函数进行运算得到最后的结果发送给某个集群;而全规约与规约的区别在于后者最后的结果只发送给一个集群,而全规约需要发送给所有集群。
通信时计算模块417可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元402,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块417和共享存储模块415可以整合在相同或不同部件中,本披露实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
基于前述硬件环境,在一个方面中,本披露实施例提供了一种计算装置,利用多核处理器架构来实现多路数据的融合处理。在另一个方面中,本披露实施例还提供了一种适合稀疏型数据的卷积运算方案,此稀疏卷积运算方案可以采用本披露第一方面的融合处理。为了更好地理解多路数据融合处理的作用,下面首先描述适合稀疏型数据的卷积运算方案。这种稀疏卷积方案可以适用于多维卷积运算,包括但不限于二维卷积和三维卷积。为了简便起见和易于理解,在一些实施例中采用二维卷积作为示例进行阐述。
本披露实施例中所提到的“N维卷积”,其中N表示卷积运算中执行滑动累加的卷积维度数。例如,当N=2时,卷积核在两个维度(例如,宽度W和高度H)上根据对应的卷积步长进行平移累加。当N=3时,卷积核在三个维度(例如,宽度W、高度H和深度D)上根据对应的卷积步长进行平移累加。当N=4时,卷积核在四个维度(例如,宽度W、高度H、深度D和批次batch)上根据对应的卷积步长进行平移累加。在本披露实施例中所提到的“非卷积维度”,是指卷积核不在该维度上进行滑动累加的维度。
为了更清楚地理解本披露实施例的卷积方案,先以二维卷积为例描述常规卷积方案的运算原理。
图5示出了常规卷积方案的运算原理。在此示例中,卷积核510是致密的,为3×3的矩阵,卷积核中的数字为对应的权值数据。输入数据520为6×6的矩阵,其是稀疏的,仅具有三个非零数据:2、3和5,如深色方块所示。为了简便起见,在此示例性卷积过程中,两个维度的卷积步长均设为1,填补量为0,没有膨胀。图中3×3大小的灰色方块代表卷积核在输入数据上的滑动累加过程。530示出了卷积开始时的计算,540示出了向右滑动一步的计算,550示出了向下滑动一步的计算。在每步计算中,卷积核的权值数据与输入数据对位相乘并累加。560为作为输出数据的最终计算结果。输出数据为4×4大小的矩阵。可以看出,530的计算对应于输出数据中坐标(1,1)处的数据,540的计算对应于输出数据中坐标(1,2)处的数据,而550的计算对应于输出数据中坐标(2,1)处的数据。
在本披露实施例的稀疏卷积运算过程中,卷积核是致密的,其输入格式可以与常规卷积相同;而输入数据是稀疏的,其输入格式可以不同于常规卷积的输入数据,由此节省存储空间。在一些实施例中,输入数据是稀疏化数据,每个输入数据元素具有索引和数值信息,其可以表示为(index,value)。取决于不同的应用、数据类型或规模,此处的索引可以是一维、二维或更多维,本披露在此方面没有限制。不同维度的索引可以相互进行转换,例如按照预定遍历规则,将二维或更多维的索引转换成一维索引,反之亦然。同样地,取决于不同的应用、数据类型或规模,此处的数值信息可以包括标量、向量、或更高维数据。
以图5中的示例为例,输入数据具有三个非稀疏的点,分别是((1,4),2)、((3,3),3)和((5,6),5)。对于第一个非稀疏点,此处(1,4)表示二维的索引坐标,2代表索引所指向位置的具体数值,此示例中为标量;其余非稀疏点的含义类似。
从图5的描述可以看出,稀疏卷积运算的最终结果只与非零输入数据元素的运算结果有关,因此,可以仅针对这些非零输入数据元素,执行与卷积核的乘加运算。进一步地,从图5的输出数据560可以看出,这些乘加运算可以进一步拆分成乘法运算和相应位置的累加运算。相应地,在本披露实施例的稀疏卷积方案中,稀疏卷积运算可以包括三个步骤:计算卷积核与稀疏输入数据的运算结果(例如乘积结果或乘加结果,考虑到数据有些维度还需要进行累加,例如后面描述的输入通道维度Ci);确定每个运算结果的索引;以及将多路运算结果按索引顺序归并为一路融合数据,作为稀疏卷积运算的结果。在归并过程中,具有相同索引的运算结果进行累加。下文描述中,取决于数据的维度,在未提及输入通道维度Ci的场景下,有时候也将多路运算结果直接称为多路乘积结果。本领域技术人员根据上下文,可以理解其对应的含义。
图6示出了根据本披露实施例的稀疏卷积方案的示例性原理。图6仍然以图5的数据为例来描述本披露实施的稀疏卷积运算方案。
如图6所示,在MAC步骤中,将输入数据元素620与卷积核610执行乘法运算,获得多路乘积结果630。在计算卷积核与稀疏输入数据的乘积结果时,可以将卷积核各卷积维度上的权值数据合并成一个维度,维度大小为offset,offset是卷积维度上的权值数据总个数。
如前面所提到的,本披露实施例提供的稀疏卷积方案可以适用于多维卷积运算,包括但不限于二维卷积和三维卷积。图6中示出了将二维卷积核的两个卷积维度(宽度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)上是稀疏的。
取决于输入数据的初始状态,可以在将稀疏的输入数据提供给运算电路进行运算之前进行预处理。在一些实施例中,这种预处理例如可以包括:将稀疏的多个维度合并成一个维度;将输入数据中的稀疏数据点在合并的维度上致密化以形成输入数据元素;以及使用索引和数值信息来表示每个输入数据元素。索引可以是一维或多维索引,并且数值信息可以包括标量、向量或更高维数据中任一。
在一个示例中,例如参考图5,输入数据是二维的6×6矩阵,其在宽度W和高度H两个维度上是稀疏的。在进行预处理时,将W和H合并成一个维度,将稀疏数据点(此示例中为2、3和5)在合并后的维度上进行致密化,从而形成三个致密的输入数据元素。接着,使用索引和数值信息来表示每个输入数据元素。数据元素的索引可以表示其在致密化前、稀疏形式的输入数据中的位置关系。例如,图5示例中的三个输入数据元素的索引分别为:(1,4)、(3,3)和(5,6)。此示例中的索引为二维索引,其也可以转换为一维索引,例如分别为4、15和29。这三个数据元素的数值信息分别为2、3和5,也即三个标量。
在另一示例中,例如参考图7,其示出了根据本披露实施例的高维稀疏输入数据的预处理的示意图。如图所示,稀疏形式的输入数据710包括五个维度,批次batch(B)维度、HWD三维空间维度和输入通道Ci维度。输入数据在B维度和HWD三维空间是稀疏的,图中HWD立体矩阵中的深色方块代表有数值的地方,其他部分全部为零值。B维度上存在多个这种HWD立体矩阵,每个立体矩阵上的稀疏样式(也即深色方块的位置)可以不同。输入数据在Ci维度是致密的,Ci维度是最低维度。由于附图表现能力有限,图中610仅示出了四个维度,但是Ci维度可以理解为每个深色方块的厚度。Ci维度的大小是统一的,也即每个深色方块的厚度是一样。在预处理过程中,可以将输入数据的四个稀疏维度(B维度和HWD三维空间维度)合并成一个维度Ni,将稀疏数据点(图中的深色方块)在合并后的维度上进行致密化,从而形成致密的输入数据元素。也即,B维度上的每个HWD立体矩阵都执行同样的维度合并和致密化处理,从而得到预处理后的致密形式的输入数据720,其为二维矩阵,低维是Ci,高维是BHWD的合并维度Ni。
接着,使用索引和数值信息来表示每个致密化的输入数据元素。图7示例中的输入数据元素的索引可以使用其在致密化前的BHWD四维空间中的坐标来表示,也可以将其转换为一维索引。每个输入数据元素的数值信息可以看成是一个Ci向量。
经过上述预处理后的输入数据可以提供给运算电路进行后续处理。
输入数据元素可以排列成一个输入向量,以便与卷积核执行乘法运算。在一些实施例中,考虑到后续的归并融合,可以将输入数据元素按其索引顺序(例如从小到大的顺序)进行排列。输入向量中的每个向量元素包括一个输入数据元素。如前面所描述的,每个输入数据元素可以是标量、向量或更高维数据。
回到图6,接着可以对维度合并后的卷积核610与输入数据元素构成的输入向量620在卷积维度上执行乘法运算,得到offset路数据630,其中每路数据包括若干乘积结果,每个乘积结果包括标量、向量或更高维数据中任一。在图6的示例中,维度合并后的卷积核610(图中的9个标量)与输入向量620(2、3和5构成的长度为3的向量)执行标量向量乘法运算,得到9个向量,也即9路乘积结果630。在此示例中,每个乘积结果是一个标量。
MAC步骤的运算相当于针对维度合并后的卷积核上的每行数据,在输入向量上进行1×1的点级卷积,得到一个卷积结果。为了更好地理解上述MAC步骤中乘法运算的意义,图8示例性示出了其中几个乘法运算的含义。
如图所示,针对图6中的第1个权值标量的运算:1*[2,3,5]=[2,3,5],可以理解为分别对应图中810、820和830的运算,也即2、3和5分别位于卷积核的第1个位置上时产生的乘积结果。类似地,针对图6中的第2个权值标量的运算:2*[2,3,5]=[4,6,10],可以理解为分别对应图中840、850和860的运算,也即2、3和5分别位于卷积核的第2个位置上时产生的乘积结果。
如前所述,输入数据还可以包括非卷积维度,例如前面参考图7描述的输入通道Ci维度。在一些实施例中,输入数据可以包括N个卷积维度和至少一个非卷积维度,相应地,卷积核也可以包括N个卷积维度和至少一个非卷积维度。此时,在上述MAC步骤中,可以按照具体的运算要求,在非卷积维度上执行对应的运算处理。例如,在一些示例中,输入数据的非卷积维度包括输入通道Ci维度,卷积核的非卷积维度包括输入通道Ci维度和输出通道Co维度,这些非卷积维度上的运算处理例如可以包括但不限于:保持Ci维度的结果不进行累加(例如在depthwise卷积中);在Ci维度上将卷积维度上的乘法运算结果进行对位累加运算(例如Ci维度累加);和/或将Ci维度上的累加结果在Co维度上堆叠(例如Ci维度累加,但Co维度不累加),以作为多路运算结果,其中每个运算结果为Co维度上的向量。
继续图6,MAC步骤可以获取与非零数值相关的运算结果,为了在后续的归并融合MERGE步骤中得到最终卷积运算结果,还需要确定这些运算结果的索引,以便进行对应的累加。因此,在INDEX步骤中,可以获取这些运算结果的对应索引。具体地,在一些实施例中,根据索引映射关系来确定多路运算结果中每个运算结果的索引。每个运算结果是通过卷积核中的权值数据与输入数据元素的乘法运算或乘加运算得到的,因此索引映射关系指示了权值数据的位置和输入数据元素的索引与卷积运算结果中对应结果元素之间的关系,换言之,可以基于权值数据在卷积核中的位置以及输入数据元素的索引来确定与该权值数据相乘或乘加得到的运算结果的索引。
图9A示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中910A、920A和930A的含义与图8的810、820和830类似,代表第1个权值标量与输入向量的乘积运算:1*[2,3,5]=[2,3,5]。图中箭头指示了各个乘积运算结果(910A、920A和930A)在卷积运算结果(940A)中的对应位置。具体地,910A的乘积结果对应于4×4的卷积结果中的(1,4)位置,920A的乘积结果对应于卷积结果中的(3,4)位置,930A的乘积结果已经溢出卷积结果范围,属于无效结果。
从图9A可以看出,当输入向量与卷积核的第1个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第1个权值数据乘积运算的乘积结果的索引也是(x,y)。
图9B示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中910B、920B和930B代表第2个权值标量与输入向量的乘积运算:2*[2,3,5]=[4,6,10]。图中箭头指示了各个乘积运算结果(910B、920B和930B)在卷积运算结果(940B)中的对应位置。具体地,910B的乘积结果对应于4×4的卷积结果中的(1,3)位置,920B的乘积结果对应于卷积结果中的(3,2)位置,930B的乘积结果已经溢出卷积结果范围,属于无效结果。
从图9B可以看出,当输入向量与卷积核的第2个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第2个权值数据乘积运算的乘积结果的索引为(x,y-1)。
图9C示例性示出了MAC步骤中的部分乘积结果与卷积运算结果之间的索引映射关系。图中910C、920C和930C代表第9个权值标量与输入向量的乘积运算:1*[2,3,5]=[2,3,5]。图中箭头指示了各个乘积运算结果(910C、920C和930C)在卷积运算结果(940C)中的对应位置。具体地,910C的乘积结果已经溢出卷积结果范围,属于无效结果;920C的乘积结果对应于4×4的卷积结果中的(1,1)位置,930C的乘积结果对应于卷积结果中的(3,4)位置。
从图9C可以看出,当输入向量与卷积核的第9个权值数据进行乘积运算时,其索引存在如下映射关系:假设输入向量中向量元素(也即数据点2、3和5)的索引为(x,y),则其与第9个权值数据乘积运算的乘积结果的索引为(x-2,y-2)。
综合图9A-图9C可以看出,输入向量中的每个向量元素(也即数据点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)。
因此,根据输入数据点的索引,基于上述固定的坐标偏移,可以依次求解出其遍历卷积核时对应的卷积核中心点的索引。继而将中心点的索引映射到输出点的索引即可确定输入数据点产生的每个乘积结果的索引。
从图9A-图9C的图示还可以看出,有些乘积结果已经溢出了卷积结果范围,属于无效结果。对于这些情况,可以将超出卷积结果范围(也即输出数据维度大小范围)的索引设置为预定值,例如-1,以便在后续处理中识别这些无效结果,不对其进行归并融合处理。
在一些实施例中,卷积运算存在填补(padding)操作。例如,在基于LiDAR数据的目标检测算法中,需要进行相同填补(same padding),也即通过填补,使得输入数据的形状与卷积运算后输出数据的形状相同。可以理解,在其他卷积运算的应用场景中,可能存在不同的填补规则。
图10示出了卷积运算的填补处理对输入数据索引的影响。
如图所示,矩阵1010代表初始输入数据,矩阵1020代表填补后输入数据。初始输入数据例如是2×3的矩阵。填补后输入数据根据填补规则,在初始输入数据的基础上左边添加1列、右边添加3列、上面添加4行、下面添加1行数据,填补数据例如可以是零。
对于初始输入数据中的任一数据点(x,y),其在填补后输入数据中的坐标变为(x+pad_left,y+pad_top),其中pad_left是左边填充量,pad_top是上部填充量。由此可知,可以通过简单的加法运算、根据填补规则来调整输入数据的索引。
在这种实施例下,在根据索引映射关系确定乘积结果的索引之前,可以基于卷积运算的填补规则,调整输入数据元素的索引。
本领域技术人员可以理解,索引调整处理也可以在索引映射之后或期间进行,只需能够考虑到填补规则带来的影响即可,本披露实施例在此方面没有限制。
回到图6,图中640示出了INDEX步骤所确定的9路乘积结果所对应的索引,每个乘积结果具有一个对应的索引。深色方块示出了无效结果,其索引设置为-1。
在通过MAC步骤获得多路乘积结果,通过INDEX步骤确定每个乘积结果的索引之后,可以将这多路乘积结果进一步融合,以得到卷积运算结果。
具体地,在MERGE步骤中,将多路乘积结果按照索引顺序进行归并融合,以得到卷积运算结果,其中索引相同的乘积结果进行累加。图中650示出了融合后的索引,其中去除了重复的索引,例如索引2和3。图中660示出了融合后的数据,其中索引相同的乘积结果进行累加,例如两个索引2分别对应的数据6和12进行累加,两个索引3分别对应的数据4和3进行累加。
通过对比图5和图6的运算结果可以看出,基于图6的融合索引650和融合数据660,可以恢复稀疏形式的卷积运算结果,其完全对应于图5的4×4的常规卷积运算结果560。
上述主要描述了稀疏二维卷积方案,其运算原理可以类似地扩展到稀疏三维或更高维卷积运算中。例如,在三维稀疏卷积中,卷积核还可以具有非卷积维度:输入通道Ci维度和输出通道Co维度。在此示例的卷积运算中,Ci维度的运算结果需要进行累加,Co维度的运算结果不进行累加。
经过前述MAC处理后得到多路乘积结果。可以理解,在此MAC处理中,除了在卷积维度上进行乘法运算之外,还在Ci维度上进行累加。由于Co维度上不进行运算,因此,得到的多路乘积结果中每个乘积结果可以看成一个Co方向的向量。
从前面针对INDEX步骤的描述可知,在根据卷积核确定固定偏移后,乘积结果的索引仅与输入数据的索引相关。输入数据不存在Co维度,因此可以在Co方向上复用各个乘积结果的索引。
由此可见,上面描述了针对稀疏型数据的一种卷积运算方案,其中通过数据融合处理(MERGE步骤)可以实现有效乘积结果的排序和累加。针对此数据融合步骤,可以通过专门设计的硬件指令MERGE指令来实现。MERGE指令的基本功能就是将多路待融合数据,按照其索引顺序,合并成一路融合数据。MERGE指令可以存在多种处理模式,以适应不同的需求。MERGE指令中可以包括模式标识位,以指示不同的处理模式。
图11示出了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指令的并行处理。
图12示例性示出了可以实施本披露实施例的计算装置的示例性结构图。如图所示,计算装置1200包括主设备1210和从设备1220,其中从设备1220中可以包括多个处理核1221。
主设备1210例如可以是通用处理器,其作为控制设备(简称主机端),负责复杂控制和调度等工作。主设备1210例如可以是图2中的处理装置203。从设备1220例如可以是各种领域专用处理器,负责大规模的并行计算或领域专用计算任务。从设备1220例如可以是图2中的计算装置201。二者协同完成计算任务。
在一些实施例中,计算装置1200可以用于实现前面描述的融合处理。具体地,主设备1210可以发射第一任务。第一任务用于执行融合处理,该融合处理指示将多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素。数据元素可以包括标量、向量或更高维数据中任一。从设备1220可以根据第一任务的拆分策略,调度相应数量的处理核1221执行第一任务。每个处理核针对多路待融合数据中的一部分执行上述融合处理。
在一些实施例中,可以采用桶排序方式,对待融合数据进行划分,以在多个处理核上并行处理。具体地,主设备1210可以进一步配置用于确定第一任务的拆分策略,以支持桶排序的实现方式。拆分策略可以包括:完成第一任务所需处理核的核次数,以及每一核次对应要处理的待融合数据的索引范围,其中各个核次对应的索引范围之间是有序的。这里,“核次数”是指完成一项任务需要多少个处理核执行多少次,也即对应任务在空间或时间维度的展开。
从设备1220还可以包括存储核1222,其可以由多个处理核1221共享,以存储处理核处理前、处理期间和/或处理后的数据。
图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指令所执行的融合处理操作可以视为每个桶内的排序操作。
在一些实施例中,从设备可以配置用于根据第一任务的拆分策略,调度L轮、每轮Ncore个处理核来执行第一任务。执行第一任务的轮次数L、每轮的处理核数Ncore可以根据完成第一任务所需处理核的核次数以及当前可用的处理核数量来确定,其例如可以由主设备来确定,也可以由从设备来确定。例如,假设完成第一任务需要16核次数,当前可用处理核数量为16,则只需一轮处理即可完成;若当前可用处理核数量为8,则需2轮处理来完成;若当前可用处理核数量为4,则需4轮处理来完成。
在一些实施例中,例如融合处理作为前述稀疏卷积运算处理的一部分时,在三维稀疏卷积的情况下,由于可以在Co方向上复用各个乘积结果的索引,也即Co方向上的乘积结果对应相同的索引,因此可以在Co维度进行拆分,从而实现索引的复用,例如同一索引可以复用Co次。具体地,在同一轮处理中,每个处理核针对不同输出通道维度上的待融合数据执行融合处理,这些不同输出通道维度上的待融合数据复用相同的索引。
在一些实施例中,在每轮处理中,从设备可以向多个处理核所共享的存储核加载落入当前轮次处理所对应的索引范围内的索引。这些索引将在所调度的多个处理核中共享。因此,可以将索引通过广播方式传输给这些处理核。所调度的每个处理核可以加载分配给本处理核的Co维度上的、与广播方式传输的索引对应的待融合数据的数值。然后,处理核针对加载的待融合数据的数值和索引,执行融合处理。最后,处理核可以将融合处理后的数据回存到外部存储电路。在一些实现中,处理核可以经由存储核,将处理后的数据回存到外部存储电路,例如图2的存储装置(例如DDR)204中。在另一些实现中,在存储核与处理核之间的接口忙碌时,可以将处理后的数据经由另一接口直接回存到外部存储电路。
为了尽量充分利用每轮处理中的存储空间,可以根据待融合数据的索引分布进行划分,从而确保在各轮处理中,尽可能多地占满存储空间。
在一些实施例中,从设备中存储核可以配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与处理核之间进行数据访存。这两个缓冲区可以称为乒缓冲空间与乓缓冲空间,也即采用乒乓(pingpong)流水方式。
具体地,在处理核针对存储核的乒缓冲空间上的数据执行运算时,存储核可以从外部存储电路(例如,图2的存储装置204,其例如为DRAM)向其乓缓冲空间上加载下一次的计算数据。存储核与外部存储电路之间的访存接口不同于存储核与处理核之间的访存接口,因此,可以支持上述并行方式,从而构成流水线处理。
存储核的使用空间有限,诸如512KB,而且还需要为编译器预留空间,例如预留128KB,其在执行融合处理时的可用空间只有512-128=384KB。进一步地,为了支持流水处理,存储电路的可用空间划分为两个缓冲空间:乒缓冲空间和乓缓冲空间。在一些实现中,平均分配这两个缓冲空间以最大化流水效率。在前述示例中,每次执行融合处理时可以使用的空间大小RAM_merge_size是384/2=192KB。
受限于存储核上的可用空间大小,需要合理地进行空间管理,以高效地执行融合处理。在空间管理时,需要考虑两个因素:首先,空间申请不能污染和堆叠;其次,缓冲空间能够放得下每一次处理的数据。
基于上述考虑,在一些实施例中,可以根据存储核的可用空间大小以及融合处理的相关参数,确定一次融合处理最多能处理的索引个数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。可以理解,在将融合处理用于前述实施例的稀疏型卷积运算时,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表示输入数据的数据类型。在稀疏型卷积运算的示例中,该多路待融合数据的数值即图6的MAC步骤中计算的乘积结果,因此可以表示为merge_input_mac_result。
对于多路待融合数据的索引,由于数据与索引具有一一对应关系,因此输入的K路数据对应的K路索引所占用的空间可以计算为:Nmax*index_data_type,其中index_data_type表示索引的数据类型。在稀疏型卷积运算的示例中,该多路待融合数据的索引即图6的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_size-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之后,上面各个参数的占用空间大小也都可以确定。
图14示意性示出了存储核中的缓冲空间划分。如图所示,存储核的可用空间平均地划分为两个缓冲空间:乒缓冲空间1410和乓缓冲空间1420。每个缓冲空间中都为上述参数分配了相应的缓冲空间,由此符合空间互不污染和干扰的原则。
在为各个参数分配了空间资源之后,可以按流水方式执行MERGE指令。从前面对MERGE原理的描述可知,此融合处理与待融合数据的K路索引(也即merge_input_output_index)强相关,因此其流水也与待融合数据的K路索引强相关。
在一些实施例中,主设备可以按如下分配各轮处理的索引范围,以使得每轮处理的数据量大致相同并尽可能占满可用存储空间。在一些实现中,主设备可以根据从设备中的存储核的存储容量和融合处理的参数配置,确定单个处理核一次能够处理的数据个数Nspacing;以及根据数据个数Nspacing和多路待融合数据的总数据个数,确定完成第一任务(融合处理)所需的核次数。
具体地,根据前面描述的空间管理计算方法,可以确定融合后数据的数值在缓冲区中分配的缓冲空间最多占用:Nmax*Co*output_data_type,因此可以将Nmax*Co作为每轮处理(也即每个桶)中能够处理的数据个数,其也可以称为桶距Nspacing。
确定桶距之后,可以相应地确定桶数Nbucket为总数据个数除以桶距Nspacing。在应用于稀疏型卷积运算时,待融合的总数据个数可以表示为Nin*offset,其中Nin表示输入数据中非稀疏点的个数,offset表示卷积核的卷积维度上的权值数据总个数。因此,桶数可以表示为:
Nbucket=Nin*offset/Nspacing (3)
从上述公式可以看出,处理的轮数(桶数)与输入数据中的非稀疏点的个数成正比关系,换言之,与输入数据的稀疏度成正比关系。
确定了桶距和桶数之后,可以将待融合数据的索引进行排序,然后将排序后的索引按照桶距Nspacing进行顺序分割,以确定各轮处理对应的索引范围,或者每个桶的索引范围或索引区间。这种分割方式,可以保证每轮处理中待融合的数据尽量占满存储电路的可用空间。
在一些实施例中,针对待融合数据的索引的排序,可以使用前面描述的MERGE指令的第一处理模式来执行。具体地,调用融合指令的归并排序模式来对多路待融合数据的索引进行排序。
在一些实现中,主设备可以在发射第一任务(融合处理)之前,发射第二任务,该第二任务用于对多路待融合数据中的数据元素的索引进行预排序。继而,主设备可以基于预排序后的索引,按照上述数据个数Nspacing进行顺序分割,以确定每一核次对应要处理的待融合数据的索引范围。
可以理解,也可以采用其他排序方式来实现索引的预排序,从而进行上述各个桶的索引区间的分割。
在基于前述方法确定了每轮处理的索引范围后,可以在每轮处理中捞取落入对应索引范围的索引及关联的数据,执行融合处理。
如前面所提到的,多路待融合数据的索引在每路中是有序的,例如按照从小到大的顺序排列。因此,在每轮的取数过程中,可以逐路按序选取,从而选出所有落入对应索引范围内的索引。
具体地,在一些实施例中,从多路待融合数据的索引中逐路选取落入本轮处理所对应的索引范围内的索引及其对应的待融合数据,其中每路中取出的索引的数量不超过剩余可处理数量。此处,剩余可处理数量等于数据个数Nspacing与当前已选出的索引的数量之差。
例如在每轮处理中,存储核预留20(桶距)个数的空间。因此,可以针对每路索引捞取20个数,之后使用大小比较操作(例如,__bang_ge(大于)/__bang_le(小于)函数),选择落入0~13区间中的索引,结果存储到计算缓冲空间中。
在一些实现中,取数步骤可以如下:从第一路索引捞出20个数,发现2个数符合要求;接着从第二路索引捞出20-2=18个数,发现2个数符合要求;接着从第三路索引捞取20-2-2=16个数,以此类推。从上述步骤可以看出,由于每次捞出的索引个数逐渐减少,因此可以减少IO量。
此外,从前面针对稀疏型卷积运算的描述可以看出,MAC步骤的乘加结果可能是无效的,其对应的索引被设为固定值,例如-1。在这种情况下,当执行MERGE指令时,硬件在遇到索引为-1,可以不输出任何数据,从而避免无效处理。
在待融合数据的索引中存在无效索引(例如-1)时,当采用桶排序方式执行处理时,可以对桶距进行适当地调整。
如前所述,Nmax是根据存储核的可用空间大小和融合处理的相关参数计算出来的一个固定的数据,也即,一次最多能够处理的索引个数。如果索引中的无效索引(-1)很多,则桶距就会减小。这是因为无效索引的个数也会占用Nmax里的个数。为此,可以在对待融合数据的索引进行预先排序之后,将无效索引的个数统计出来,其可以记为Ninvaild,然后在存储核中预留相应的缓冲空间。这样,每次将待融合的索引取出并存储到存储核上时,存储核上始终要预留出Ninvaild个数的空间,以防止数据溢出。
从前面参考图8-图9的描述可以发现,只有输入数据的上下左右4个最外围的边框中的数据,会出现无效索引“-1”的情况。因此,即使输入数据再大,也只有上下左右4个最外围的边框中的数据会出现“-1”。由此可见,无效索引的数量会很少,预留小部分空间就足够。
在实际应用中,例如在雷达算法中,大部分情况下卷积运算需要四周补零(例如前面参考图10的描述),上下左右会至少补上一圈零(例如填补量=1或2)。在补完零之后,输入数据的上下左右4个最外围的边框都是0了,则索引出现“-1”的数就少很多。此外,雷达算法所处理的是点云数据,根据对真实数据的观察发现,点云数据越到四周,数据越稀疏,也即点云物体一般位于输入图像的中间。因此,在边框处出现无效索引的概率较低,为无效索引预留少量空间就足够。
因此,在一些实施例中,应用桶排序方式以在多核处理器架构上实现所有待融合数据的融合处理。在每轮处理中,从设备可以根据多路待融合数据的索引,从这些索引中选取落入当前轮次所对应索引范围内的输入索引,并将其加载到存储核的计算缓冲空间(也即前面分配的compute_buffer)中。这些索引继而可以通过广播总线以广播方式传输给参与运算的各个处理核。处理核可以针对计算缓冲空间中的索引以及这些索引对应的待融合数据执行MERGE指令所指示的融合处理。最后,将融合处理后的数据回存到指定位置,例如片外存储电路DDR。可以理解,由于各轮处理之间也是有序的,也即桶间是有序的,因此将各轮处理得到的融合处理后的数据按轮次顺序进行拼接,即可得到最终结果。
从设备中的处理核也配置有本地存储电路,为了进一步支持流水处理,在一些实施例中,本地存储电路可以配置至少两个存储区,用以支持在其中一个存储区与存储核或外部存储电路之间进行数据访存的同时,在另一存储区与处理核之间进行数据访存。
图15示出了根据本披露实施例的融合处理的示例性流水过程。图中示出了存储核划分为乒缓冲空间和乓缓冲空间,处理核的本地存储电路也划分为乒缓冲空间和乓缓冲空间,由此可以支持五级流水过程。图中的五级流水可以包括数据加载L、第一数据搬运MV1、计算C、第二数据搬运MV2和回存S。图中左侧列出了时间片,各步骤按时间顺序流动。
在时间片0,向存储核的乒缓冲空间加载(L1)索引(例如,Id1)。该索引例如可以来自计算装置的最后一级缓存LLC。
在时间片1,向存储核的乓缓冲空间加载(L2)索引(例如,Id2)。与此同时,存储核乒缓冲空间中的索引Id1可以经由广播总线传输(MV11)到处理核的乒缓冲空间。
在时间片2,向存储核的乒缓冲空间加载(L3)索引(例如,Id3)。与此同时,存储核乓缓冲空间中的索引Id2可以经由广播总线传输(MV12)到处理核的乓缓冲空间。同时,处理核对本地乒缓冲空间中的索引Id1进行融合处理,处理结果(例如,Out1)仍然保存在本地乒缓冲空间中。处理还可以包括加载索引Id1对应的待融合数据的数值,例如这可以从本地存储电路中加载预先存储的待融合数据的数值。在图中未对运算处理的步骤进行细分。
在时间片3,向存储核的乓缓冲空间加载(L4)索引(例如,Id4)。与此同时,处理核乒缓冲空间中的处理结果Out1可以搬运(MV21)到存储核乒缓冲空间,随后存储核乒缓冲空间的索引Id3可以广播传输(MV13)给处理核乒缓冲空间。而在处理核中,同时对本地乓缓冲空间中的索引Id2进行融合处理,处理结果(例如,Out2)保存在本地乓缓冲空间中。处理同样还包括加载索引Id2对应的待融合数据的数值等操作。
在时间片4,存储核乒缓冲空间中的处理结果Out1回存到外部存储电路,随后向存储核乒缓冲空间加载(L5)索引(例如,Id5)。与此同时,处理核乓缓冲空间中的处理结果Out2可以搬运(MV22)到存储核乓缓冲空间,随后存储核乓缓冲空间的索引Id4可以广播传输(MV14)给处理核乓缓冲空间。而在处理核中,同时对本地乒缓冲空间中的索引Id3进行融合处理,处理结果(例如,Out3)保存在本地乒缓冲空间中。
后续的时间片上可以依次循环上述流水处理,从而完成所有数据的处理。从时间片4之后可以看出,同一时间片内,可以同时进行五级流水中的五个操作,以及可以同时进行五轮处理中的不同操作步骤,从而缩短处理时间,提升处理效率。可以理解,上述图示仅是示例性描述,本披露实施例的数据级流水线可以根据不同情况配置不同规模的流水线,从而灵活地适应于不同场景。
上面结合具有多核处理器架构的计算装置描述了本披露实施例的数据融合处理的实现方案。上述计算装置也可以用于实现本披露另一方面提供的稀疏卷积运算方案。如前面所描述的,稀疏卷积运算可以包括三个步骤:MAC步骤,计算卷积核与稀疏输入数据的乘积结果;INDEX步骤,确定每个乘积结果的索引;以及MERGE步骤,将多路乘积结果按索引顺序归并为一路融合数据,作为稀疏卷积运算的结果。
在一些实现中,上述三个步骤可以分为不同的任务或算子来实现。
具体地,在一些实施例中,主设备可以配置用于在发射第二任务(索引预排序)之前,发射第三任务。该第三任务用于计算多路待融合数据中的数据元素的索引,也即第三任务用于执行上述INDEX步骤。在稀疏卷积运算中,上述索引是对稀疏化的输入数据和卷积核执行卷积运算处理期间生成的多路乘积结果所对应的索引。此时,从设备可以配置用于执行该第三任务,以及将计算得到的索引存储到指定位置。通常,索引的占用空间小于计算装置的最后一级缓存(LLC),因此优选地,将索引存储在LLC上,以便后续利用LLC与存储核之间的高带宽进行高速传输。
从前面关于INDEX步骤的描述可知,此第三任务是元素级别的计算,因此可以利用典型的加载-计算-回存(LCS)流水进行处理。为了减少数据传输时间,在一些实现中,可以将计算得到的索引存储在最后一级缓存LLC上,从而后续在进行融合处理时可以直接将索引从LLC加载到存储核上,以便广播给不同的处理核进行融合处理。
进一步地,在一些实施例中,主设备可以配置用于在发射第一任务(融合处理)之前,发射第四任务。该第四任务用于计算多路待融合数据中的数据元素的数值,也即第四任务用于执行上述MAC步骤。在稀疏卷积运算中,上述数值是对稀疏化的输入数据和卷积核执行卷积运算处理期间生成的多路乘积结果。此时,从设备可以配置用于执行该第四任务。由于最后一级缓存的空间有限,因此将计算得到的多路乘积结果存储在从设备的外部存储电路中,例如DRAM中。
从前面关于MAC步骤的描述可知,此第四任务是计算乘积结果,相当于点级别的卷积运算,同样可以利用LCS流水进行处理。
在上述实施例中,由于在稀疏卷积运算中,将MAC、INDEX和MERGE步骤拆分成不同的任务来执行,因此可以各自采用多级流水处理进行优化,相互之间不会存在流水过程上的中断和空间资源上的干扰。例如,在MAC和INDEX步骤中可以采用LCS三级流水进行处理,而MERGE步骤可以采用LMCMS五级流水进行处理。
本披露还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的计算装置。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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 (14)
1.一种计算装置,包括主设备和从设备,所述从设备包括多个处理核,其中:
所述主设备配置用于发射第一任务,所述第一任务用于执行融合处理,所述融合处理指示将多路待融合数据中的数据元素按照其对应的索引,归并为一路有序的融合后数据,其中具有相同索引的数据元素合并成一个融合数据元素,所述数据元素包括标量、向量或更高维数据中任一;以及
所述从设备配置用于根据所述第一任务的拆分策略,调度相应数量的所述处理核执行所述第一任务,其中每个处理核针对所述多路待融合数据中的一部分执行所述融合处理。
2.根据权利要求1所述的计算装置,其中所述主设备进一步配置用于确定所述第一任务的拆分策略,所述拆分策略包括:完成所述第一任务所需处理核的核次数,以及每一核次对应要处理的待融合数据的索引范围,其中所述索引范围之间是有序的。
3.根据权利要求2所述的计算装置,其中所述主设备进一步配置用于:
根据所述从设备的存储容量和所述融合处理的参数配置,确定单个处理核一次能够处理的数据个数Nspacing;以及
根据所述数据个数Nspacing和所述多路待融合数据的总数据个数,确定所述核次数。
4.根据权利要求3所述的计算装置,其中所述主设备进一步配置用于:
在发射所述第一任务之前,发射第二任务,所述第二任务用于对所述多路待融合数据中的数据元素的索引进行预排序;以及
基于所述预排序后的索引,按照所述数据个数Nspacing进行顺序分割,以确定每一核次对应要处理的待融合数据的索引范围。
5.根据权利要求2-4任一所述的计算装置,其中所述从设备进一步配置用于:根据所述第一任务的拆分策略,调度L轮、每轮Ncore个处理核来执行所述第一任务,其中在同一轮处理中,每个处理核对不同输出通道维度上的待融合数据执行所述融合处理。
6.根据权利要求5所述的计算装置,其中所述从设备还包括由所述多个处理核共享的存储核,并且所述从设备进一步配置用于:
从所述计算装置的最后一级缓存(LLC)向所述存储核加载落入当前轮次处理所对应的索引范围内的所述索引;以及
将所述索引通过广播方式传输给所调度的多个处理核。
7.根据权利要求6所述的计算装置,其中每个所述处理核配置用于:
加载本处理核对应输出通道维度上的、与所述广播方式传输的所述索引对应的待融合数据的数值;
针对加载的所述待融合数据的数值以及所述索引,执行所述融合处理;以及
将融合处理后的数据回存到外部存储电路。
8.根据权利要求6-7任一所述的计算装置,其中所述存储核配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与所述处理核之间进行数据访存。
9.根据权利要求8所述的计算装置,其中每个所述处理核配置有本地存储电路,所述本地存储电路配置有至少两个存储区,用以支持在其中一个存储区与所述存储核或外部存储电路之间进行数据访存的同时,在另一存储区与所述处理核之间进行数据访存。
10.根据权利要求4-9任一所述的计算装置,其中:
所述主设备进一步配置用于:在发射所述第二任务之前,发射第三任务,所述第三任务用于计算所述多路待融合数据中的数据元素的索引,其中所述索引是对稀疏化的输入数据和卷积核执行卷积运算处理期间生成的多路乘积结果所对应的索引;并且
所述从设备进一步配置用于:执行所述第三任务,以及将计算得到的索引存储在所述计算装置的最后一级缓存(LLC)上。
11.根据权利要求1-10任一所述的计算装置,其中:
所述主设备进一步配置用于:在发射所述第一任务之前,发射第四任务,所述第四任务用于计算所述多路待融合数据中的数据元素的数值,其中所述数值是对稀疏化的输入数据和卷积核执行卷积运算处理期间生成的多路乘积结果;并且
所述从设备进一步配置用于:执行所述第四任务,以及将计算得到的多路乘积结果存储在所述从设备的外部存储电路中。
12.一种芯片,包括根据权利要求1-11任一所述的计算装置。
13.一种板卡,包括根据权利要求12所述的芯片。
14.一种使用权利要求1-11任一所述的计算装置来处理数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480510.3A CN115221103A (zh) | 2021-04-30 | 2021-04-30 | 计算装置、数据处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480510.3A CN115221103A (zh) | 2021-04-30 | 2021-04-30 | 计算装置、数据处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221103A true CN115221103A (zh) | 2022-10-21 |
Family
ID=83606401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110480510.3A Pending CN115221103A (zh) | 2021-04-30 | 2021-04-30 | 计算装置、数据处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221103A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115759232A (zh) * | 2022-11-23 | 2023-03-07 | 北京百度网讯科技有限公司 | 深度学习框架的多任务并行处理方法、装置、设备和介质 |
-
2021
- 2021-04-30 CN CN202110480510.3A patent/CN115221103A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115759232A (zh) * | 2022-11-23 | 2023-03-07 | 北京百度网讯科技有限公司 | 深度学习框架的多任务并行处理方法、装置、设备和介质 |
CN115759232B (zh) * | 2022-11-23 | 2023-08-22 | 北京百度网讯科技有限公司 | 深度学习框架的多任务并行处理方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN112799598B (zh) | 一种数据处理方法、处理器及电子设备 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN110163334A (zh) | 集成电路芯片装置及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
WO2023123919A1 (zh) | 数据处理电路、数据处理方法及相关产品 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN112633490A (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN115221103A (zh) | 计算装置、数据处理方法及相关产品 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN115221107A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
WO2022135600A1 (zh) | 计算神经网络的装置、板卡、方法及可读存储介质 | |
CN115221106A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN115470176B (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
WO2022063217A1 (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2023045638A1 (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN114692841A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113850376A (zh) | 执行神经网络模型的计算装置、方法及相关产品 | |
CN114358262A (zh) | 根据特征图融合网络的装置、板卡、方法及可读存储介质 | |
CN114330676A (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 |