WO2022134873A1 - 数据处理装置、数据处理方法及相关产品 - Google Patents

数据处理装置、数据处理方法及相关产品 Download PDF

Info

Publication number
WO2022134873A1
WO2022134873A1 PCT/CN2021/128189 CN2021128189W WO2022134873A1 WO 2022134873 A1 WO2022134873 A1 WO 2022134873A1 CN 2021128189 W CN2021128189 W CN 2021128189W WO 2022134873 A1 WO2022134873 A1 WO 2022134873A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
sparse
instruction
tensor
index
Prior art date
Application number
PCT/CN2021/128189
Other languages
English (en)
French (fr)
Inventor
高钰峰
刘少礼
Original Assignee
中科寒武纪科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN202011563257.XA external-priority patent/CN114692841A/zh
Priority claimed from CN202011566138.XA external-priority patent/CN114692845A/zh
Application filed by 中科寒武纪科技股份有限公司 filed Critical 中科寒武纪科技股份有限公司
Publication of WO2022134873A1 publication Critical patent/WO2022134873A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Definitions

  • the board 10 also includes a storage device 104 for storing data, which includes one or more storage units 105 .
  • the storage device 104 is connected to the control device 106 and the chip 101 through a bus and performs data transmission.
  • the control device 106 in the board 10 is configured to control the state of the chip 101 .
  • the control device 106 may include a microcontroller (Micro Controller Unit, MCU).
  • the control module 31 is used to coordinate and control the work of the operation module 32 and the storage module 33 to complete the task of deep learning, and it comprises an instruction fetch unit (instruction fetch unit, IFU) 311 and an instruction decoding unit (instruction decode unit, IDU) 312.
  • the instruction fetching unit 311 is used to acquire the instruction from the processing device 203 , and the instruction decoding unit 312 decodes the acquired instruction, and sends the decoding result to the operation module 32 and the storage module 33 as control information.
  • the operation module 32 includes a vector operation unit 321 and a matrix operation unit 322 .
  • the vector operation unit 321 is used to perform vector operations, and can support complex operations such as vector multiplication, addition, and nonlinear transformation;
  • the matrix operation unit 322 is responsible for the core calculation of the deep learning algorithm, that is, matrix multiplication and convolution.
  • the multi-core computing device 41 includes an external storage controller 401 , a peripheral communication module 402 , an on-chip interconnect module 403 , a synchronization module 404 and multiple clusters 405 .
  • the plurality of clusters 405 are the computing cores of the multi-core computing device 41, and 4 are exemplarily shown in the figure. With the development of hardware, the multi-core computing device 41 of the present disclosure may also include 8, 16, 64, or even more. Multiple clusters 405. Cluster 405 is used to efficiently execute deep learning algorithms.
  • each cluster 405 includes multiple processor cores (IPU cores) 406 and one memory core (MEM core) 407 .
  • IPU cores processor cores
  • MEM core memory core
  • the storage core 407 is mainly used for storage and communication, that is, to store the shared data or intermediate results between the processor cores 406, and to execute the communication between the cluster 405 and the DRAM 204, the communication between the clusters 405, and the processor Communication among the cores 406, etc.
  • the memory core 407 has scalar operation capability for performing scalar operations.
  • the broadcast bus 409 is used to complete high-speed communication among the processor cores 406 in the cluster 405.
  • the broadcast bus 409 in this embodiment supports inter-core communication methods including unicast, multicast and broadcast.
  • Unicast refers to point-to-point (such as a single processor core to a single processor core) data transmission
  • multicast is a communication method that transmits a piece of data from SRAM 408 to specific processor cores 406, and broadcast is a communication method.
  • the communication method in which copies of data are transmitted from SRAM 408 to all processor cores 406 is a special case of multicast.
  • the GDMA 411 cooperates with the external memory controller 401 to control the memory access from the SRAM 408 of the cluster 405 to the DRAM 204, or to read data from the DRAM 204 to the SRAM 408.
  • the communication between the DRAM 204 and the NRAM 431 or the WRAM 432 can be implemented through two channels.
  • the first channel is to directly contact DRAM 204 and NRAM 431 or WRAM 432 through IODAM 433; the second channel is to transfer data between DRAM 204 and SRAM 408 through GDMA 411, and then through MVDMA 534 to transfer data between SRAM 408 and NRAM 431 or WRAM 432 transfers.
  • an embodiment of the present disclosure provides a data processing solution that performs operations related to structured sparse according to specialized sparse instructions.
  • the second-stage pipeline operation circuit may include two comparators for grouping and comparing the four absolute values output by the previous stage.
  • the first comparator 721 may compare the absolute values of data elements A and B and output a larger value Max00
  • the second comparator 722 may compare the absolute values of data elements C and D and output a larger value Max10.
  • the second pipeline stage may include a permutation and combination circuit 760 for permuting and combining the m absolute values to generate m groups of data, wherein each group of data includes the m absolute values, and the m absolute values are in each group The locations in the data are different from each other.
  • the operands of sparse instructions can be data in the neural network, such as weights, neurons, etc.
  • Data in a neural network usually contains multiple dimensions.
  • data may exist in four dimensions: input channels, output channels, length, and width.
  • the above-described sparse instructions may be used for structured sparse processing of at least one dimension of multidimensional data in a neural network.
  • the sparse instruction can be used for structured sparse processing of input channel dimensions of multidimensional data in a neural network, such as during inference or forward training of a neural network.
  • the sparse instruction can be used to simultaneously perform structured sparse processing of the input channel dimension and the output channel dimension of multidimensional data in the neural network, such as during reverse training of the neural network.
  • one or more multi-stage pipelined circuits of the present disclosure may be configured to perform multiple data operations, such as single instruction multiple data ("SIMD") instructions.
  • SIMD single instruction multiple data
  • the plurality of operations performed by each stage of the operation circuit are predetermined according to the functions supported by the plurality of operation circuits arranged in stages in the multi-stage operation pipeline.
  • the aforementioned plurality of sparse instructions may be micro-instructions or control signals running inside one or more multi-stage operation pipelines, which may include (or indicate) one or more multi-stage operation pipelines Operation performed.
  • operation operations may include, but are not limited to, arithmetic operations such as convolution operations, matrix multiplication operations, logical operations such as AND operations, XOR operations, or operations, shift operations, or any of the aforementioned types of operations.
  • arithmetic operations such as convolution operations, matrix multiplication operations, logical operations such as AND operations, XOR operations, or operations, shift operations, or any of the aforementioned types of operations.
  • step 840 the operation result is output.
  • the operation result may be output by the arithmetic circuit 630 to the storage circuit 620 for subsequent use.
  • multiple sparse instructions may be designed, each instruction corresponding to one or more different operation modes, thereby performing different operations.
  • a corresponding sparse instruction may be designed for each mode of operation.
  • one sparse instruction may be designed for each type of operation mode according to the characteristics of the operation mode. Further, when a certain type of operation mode includes multiple operation modes, an operation mode bit may be included in the sparse instruction to indicate the corresponding operation mode.
  • the structured sparse processing in the first operation mode may be structured sparse processing of predetermined filtering rules, for example, according to the filtering rule with a relatively large absolute value, n data elements with a relatively large absolute value are selected from every m data elements as Valid data elements.
  • the arithmetic circuit 630 may, for example, be configured as the pipeline arithmetic circuit described with reference to FIGS. 7A and 7B to perform this structured thinning process.
  • the above four operation modes provide structured sparse processing of data, such as processing according to predetermined filtering rules or filtering rules specified by the operands of instructions, and provide different output contents, such as output structure, output only Data part, output only the index part, etc.
  • the above instruction design can well support structured sparse processing, and provides a variety of output options to meet the needs of different scenarios. For example, when the data needs to be bound to the index, the output structure can be selected, and when the index needs to be used separately part or data part, you can choose to output only the index part or the data part.
  • the operand of the thinning instruction includes the thinned-out data portion and the corresponding index portion.
  • the data part and the index part are in a compact storage format, respectively, but are not bound.
  • the index part indicates the position of the data part in the data before the thinning process, wherein each 1 bit of the index part corresponds to one data element.
  • the content of the descriptor represents a two-dimensional space
  • those skilled in the art can set the specific dimension of the content of the descriptor according to the actual situation, which is not limited in the present disclosure.
  • PA1 (x,y) PA_start+(offset_y-1)*ori_x+offset_x (6)
  • the data address in the data storage space of the data corresponding to the operand can be determined according to the content of the descriptor and the data description location. In this way, part of the data (eg, one or more data) in the tensor data indicated by the descriptor can be processed.
  • the descriptor requires more parameters to represent these data chunks.
  • X dimension X dimension
  • the following parameters can be involved: ori_x, x.tile.size (size 1002 in the block), x.tile.stride (step size 1004 in the block, that is, the first small The distance between the first point of the block and the first point of the second small block), x.tile.num (the number of blocks, shown as 3 blocks in the figure), x.stride (the overall step size) , that is, the distance from the first point of the first row to the first point of the second row) and so on.
  • Other dimensions may similarly include corresponding parameters.
  • the descriptor may include the identifier of the descriptor and/or the content of the descriptor.
  • the identifier of the descriptor is used to distinguish the descriptor, for example, the identifier of the descriptor may be numbered; the content of the descriptor may include at least one shape parameter representing the shape of the tensor data.
  • the tensor data is 3-dimensional data. Among the three dimensions of the tensor data, the shape parameters of two dimensions are fixed, and the content of the descriptor may include the shape representing the other dimension of the tensor data. parameter.
  • addresses ADDR0-ADDR31 can be used to store the identifier of the descriptor
  • addresses ADDR32-ADDR63 can be used to store the content of the descriptor.
  • the address ADDR is not limited to 1 bit or one byte, and is used here to represent an address, which is an address unit.
  • Those skilled in the art can determine the descriptor storage space, the data storage space and their specific addresses according to actual conditions, which are not limited in this disclosure.
  • the data address of the data storage space corresponding to each descriptor may be a fixed address.
  • a separate data storage space can be divided for tensor data, and the starting address of each tensor data in the data storage space corresponds to a descriptor one-to-one.
  • the circuit or module responsible for parsing the computing instruction eg, an entity external to the computing device of the present disclosure
  • the operation circuit 1130 may include one or more groups of pipeline operation circuits 1131 , wherein each group of the pipeline operation circuits 1131 may include one or more operators.
  • each group of pipeline operation circuits includes multiple operators, the multiple operators can be configured to perform multi-stage pipeline operations, that is, constitute a multi-stage operation pipeline.
  • the operation circuit 1130 may further include an operation processing circuit 1132, which may be configured to preprocess the data before the operation performed by the pipeline operation circuit 1131 or to perform post-processing on the data after the operation according to the operation instruction.
  • the aforementioned preprocessing and postprocessing may include, for example, data splitting and/or data splicing operations.
  • the operation processing circuit can divide the data to be sparsed into segments according to each m data elements, and then send the data to the pipeline operation circuit 1131 for processing.
  • Item 4 The data processing apparatus according to any one of Items 2-3, wherein the shape information of the tensor data includes at least one shape parameter representing the shape of N-dimensional tensor data, N is a positive integer, and the tensor
  • the shape parameters of the data include at least one of the following:
  • the operation circuit is configured to perform structured sparse processing on the data to be sparsed according to the sparse instruction and according to the position indicated by the sparse index, and output the sparse-processed structure or the data to the storage circuit.
  • the data part after sparse processing the structure includes a data part and an index part bound to each other, the data part includes the data after the sparse processing of the data to be sparse, and the index part is used to indicate the sparseness The position of the thinned data in the data to be thinned.
  • the corresponding operand is read.
  • the first pipeline stage includes m absolute value operators for respectively taking absolute values of m data elements to be sparsed to generate m absolute values;
  • the second pipeline stage includes a permutation and combination circuit for permuting and combining the m absolute values to generate m sets of data, wherein each set of data includes the m absolute values and the m absolute values are in each set The locations in the data are different from each other;

Abstract

一种数据处理装置、数据处理方法及相关产品。该数据处理装置可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。方案提供了用于与结构化稀疏相关操作的专用指令,其可以简化处理,提高机器的处理效率。

Description

数据处理装置、数据处理方法及相关产品
相关申请的交叉引用
本申请要求于2020年12月25日申请的、申请号为202011566138.X、名称为“数据处理装置、数据处理方法及相关产品”;以及于2020年12月25日申请的、申请号为202011563257.X、名称为“数据处理装置、数据处理方法及相关产品”的中国专利申请的优先权。
技术领域
本披露一般地涉及处理器领域。更具体地,本披露涉及数据处理装置、数据处理方法、芯片和板卡。
背景技术
近年来,随着深度学习的迅猛发展,使得计算机视觉、自然语言处理等一系列领域的算法性能都有了跨越式的进展。然而深度学习算法是一种计算密集型和存储密集型的工具,随着信息处理任务的日趋复杂,对算法实时性和准确性要求不断增高,神经网络往往会被设计得越来越深,使得其计算量和存储空间需求越来越大,导致现存的基于深度学习的人工智能技术难以直接应用在硬件资源受限的手机、卫星或嵌入式设备上。
因此,深度神经网络模型的压缩、加速、优化变得格外重要。大量的研究试着在不影响模型精度的前提下,减少神经网络的计算和存储需求,对深度学习技术在嵌入端、移动端的工程化应用具有十分重要的意义。稀疏化正是模型轻量化方法之一。
网络参数稀疏化是通过适当的方法减少较大网络中的冗余成分,以降低网络对计算量和存储空间的需求。现有的硬件和/或指令集不能有效地支持稀疏化处理。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种数据处理装置、数据处理方法、芯片和板卡。
在第一方面中,本披露公开一种数据处理装置,包括:控制电路,其配置用于解析稀疏指令,所述稀疏指令指示与结构化稀疏相关的操作;存储电路,其配置用于存储稀疏化前和/或稀疏化后的信息;以及运算电路,其配置用于根据所述稀疏指令执行相应的操作。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的数据处理装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种数据处理方法,该方法包括:解析稀疏指令,所述稀疏指令指示与结构化稀疏相关的操作;根据所述稀疏指令读取相应的操作数;对所述操作数执行所述与结构化稀疏相关的操作;以及输出操作结果。
通过如上所提供的数据处理装置、数据处理方法、集成电路芯片和板卡,本披露实施例提供了一种稀疏指令,用于执行与结构化稀疏相关的操作。在一些实施例中,稀疏指令中可以包括操作模式位来指示稀疏指令的不同操作模式,从而执行不同的操作。在另一些实施例中,可以包括多条稀疏指令,每条指令对应一种或多种不同的操作模式,从而执行与结构化稀疏相关的各种操作。通过提供专门的稀疏指令来执行与结构化稀疏相关的操作,可以简化处理,由此提高机器的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本披露实施例的板卡的结构图;
图2是示出本披露实施例的组合处理装置的结构图;
图3是示出本披露实施例的单核计算装置的内部结构示意图;
图4是示出本披露实施例的多核计算装置的内部结构示意图;
图5是示出本披露实施例的处理器核的内部结构示意图;
图6是示出本披露实施例的数据处理装置的结构示意图;
图7A是示出本披露实施例的结构化稀疏处理的示例性流水运算电路;
图7B是示出本披露另一实施例的结构化稀疏处理的示例性流水运算电路;
图8是示出本披露实施例的数据处理方法的示例性流程图;
图9示出根据本披露实施例的数据存储空间的示意图;
图10示出根据本披露实施例的数据分块在数据存储空间中的示意图;
图11是示出本披露另一实施例的数据处理装置的结构示意图;以及
图12是示出本披露另一实施例的数据处理方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图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 specific integrated 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及指令译码单元(instruction decode 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为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM 204,从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群405是多核计算装置41的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。集群405用以高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405包括多个处理器核(IPU core)406及一个存储核(MEM core)407。
处理器核406在图中示例性地展示4个,本披露不限制处理器核406的数量。其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,同样包括三大模块:控制模块51、运算模块52及存储模块53。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,不再赘述。需特别说明的是,存储模块53包括输入/输出直接内存访问模块(input/output direct memory access,IODMA)533、搬运直接内存访问模块(move direct memory access,MVDMA)534。IODMA 533通过广播总线409控制NRAM 531/WRAM 532与DRAM 204的访存;MVDMA 534则用以控制NRAM 531/WRAM 532与存储单元(SRAM)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与DRAM 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括SRAM 408、广播总线409、集群直接内存访问模块(cluster direct memory access,CDMA)410及全局直接内存访问模块(global direct memory access,GDMA)411。SRAM 408承担高性能数据中转站的角色,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SRAM 408在处理器核406间中转,存储核407只需要将复用的数据从SRAM 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与DRAM 204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从SRAM 408传输到所有处理器核406的通信方式,属于多播的一种特例。
CDMA 410用以控制在同一个计算装置201内不同集群405间的SRAM 408的访存。
GDMA 411与外部存储控制器401协同,用以控制集群405的SRAM 408到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 408中。从前述可知,DRAM 204与NRAM 431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 411使得数据在DRAM 204与SRAM 408间传输,再经过MVDMA 534使得数据在SRAM 408与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 411的功能和IODMA 533的功能可以整合在同一部件中。本披露为了方便描述,将GDMA 411和IODMA 533视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,GDMA 411的功能、IODMA 533的功能、CDMA 410的功能、MVDMA 534的功能亦可以由同一部件来实现。
本披露的一个实施例基于前述的硬件环境,提供一种数据处理方案,根据专门的稀疏指令来执行与结构化稀疏相关的操作。
图6示出根据本披露实施例的数据处理装置600的结构框图。数据处理装置600例如可以实现在图2的计算装置201中。如图所示,数据处理装置600可以包括控制电路610、存储电路620和运算电路630。
控制电路610的功能可以类似于图3的控制模块31或图5的控制模块51,其例如可以包括取指单元,用以获取来自例如图2的处理装置203的指令,以及指令译码单元,用于将获取的指令进行译码,并将译码结果作为控制信息发送给运算电路630和存储电路620。
在一个实施例中,控制电路610可以配置用于解析稀疏指令,其中稀疏指令指示与结构化稀疏相关的操作。
存储电路620可以配置用于存储稀疏化前和/或稀疏化后的信息。在一个实施例中,稀疏指令的操 作数是神经网络中的数据,例如权值、神经元等。在此实施例中,存储电路例如可以是图3的WRAM 332、NRAM 331或图5的WRAM 532、NRAM531。
运算电路630可以配置用于根据稀疏指令执行相应的操作。
在一些实施例中,运算电路630可以包括一组或多组流水运算电路631,其中每组流水运算电路631可以包括一个或多个运算器。当每组流水运算电路包括多个运算器时,这多个运算器可以配置成执行多级流水运算,也即构成一条多级运算流水线。
在一些应用场景中,本披露的流水运算电路可以支持与结构化稀疏相关的操作。例如,在执行结构化稀疏处理时,可以采用由比较器等电路构成的多级流水运算电路来执行从每m个数据元素中提取n个数据元素作为有效数据元素的操作,其中m>n。在一个实现中,m=4,n=2。在另一些实现中,n也可以取其他值,例如1或3。
在一个实施例中,运算电路630还可以包括运算处理电路632,其可以配置成根据运算指令对流水运算电路631执行运算前的数据进行预处理或者对运算后的数据进行后处理。在一些应用场景中,前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。在结构化稀疏处理中,运算处理电路可以将待稀疏化数据按照每m个数据元素进行分段拆分,然后送给流水运算电路631进行处理。
图7A示出了根据本披露一个实施例的结构化稀疏处理的示例性运算流水线。在图7A的实施例中,示出了当m=4,n=2时,从4个数据元素A、B、C和D中筛选出2个绝对值较大的数据元素的结构化稀疏处理。
如图7A所示,可以利用由求绝对值运算器、比较器构成的4级流水运算电路来执行上述结构化稀疏处理。
第一级流水运算电路可以包括4个求绝对值运算器710,用于同步地分别对4个输入的数据元素A、B、C和D进行求绝对值操作。
第二级流水运算电路可以包括两个比较器,用于对上一级输出的4个绝对值进行分组比较。例如,第一比较器721可以对数据元素A和B的绝对值进行比较并输出较大值Max00,第二比较器722可以对数据元素C和D的绝对值进行比较并输出较大值Max10。
第三级流水运算电路可以包括一个第三比较器730,对上一级输出的2个较大值Max00和Max10进行比较并输出较大值Max0。此较大值Max0即为这4个数据元素中绝对值最大的值。
第四级流水运算电路可以包括一个第四比较器740,对上一级中的较小值Min0与最大值Max0所在分组中的另一值进行比较并输出较大值Max1。此较大值Max1即为这4个数据元素中绝对值次大的值。
由此,通过4级流水运算电路可以实现四选二的结构化稀疏处理。
图7B示出了根据本披露另一实施例的结构化稀疏处理的示例性运算流水线。同样地,在图7B的实施例中,示出了当m=4,n=2时,从4个数据元素A、B、C和D中筛选出2个绝对值较大的数据元素的结构化稀疏处理。
如图7B所示,可以利用由求绝对值运算器、比较器等构成的多级流水运算电路来执行上述结构化稀疏处理。
第一流水级可以包括m(4)个求绝对值运算器750,用于同步地分别对4个输入的数据元素A、B、C和D进行求绝对值操作。为了便于最后输出有效数据元素,在一些实施例中,第一流水级会同时输出原数据元素(也即,A、B、C和D)和经过求绝对值操作后的数据(也即,|A|、|B|、|C|和|D|)。
第二流水级可以包括排列组合电路760,用于对这m个绝对值进行排列组合,以生成m组数据,其中每组数据均包括这m个绝对值,并且这m个绝对值在各组数据中的位置互不相同。
在一些实施例中,排列组合电路可以是循环移位器,对m个绝对值(例如,|A|、|B|、|C|和|D|)的排列进行m-1次循环移位,从而生成m组数据。例如,在图中示出的示例中,生成4组数据,分别是:{|A|,|B|,|C|,|D|}、{|B|,|C|,|D|,|A|}、{|C|,|D|,|A|,|B|}和{|D|,|A|,|B|,|C|}。同样地,输出每组数据的同时还会输出对应的原数据元素,每组数据对应一个原数据元素。
第三流水级包括比较电路770,用于对这m组数据中的绝对值进行比较并生成比较结果。
在一些实施例中,第三流水级可以包括m路比较电路,每路比较电路包括m-1个比较器(771, 772,773),第i路比较电路中的m-1个比较器用于将第i组数据中的一个绝对值与其他三个绝对值依次比较并生成比较结果,其中1≤i≤m。
从图中可以看出,第三流水级也可以认为是m-1(3)个子流水级。每个子流水级包括m个比较器,用于将其对应的一个绝对值与其他绝对值进行比较。m-1个子流水级也就是依次将对应的一个绝对值与其他m-1个绝对值进行比较。
例如,在图中示出的示例中,第一子流水级中的4个比较器771用于分别将4组数据中的第一个绝对值与第二个绝对值进行比较,并分别输出比较结果w0、x0、y0和z0。第二子流水级中的4个比较器772用于分别将4组数据中的第一个绝对值与第三个绝对值进行比较,并分别输出比较结果w1、x1、y1和z1。第三子流水级中的4个比较器773用于分别将4组数据中的第一个绝对值与第四个绝对值进行比较,并分别输出比较结果w2、x2、y2和z2。
由此,可以得到每个绝对值与其他m-1个绝对值的比较结果。
在一些实施例中,比较结果可以使用位图来表示。例如,在第1路比较电路的第1个比较器处,当|A|≥|B|时,w0=1;在第1路第2个比较器处,当|A|<|C|时,w1=0;在第1路第3个比较器处,当|A|≥|D|时,w2=1,由此,第1路比较电路的输出结果是{A,w0,w1,w2},此时为{A,1,0,1}。类似地,第2路比较电路的输出结果是{B,x0,x1,x2},第3路比较电路的输出结果是{C,y0,y1,y2},第4路比较电路的输出结果是{D,z0,z1,z2}。
第四流水级包括筛选电路780,用于根据第三级的比较结果,从m个数据元素中选择n个绝对值较大的数据元素作为有效数据元素,以及输出这些有效数据元素及对应的索引。索引用于指示这些有效数据元素在输入的m个数据元素中的位置。例如,当从A、B、C、D四个数据元素中筛选出A和C时,其对应的索引可以是0和2。
根据比较结果,可以设计合适的逻辑来选择绝对值较大的n个数据元素。考虑到可能出现多个绝对值相同的情况,在进一步的实施例中,当存在绝对值相同的数据元素时,按照指定的优先级顺序来进行选择。例如,可以按照索引从低到高固定优先级的方式,设置A的优先级最高,D的优先级最低。在一个示例中,当A、C、D三个数的绝对值均相同并且大于B的绝对值时,选择的数据为A和C。
从前面的比较结果可以看出,根据w0、w1和w2可以分析出|A|比{|B|,|C|,|D|}几个数大。如果w0、w1和w2均为1,则表示|A|比|B|、|C|、|D|都大,为四个数中的最大值,因此选择A。如果w0、w1和w2中有两个1,则表示|A|是四个绝对值中的次大值,因此也选择A。否则,不选择A。因此,在一些实施例中,可以根据这些数值的出现次数来分析判断。
在一种实现中,可以基于如下逻辑来选择有效数据元素。首先,可以统计各个数据大于其他数据的次数。例如,定义N A=sum_w=w0+w1+w2,N B=sum_x=x0+x1+x2,N C=sum_y=y0+y1+y2,N D=sum_z=z0+z1+z2。接着,按如下条件进行判断选择。
选择A的条件为:N A=3,或者N A=2且N B/N C/N D中只有一个3;
选择B的条件为:N B=3,或者N B=2且N A/N C/N D中只有一个3,且N A≠2;
选择C的条件为:N C=3,且N A/N B中至多只有一个3,或者N C=2且N A/N B/N D中只有一个3,且N A/N B中没有2;
选择D的条件为:N D=3,且N A/N B/N C中至多只有一个3,或者N D=2且N A/N B/N C中只有一个3,且N A/N B/N C中没有2。
本领域技术人员可以理解,为了确保按预定优先级选择,上述逻辑中存在一定的冗余。基于比较结果提供的大小及顺序信息,本领域技术人员可以设计其他逻辑来实现有效数据元素的筛选,本披露在此方面没有限制。由此,通过图7B的多级流水运算电路也可以实现四选二的结构化稀疏处理。
本领域技术人员可以理解,还可以设计其他形式的流水运算电路来实现结构化稀疏处理,本披露在此方面没有限制。
如前面所提到的,稀疏指令的操作数可以是神经网络中的数据,例如权值、神经元等。神经网络中的数据通常包含多个维度。例如,在卷积神经网络中,数据可能存在四个维度:输入通道、输出通道、长度和宽度。在一些实施例中,上述稀疏指令可以用于神经网络中多维数据的至少一个维度的结构化稀疏处理。具体地,在一个实现中,稀疏指令可以用于对神经网络中多维数据的输入通道维度的结构 化稀疏处理,例如在神经网络的推理过程中或前向训练过程中。在另一个实现中,稀疏指令可以用于对神经网络中的多维数据的输入通道维度和输出通道维度同时进行结构化稀疏处理,例如在神经网络的反向训练过程中。
在一个实施例中,响应于接收到的多个稀疏指令,本披露的一个或多个多级流水运算电路可以配置成执行多数据运算,例如执行单指令多数据(“SIMD”)指令。在另一个实施例中,根据多级运算流水线中逐级布置的多个运算电路所支持的功能来预先确定每级运算电路所执行的多个操作。
在本披露的上下文中,前述的多个稀疏指令可以是在一条或多条多级运算流水线内部运行的微指令或控制信号,其可以包括(或者说指示)一个或多个需多级运算流水线执行的运算操作。根据不同的运算操作场景,运算操作可以包括但不限于卷积操作、矩阵乘法操作等算术运算、与操作、异或操作、或操作等逻辑运算、移位操作,或者前述各类运算操作的任意多种组合。
图8示出了根据本披露实施例的数据处理方法800的示例性流程图。
如图8所示,在步骤810中,解析稀疏指令,该稀疏指令指示与结构化稀疏相关的操作。该步骤例如可以由图6的控制电路610来执行。
接着,在步骤820中,根据稀疏指令读取相应的操作数。稀疏指令可以指示不同的操作模式,相应的操作数也有不同,后面将详细描述。该步骤例如可以由图6的控制电路610针对存储电路620来执行。
接着,在步骤830中,对读取的操作数执行与结构化稀疏相关的操作。该步骤例如可以由图6的运算电路630来执行。
最后,在步骤840中,输出操作结果。例如,可以由运算电路630将操作结果输出到存储电路620以供随后使用。
与结构化稀疏相关的操作可以存在多种,例如结构化稀疏处理、反稀疏化处理等。可以设计多种指令方案来实现与结构化稀疏相关的操作。
在一种方案中,可以设计一条稀疏指令,指令中可以包括操作模式位来指示稀疏指令的不同操作模式,从而执行不同的操作。
在另一种方案中,可以设计多条稀疏指令,每条指令对应一种或多种不同的操作模式,从而执行不同的操作。在一种实现中,可以针对每种操作模式设计一条对应的稀疏指令。在另一种实现中,可以根据操作模式的特性分类,针对每类操作模式设计一条稀疏指令。进一步地,当某一类操作模式中包括多个操作模式时,可以在稀疏指令中包括操作模式位来指示相应的操作模式。
无论采取哪种方案,稀疏指令可以通过操作模式位和/或指令本身来指示其对应的操作模式。
在一个实施例中,稀疏指令可以指示第一操作模式。在第一操作模式中,稀疏指令的操作数包括待稀疏化数据。此时,运算电路630可以配置用于根据稀疏指令,对该待稀疏化数据执行结构化稀疏处理,并向存储电路620输出稀疏化处理后的结构体。
第一操作模式中的结构化稀疏处理可以是预定筛选规则的结构化稀疏处理,例如按照筛选绝对值较大的规则,从每m个数据元素中筛选出n个绝对值较大的数据元素作为有效数据元素。运算电路630例如可以配置成参考图7A和图7B描述的流水运算电路来执行此结构化稀疏处理。
稀疏化处理后的结果包括两部分:数据部分和索引部分。数据部分包括待稀疏化数据经稀疏化处理后的数据,也即根据结构化稀疏处理的筛选规则提取出的有效数据元素。索引部分用于指示稀疏化后的数据,也即有效数据元素在稀疏化前的数据(也即,待稀疏化数据)中的位置。
本披露实施例中的结构体包括相互绑定的数据部分和索引部分。在一些实施例中,索引部分中每1比特可以对应一个数据元素。例如,当数据类型是fix8时,一个数据元素为8比特,则索引部分中每1比特可以对应8比特的数据。在另一些实施例中,考虑到后续在使用结构体时硬件层面的实现,可以将结构体中的索引部分中每1比特设定为对应N比特数据的位置,N至少部分基于硬件配置确定。例如,可以设置为结构体中的索引部分的每1比特对应于4比特数据的位置。例如,当数据类型是fix8时,索引部分中每2比特对应于一个fix8类型的数据元素。在一些实施例中,结构体中的数据部分可以按照第一对齐要求对齐,结构体中的索引部分可以按照第二对齐要求对齐,从而整个结构体也满足对齐要求。例如,数据部分可以按照64B对齐,索引部分可以按照32B对齐,整个结构体则按照96B (64B+32B)对齐。通过这种对齐要求,在后续使用时可以减少访存次数,提高处理效率。
通过使用这种结构体,数据部分和索引部分可以统一使用。由于结构化稀疏处理中,有效数据元素占据所有数据元素的比例是固定的,例如n/m,因此,稀疏化处理后的数据大小也是固定或可预期的。从而,结构体可以在存储电路中致密存储而无性能损失。
在另一实施例中,稀疏指令可以指示第二操作模式。第二操作模式与第一操作模式的区别在于输出的内容不同,第二操作模式仅输出结构化稀疏处理后的数据部分,而不输出索引部分。
类似地,在第二操作模式中,稀疏指令的操作数包括待稀疏化数据。此时,运算电路630可以配置用于根据稀疏指令,对该待稀疏化数据执行结构化稀疏处理,并向存储电路620输出稀疏化处理后的数据部分。该数据部分包括待稀疏化数据经稀疏化处理后的数据。数据部分在存储电路中致密存储。输出的数据部分按照n个元素对齐。例如,在m=4,n=2的示例中,输入的待稀疏化数据是按4个元素对齐的,而输出的数据部分则是按2个元素对齐的。
在又一实施例中,稀疏指令可以指示第三操作模式。第三操作模式与第一操作模式的区别在于输出的内容不同,第三操作模式仅输出结构化稀疏处理后的索引部分,而不输出数据部分。
类似地,在第三操作模式中,稀疏指令的操作数包括待稀疏化数据。此时,运算电路630可以配置用于根据稀疏指令,对该待稀疏化数据执行结构化稀疏处理,并向存储电路620输出稀疏化处理后的索引部分。该索引部分指示稀疏化后的数据在待稀疏化数据中的位置。索引部分在存储电路中致密存储。输出的索引部分中每1比特对应一个数据元素的位置。由于索引部分可以单独使用,例如用于后续卷积处理中对神经元的结构化稀疏,而神经元的数据类型可能不确定,因此,通过将索引部分中每1比特对应一个数据元素的位置,该独立存储的索引部分可以适用于各种数据类型。
在再一实施例中,稀疏指令可以指示第四操作模式。第四操作模式与第一操作模式的区别在于,第四操作模式指定了结构化稀疏处理的筛选规则,而不是按照预定的筛选规则(例如,前面的绝对值较大规则)进行结构化稀疏处理。此时,稀疏指令的操作数有两个:待稀疏化数据和稀疏索引。增加的稀疏索引这一操作数,用来指示将要执行的结构化稀疏中有效数据元素的位置,也即指定结构化稀疏处理的筛选规则。稀疏索引中每1比特对应一个数据元素的位置,因而可以适用于各种数据类型的待稀疏化数据。
在第四操作模式中,运算电路630可以配置用于根据稀疏指令,按照稀疏索引指示的位置,对待稀疏化数据执行结构化稀疏处理,并向存储电路输出稀疏化处理后的结果。在一种实现中,输出结果可以是稀疏化处理后的结构体。在另一种实现中,输出结果可以是稀疏化处理后的数据部分。
结构体的含义与第一操作模式中的相同,其包括相互绑定的数据部分和索引部分,数据部分包括待稀疏化数据经稀疏化处理后的数据,索引部分用于指示稀疏化后的数据在待稀疏化数据中的位置。结构体中对数据部分、索引部分的对齐要求、对应关系等与第一操作模式中的相同,此处不再重复。
上面四种操作模式提供了对数据的结构化稀疏处理,例如按照预定筛选规则或者按照指令的操作数所指定的筛选规则进行处理,并且分别提供了不同的输出内容,例如输出结构体、只输出数据部分、只输出索引部分等。上述指令设计可以很好地支持结构化稀疏处理,并提供了多种输出选择,以适应不同的场景需求,例如需要数据与索引绑定使用时,可以选择输出结构体,而在需要单独使用索引部分或数据部分时,可以选择只输出索引部分或数据部分。
在又一实施例中,稀疏指令可以指示第五操作模式。第五操作模式不需要进行结构化稀疏处理,只需要将分离或独立的数据部分与索引部分绑定成结构体。
在第五操作模式中,稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分。数据部分和索引部分分别是致密存储格式,但是未进行绑定。输入的数据部分按照n个元素对齐。例如,在m=4,n=2的示例中,输入的数据部分是按2个元素对齐的。索引部分指示数据部分在稀疏化处理前的数据中的位置,其中索引部分的每1比特对应于一个数据元素。
此时,运算电路630可以配置用于根据稀疏指令,将数据部分与索引部分绑定成结构体,并向存储电路输出该结构体。结构体的含义、对数据部分、索引部分的对齐要求、对应关系等与第一操作模式中的相同,此处不再重复。取决于数据元素的数据类型,需要基于数据类型以及结构体中索引部分的比特对应关系,来相应地生成结构体中的索引部分。例如,当输入的索引部分为0011,其中每1比特 对应一个数据元素,如果数据类型为fix8,也即每一个数据元素具有8比特,则根据结构体中索引部分每1比特对应4比特数据的对应关系,结构体中的索引部分应为:00001111,也即2比特对应一个数据元素。
在再一实施例中,稀疏指令可以指示第六操作模式。第六操作模式用于执行反稀疏化处理,也即将稀疏化后的数据恢复成稀疏化前的数据格式或规模。
在第六操作模式中,稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,数据部分和索引部分分别是致密存储格式,但是未进行绑定。输入的数据部分按照n个元素对齐。例如,在m=4,n=2的示例中,输入的数据部分是按2个元素对齐的,输出的数据则按4个元素对齐。索引部分指示数据部分在稀疏化处理前的数据中的位置,其中索引部分的每1比特对应于一个数据元素。
此时,运算电路630可以配置用于根据稀疏指令,按照输入的索引部分指示的位置,对输入的数据部分执行反稀疏化处理,以生成具有稀疏化处理前的数据格式的恢复数据,并向存储电路输出该恢复数据。
在一种实现中,反稀疏化处理可以包括:根据索引部分指示的位置,按照稀疏化处理前的数据格式,将数据部分中的各个数据元素分别放置在稀疏化处理前的数据格式的对应位置,以及在数据格式的其余位置处填充预定信息(例如,填充0)以生成恢复数据。
另一方面,传统的处理器的指令被设计为能够执行基本的单数据标量操作。这里,单数据标量操作指的是指令的每一个操作数都是一个标量数据。然而,随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,仅仅使用标量操作无法使硬件高效地完成运算任务。因此,如何高效地执行多维的张量数据处理也是当前计算领域亟需解决的问题。
在本披露的实施例中,还提供了一种结构化稀疏指令,其用于执行与张量数据的结构化稀疏相关的操作。在该结构化稀疏指令的至少一个操作数中包括至少一个描述符,通过该描述符可以获取与张量数据相关的信息。具体地,描述符可以指示以下至少一项信息:张量数据的形状信息、张量数据的空间信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。张量数据的空间信息可以用于确定指令之间的依赖关系,进而可以确定例如指令的执行顺序。
在一种可能的实现中,张量数据的空间信息可以通过空间标识(ID)来指示。空间ID也可以称为空间别名,其指代用于存储对应的张量数据的一个空间区域,该空间区域可以是一段连续的空间,也可以是多段空间,本披露对于空间区域的具体组成形式没有限制。不同的空间ID表示所指向的空间区域不存在依赖关系。
下面将结合附图详细描述张量数据的形状信息的各种可能实现方式。
张量可以包含多种形式的数据组成方式。张量可以是不同维度的,比如标量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。举例而言,对于三维张量:
x 3=[[[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。
图9示出根据本披露实施例的数据存储空间的示意图。如图9所示,数据存储空间91采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间91的起始地址PA_start(基准地址)为第一个数据块92的物理地址。数据块93是数据存储空间91中的部分数据,其在X轴方向上的偏移量95表示为offset_x,在Y轴方向上的偏移量94表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块93时,描述符的数据基准点可以使用数据存储空间91的第一个数据块,可以约定描述符的基准地址为数据存储空间91的起始地址PA_start。然后可以结合数据存储空间91在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块93在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块93的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
Figure PCTCN2021128189-appb-000001
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置,确定张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间91中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图9中数据块93的描述符的内容。首先,确定数据块93的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块93的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
Figure PCTCN2021128189-appb-000002
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张 量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
Figure PCTCN2021128189-appb-000003
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
Figure PCTCN2021128189-appb-000004
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
Figure PCTCN2021128189-appb-000005
其中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,操作数中包括的针对描述符的数据描述位置为(x q,y q),那么,该描述符所指示的张量数据在数据存储空间中的数据地址PA2 (x,y)可以使用下述公式(7)来确定:
PA2 (x,y)=PA_start+(offset_y+y q-1)*ori_x+(offset_x+x q)    (7)
在一种可能的实现方式中,描述符可以指示分块的数据。数据分块在很多应用中可以有效地加快运算速度,提高处理效率。例如,在图形处理中,卷积运算经常使用数据分块进行快速运算处理。
图10示出根据本披露实施例的数据分块在数据存储空间中的示意图。如图10所示,数据存储空间1000同样采用行优先的方式存储二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出)。不同于图9的张量数据,图10中存储的张量数据包括多个数据分块。
在这种情况下,描述符需要更多的参数来表示这些数据分块。以X轴(X维度)为例,可以涉及如下参数:ori_x,x.tile.size(分块中的尺寸1002),x.tile.stride(分块中的步长1004,即第一个小块的第一个点与第二个小块的第一个点的距离),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)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
图11示出根据本披露另一实施例的数据处理装置1100的结构框图。数据处理装置1100例如可以实现在图2的计算装置201中。图11的数据处理装置1100与图6的不同之处在于,图11的数据处理装置1100还包括张量接口电路1112,用于实现与张量数据的描述符相关的功能。类似地,数据处理装置1100还可以包括控制电路1110、存储电路1120和运算电路1130,这些电路的具体功能和实现与图6的那些类似,因此此处不再复述。
在一个实施例中,控制电路1110可以配置用于解析稀疏指令,其中稀疏指令指示与结构化稀疏相关的操作,并且稀疏指令的至少一个操作数包括至少一个描述符,描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息。
张量接口电路(Tensor interface Unit,TIU)1112可以配置成在控制电路1110的控制下,实现与描述符相关联的操作。这些操作可以包括但不限于描述符的注册、修改、注销、解析;对描述符内容的读写等。本披露对张量接口电路的具体硬件类型不作限制。通过这种方式,可以通过专用的硬件实现与描述符相关联的操作,进一步提高张量数据的存取效率。
在一些实施例中,张量接口电路1112可以配置成对指令的操作数中包括的张量数据的形状信息进行解析,以确定与该操作数对应的数据在数据存储空间中的数据地址。
可选地或附加地,在又一些实施例中,张量接口电路1112可以配置成对两条指令的操作数中包括的张量数据的空间信息(例如,空间ID)进行比较,以判断这两条指令的依赖关系,进而确定指令的乱序执行、同步等操作。
尽管在图11中将控制电路1110和张量接口电路1112示出为两个分离的模块,但是本领域技术人员可以理解,这两个单元也可以实现为一个模块或更多模块,本披露在此方面没有限制。
运算电路1130可以配置用于基于解析的描述符,根据稀疏指令执行相应的操作。
在一些实施例中,运算电路1130可以包括一组或多组流水运算电路1131,其中每组流水运算电路1131可以包括一个或多个运算器。当每组流水运算电路包括多个运算器时,这多个运算器可以配置成执行多级流水运算,也即构成一条多级运算流水线。
在一些应用场景中,本披露的流水运算电路可以支持与结构化稀疏相关的操作。例如,在执行结构化稀疏处理时,可以采用由比较器等电路构成的多级流水运算电路来执行从每m个数据元素中提取n个数据元素作为有效数据元素的操作,其中m>n。在一个实现中,m=4,n=2。在另一些实现中,n也可以取其他值,例如1或3。
在一个实施例中,运算电路1130还可以包括运算处理电路1132,其可以配置成根据运算指令对流水运算电路1131执行运算前的数据进行预处理或者对运算后的数据进行后处理。在一些应用场景中, 前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。在结构化稀疏处理中,运算处理电路可以将待稀疏化数据按照每m个数据元素进行分段拆分,然后送给流水运算电路1131进行处理。
流水运算电路1131的具体实现可以参考前文结合图7A和图7B的描述,此处不再重复。
图12示出了根据本披露实施例的数据处理方法1200的示例性流程图。
如图12所示,在步骤1210中,解析稀疏指令,该稀疏指令指示与结构化稀疏相关的操作,并且稀疏指令的至少一个操作数包括至少一个描述符,描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息。该步骤例如可以由图11的控制电路1110来执行。
接着,在步骤1220中,对描述符进行解析。该步骤例如可以由图11的张量接口电路1112来执行。具体地,可以根据张量数据的形状信息,确定与操作数对应的张量数据在数据存储空间中的数据地址;和/或根据张量数据的空间信息,确定指令之间的依赖关系。
接着,在步骤1230中,至少部分基于解析的描述符,读取相应的操作数。操作数是张量数据时,可以根据解析的描述符来获得数据地址,从而读取相应的数据。稀疏指令可以指示不同的操作模式,相应的操作数也有不同,可以参考前文描述。该步骤例如可以由图11的控制电路1110针对存储电路1120来执行。
接着,在步骤1230中,对读取的操作数执行与结构化稀疏相关的操作。该步骤例如可以由图11的运算电路1130来执行。
最后,在步骤1240中,输出操作结果。例如,可以由运算电路1130将操作结果输出到存储电路1120以供随后使用。
从上面描述可知,本披露实施例提供了一种稀疏指令,用于执行与结构化稀疏相关的操作。这些操作可以包括正向的结构化稀疏操作,也可以包括反稀疏化操作,还可以包括一些相关的格式转换操作。在一些实施例中,稀疏指令中可以包括操作模式位来指示稀疏指令的不同操作模式,从而执行不同的操作。在另一些实施例中,可以直接提供多条稀疏指令,每条指令对应一种或多种不同的操作模式,从而执行与结构化稀疏相关的各种操作。通过提供专门的稀疏指令来执行与结构化稀疏相关的操作,可以简化处理,由此提高机器的处理效率。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic Random Access 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所述的数据处理装置,其中所述稀疏指令的至少一个操作数包括至少一个描述符,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息,并且所述数据处理装置还包括:
张量接口电路,其配置用于对所述描述符进行解析;并且
所述运算电路进一步配置用于基于解析的描述符,根据所述稀疏指令执行相应的操作。
条款3、根据条款2所述的数据处理装置,其中,
所述张量接口电路配置用于根据所述形状信息,确定与所述操作数对应的张量数据在数据存储空间中的数据地址;和/或
所述张量接口电路配置用于根据所述空间信息,确定指令之间的依赖关系。
条款4、根据条款2-3任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款5、根据条款2-3任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的 整体步长。
条款6、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第一操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的结构体,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款7、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第二操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的数据部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据。
条款8、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第三操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的索引部分,所述索引部分指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款9、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第四操作模式,并且所述稀疏指令的操作数包括待稀疏化数据和稀疏索引,所述稀疏索引指示将要执行的结构化稀疏中有效数据元素的位置,
所述运算电路配置用于根据所述稀疏指令,按照所述稀疏索引指示的位置,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的结构体或稀疏化处理后的数据部分,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款10、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第五操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,
所述运算电路配置用于根据所述稀疏指令,将所述数据部分与所述索引部分绑定成结构体,并向所述存储电路输出所述结构体。
条款11、根据条款1-5任一所述的数据处理装置,其中所述稀疏指令指示第六操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,
所述运算电路配置用于根据所述稀疏指令,按照所述索引部分指示的位置,对所述数据部分执行反稀疏化处理,以生成具有稀疏化处理前的数据格式的恢复数据,并向所述存储电路输出所述恢复数据。
条款12、根据条款6-9任一所述的数据处理装置,其中所述结构化稀疏处理包括从每m个数据元素中选择n个数据元素作为有效数据元素,其中m>n。
条款13、根据条款12所述的数据处理装置,其中所述运算电路进一步包括:至少一个多级流水运算电路,其包括逐级布置的多个运算器并且配置成根据所述稀疏指令来执行从m个数据元素中选择n个绝对值较大的数据元素作为有效数据元素的结构化稀疏处理。
条款14、根据条款13所述的数据处理装置,其中所述多级流水运算电路包括四个流水级,其中:
第一流水级包括m个求绝对值运算器,用于分别对待稀疏化的m个数据元素取绝对值,以生成m个绝对值;
第二流水级包括排列组合电路,用于对所述m个绝对值进行排列组合,以生成m组数据,其中每组数据均包括所述m个绝对值并且所述m个绝对值在各组数据中的位置互不相同;
第三流水级包括m路比较电路,用于对所述m组数据中的绝对值进行比较并生成比较结果;以及
第四流水级包括筛选电路,用于根据所述比较结果选择n个绝对值较大的数据元素作为有效数据元素,以及输出所述有效数据元素及对应的索引,所述索引指示所述有效数据元素在所述m个数据元素中的位置。
条款15、根据条款14所述的数据处理装置,其中所述第三流水级中每路比较电路包括m-1个比较器,第i路比较电路中的m-1个比较器用于将第i组数据中的一个绝对值与其他三个绝对值依次比较并生成比较结果,1≤i≤m。
条款16、根据条款14-15任一所述的数据处理装置,其中所述筛选电路进一步配置用于,当存在绝对值相同的数据元素时,按照指定的优先级顺序进行选择。
条款17、根据条款11所述的数据处理装置,其中所述反稀疏化处理包括:
根据所述索引部分指示的位置,按照稀疏化处理前的数据格式,将所述数据部分中的各个数据元素分别放置在稀疏化处理前的数据格式的对应位置,以及在所述数据格式的其余位置处填充预定信息以生成所述恢复数据。
条款18、根据条款6、9或10所述的数据处理装置,其中,
所述结构体中的索引部分中每1比特对应N比特数据的位置,N至少部分基于硬件配置确定;和/或所述结构体中的数据部分按照第一对齐要求对齐,所述结构体中的索引部分按照第二对齐要求对齐。
条款19、根据条款1-8任一所述的数据处理装置,其中所述稀疏指令用于神经网络中多维数据的至少一个维度的结构化稀疏处理。
条款20、根据条款19所述的数据处理装置,其中所述至少一个维度选自输入通道维度和输出通道维度。
条款21、根据条款1-20任一所述的数据处理装置,其中
所述稀疏指令中包括操作模式位来指示所述稀疏指令的操作模式,或者
所述稀疏指令包括多条指令,每条指令对应一种或多种不同的操作模式。
条款22、一种芯片,包括根据条款1-21任一所述的数据处理装置。
条款23、一种板卡,包括根据条款22所述的芯片。
条款24、一种数据处理方法,包括:
解析稀疏指令,所述稀疏指令指示与结构化稀疏相关的操作;
根据所述稀疏指令读取相应的操作数;
对所述操作数执行所述与结构化稀疏相关的操作;以及
输出操作结果。
条款25、根据条款24所述的数据处理方法,其中所述稀疏指令的至少一个操作数包括至少一个描述符,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
对所述描述符进行解析;以及
至少部分基于解析的描述符,读取相应的操作数。
条款26、根据条款25所述的数据处理方法,其中,对所述描述符进行解析包括:
根据所述形状信息,确定与所述操作数对应的张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
条款27、根据条款25-26任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款28、根据条款25-26任一所述的数据处理方法,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
条款29、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第一操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
输出稀疏化处理后的结构体,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款30、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第二操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
输出稀疏化处理后的数据部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据。
条款31、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第三操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
输出稀疏化处理后的索引部分,所述索引部分指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款32、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第四操作模式,并且所述稀疏指令的操作数包括待稀疏化数据和稀疏索引,所述稀疏索引指示将要执行的结构化稀疏中有效数据元素的位置,所述方法进一步包括:
根据所述稀疏指令,按照所述稀疏索引指示的位置,对所述待稀疏化数据执行结构化稀疏处理;以及输出稀疏化处理后的结构体或稀疏化处理后的数据部分,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
条款33、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第五操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,所述方法进一步包括:
根据所述稀疏指令,将所述数据部分与所述索引部分绑定成结构体;以及
输出所述结构体。
条款34、根据条款24-28任一所述的数据处理方法,其中所述稀疏指令指示第六操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,所述方法进一步包括:
根据所述稀疏指令,按照所述索引部分指示的位置,对所述数据部分执行反稀疏化处理,以生成具有稀疏化处理前的数据格式的恢复数据;以及
输出所述恢复数据。
条款35、根据条款29-32任一所述的数据处理方法,其中所述结构化稀疏处理包括从每m个数据元素中选择n个数据元素作为有效数据元素,其中m>n。
条款36、根据条款35所述的数据处理方法,其中所述结构化稀疏处理使用运算电路来实施,所述运算电路包括:至少一个多级流水运算电路,其包括逐级布置的多个运算器并且配置成根据所述稀疏指令来执行从m个数据元素中选择n个绝对值较大的数据元素作为有效数据元素的结构化稀疏处理。
条款37、根据条款36所述的数据处理方法,其中所述多级流水运算电路包括四个流水级,其中:
第一流水级包括m个求绝对值运算器,用于分别对待稀疏化的m个数据元素取绝对值,以生成m个绝对值;
第二流水级包括排列组合电路,用于对所述m个绝对值进行排列组合,以生成m组数据,其中每组数据均包括所述m个绝对值并且所述m个绝对值在各组数据中的位置互不相同;
第三流水级包括m路比较电路,用于对所述m组数据中的绝对值进行比较并生成比较结果;以及
第四流水级包括筛选电路,用于根据所述比较结果选择n个绝对值较大的数据元素作为有效数据元素,以及输出所述有效数据元素及对应的索引,所述索引指示所述有效数据元素在所述m个数据元素中的 位置。
条款38、根据条款37所述的数据处理方法,其中所述第三流水级中每路比较电路包括m-1个比较器,第i路比较电路中的m-1个比较器用于将第i组数据中的一个绝对值与其他三个绝对值依次比较并生成比较结果,1≤i≤m。
条款39、根据条款37-38任一所述的数据处理方法,其中所述筛选电路进一步配置用于,当存在绝对值相同的数据元素时,按照指定的优先级顺序进行选择。
条款40、根据条款34所述的数据处理方法,其中所述反稀疏化处理包括:
根据所述索引部分指示的位置,按照稀疏化处理前的数据格式,将所述数据部分中的各个数据元素分别放置在稀疏化处理前的数据格式的对应位置,以及在所述数据格式的其余位置处填充预定信息以生成所述恢复数据。
条款41、根据条款29、32或33所述的数据处理方法,其中,
所述结构体中的索引部分中每1比特对应N比特数据的位置,N至少部分基于硬件配置确定;和/或所述结构体中的数据部分按照第一对齐要求对齐,所述结构体中的索引部分按照第二对齐要求对齐。
条款42、根据条款24-41任一所述的数据处理方法,其中所述稀疏指令用于神经网络中多维数据的至少一个维度的结构化稀疏处理。
条款43、根据条款42所述的数据处理方法,其中所述至少一个维度选自输入通道维度和输出通道维度。
条款44、根据条款24-43任一所述的数据处理方法,其中
所述稀疏指令中包括操作模式位来指示所述稀疏指令的操作模式,或者
所述稀疏指令包括多条指令,每条指令对应一种或多种不同的操作模式。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (44)

  1. 一种数据处理装置,包括:
    控制电路,其配置用于解析稀疏指令,所述稀疏指令指示与结构化稀疏相关的操作;
    存储电路,其配置用于存储稀疏化前和/或稀疏化后的信息;以及
    运算电路,其配置用于根据所述稀疏指令执行相应的操作。
  2. 根据权利要求1所述的数据处理装置,其中所述稀疏指令的至少一个操作数包括至少一个描述符,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息,并且所述数据处理装置还包括:
    张量接口电路,其配置用于对所述描述符进行解析;并且
    所述运算电路进一步配置用于基于解析的描述符,根据所述稀疏指令执行相应的操作。
  3. 根据权利要求2所述的数据处理装置,其中,
    所述张量接口电路配置用于根据所述形状信息,确定与所述操作数对应的张量数据在数据存储空间中的数据地址;和/或
    所述张量接口电路配置用于根据所述空间信息,确定指令之间的依赖关系。
  4. 根据权利要求2-3任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
    所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
  5. 根据权利要求2-3任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
    所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
  6. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第一操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
    所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的结构体,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
  7. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第二操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
    所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的数据部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据。
  8. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第三操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,
    所述运算电路配置用于根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的索引部分,所述索引部分指示稀疏化后的数据在所述待稀疏化数据中的位置。
  9. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第四操作模式,并且所述稀疏指令的操作数包括待稀疏化数据和稀疏索引,所述稀疏索引指示将要执行的结构化稀疏中有效数据元素的位置,
    所述运算电路配置用于根据所述稀疏指令,按照所述稀疏索引指示的位置,对所述待稀疏化数据执行结构化稀疏处理,并向所述存储电路输出稀疏化处理后的结构体或稀疏化处理后的数据部分,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
  10. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第五操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部 分在稀疏化处理前的数据中的位置,
    所述运算电路配置用于根据所述稀疏指令,将所述数据部分与所述索引部分绑定成结构体,并向所述存储电路输出所述结构体。
  11. 根据权利要求1-5任一所述的数据处理装置,其中所述稀疏指令指示第六操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,
    所述运算电路配置用于根据所述稀疏指令,按照所述索引部分指示的位置,对所述数据部分执行反稀疏化处理,以生成具有稀疏化处理前的数据格式的恢复数据,并向所述存储电路输出所述恢复数据。
  12. 根据权利要求6-9任一所述的数据处理装置,其中所述结构化稀疏处理包括从每m个数据元素中选择n个数据元素作为有效数据元素,其中m>n。
  13. 根据权利要求12所述的数据处理装置,其中所述运算电路进一步包括:至少一个多级流水运算电路,其包括逐级布置的多个运算器并且配置成根据所述稀疏指令来执行从m个数据元素中选择n个绝对值较大的数据元素作为有效数据元素的结构化稀疏处理。
  14. 根据权利要求13所述的数据处理装置,其中所述多级流水运算电路包括四个流水级,其中:
    第一流水级包括m个求绝对值运算器,用于分别对待稀疏化的m个数据元素取绝对值,以生成m个绝对值;
    第二流水级包括排列组合电路,用于对所述m个绝对值进行排列组合,以生成m组数据,其中每组数据均包括所述m个绝对值并且所述m个绝对值在各组数据中的位置互不相同;
    第三流水级包括m路比较电路,用于对所述m组数据中的绝对值进行比较并生成比较结果;以及
    第四流水级包括筛选电路,用于根据所述比较结果选择n个绝对值较大的数据元素作为有效数据元素,以及输出所述有效数据元素及对应的索引,所述索引指示所述有效数据元素在所述m个数据元素中的位置。
  15. 根据权利要求14所述的数据处理装置,其中所述第三流水级中每路比较电路包括m-1个比较器,第i路比较电路中的m-1个比较器用于将第i组数据中的一个绝对值与其他三个绝对值依次比较并生成比较结果,1≤i≤m。
  16. 根据权利要求14-15任一所述的数据处理装置,其中所述筛选电路进一步配置用于,当存在绝对值相同的数据元素时,按照指定的优先级顺序进行选择。
  17. 根据权利要求11所述的数据处理装置,其中所述反稀疏化处理包括:
    根据所述索引部分指示的位置,按照稀疏化处理前的数据格式,将所述数据部分中的各个数据元素分别放置在稀疏化处理前的数据格式的对应位置,以及在所述数据格式的其余位置处填充预定信息以生成所述恢复数据。
  18. 根据权利要求6、9或10所述的数据处理装置,其中,
    所述结构体中的索引部分中每1比特对应N比特数据的位置,N至少部分基于硬件配置确定;和/或
    所述结构体中的数据部分按照第一对齐要求对齐,所述结构体中的索引部分按照第二对齐要求对齐。
  19. 根据权利要求1-8任一所述的数据处理装置,其中所述稀疏指令用于神经网络中多维数据的至少一个维度的结构化稀疏处理。
  20. 根据权利要求19所述的数据处理装置,其中所述至少一个维度选自输入通道维度和输出通道维度。
  21. 根据权利要求1-20任一所述的数据处理装置,其中
    所述稀疏指令中包括操作模式位来指示所述稀疏指令的操作模式,或者
    所述稀疏指令包括多条指令,每条指令对应一种或多种不同的操作模式。
  22. 一种芯片,包括根据权利要求1-21任一所述的数据处理装置。
  23. 一种板卡,包括根据权利要求22所述的芯片。
  24. 一种数据处理方法,包括:
    解析稀疏指令,所述稀疏指令指示与结构化稀疏相关的操作;
    根据所述稀疏指令读取相应的操作数;
    对所述操作数执行所述与结构化稀疏相关的操作;以及
    输出操作结果。
  25. 根据权利要求24所述的数据处理方法,其中所述稀疏指令的至少一个操作数包括至少一个描述符,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
    对所述描述符进行解析;以及
    至少部分基于解析的描述符,读取相应的操作数。
  26. 根据权利要求25所述的数据处理方法,其中,对所述描述符进行解析包括:
    根据所述形状信息,确定与所述操作数对应的张量数据在数据存储空间中的数据地址;和/或
    根据所述空间信息,确定指令之间的依赖关系。
  27. 根据权利要求25-26任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
    所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
  28. 根据权利要求25-26任一所述的数据处理方法,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
    所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
  29. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第一操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
    根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
    输出稀疏化处理后的结构体,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
  30. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第二操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
    根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
    输出稀疏化处理后的数据部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据。
  31. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第三操作模式,并且所述稀疏指令的操作数包括待稀疏化数据,所述方法进一步包括:
    根据所述稀疏指令,对所述待稀疏化数据执行结构化稀疏处理;以及
    输出稀疏化处理后的索引部分,所述索引部分指示稀疏化后的数据在所述待稀疏化数据中的位置。
  32. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第四操作模式,并且所述稀疏指令的操作数包括待稀疏化数据和稀疏索引,所述稀疏索引指示将要执行的结构化稀疏中有效数据元素的位置,所述方法进一步包括:
    根据所述稀疏指令,按照所述稀疏索引指示的位置,对所述待稀疏化数据执行结构化稀疏处理;以及
    输出稀疏化处理后的结构体或稀疏化处理后的数据部分,所述结构体包括相互绑定的数据部分和索引部分,所述数据部分包括所述待稀疏化数据经稀疏化处理后的数据,所述索引部分用于指示稀疏化后的数据在所述待稀疏化数据中的位置。
  33. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第五操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据部分在稀疏化处理前的数据中的位置,所述方法进一步包括:
    根据所述稀疏指令,将所述数据部分与所述索引部分绑定成结构体;以及
    输出所述结构体。
  34. 根据权利要求24-28任一所述的数据处理方法,其中所述稀疏指令指示第六操作模式,并且所述稀疏指令的操作数包括经稀疏化处理后的数据部分和对应的索引部分,所述索引部分指示所述数据 部分在稀疏化处理前的数据中的位置,所述方法进一步包括:
    根据所述稀疏指令,按照所述索引部分指示的位置,对所述数据部分执行反稀疏化处理,以生成具有稀疏化处理前的数据格式的恢复数据;以及
    输出所述恢复数据。
  35. 根据权利要求29-32任一所述的数据处理方法,其中所述结构化稀疏处理包括从每m个数据元素中选择n个数据元素作为有效数据元素,其中m>n。
  36. 根据权利要求35所述的数据处理方法,其中所述结构化稀疏处理使用运算电路来实施,所述运算电路包括:至少一个多级流水运算电路,其包括逐级布置的多个运算器并且配置成根据所述稀疏指令来执行从m个数据元素中选择n个绝对值较大的数据元素作为有效数据元素的结构化稀疏处理。
  37. 根据权利要求36所述的数据处理方法,其中所述多级流水运算电路包括四个流水级,其中:
    第一流水级包括m个求绝对值运算器,用于分别对待稀疏化的m个数据元素取绝对值,以生成m个绝对值;
    第二流水级包括排列组合电路,用于对所述m个绝对值进行排列组合,以生成m组数据,其中每组数据均包括所述m个绝对值并且所述m个绝对值在各组数据中的位置互不相同;
    第三流水级包括m路比较电路,用于对所述m组数据中的绝对值进行比较并生成比较结果;以及
    第四流水级包括筛选电路,用于根据所述比较结果选择n个绝对值较大的数据元素作为有效数据元素,以及输出所述有效数据元素及对应的索引,所述索引指示所述有效数据元素在所述m个数据元素中的位置。
  38. 根据权利要求37所述的数据处理方法,其中所述第三流水级中每路比较电路包括m-1个比较器,第i路比较电路中的m-1个比较器用于将第i组数据中的一个绝对值与其他三个绝对值依次比较并生成比较结果,1≤i≤m。
  39. 根据权利要求37-38任一所述的数据处理方法,其中所述筛选电路进一步配置用于,当存在绝对值相同的数据元素时,按照指定的优先级顺序进行选择。
  40. 根据权利要求34所述的数据处理方法,其中所述反稀疏化处理包括:
    根据所述索引部分指示的位置,按照稀疏化处理前的数据格式,将所述数据部分中的各个数据元素分别放置在稀疏化处理前的数据格式的对应位置,以及在所述数据格式的其余位置处填充预定信息以生成所述恢复数据。
  41. 根据权利要求29、32或33所述的数据处理方法,其中,
    所述结构体中的索引部分中每1比特对应N比特数据的位置,N至少部分基于硬件配置确定;和/或
    所述结构体中的数据部分按照第一对齐要求对齐,所述结构体中的索引部分按照第二对齐要求对齐。
  42. 根据权利要求24-41任一所述的数据处理方法,其中所述稀疏指令用于神经网络中多维数据的至少一个维度的结构化稀疏处理。
  43. 根据权利要求42所述的数据处理方法,其中所述至少一个维度选自输入通道维度和输出通道维度。
  44. 根据权利要求24-43任一所述的数据处理方法,其中
    所述稀疏指令中包括操作模式位来指示所述稀疏指令的操作模式,或者
    所述稀疏指令包括多条指令,每条指令对应一种或多种不同的操作模式。
PCT/CN2021/128189 2020-12-25 2021-11-02 数据处理装置、数据处理方法及相关产品 WO2022134873A1 (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202011563257.X 2020-12-25
CN202011566138.X 2020-12-25
CN202011563257.XA CN114692841A (zh) 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品
CN202011566138.XA CN114692845A (zh) 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品

Publications (1)

Publication Number Publication Date
WO2022134873A1 true WO2022134873A1 (zh) 2022-06-30

Family

ID=82157428

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/128189 WO2022134873A1 (zh) 2020-12-25 2021-11-02 数据处理装置、数据处理方法及相关产品

Country Status (1)

Country Link
WO (1) WO2022134873A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785759A (zh) * 2024-02-28 2024-03-29 北京壁仞科技开发有限公司 数据存储方法、数据读取方法、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284823A (zh) * 2017-04-20 2019-01-29 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN111047020A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 支持压缩及解压缩的神经网络运算装置及方法
CN111126600A (zh) * 2019-12-20 2020-05-08 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品
CN111144562A (zh) * 2018-11-05 2020-05-12 三星电子株式会社 压缩神经网络的激活图的系统、方法及其解压缩方法
CN111813449A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284823A (zh) * 2017-04-20 2019-01-29 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN111047020A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 支持压缩及解压缩的神经网络运算装置及方法
CN111144562A (zh) * 2018-11-05 2020-05-12 三星电子株式会社 压缩神经网络的激活图的系统、方法及其解压缩方法
CN111813449A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111126600A (zh) * 2019-12-20 2020-05-08 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785759A (zh) * 2024-02-28 2024-03-29 北京壁仞科技开发有限公司 数据存储方法、数据读取方法、电子设备和存储介质
CN117785759B (zh) * 2024-02-28 2024-04-23 北京壁仞科技开发有限公司 数据存储方法、数据读取方法、电子设备和存储介质

Similar Documents

Publication Publication Date Title
WO2023045445A1 (zh) 数据处理装置、数据处理方法及相关产品
TW202321999A (zh) 一種計算裝置及方法
WO2023045446A1 (zh) 计算装置、数据处理方法及相关产品
WO2023123919A1 (zh) 数据处理电路、数据处理方法及相关产品
WO2022134873A1 (zh) 数据处理装置、数据处理方法及相关产品
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022095675A1 (zh) 神经网络稀疏化的装置、方法及相关产品
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
WO2022134872A1 (zh) 数据处理装置、数据处理方法及相关产品
CN114281561A (zh) 处理单元、用于处理单元的同步方法及相应产品
WO2022134688A1 (zh) 数据处理电路、数据处理方法及相关产品
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
WO2022001499A1 (zh) 一种计算装置、芯片、板卡、电子设备和计算方法
CN114692841A (zh) 数据处理装置、数据处理方法及相关产品
WO2022257980A1 (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
WO2022063183A1 (zh) 执行神经网络计算的装置、板卡、方法及可读存储介质
WO2023087698A1 (zh) 执行卷积运算的计算装置、方法及相关产品
WO2022111013A1 (zh) 支援多种访问模式的设备、方法及可读存储介质
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2022001439A1 (zh) 计算装置、集成电路芯片、板卡和计算方法
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2022135600A1 (zh) 计算神经网络的装置、板卡、方法及可读存储介质
WO2022001457A1 (zh) 一种计算装置、芯片、板卡、电子设备和计算方法
WO2022001498A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21908874

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21908874

Country of ref document: EP

Kind code of ref document: A1