CN114692838A - 数据处理装置、数据处理方法及相关产品 - Google Patents
数据处理装置、数据处理方法及相关产品 Download PDFInfo
- Publication number
- CN114692838A CN114692838A CN202011563211.8A CN202011563211A CN114692838A CN 114692838 A CN114692838 A CN 114692838A CN 202011563211 A CN202011563211 A CN 202011563211A CN 114692838 A CN114692838 A CN 114692838A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- elements
- fused
- address
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 141
- 238000003672 processing method Methods 0.000 title claims abstract description 53
- 230000004927 fusion Effects 0.000 claims abstract description 99
- 238000003860 storage Methods 0.000 claims abstract description 60
- 239000000872 buffer Substances 0.000 claims description 89
- 238000013500 data storage Methods 0.000 claims description 56
- 238000009825 accumulation Methods 0.000 claims description 41
- 238000000034 method Methods 0.000 claims description 22
- 238000003780 insertion Methods 0.000 claims description 18
- 230000037431 insertion Effects 0.000 claims description 18
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000012805 post-processing Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 239000013598 vector Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 238000013135 deep learning Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000007499 fusion processing Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本披露公开了一种数据处理装置、数据处理方法及相关产品。该数据处理装置可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了数据融合相关操作的专用指令,其可以简化处理,提高机器的处理效率。
Description
技术领域
本披露一般地涉及处理器领域。更具体地,本披露涉及数据处理装置、数据处理方法、芯片和板卡。
背景技术
近年来,随着深度学习的迅猛发展,使得计算机视觉、自然语言处理等一系列领域的算法性能都有了跨越式的进展。然而深度学习算法是一种计算密集型和存储密集型的工具,随着信息处理任务的日趋复杂,对算法实时性和准确性要求不断增高,神经网络往往会被设计得越来越深,使得其计算量和存储空间需求越来越大,导致现存的基于深度学习的人工智能技术难以直接应用在硬件资源受限的手机、卫星或嵌入式设备上。
因此,深度神经网络模型的压缩、加速、优化变得格外重要。大量的研究试着在不影响模型精度的前提下,减少神经网络的计算和存储需求,对深度学习技术在嵌入端、移动端的工程化应用具有十分重要的意义。稀疏化正是模型轻量化方法之一。
网络参数稀疏化是通过适当的方法减少较大网络中的冗余成分,以降低网络对计算量和存储空间的需求。现有的硬件和/或指令集不能有效地支持稀疏化处理和/或稀疏化后相关的处理。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种数据处理装置、数据处理方法、芯片和板卡。
在第一方面中,本披露公开一种数据处理装置,包括:控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;存储电路,其配置用于存储处理前和/或处理后的信息;以及运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素,以及有序输出所述融合数据。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的数据处理装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种数据处理方法,该方法包括:解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素;以及有序输出所述融合数据。
通过如上所提供的数据处理装置、数据处理方法、芯片和板卡,本披露实施例提供了一种融合指令,用于执行与多路数据的归并排序累加相关的操作。在一些实施例中,融合指令是硬件指令,通过专门的硬件电路来实现数据融合处理。在一些实施例中,融合指令中可以包括操作模式位来指示融合指令为归并排序累加处理,或者,融合指令本身可以指示归并排序累加处理操作。通过提供专门的融合指令来执行与多路数据的融合处理相关的操作,可以简化处理。进一步地,通过提供专门的数据融合相关操作的硬件实现,可以加速处理,由此提高机器的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本披露实施例的板卡的结构图;
图2是示出本披露实施例的组合处理装置的结构图;
图3是示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4是示出根据本披露实施例的数据融合处理的示例性原理图;
图5是示出本披露实施例的数据处理装置的结构示意图;
图6是示出本披露一个实施例的用于数据融合处理的示例性电路图;
图7示例性示出融合指令中的各个地址的指向内容;
图8示出根据本披露实施例的数据存储空间的示意图;
图9示出根据本披露实施例的数据分块在数据存储空间中的示意图;
图10示出根据本披露另一实施例的数据处理装置的结构框图;以及
图11示出根据本披露实施例的数据处理方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图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示出根据本披露实施例的数据融合处理的示例性原理。图中示例性示出了4路待融合的数据,每路数据包括6个数据元素。数据元素可以是标量、向量或更高维度的张量,图中示例性示出为标量数值。每个数据元素具有关联的索引,用于指示该数据元素在对应的一路数据中的位置信息。例如,原始的一路数据可能包括1000个数据元素,但是仅部分位置上的数据元素是有效的,此时,可以将这些有效元素提取出来形成上述待融合数据,同时提取这些有效元素对应的索引以指示其在原始数据中的位置,这些索引形成上述待融合索引。
图中示意性示出了对应的4路待融合的索引,每路索引对应一路待融合的数据。第1路索引用于标识第1路数据中各数据元素的位置信息,第2路索引用于标识第2路数据中各数据元素的位置信息,以此类推。进一步地,每路索引中的索引元素均有序存储,并与对应的一路数据中的数据元素一一对应。在图中示例中,各路索引中的索引元素均按照第一顺序(例如,从小到大的顺序)排列,每路数据中的数据元素也按照对应索引的顺序有序排列。例如,第1路索引中的第1个索引元素指示第1路数据中的第1个数据元素的索引为0,也即首个元素;第1路索引中的第2个索引元素指示第1路数据中的第2个数据元素的索引为2,也即第3个元素;以此类推。
经过数据融合后,这4路数据按照其对应的索引,归并为一路有序的融合数据,并且具有相同索引的数据元素合并成一个融合数据元素。如图所示,融合后的索引包括16个索引元素,按照第二顺序(例如,从小到大的顺序)排列,其中去除了待融合索引中重复的索引元素,如图中深色方块所示。相应地,融合后的数据也包括16个数据元素,按照对应索引的顺序有序排列,并且具有相同索引的数据元素合并成一个融合数据元素,如图中深色方块所示。在此示例中,通过累加方式,将相同索引的数据元素合并成一个融合数据元素。例如,对于融合后索引元素“0”,其对应的融合数据元素为“25”,也即各路数据的首个数据元素之和(2+1+10+12=25)。又例如,对于融合后索引元素“9”,其对应的融合数据元素为“7”,是第1路第5个数据元素与第4路第3个数据元素之和(1+6=7)。
本领域技术人员可以理解,上面提到的第一顺序与第二顺序可以相同,也可以不同,并且二者都可以选自以下任一:从小到大的顺序,或从大到小的顺序。本领域技术人员还可以理解,尽管在图中示出各路数据具有相等的数据元素个数,但是各路数据中的数据元素个数可以相同,也可以不同,本披露在此方面没有限制。
在本披露的一些实施例中,数据元素是标量,因此,包括若干数据元素的一路数据可以称为一个数据向量,向量长度等于所包含的数据元素的个数。
图5示出根据本披露实施例的数据处理电路500的结构框图。数据处理电路500例如可以实现在图2的计算装置201中。如图所示,数据处理电路500可以包括控制电路510、存储电路520和运算电路530。
控制电路510的功能可以类似于图3的控制模块31,其例如可以包括取指单元,用以获取来自例如图2的处理装置203的指令,以及指令译码单元,用于将获取的指令进行译码,并将译码结果作为控制信息发送给运算电路530和存储电路520。
在一个实施例中,控制电路510可以配置用于解析融合指令,其中融合指令指示对多路待融合的数据执行归并排序累加处理。
存储电路520可以配置用于存储各种信息,这些信息至少包括归并排序累加处理前和/或归并排序累加处理后的信息。存储电路例如可以是图3的WRAM 332。
运算电路530可以配置用于根据融合指令执行相应的操作。具体地,运算电路530可以将多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,其中融合数据中具有相同索引的数据元素合并为一个融合数据元素。
在一个实施例中,运算电路530还可以包括运算处理电路(未示出),其可以配置成根据运算指令对运算电路执行运算前的数据进行预处理或者对运算后的数据进行后处理。在一些应用场景中,前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。
可以采取多种方式来实施运算电路。图6示出根据本披露一个实施例的用于数据融合处理的示例性电路图。
如图所示,在一个实施例中,存储电路可以示例性划分为两部分:第一存储电路622和第二存储电路624。
第一存储电路622可以配置用于存储待融合的K路数据和这K路数据对应的K路索引,K>1。这K路索引中的索引元素指示K路数据中对应的数据元素的索引信息,也即索引元素与数据元素具有一一对应的关系。此外,这K路索引中每路索引的索引元素均按第一顺序有序排列,并且K路数据中每路数据的数据元素按照对应索引的顺序有序排列。图中示例性示出了图4所示的4路索引以及对应的4路数据,图中各个数据元素用符号D来标识,未示出具体数值。在一些实施例中,每路索引可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路索引的起始地址或向量的起始地址来访问该路索引/索引向量。对应地,每路数据也可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路数据的起始地址或向量的起始地址来访问该路数据/数据向量。
第二存储电路624可以配置用于存储运算电路输出的融合数据和融合数据对应的融合索引,其中融合索引中的融合索引元素按第二顺序有序排列,并且融合数据中的融合数据元素按照融合索引的顺序有序排列。从图中示例可以看出,待融合的4路数据变成了一路融合数据,相应的4路索引也变成了一路融合索引,其中融合索引元素按照从小到大的顺序排列,大小相同的索引元素被去除。与之对应的融合数据元素按照融合索引的顺序排列,并且具有相同索引的数据元素进行累加,作为融合数据元素。
在一些实施例中,运算电路可以包括排序电路632和累加电路636,以协同实现排序累加功能。具体地,排序电路632用于将K路索引按照索引元素的大小排序,并有序输出给累加电路636。累加电路636则在从排序电路接收到相同的索引元素时,将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
在一些实施例中,排序电路632可以包括比较电路631和缓冲电路633。比较电路631实现比较功能,其对多路待融合的索引中的索引元素的大小进行比较,并提交比较结果给控制电路610以供排序。控制电路610根据比较结果确定索引元素在缓冲电路633中的插入位置。缓冲电路633用于缓存已比较的索引元素以及与其对应的数据元素的信息,并按索引元素的大小顺序缓存。
具体地,比较电路631可以配置用于将待融合索引中的索引元素与缓冲电路633中未输出的索引元素进行比较,并输出比较结果给控制电路610。而缓冲电路633可以配置用于根据控制电路610的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
在一些实施例中,缓冲电路633可以配置成缓存K个索引元素,这K个索引元素按照大小排序。本领域技术人员可以理解,缓冲电路也可以配置成缓存更多的索引元素,本披露实施例在此方面没有限制。取决于缓冲电路633中的排序方式以及期望输出的排序方式,诸如从小到大,或从大到小,每次可以按照指定顺序输出当前序列中的首个索引元素或末个索引元素。例如,在图中的示例中,缓冲电路633从左到右按照从大到小的顺序缓存索引元素,每次输出最右边的一个索引元素,也即当前序列中最小的索引元素,例如“7”。
在这些实施例中,比较电路631可以包括K-1路比较器,配置用于将待融合的索引元素分别与缓冲电路633中未输出的索引元素进行比较,也即与当前序列输出首个或末个索引元素后剩余的K-1个索引元素进行比较,生成比较结果并输出给控制电路610。
例如,对于待融合的4路数据,图中示出了3路比较器,其将从第一存储电路622接收的指定索引元素(此时为9)与缓冲电路633中当前未输出的3个索引元素进行比较,图中为左边的三个索引元素100、10和9。
在一些实施例中,比较器的比较结果可以使用位图来表示。例如,如果待融合的索引元素(例如,9)大于等于缓冲电路中的索引元素,则比较器可以输出“1”,否则,输出“0”;反过来也可以。在图中的示例中,待融合的索引元素(9)与缓冲电路中的各个索引元素(100、10和9)的比较结果为“001”,输出给控制电路610。
控制电路610可以配置用于根据接收的比较结果,确定该待融合的索引元素在缓冲电路633的当前序列中的插入位置。具体地,控制电路610可以进一步配置用于根据位图中比特位的变化位置,确定插入位置。在图中的示例中,比较结果为“001”,说明当前待融合的索引元素小于缓冲电路中左起第1个和第2个索引元素,大于等于左起第3个索引元素,则插入位置在第2个索引元素与第3个索引元素之间,也即在“10”和“9”之间。
在一些实施例中,缓冲电路633可以配置用于根据控制电路610的指示,在插入位置中插入该待融合的索引元素。在图中示例中,缓冲电路633中插入该索引元素之后的序列变为“100,10,9,9”。
为了使得在归并排序累加处理中能够获取到索引对应的数据,在一些实施例中,缓冲电路633可以进一步配置用于:按索引元素的值顺序,有序存储已比较的索引元素以及与其对应的数据元素。如图所示,缓冲电路633除了缓存索引元素,还缓存与其对应的数据元素的信息。因此,每次对索引元素进行比较确定插入位置之后,可以将与该索引元素对应的数据元素信息也一并插入到缓存电路中。本领域技术人员可以理解,数据元素的信息可以是数据元素本身,例如图中示例性示出的D32、D23等等;数据元素的信息也可以是指向该数据元素的地址,本披露实施例在此方面没有限制。
接着,缓冲电路633可以输出最右端的索引元素“9”。此时,控制电路610可以进一步配置用于根据缓冲电路中输出的索引元素,确定待融合的下一索引元素的访存信息。具体地,控制电路根据输出的索引元素在K路索引中属于哪一路索引,从该路索引中取出下一待融合的索引元素,送到比较电路631进行比较。
进一步地,在有序输出时,缓冲电路633可以配置成按索引元素的值顺序(例如,从小到大),有序输出已比较的索引元素作为融合索引,并同步输出与其对应的数据元素作为融合数据。输出的数据提供给累加电路636做进一步处理。
为了清楚起见,图中还示出了缓冲电路633中随排序进度缓存过的索引序列。如图所示,初始地,K路索引中各路的首个索引元素按照从大到小的顺序存储在缓冲电路633中。在一些实现中,这4个索引元素可以一次性取出、排序并存储在缓冲电路中。在另一些实现中,可以将缓冲电路中的数据初始化为负数,按顺序(例如,按照从第1路到第4路的顺序)逐个取出各路索引的首个索引元素,与缓冲电路中的数据进行比较,并放入合适位置。在此示例中,4路索引的首个索引元素都是0,因此可以根据取数的顺序,按照各路索引的序号排列,例如第1路的“0”放置在最右边,第2路的“0”放置在右边第2位置,以此类推。
接着,缓冲电路中最右边的属于第1路的“0”被输出。根据这个输出的索引元素属于哪一路索引,从对应的该路索引中取出下一待融合的索引元素,也即第1路第2个索引元素“2”。“2”被送入比较电路与缓冲电路中剩余的三个“0”进行比较,比较结果为“111”,也即比缓冲电路中现有的三个数“0”都大,因此“2”被插入在序列最尾端,此时缓冲电路中的序列变为“2,0,0,0”。
接着,缓冲电路中最右边的属于第2路的“0”被输出,因此取出第2路第2个元素“3”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“3”被插入在序列最尾端,此时缓冲电路中的序列变为“3,2,0,0”。
接着,缓冲电路中最右边的属于第3路的“0”被输出,因此取出第3路第2个元素“100”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“100”被插入在序列最尾端,此时缓冲电路中的序列变为“100,3,2,0”。
接着,输出缓冲电路最右边的属于第4路的“0”,取出第4路第2个元素“2”与缓冲电路中剩余的“100,3,2”进行比较,比较结果为“001”,因此“2”被插入在序列最右边第1个元素之后,此时缓冲电路中的序列变为“100,3,2,2”。
依次类推,可以逐个将K路索引中的索引元素进行比较,并根据大小排序插入到缓冲电路中的合适位置,再由缓冲电路输出。例如,缓冲电路每次输出的最小索引元素可以按顺序输出给累加电路636。本领域技术人员可以理解,如果缓冲电路的空间足够,也可以在排序完成之后再统一输出归并排序后的元素。
从输出的归并排序后的索引元素可以看出,当存在大小相同的索引元素时,排序电路632仍然保留这些大小相同的索引元素,不会进行去重操作,而是提供给累加电路636进行处理。
在一些实施例中,累加电路636可以包括比较器637、缓冲器635和加法器639。
比较器637可以配置用于将从排序电路632有序输出的索引元素与上一个融合索引元素进行比较并输出比较结果。比较结果可以是“1”指示相同,“0”指示不相同;反之亦然。
缓冲器635可以配置用于根据比较器637的比较结果来控制输出索引元素。在一些实施例中,缓冲器635可以仅当比较结果指示不相同时,输出当前索引元素作为新的融合索引元素。换言之,当比较结果指示相同时,缓冲器635不输出当前索引元素,也即丢弃与上一个融合索引元素重复的索引元素。如图所示,第二存储电路624中的融合索引不存在重复的融合索引元素。
加法器639可以配置用于根据比较器637的比较结果,来控制数据元素的累加。具体地,当比较结果指示不相同时,直接输出与当前索引元素对应的数据元素作为新的融合数据元素;当比较结果指示相同时,将当前索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
通过在每次接收到排序电路632的输出时,将当前索引元素与上一个融合索引元素进行比较,可以针对相同的索引元素进行区别处理,从而实现索引去重和数据累加功能。
本领域技术人员可以理解,还可以设计其他形式的硬件电路来实现上述归并排序累加处理,本披露在此方面没有限制。
在本披露实施例中,可以通过调用融合指令来利用上述示例性硬件电路实施数据的归并排序累加处理。此时,融合指令的操作对象包括输入的待融合的K路数据、K路数据对应的K路索引、K路数据的尺寸、以及输出的一路融合数据和一路融合索引,K>1。在这些对象中,K路索引中的索引元素指示K路数据中对应的数据元素的索引信息;K路索引中每路索引的索引元素均按第一顺序有序排列;K路数据中每路数据的数据元素按照对应索引的顺序有序排列;输出的一路融合索引中的融合索引元素按第二顺序有序排列;并且一路融合数据中的融合数据元素按照融合索引的顺序有序排列。在一些实施例中,融合指令的操作对象还可以包括输出的融合数据元素总个数,用于指示输出的一路融合数据中的数据元素个数。
如前面所提到的,第一顺序与第二顺序可以相同也可以不同,并且第一顺序和第二顺序可以选自以下任一:从小到大的顺序,或从大到小的顺序。
在一些实施例中,融合指令的至少一个操作对象可以使用地址来表征。
图7示例性示出了融合指令中的各个地址的指向内容。
例如,输入的K路数据可以通过第一地址来指示,第一地址包括K个元素,其中第i个元素表示第i路数据的地址,其中0<i≤K。
在一些实施例中,第一地址可以标记为data_addr。该地址中元素个数为K个,即表示K路数据的融合操作。data_addr是一个二级指针,其中K个元素表示待融合的K路数据(例如,向量)的起始地址。
输入的K路索引可以通过第二地址来指示,第二地址包括K个元素,其中第i个元素表示第i路数据关联的第i路索引的地址,其中0<i≤K。
如前面所提到的,待融合的K路数据可以具有一一对应的K路索引,因此第二地址可以标记为index_addr。该地址中元素个数为K个,即表示基于该K路索引进行融合。同样地,index_addr是一个二级指针,其中K个元素表示待融合的K路索引(例如,向量)的起始地址。
输入的K路数据的尺寸可以通过第三地址指示。第三地址是一个一级指针,可以标记为size_addr,其同样包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。由于K路数据与K路索引具有一一对应关系,因此,size_addr中的第i个元素也表示第i路索引中的索引元素个数。
在一些实施例中,输入的K路索引中的索引元素按照例如从小到大的顺序有序排列,最后输出的一路融合索引元素也可以按照从小到大有序排列。在本披露的归并排序累加处理中,当有重复的索引时,会对索引去重,并且将对应的数据元素累加,作为一个融合数据元素。
输出的一路融合数据可以存放在第四地址中,也即在融合指令中通过第四地址来指示。第四地址可以标记为out_data_addr,也即输出的一路融合数据的地址。第四地址是一个一级指针,其包括L个元素,其中第j个元素表示这一路融合数据中的第j个融合数据元素,L表示融合的数据元素总个数,L>1,0<j≤L。
输出的一路融合索引可以存放在第五地址中,也即在融合指令中通过第五地址来指示。第五地址可以标记为out_index_addr,也即输出的一路融合索引的地址。类似于第四地址,第五地址也是一个一级指针,其包括L个元素,其中第j个元素表示这一路融合索引中的第j个融合索引元素,L表示融合的索引元素总个数,L>1,0<j≤L。
输出的融合数据与输出的融合索引也具有一一对应的关系。
可选地或附加地,在一些实施例中,融合指令的操作对象还可以包括输出的融合数据元素总个数。例如在融合处理结束后,会返回输出的融合数据元素的总个数,用于指示输出的这一路融合数据中的数据元素个数。该数据例如可以写回到参数gpr_id0中。
随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,仅仅使用标量或向量操作无法使硬件高效地完成运算任务。因此,在本披露的一些实施例中,还提供了涉及张量数据的融合指令。该融合指令的至少一个操作对象包括张量数据,该张量数据通过至少一个描述符来指示。具体地,描述符可以指示以下至少一项信息:张量数据的形状信息、张量数据的空间信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。张量数据的空间信息可以用于确定指令之间的依赖关系,进而可以确定例如指令的执行顺序。
在一种可能的实现中,张量数据的空间信息可以通过空间标识(ID)来指示。空间ID也可以称为空间别名,其指代用于存储对应的张量数据的一个空间区域,该空间区域可以是一段连续的空间,也可以是多段空间,本披露对于空间区域的具体组成形式没有限制。不同的空间ID表示所指向的空间区域不存在依赖关系。
下面将结合附图详细描述张量数据的形状信息的各种可能实现方式。
张量可以包含多种形式的数据组成方式。张量可以是不同维度的,比如标量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。举例而言,对于三维张量:
x3=[[[1,2,3],[4,5,6]];[[7,8,9],[10,11,12]]]
该张量的形状或维度可以表示为X3=(2,2,3),也即通过三个参数表示该张量为三维张量,且该张量的第一维度的尺寸为2、第二维度的尺寸为2、而第三维度的尺寸为3。在存储器中存储张量数据时,根据其数据地址(或存储区域)无法确定张量数据的形状,进而也无法确定多个张量数据之间相互关系等相关信息,导致处理器对张量数据的存取效率较低。
在一种可能的实现方式中,可以用描述符指示N维的张量数据的形状,N为正整数,例如N=1、2或3,或者为零。上面示例中的三维张量用描述符可以表示为(2,2,3)。需要说明的是,本披露对于描述符指示张量形状的方式没有限制。
在一种可能的实现方式中,N的取值可以根据张量数据的维数(也称为阶数)来确定,也可以根据张量数据的使用需要进行设定。例如,在N的取值为3时,张量数据为三维的张量数据,描述符可用来指示该三维的张量数据在三个维度方向上的形状(例如偏移量、尺寸等)。应当理解,本领域技术人员可以根据实际需要对N的取值进行设置,本披露对此不作限制。
虽然张量数据可以是多维的,但是因为存储器的布局始终是一维的,因此张量与存储器上的存储之间存在对应关系。张量数据通常被分配在连续的存储空间中,也即可以将张量数据进行一维展开(例如,行优先方式),存储在存储器上。
张量与底层存储之间的这种关系可以通过维度的偏移量(offset)、维度的尺寸(size)、维度的步长(stride)等来表示。维度的偏移量是指在该维度上相对参考位置的偏移。维度的尺寸是指该维度的大小,也即该维度上元素的个数。维度的步长指的是在该维度下,相邻元素之间的间隔,例如上面三维张量的步长为(6,3,1),也即第一维的步长是6,第二维的步长是3,第三维的步长是1。
图8示出根据本披露实施例的数据存储空间的示意图。如图8所示,数据存储空间81采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间81的起始地址PA_start(基准地址)为第一个数据块82的物理地址。数据块83是数据存储空间81中的部分数据,其在X轴方向上的偏移量85表示为offset_x,在Y轴方向上的偏移量84表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块83时,描述符的数据基准点可以使用数据存储空间81的第一个数据块,可以约定描述符的基准地址为数据存储空间81的起始地址PA_start。然后可以结合数据存储空间81在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块83在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块83的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置,确定张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间81中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图8中数据块83的描述符的内容。首先,确定数据块83的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块83的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
其中PA_start为基准地址参数,不再赘述。
应当理解,本领域技术人员可以根据实际情况对数据描述位置与数据地址之间的映射关系进行设定,本披露对此不作限制。
在一种可能的实现方式中,可以在一个任务中设定约定的基准地址,此任务下指令中的描述符均使用此基准地址,描述符内容中可以包括基于此基准地址的形状参数。可以通过设定此任务的环境参数的方式确定此基准地址。基准地址的相关描述和使用方式可参见上述实施例。此种实现方式下,描述符的内容可以更快速地被映射为数据地址。
在一种可能的实现方式中,可以在各描述符的内容中包含基准地址,则各描述符的基准地址可不同。相对于利用环境参数设定共同的基准地址的方式,此种方式中的各描述符可以更加灵活地描述数据,并使用更大的数据地址空间。
在一种可能的实现方式中,可根据描述符的内容,确定与处理指令的操作数对应的数据在数据存储空间中的数据地址。其中,数据地址的计算由硬件自动完成,且描述符的内容的表示方式不同时,数据地址的计算方法也会不同。本披露对数据地址的具体计算方法不作限制。
例如,操作数中描述符的内容是使用公式(1)表示的,描述符所指示的张量数据在数据存储空间中的偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,那么,该描述符所指示的张量数据在数据存储空间中的起始数据地址PA1(x,y)可以使用下述公式(6)来确定:
PA1(x,y)=PA_start+(offset_y-1)*ori_x+offset_x (6)
根据上述公式(6)确定的数据起始地址PA1(x,y),结合偏移量offset_x和offset_y,以及存储区域的尺寸size_x和size_y,可确定出描述符所指示的张量数据在数据存储空间中的存储区域。
在一种可能的实现方式中,当操作数还包括针对描述符的数据描述位置时,可根据描述符的内容以及数据描述位置,确定操作数对应的数据在数据存储空间中的数据地址。通过这种方式,可以对描述符所指示的张量数据中的部分数据(例如一个或多个数据)进行处理。
例如,操作数中描述符的内容是使用公式(2)表示的,描述符所指示的张量数据在数据存储空间中偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,操作数中包括的针对描述符的数据描述位置为(xq,yq),那么,该描述符所指示的张量数据在数据存储空间中的数据地址PA2(x,y)可以使用下述公式(7)来确定:
PA2(x,y)=PA_start+(offset_y+yq-1)*ori_x+(offset_x+xq) (7)
在一种可能的实现方式中,描述符可以指示分块的数据。数据分块在很多应用中可以有效地加快运算速度,提高处理效率。例如,在图形处理中,卷积运算经常使用数据分块进行快速运算处理。
图9示出根据本披露实施例的数据分块在数据存储空间中的示意图。如图9所示,数据存储空间900同样采用行优先的方式存储二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出)。不同于图8的张量数据,图9中存储的张量数据包括多个数据分块。
在这种情况下,描述符需要更多的参数来表示这些数据分块。以X轴(X维度)为例,可以涉及如下参数:ori_x,x.tile.size(分块中的尺寸902),x.tile.stride(分块中的步长904,即第一个小块的第一个点与第二个小块的第一个点的距离),x.tile.num(分块数量,图中示出为3个分块),x.stride(整体的步长,即第一行的第一个点到第二行第一个点的距离)等。其他维度可以类似地包括对应的参数。
在一种可能的实现方式中,描述符可以包括描述符的标识和/或描述符的内容。其中,描述符的标识用于对描述符进行区分,例如描述符的标识可以为其编号;描述符的内容可以包括表示张量数据的形状的至少一个形状参数。例如,张量数据为3维数据,在该张量数据的三个维度中,其中两个维度的形状参数固定不变,其描述符的内容可包括表示该张量数据的另一个维度的形状参数。
在一种可能的实现方式中,描述符的标识和/或内容可以存储在描述符存储空间(内部存储器),例如寄存器、片上的SRAM或其他介质缓存等。描述符所指示的张量数据可以存储在数据存储空间(内部存储器或外部存储器),例如片上缓存或片下存储器等。本披露对描述符存储空间及数据存储空间的具体位置不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的同一块区域,例如,可使用片上缓存的一块连续区域来存储描述符的相关内容,其地址为ADDR0-ADDR1023。其中,可将地址ADDR0-ADDR63作为描述符存储空间,存储描述符的标识和内容,地址ADDR64-ADDR1023作为数据存储空间,存储描述符所指示的张量数据。在描述符存储空间中,可用地址ADDR0-ADDR31存储描述符的标识,地址ADDR32-ADDR63存储描述符的内容。应当理解,地址ADDR并不限于1位或一个字节,此处用来表示一个地址,是一个地址单位。本领域技术人员可以实际情况确定描述符存储空间、数据存储空间以及其具体地址,本披露对此不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的不同区域。例如,可以将寄存器作为描述符存储空间,在寄存器中存储描述符的标识及内容,将片上缓存作为数据存储空间,存储描述符所指示的张量数据。
在一种可能的实现方式中,在使用寄存器存储描述符的标识和内容时,可以使用寄存器的编号来表示描述符的标识。例如,寄存器的编号为0时,其存储的描述符的标识设置为0。当寄存器中的描述符有效时,可根据描述符所指示的张量数据的大小在缓存空间中分配一块区域用于存储该张量数据。
在一种可能的实现方式中,描述符的标识及内容可存储在内部存储器,描述符所指示的张量数据可存储在外部存储器。例如,可以采用在片上存储描述符的标识及内容、在片下存储描述符所指示的张量数据的方式。
在一种可能的实现方式中,与各描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符一一对应。在这种情况下,负责对计算指令进行解析的电路或模块(例如本披露计算装置外部的实体)可以根据描述符来确定与操作数对应的数据在数据存储空间中的数据地址。
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,描述符还可用于指示N维的张量数据的地址,其中,描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始物理地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本披露对此不作限制。
在一种可能的实现方式中,张量数据的地址参数可以包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本披露对数据基准点的选取不作限制。
在一种可能的实现方式中,基准地址可以包括数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的地址。
在一种可能的实现方式中,张量数据的形状参数包括以下至少一种:数据存储空间在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维空间坐标(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
图10示出根据本披露另一实施例的数据处理装置1000的结构框图。数据处理装置1000例如可以实现在图2的计算装置201中。图10的数据处理装置1000与图5的不同之处在,图10的数据处理装置1000还包括张量接口电路1012,用于实现与张量数据的描述符相关的功能。类似地,数据处理装置1000还可以包括控制电路1010、存储电路1020和运算电路1030,这些电路的具体功能和实现与图5的那些类似,因此此处不再复述。
张量接口电路(Tensor interface Unit,TIU)1012可以配置成在控制电路1010的控制下,实现与描述符相关联的操作。这些操作可以包括但不限于描述符的注册、修改、注销、解析;对描述符内容的读写等。本披露对张量接口单元的具体硬件类型不作限制。通过这种方式,可以通过专用的硬件实现与描述符相关联的操作,进一步提高张量数据的存取效率。
在一些实施例中,张量接口电路1012可以配置成对指令的操作数中包括的张量数据的形状信息进行解析,以确定与该操作数对应的数据在数据存储空间中的数据地址。
可选地或附加地,在又一些实施例中,张量接口电路1012可以配置成对两条指令的操作数中包括的张量数据的空间信息(例如,空间ID)进行比较,以判断这两条指令的依赖关系,进而确定指令的乱序执行、同步等操作。
尽管在图10中将控制电路1010和张量接口电路1012示出为两个分离的模块,但是本领域技术人员可以理解,这两个电路也可以实现为一个模块或更多模块,本披露在此方面没有限制。
与数据融合相关的操作可以存在多种,例如归并排序处理、排序累加处理等。可以设计多种指令方案来实现与数据融合相关的操作。
在一种方案中,可以设计一条融合指令,指令中可以包括操作模式位来指示融合指令的不同操作模式,从而执行不同的操作。
在另一种方案中,可以设计多条融合指令,每条指令对应一种或多种不同的操作模式,从而执行不同的操作。在一种实现中,可以针对每种操作模式设计一条对应的融合指令。在另一种实现中,可以根据操作模式的特性分类,针对每类操作模式设计一条融合指令。进一步地,当某一类操作模式中包括多个操作模式时,可以在融合指令中包括操作模式位来指示相应的操作模式。
无论采取哪种方案,融合指令可以通过操作模式位和/或指令本身来指示其对应的操作模式。
在本披露的上下文中,前述的融合指令可以是在一条或多条多级运算流水线内部运行的微指令或控制信号,其可以包括(或者说指示)一个或多个需多级运算流水线执行的运算操作。根据不同的运算操作场景,运算操作可以包括但不限于卷积操作、矩阵乘法操作等算术运算、与操作、异或操作、或操作等逻辑运算、移位操作,或者前述各类运算操作的任意多种组合。
图11示出了根据本披露实施例的数据处理方法1100的示例性流程图。
如图11所示,在步骤1110中,解析融合指令,该融合指令指示对多路待融合的数据进行归并排序累加处理。该步骤例如可以由图5的控制电路510或图10的控制电路1010来执行。接着,在步骤1120中,根据融合指令,将多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,其中融合数据中具有相同索引的数据元素合并为一个融合数据元素。最后,在步骤1130中,有序输出融合数据。步骤1120和1130例如可以由图5的运算电路530或图10的运算电路1030来执行。
本领域技术人员可以理解,上述方法的各个步骤分别对应于前面结合示例电路图描述的各个电路,因此前面描述的特征可以同样地适用于方法步骤,在此不再重复。
从上面描述可知,本披露实施例提供了一种融合指令,用于执行多路待融合数据的融合处理。在一些实施例中,融合指令是硬件指令,通过专门的硬件电路来实现数据融合处理。在一些实施例中,融合指令中可以包括操作模式位来指示融合指令为归并排序累加处理操作,或者,融合指令本身可以指示归并排序累加处理操作。通过提供专门的融合指令来执行与多路数据的融合处理相关的操作,可以简化处理。进一步地,通过提供专门的数据融合相关操作的硬件实现,可以加速处理,由此提高机器的处理效率。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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等。
依据以下条款可更好地理解前述内容:
条款1、一种数据处理装置,包括:
控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;
存储电路,其配置用于存储处理前和/或处理后的信息;以及
运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素,以及有序输出所述融合数据。
条款2、根据条款1所述的数据处理装置,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合数据和一路融合索引,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
输出的所述一路融合索引中的融合索引元素按第二顺序有序排列;并且
所述一路融合数据中的融合数据元素按照融合索引的顺序有序排列。
条款3、根据条款2所述的数据处理装置,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
条款4、根据条款2-3任一所述的数据处理装置,其中所述运算电路包括排序电路和累加电路,其中
所述排序电路配置用于将所述K路索引按照索引元素的大小排序并有序输出给所述累加电路;并且
所述累加电路配置用于当从所述排序电路接收到相同的索引元素时,将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
条款5、根据条款4所述的数据处理装置,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
条款6、根据条款5所述的数据处理装置,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
条款7、根据条款6所述的数据处理装置,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
条款8、根据条款7所述的数据处理装置,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
条款9、根据条款7-8任一所述的数据处理装置,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
条款10、根据条款5-9任一所述的数据处理装置,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
条款11、根据条款10所述的数据处理装置,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
条款12、根据条款4-11任一所述的数据处理装置,其中所述累加电路包括比较器、缓冲器和加法器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述加法器配置用于当所述比较结果指示不相同时,直接输出与所述索引元素对应的数据元素作为新的融合数据元素,以及当所述比较结果指示相同时,将所述索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
条款13、根据条款1-12任一所述的数据处理装置,其中所述多路待融合的数据中的数据元素是稀疏矩阵中的有效数据元素,并且所述索引指示所述有效数据元素在稀疏矩阵中的位置信息。
条款14、根据条款2-13任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的融合数据元素总个数,用于指示所述输出的一路融合数据中的数据元素总个数。
条款15、根据条款2-14任一所述的数据处理装置,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,其中0<i≤K。
条款16、根据条款2-15任一所述的数据处理装置,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
条款17、根据条款2-16任一所述的数据处理装置,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
条款18、根据条款2-17任一所述的数据处理装置,其中
所述输出的一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
条款19、根据条款2-18任一所述的数据处理装置,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
条款20、根据条款2-14任一所述的数据处理装置,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且
所述数据处理装置还包括张量接口电路,其配置用于对所述描述符进行解析,以供获取所述张量数据。
条款21、根据条款20所述的数据处理装置,其中所述张量接口电路进一步配置用于:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
条款22、根据条款20-21任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款23、根据条款20-21任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
条款24、根据条款1-23任一所述的数据处理装置,其中
所述融合指令中包括操作模式位来指示所述融合指令为归并排序累加处理操作,或者所述融合指令本身指示所述归并排序累加处理操作。
条款25、一种芯片,包括根据条款1-24任一所述的数据处理装置。
条款26、一种板卡,包括根据条款25所述的芯片。
条款27、一种数据处理方法,包括:
解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;
根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素;以及
有序输出所述融合数据。
条款28、根据条款27所述的数据处理方法,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合数据和一路融合索引,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
输出的所述一路融合索引中的融合索引元素按第二顺序有序排列;并且
所述一路融合数据中的融合数据元素按照融合索引的顺序有序排列。
条款29、根据条款28所述的数据处理方法,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
条款30、根据条款28-29任一所述的数据处理方法,进一步包括:
排序电路将所述K路索引按照索引元素的大小排序并有序输出给累加电路;以及
当从所述排序电路接收到相同的索引元素时,所述累加电路将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
条款31、根据条款30所述的数据处理方法,其中所述排序电路包括比较电路和缓冲电路,并且所述方法进一步包括:
所述比较电路将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;以及
所述缓冲电路根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
条款32、根据条款31所述的数据处理方法,其中所述比较电路包括K-1路比较器,并且所述方法包括:
所述K-1路比较器将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
条款33、根据条款32所述的数据处理方法,进一步包括:
所述控制电路根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
条款34、根据条款33所述的数据处理方法,其中所述比较结果使用位图来表示,并且所述方法进一步包括:所述控制电路根据所述位图中比特位的变化位置,确定所述插入位置。
条款35、根据条款33-34任一所述的数据处理方法,进一步包括:
所述缓冲电路根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
条款36、根据条款31-35任一所述的数据处理方法,进一步包括:
所述缓冲电路按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
条款37、根据条款36所述的数据处理方法,进一步包括:
所述控制电路根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
条款38、根据条款30-37任一所述的数据处理方法,其中所述累加电路包括比较器、缓冲器和加法器,并且所述方法包括:
所述比较器将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;以及
当所述比较结果指示不相同时,所述加法器配置用于直接输出与所述索引元素对应的数据元素作为新的融合数据元素,以及当所述比较结果指示相同时,将所述索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
条款39、根据条款27-38任一所述的数据处理方法,其中所述多路待融合的数据中的数据元素是稀疏矩阵中的有效数据元素,并且所述索引指示所述有效数据元素在稀疏矩阵中的位置信息。
条款40、根据条款28-39任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的融合数据元素总个数,用于指示所述输出的一路融合数据中的数据元素总个数。
条款41、根据条款28-40任一所述的数据处理方法,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,其中0<i≤K。
条款42、根据条款28-41任一所述的数据处理方法,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
条款43、根据条款28-42任一所述的数据处理方法,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
条款44、根据条款28-43任一所述的数据处理方法,其中
所述输出的一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
条款45、根据条款28-44任一所述的数据处理方法,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
条款46、根据条款28-45任一所述的数据处理方法,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
对所述描述符进行解析,以供获取所述张量数据。
条款47、根据条款46所述的数据处理方法,其中对所述描述符进行解析包括:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
条款48、根据条款46-47任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款49、根据条款46-47任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
条款50、根据条款27-49任一所述的数据处理方法,其中
所述融合指令中包括操作模式位来指示所述融合指令为归并排序累加处理操作,或者所述融合指令本身指示所述归并排序累加处理操作。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (50)
1.一种数据处理装置,包括:
控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;
存储电路,其配置用于存储处理前和/或处理后的信息;以及
运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素,以及有序输出所述融合数据。
2.根据权利要求1所述的数据处理装置,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合数据和一路融合索引,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
输出的所述一路融合索引中的融合索引元素按第二顺序有序排列;并且
所述一路融合数据中的融合数据元素按照融合索引的顺序有序排列。
3.根据权利要求2所述的数据处理装置,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
4.根据权利要求2-3任一所述的数据处理装置,其中所述运算电路包括排序电路和累加电路,其中
所述排序电路配置用于将所述K路索引按照索引元素的大小排序并有序输出给所述累加电路;并且
所述累加电路配置用于当从所述排序电路接收到相同的索引元素时,将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
5.根据权利要求4所述的数据处理装置,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
6.根据权利要求5所述的数据处理装置,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
7.根据权利要求6所述的数据处理装置,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
8.根据权利要求7所述的数据处理装置,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
9.根据权利要求7-8任一所述的数据处理装置,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
10.根据权利要求5-9任一所述的数据处理装置,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
11.根据权利要求10所述的数据处理装置,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
12.根据权利要求4-11任一所述的数据处理装置,其中所述累加电路包括比较器、缓冲器和加法器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述加法器配置用于当所述比较结果指示不相同时,直接输出与所述索引元素对应的数据元素作为新的融合数据元素,以及当所述比较结果指示相同时,将所述索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
13.根据权利要求1-12任一所述的数据处理装置,其中所述多路待融合的数据中的数据元素是稀疏矩阵中的有效数据元素,并且所述索引指示所述有效数据元素在稀疏矩阵中的位置信息。
14.根据权利要求2-13任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的融合数据元素总个数,用于指示所述输出的一路融合数据中的数据元素总个数。
15.根据权利要求2-14任一所述的数据处理装置,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,其中0<i≤K。
16.根据权利要求2-15任一所述的数据处理装置,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
17.根据权利要求2-16任一所述的数据处理装置,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
18.根据权利要求2-17任一所述的数据处理装置,其中
所述输出的一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
19.根据权利要求2-18任一所述的数据处理装置,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
20.根据权利要求2-14任一所述的数据处理装置,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且
所述数据处理装置还包括张量接口电路,其配置用于对所述描述符进行解析,以供获取所述张量数据。
21.根据权利要求20所述的数据处理装置,其中所述张量接口电路进一步配置用于:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
22.根据权利要求20-21任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
23.根据权利要求20-21任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
24.根据权利要求1-23任一所述的数据处理装置,其中
所述融合指令中包括操作模式位来指示所述融合指令为归并排序累加处理操作,或者所述融合指令本身指示所述归并排序累加处理操作。
25.一种芯片,包括根据权利要求1-24任一所述的数据处理装置。
26.一种板卡,包括根据权利要求25所述的芯片。
27.一种数据处理方法,包括:
解析融合指令,所述融合指令指示对多路待融合的数据进行归并排序累加处理;
根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合数据,所述融合数据中具有相同索引的数据元素合并为一个融合数据元素;以及
有序输出所述融合数据。
28.根据权利要求27所述的数据处理方法,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合数据和一路融合索引,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
输出的所述一路融合索引中的融合索引元素按第二顺序有序排列;并且
所述一路融合数据中的融合数据元素按照融合索引的顺序有序排列。
29.根据权利要求28所述的数据处理方法,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
30.根据权利要求28-29任一所述的数据处理方法,进一步包括:
排序电路将所述K路索引按照索引元素的大小排序并有序输出给累加电路;以及
当从所述排序电路接收到相同的索引元素时,所述累加电路将相同的索引元素对应的数据元素进行累加处理,并去除重复的索引元素。
31.根据权利要求30所述的数据处理方法,其中所述排序电路包括比较电路和缓冲电路,并且所述方法进一步包括:
所述比较电路将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给控制电路;以及
所述缓冲电路根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
32.根据权利要求31所述的数据处理方法,其中所述比较电路包括K-1路比较器,并且所述方法包括:
所述K-1路比较器将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
33.根据权利要求32所述的数据处理方法,进一步包括:
所述控制电路根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
34.根据权利要求33所述的数据处理方法,其中所述比较结果使用位图来表示,并且所述方法进一步包括:所述控制电路根据所述位图中比特位的变化位置,确定所述插入位置。
35.根据权利要求33-34任一所述的数据处理方法,进一步包括:
所述缓冲电路根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
36.根据权利要求31-35任一所述的数据处理方法,进一步包括:
所述缓冲电路按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
37.根据权利要求36所述的数据处理方法,进一步包括:
所述控制电路根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
38.根据权利要求30-37任一所述的数据处理方法,其中所述累加电路包括比较器、缓冲器和加法器,并且所述方法包括:
所述比较器将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;以及
当所述比较结果指示不相同时,所述加法器配置用于直接输出与所述索引元素对应的数据元素作为新的融合数据元素,以及当所述比较结果指示相同时,将所述索引元素对应的数据元素累加到上一个融合索引元素所对应的融合数据元素上。
39.根据权利要求27-38任一所述的数据处理方法,其中所述多路待融合的数据中的数据元素是稀疏矩阵中的有效数据元素,并且所述索引指示所述有效数据元素在稀疏矩阵中的位置信息。
40.根据权利要求28-39任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的融合数据元素总个数,用于指示所述输出的一路融合数据中的数据元素总个数。
41.根据权利要求28-40任一所述的数据处理方法,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,其中0<i≤K。
42.根据权利要求28-41任一所述的数据处理方法,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
43.根据权利要求28-42任一所述的数据处理方法,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
44.根据权利要求28-43任一所述的数据处理方法,其中
所述输出的一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
45.根据权利要求28-44任一所述的数据处理方法,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
46.根据权利要求28-45任一所述的数据处理方法,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
对所述描述符进行解析,以供获取所述张量数据。
47.根据权利要求46所述的数据处理方法,其中对所述描述符进行解析包括:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
48.根据权利要求46-47任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
49.根据权利要求46-47任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
50.根据权利要求27-49任一所述的数据处理方法,其中
所述融合指令中包括操作模式位来指示所述融合指令为归并排序累加处理操作,或者所述融合指令本身指示所述归并排序累加处理操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011563211.8A CN114692838A (zh) | 2020-12-25 | 2020-12-25 | 数据处理装置、数据处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011563211.8A CN114692838A (zh) | 2020-12-25 | 2020-12-25 | 数据处理装置、数据处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692838A true CN114692838A (zh) | 2022-07-01 |
Family
ID=82129779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011563211.8A Pending CN114692838A (zh) | 2020-12-25 | 2020-12-25 | 数据处理装置、数据处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692838A (zh) |
-
2020
- 2020-12-25 CN CN202011563211.8A patent/CN114692838A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109104876B (zh) | 一种运算装置及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
CN110163095B (zh) | 回环检测方法、回环检测装置及终端设备 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
WO2021118857A1 (en) | Hardware accelerator having reconfigurable instruction set | |
WO2022134873A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692838A (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2022001500A1 (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN115221104A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692840A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114692839A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN113867799A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN114692841A (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114691561A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN113469365B (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN114691559A (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN114691560A (zh) | 数据处理电路、数据处理方法及相关产品 | |
WO2022134688A1 (zh) | 数据处理电路、数据处理方法及相关产品 | |
WO2022257980A1 (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 |