CN120277005A - 数据处理方法及装置、电子设备和存储介质 - Google Patents
数据处理方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN120277005A CN120277005A CN202311865153.8A CN202311865153A CN120277005A CN 120277005 A CN120277005 A CN 120277005A CN 202311865153 A CN202311865153 A CN 202311865153A CN 120277005 A CN120277005 A CN 120277005A
- Authority
- CN
- China
- Prior art keywords
- tensor
- information
- block
- address information
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1012—Design facilitation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种数据处理方法及装置、电子设备和存储介质,所述方法包括:根据第一张量的张量信息、待访问的第二张量的访问信息,确定第二张量的地址信息,并根据第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;响应于局部存储器接收到所述第二张量,触发中断。本公开实施例可提高张量存储的效率和灵活性,并且,每当局部存储器接收到一次第二张量,可以触发一次中断,实现张量读取过程的异步。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法及装置、电子设备和存储介质。
背景技术
随着人工智能技术的应用领域的不断扩展,对人工智能芯片的性能方面的要求也越来越高。存储性能作为是人工智能芯片的性能的瓶颈之一,期望能够进一步改善人工智能芯片的数据流设计,使得人工智能芯片能够更高效率更灵活地存取数据。
发明内容
本公开提出了一种数据处理技术方案。
根据本公开的一方面,提供了一种数据处理方法,包括:根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;响应于所述局部存储器接收到所述第二张量,触发中断。
在一种可能的实现方式中,在待访问的所述第二张量为所述第一张量的分块数据的情况下,所述访问信息包括:所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息,包括:根据所述第一张量的张量信息、所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,从所述第一张量的地址中确定所述第二张量的地址信息。
在一种可能的实现方式中,所述方法还包括:根据第一张量的张量信息、待访问的第二张量的访问信息,对所述第二张量进行边界检查,得到所述第二张量的检查结果;在所述检查结果指示所述第二张量的第一部分位于所述第一张量之内,所述第二张量的第二部分位于所述第一张量之外的情况下,根据第一张量的张量信息、第二张量的访问信息,确定所述第二张量的第一部分的地址信息;第一张量的张量信息包括填充标识,根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器,包括:根据第二张量的第一部分的地址信息,从存储第一张量的全局存储器中读取第二张量的第一部分至局部存储器,根据所述填充标识,对所述第二张量的第二部分进行填充,得到所述第二张量的第二部分;将所述第二张量的第二部分写入局部存储器。
在一种可能的实现方式中,在待访问的所述第二张量为卷积核中任意一个或多个元素在所述第一张量中对应的覆盖数据的情况下,所述访问信息包括:展开矩阵坐标、卷积核元素坐标,所述展开矩阵是在第一张量中,根据描述信息依次将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成的矩阵,所述描述信息包括卷积描述信息、反卷积描述信息,根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息,包括:获取所述展开矩阵与所述第一张量的映射关系;根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息。
在一种可能的实现方式中,根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息,包括:根据所述展开矩阵坐标、所述卷积核元素坐标,从所述展开矩阵中确定待访问的所述第二张量;根据所述展开矩阵与所述第一张量的所述映射关系,确定所述第二张量在所述第一张量中对应的多个元素;将所述第二张量在所述第一张量中对应的多个元素的地址信息,确定为所述第二张量的地址信息。
在一种可能的实现方式中,根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器,包括:在所述第二张量的尺寸大于读取带宽的情况下,根据所述第二张量的地址信息,将用于从所述全局存储器中读取第二张量至所述局部存储器的第一访存请求,拆分为多个第二访存请求,每个第二访存请求用于从所述全局存储器中读取第二张量中不同部分的拆分数据至局部存储器;根据多个第二访存请求,将所述全局存储器中构成第二张量的多个拆分数据串行写入局部存储器。
在一种可能的实现方式中,所述第一张量的所述张量信息存储在全局存储器,待访问的所述第二张量的所述访问信息存储在寄存器。
在一种可能的实现方式中,所述第一张量包括深度学习任务中的特征数据,所述特征数据包括图像特征数据、语音特征数据、文本特征数据中的至少一种。
根据本公开的一方面,提供了一种数据处理装置,包括:确定模块,用于根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;读取模块,用于根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;触发模块,用于响应于所述局部存储器接收到所述第二张量,触发中断。
在一种可能的实现方式中,所述确定模块用于:在待访问的所述第二张量为所述第一张量的分块数据,所述访问信息包括所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸的情况下,根据所述第一张量的张量信息、所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,从所述第一张量的地址中确定所述第二张量的地址信息。
在一种可能的实现方式中,所述确定模块还用于:根据第一张量的张量信息、待访问的第二张量的访问信息,对所述第二张量进行边界检查,得到所述第二张量的检查结果;在所述检查结果指示所述第二张量的第一部分位于所述第一张量之内,所述第二张量的第二部分位于所述第一张量之外的情况下,根据第一张量的张量信息、第二张量的访问信息,确定所述第二张量的第一部分的地址信息;所述读取模块用于:在第一张量的张量信息包括填充标识的情况下,根据第二张量的第一部分的地址信息,从存储第一张量的全局存储器中读取第二张量的第一部分至局部存储器,根据所述填充标识,对所述第二张量的第二部分进行填充,得到所述第二张量的第二部分;将所述第二张量的第二部分写入局部存储器。
在一种可能的实现方式中,所述确定模块用于:在待访问的所述第二张量为卷积核中任意一个或多个元素在所述第一张量中对应的覆盖数据,所述访问信息包括展开矩阵坐标、卷积核元素坐标的情况下,获取所述展开矩阵与所述第一张量的映射关系;根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息;其中,所述展开矩阵是在第一张量中,根据描述信息依次将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成的矩阵,所述描述信息包括卷积描述信息、反卷积描述信息。
在一种可能的实现方式中,根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息,包括:根据所述展开矩阵坐标、所述卷积核元素坐标,从所述展开矩阵中确定待访问的所述第二张量;根据所述展开矩阵与所述第一张量的所述映射关系,确定所述第二张量在所述第一张量中对应的多个元素;将所述第二张量在所述第一张量中对应的多个元素的地址信息,确定为所述第二张量的地址信息。
在一种可能的实现方式中,所述读取模块用于:在所述第二张量的尺寸大于读取带宽的情况下,根据所述第二张量的地址信息,将用于从所述全局存储器中读取第二张量至所述局部存储器的第一访存请求,拆分为多个第二访存请求,每个第二访存请求用于从所述全局存储器中读取第二张量中不同部分的拆分数据至局部存储器;根据多个第二访存请求,将所述全局存储器中构成第二张量的多个拆分数据串行写入局部存储器。
在一种可能的实现方式中,所述第一张量的所述张量信息存储在全局存储器,待访问的所述第二张量的所述访问信息存储在寄存器。
在一种可能的实现方式中,所述第一张量包括深度学习任务中的特征数据,所述特征数据包括图像特征数据、语音特征数据、文本特征数据中的至少一种。
根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行用于实现上述方法。
在本公开实施例中,根据第一张量的张量信息、待访问的第二张量的访问信息,确定第二张量的地址信息,并根据第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;响应于局部存储器接收到所述第二张量,触发中断。通过这种方式,可以根据第一张量的张量信息、待访问的第二张量的访问信息,从存储第一张量的全局存储器中快速读取第二张量至局部存储器,提高了张量存储的效率和灵活性,并且,每当局部存储器接收到一次第二张量,可以触发一次中断,实现张量读取过程的异步。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的数据处理方法的流程图。
图2示出根据本公开实施例的硬件架构示意图。
图3示出根据本公开实施例的一种确定第二张量的地址信息的示意图。
图4示出根据本公开实施例的另一种确定第二张量的地址信息的示意图。
图5示出根据本公开实施例的第一张量与展开矩阵映射关系的示意图。
图6示出根据本公开实施例的数据处理装置的框图。
图7示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
随着深度学习与神经网络的广泛应用,数据经常用张量(Tensor)的形式来存储,张量可以将向量和矩阵推广到任意维度。相关技术中,处理器(例如包括通用图形处理器(General-Purpose Computing on Graphics Processing Units,GPGPU))访问存储了张量的存储空间,需要对存储空间进行分解,处理器的每个线程访问其中的一部分,并且,在每个线程访问其负责的部分存储空间的过程中,还需要加入大量的地址计算指令,以及边界检查指令。这种方式访问张量存储空间的效率较低,同时由于单条指令访问存储空间会有空间大小的限制,访问占用较大存储空间的张量需要多条指令的配合使用,使用过程中不够灵活,也影响了访存性能的提升。
有鉴于此,为了提高张量存储的效率和灵活性,本公开实施例提供了一种数据处理方法,图1示出根据本公开实施例的数据处理方法的流程图,如图1所示,所述数据处理方法包括:
在步骤S11中,根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;
在步骤S12中,根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;
在步骤S13中,响应于所述局部存储器接收到所述第二张量,触发中断。
本公开实施例的数据处理方法,可以根据第一张量的张量信息、待访问的第二张量的访问信息,从存储第一张量的全局存储器中快速读取第二张量至局部存储器,提高了张量存储的效率和灵活性,并且,每当局部存储器接收到一次第二张量,可以触发一次中断,实现张量读取过程的异步。
在一种可能的实现方式中,本公开实施例的数据处理方法可以由张量存储引擎执行,该张量存储引擎是处理器芯片中用于实现数据搬移的硬件模块,其中,处理器芯片可以是全新设计的,也可以是对已有处理器芯片进行改进后得到的,处理器芯片的类型可包括但不限于:中央处理器(Central Processing Unit,CPU)、图形处理器(GraphicProcessing Unit,GPU)、通用图形处理器(General-Purpose Computing on GraphicsProcessing Units,GPGPU)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、张量处理器(TensorProcessing Unit,TPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件,还可以包括微处理器或其他常规处理器的处理器。
在一种可能的实现方式中,处理器芯片中可以包括一个或多个张量存储引擎,本公开对处理器芯片中张量存储引擎的数量不作限制。
在示例中,针对单核单线程的处理器芯片,可以在处理器芯片设置一个张量存储引擎,用于对处理器芯片外的全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至处理器芯片内与张量存储引擎对应的局部存储器。
在示例中,针对多核多线程的处理器芯片,可以在处理器芯片设置多个张量存储引擎。例如,假设处理器芯片包括N个(N≥2)计算核(Core),每个计算核可以并行执行M个(M≥2)线程,可以分别为每个计算核设置一个张量存储引擎,每个计算核中的M个线程可以共用一个张量存储引擎,以及一个局部存储器,该张量存储引擎用于对多个计算核共用的全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至计算核内的局部存储器。或者,也可以分别为每个计算核设置M个张量存储引擎,每个计算核中的每个线程可以对应一个张量存储引擎,以及一个局部存储器,该张量存储引擎用于对多个计算核共用的全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至计算核内该张量存储引擎对应的局部存储器。
在示例中,针对多核单线程的处理器芯片,可以在处理器芯片设置多个张量存储引擎。例如,假设处理器芯片包括N个(N≥2)单线程的计算核(Core),可以分别为每个计算核设置一个张量存储引擎,该张量存储引擎用于对多个计算核共用的全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至计算核内的局部存储器。
在示例中,针对单核多线程的处理器芯片,可以在处理器芯片设置多个张量存储引擎。例如,假设处理器芯片可以并行执行M个(M≥2)线程,每个线程可以对应一个张量存储引擎,以及一个局部存储器,每个张量存储引擎可用于对多个线程共用的全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至该张量存储引擎对应的局部存储器。
在一种可能的实现方式中,图2示出根据本公开实施例的硬件架构示意图,如图2所示,张量存储引擎分别与全局存储器与局部存储器连接,可用于对全局存储器和局部存储器执行读操作和/或写操作,并且,张量存储引擎还可以用于接收第一张量的张量信息、第二张量的访问信息,以便于从存储了第一张量的全局存储器中搬运第二张量至局部存储器,并响应于局部存储器接收到第二张量触发中断。
下面对张量存储引擎实现本公开实施例的数据处理方法进行示例性地说明。
在步骤S11中,根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息。
在一种可能的实现方式中,第一张量为多维张量,可以看作多维矩阵,例如,第一张量可以是二维张量、三维张量、四维张量或其它更多维的张量数据,本申请的实施例对第一张量的维数不作限制。
在一种可能的实现方式中,所述第一张量包括深度学习任务中的特征数据,所述特征数据包括图像特征数据、语音特征数据、文本特征数据中的至少一种。
例如,在使用深度神经网络对目标对象进行人脸识别的场景下,第一张量可以是图像特征数据,可以在全局存储器中存储目标对象的图像特征数据(例如人脸特征图);在使用深度神经网络对目标对象进行语音识别的场景下,第一张量可以是语音特征数据,可以在全局存储器中存储目标对象的语音特征数据;在使用深度神经网络对目标文档进行文字识别的场景下,第一张量可以是文本特征数据,可以在全局存储器中存储目标文档的文本特征数据;本申请的实施例对第一张量的类型不作限制。
在一种可能的实现方式中,第一张量的张量信息可以包括第一张量的数据结构信息和第一张量的地址信息;其中,第一张量的数据结构信息例如包括第一张量的维度、第一张量的尺寸、第一张量中元素的数据类型(例如整数类型、单精度浮点数类型、双精度浮点数类型、字符型等)等用于描述第一张量的信息;第一张量的地址信息例如包括第一张量在全局存储器中的基地址(Base Address)、寻址空间等与地址相关的信息。
其中,由于第一张量的张量信息的内容较多,可以将第一张量的张量信息存储在全局存储器中。
在一种可能的实现方式中,在待访问的所述第二张量为所述第一张量的分块数据的情况下,所述访问信息包括:所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,步骤S11可包括:根据所述第一张量的张量信息、所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,从所述第一张量的地址中确定所述第二张量的地址信息。
示例性地,图3示出根据本公开实施例的一种确定第二张量的地址信息的示意图。如图3所示,待访问的第二张量block是第一张量tensor的分块数据,并且第二张量block可以是第一张量tensor中任一局部区域内的数据。
第一张量tensor为二维张量,第一张量tensor的张量信息包括:用于确定第一张量tensor在全局存储器中存储位置的基地址tensor_base_address、第一张量tensor在水平维度的尺寸tensor_dim[0]、第一张量tensor在竖直维度的尺寸tensor_dim[1]。其中,由于第一张量tensor在最低维度(例如水平维度或竖直维度)是地址连续的,张量存储引擎可以根据第一张量tensor的基地址tensor_base_address,以及第一张量tensor中各元素的位置,访问第一张量tensor中的各元素。
如图3所示,第二张量block的访问信息包括:第二张量block在第一张量tensor中的位置block_pos、第二张量block在水平维度的尺寸block_dim[0]、第二张量block在竖直维度的尺寸block_dim[1]。
张量存储引擎可以根据第一张量tensor的张量信息中的基地址tensor_base_address、第二张量block在第一张量tensor中的位置block_pos,确定第二张量block的基地址block_base_address。
张量存储引擎可以根据第二张量block在水平维度的尺寸block_dim[0],以及第二张量block在竖直维度的尺寸block_dim[1],确定第二张量block的寻址空间的大小为block_dim[0]×block_dim[1]。
张量存储引擎可以根据第二张量block的基地址block_base_address,第二张量block的寻址空间的大小block_dim[0]×block_dim[1],确定要访问的第二张量block在全局存储器中的地址信息。
通过这种方式,张量存储引擎可以根据第一张量的张量信息、要访问的第二张量的访问信息,从第一张量的地址中快速准确地确定第二张量(例如第一张量中任意的分块数据)的地址信息。
在待访问的所述第二张量为所述第一张量的边缘处的分块数据的情况下,可能会存在第二张量的部分区域数据不在第一张量之内。在一种可能的实现方式中,所述方法还包括:可以先根据第一张量的张量信息、待访问的第二张量的访问信息,对所述第二张量进行边界检查,得到所述第二张量的检查结果,所述检查结果用于判断所述第二张量是否位于所述第一张量之内;在所述检查结果指示出所述第二张量的第一部分位于所述第一张量之内,所述第二张量的第二部分位于所述第一张量之外的情况下,根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的第一部分的地址信息。
其中,第一张量的张量信息还包括填充标识(例如数字0、数字1等),张量存储引擎可以根据填充标识,对所述第二张量的第二部分进行填充,得到所述第二张量的第二部分,以便在后续的步骤S12中,除了根据第二张量的第一部分的地址信息,从存储了第一张量的全局存储器中读取第二张量的第一部分至局部存储器;还会同步将所述第二张量的第二部分写入局部存储器,以使局部存储器存储完整的第二张量。
图4示出根据本公开实施例的一种确定第二张量的第一部分的地址信息的示意图。如图4所示,第一张量tensor的张量信息包括:用于确定第一张量tensor在全局存储器中存储位置的基地址tensor_base_address、第一张量tensor在水平维度的尺寸tensor_dim[0]、第一张量tensor在竖直维度的尺寸tensor_dim[1]。第二张量block的访问信息包括:第二张量block在第一张量tensor中的位置block_pos、第二张量block在水平维度的尺寸block_dim[0]、第二张量block在竖直维度的尺寸block_dim[1]。其中,第二张量block在第一张量tensor中的位置block_pos包括:第二张量block在第一张量tensor中水平维度的位置block_pos[0],以及第二张量block在第一张量tensor中竖直维度的位置block_pos[1]。
可以先根据第一张量tensor的张量信息、待访问的第二张量block的访问信息,得到所述第二张量block的检查结果,该检查结果用于判断第二张量block是否位于第一张量tensor之内。
如果第二张量block在第一张量tensor中水平维度的位置block_pos[0],与第二张量block在水平维度的尺寸block_dim[0]的加和结果,小于或等于第一张量tensor在水平维度的尺寸tensor_dim[0],即:(block_pos[0]+block_dim[0])≤tensor_dim[0],并且,第二张量block在第一张量tensor中竖直维度的位置block_pos[1],与第二张量block在竖直维度的尺寸block_dim[1]的加和结果,小于或等于第一张量tensor在竖直维度的尺寸tensor_dim[1],即:(block_pos[1]+block_dim[1])≤tensor_dim[1],可以判断出第二张量block位于第一张量tensor之内,可以参考上文图3所示的方式确定第二张量block的地址信息,此处不再赘叙。
如果第二张量block在第一张量tensor中水平维度的位置block_pos[0],与第二张量block在水平维度的尺寸block_dim[0]的加和结果,大于第一张量tensor在水平维度的尺寸tensor_dim[0],即:(block_pos[0]+block_dim[0])>tensor_dim[0],和/或,第二张量block在第一张量tensor中竖直维度的位置block_pos[1],与第二张量block在竖直维度的尺寸block_dim[1]的加和结果,大于第一张量tensor在竖直维度的尺寸tensor_dim[1],即:(block_pos[1]+block_dim[1])>tensor_dim[1],可以判断出存在第二张量block的部分区域数据不在第一张量tensor之内。如图4所示,待访问的第二张量block的第一部分位于第一张量tensor之内,且第二张量block的第二部分位于第一张量tensor之外。
在第二张量block的第一部分位于第一张量tensor之内,第二张量block的第二部分位于第一张量tensor之外的情况下,张量存储引擎可以根据第一张量tensor的张量信息、待访问的第二张量block的访问信息,确定第二张量block的第一部分的地址信息。
在示例中,张量存储引擎可以根据第一张量tensor的张量信息中的基地址tensor_base_address、第二张量block在第一张量tensor中的位置block_pos,确定第二张量block的基地址block_base_address,也即第二张量block的第一部分的基地址block_base_address。
可选的,在(block_pos[0]+block_dim[0])>tensor_dim[0],并且,(block_pos[1]+block_dim[1])>tensor_dim[1]的情况下,张量存储引擎可以根据第一张量tensor在水平维度的尺寸tensor_dim[0]、第一张量tensor在竖直维度的尺寸tensor_dim[1]、第二张量block在第一张量tensor中水平维度的位置block_pos[0]、第二张量block在第一张量tensor中竖直维度的位置block_pos[1],确定第二张量block的第一部分的寻址空间的大小,即:(tensor_dim[0]-block_pos[0])×(tensor_dim[1]-block_pos[1])。
张量存储引擎可以根据第二张量block的基地址block_base_address,第二张量block的第一部分的寻址空间的大小(tensor_dim[0]-block_pos[0])×(tensor_dim[1]-block_pos[1]),确定要访问的第二张量block的第一部分在全局存储器中的地址信息。
可选的,在(block_pos[0]+block_dim[0])>tensor_dim[0],并且,(block_pos[1]+block_dim[1])≤tensor_dim[1]的情况下(参见图4),张量存储引擎可以根据第一张量tensor在水平维度的尺寸tensor_dim[0]、第二张量block在第一张量tensor中水平维度的位置block_pos[0]、第二张量block在竖直维度的尺寸block_dim[1],确定第二张量block的第一部分的寻址空间的大小,即:(tensor_dim[0]-block_pos[0])×block_dim[1]。
张量存储引擎可以根据第二张量block的基地址block_base_address,第二张量block的第一部分的寻址空间的大小(tensor_dim[0]-block_pos[0])×block_dim[1],确定要访问的第二张量block的第一部分在全局存储器中的地址信息。
可选的,在(block_pos[0]+block_dim[0])≤tensor_dim[0],并且,(block_pos[1]+block_dim[1])>tensor_dim[1]的情况下,张量存储引擎可以根据第一张量tensor在竖直维度的尺寸tensor_dim[1]、第二张量block在第一张量tensor中竖直维度的位置block_pos[1]、第二张量block在水平维度的尺寸block_dim[0],确定第二张量block的第一部分的寻址空间的大小,即:block_dim[0]×(tensor_dim[1]-block_pos[1])。
张量存储引擎可以根据第二张量block的基地址block_base_address,第二张量block的第一部分的寻址空间的大小block_dim[0]×(tensor_dim[1]-block_pos[1]),确定要访问的第二张量block的第一部分在全局存储器中的地址信息。
其中,第一张量tensor的张量信息还包括填充标识(例如数字0、数字1等),张量存储引擎可以根据填充标识,对所述第二张量block的第二部分进行填充,得到所述第二张量block的第二部分,以便在后续的步骤S12中,除了根据第二张量block的第一部分的地址信息,从存储了第一张量tensor的全局存储器中读取第二张量block的第一部分至局部存储器;还会同步将填充后的第二张量block的第二部分写入局部存储器,以使局部存储器存储完整的第二张量block。
通过这种方式,可以根据第一张量的张量信息、第二张量在第一张量中的位置,以及第二张量的尺寸,从第一张量的地址中确定第二张量的地址信息,第二张量可以是对第一张量进而任意大小裁切所得的分块数据,有利于后续张量存储引擎通过单条指令就可以从全局存储器中访问占用较大空间的第一张量中的任意分块数据,提高了本公开实施例的数据处理方法适用性。并且,张量存储引擎还可以实现针对分块数据的自动地址计算以及边界检查,同时对于越界访问可以实现任意常数值的填充处理。
在一种可能的实现方式中,卷积核可以在第一张量上通过滑动的方式遍历整个第一张量,为了便于第一张量的卷积运算和/或反卷积运算,进一步提高本公开实施例数据处理方法的适用性,在待访问的所述第二张量为卷积核中任意一个或多个元素在所述第一张量中对应的覆盖数据的情况下,所述访问信息包括:展开矩阵坐标、卷积核元素坐标,所述展开矩阵是在第一张量中,根据描述信息依次将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成的矩阵,所述描述信息包括卷积描述信息、反卷积描述信息,步骤S11可包括:获取所述展开矩阵与所述第一张量的映射关系;根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息。
其中,第一张量的张量信息可以包括第一张量的数据结构信息(例如包括第一张量的维度、第一张量的尺寸、第一张量中元素的数据类型等)和第一张量的地址信息(例如包括第一张量在全局存储器中的基地址、寻址空间等)。所述映射关系用于确定展开矩阵中各元素在全局存储空间中的地址信息;所述展开矩阵坐标和卷积核元素坐标用于在展开矩阵中定位第二张量。
其中,描述信息用于提供将原始矩阵展开为适合卷积核的展开矩阵的展开方式,该描述信息包括卷积核大小,卷积核的步幅stride,填充数量padding以及膨胀缩率dilation_rate等。其中,如果描述信息为反卷积描述信息,并且反卷积描述信息中的步幅stride大于1,在将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成展开矩阵的过程中,可以根据第一张量的张量信息包括的填充标识(例如数字0、数字1等),对覆盖数据中每个元素之间进行常量值填充操作。
图5示出根据本公开实施例的第一张量与展开矩阵映射关系的示意图。如图5所示,张量存储引擎根据获取的第一张量的张量信息,可知,第一张量为四维张量N×Cx×H×W(参见图5上侧的两个长方体,其尺寸为2×2×5×4),其中N表示批次(Batch)所在的维度,Cx表示通道(Channel)所在的维度,H表示高度所在的维度,W表示宽度所在的维度。
如图5所示,第一张量中的数字标号0~79用于区分第一张量的元素,每个元素在全局存储器中占用128字节(16进制表示为:80HB)的存储空间。这样,假设第一张量在全局存储器中的基地址为address,第一张量的元素0在全局存储器中的地址信息为address~(address+007FH),第一张量的元素1在全局存储器中的地址信息为(address+0080H)~(address+00FFH),第一张量的元素2在全局存储器中的地址信息为(address+0100H)~(address+017FH),以此类推,第一张量的元素79在全局存储器中的地址信息为(address+2780H)~(address+27FFH)。
图5中下侧所是的二维矩阵是第一张量的展开矩阵,该展开矩阵是在第一张量中,根据卷积描述信息(例如,卷积核尺寸为3×3,卷积核的步幅stride为1,填充数量padding为0),按照卷积核滑动的顺序依次将卷积核感受野对应的覆盖数据转换为相应的行向量,按行或列排列成的二维矩阵。
如图5所示,假设P表示卷积核在高度方向滑动的位置,Q表示卷积核在宽度方向滑动的位置,Cx表示在通道方向滑动的位置,N表示卷积核在第一张量的N1×Cx×H×W部分滑动,还是在第一张量的N2×Cx×H×W部分滑动。
如图5灰色部分,第一次卷积核在宽度方向滑动至Q0位置,在高度方向滑动至P0位置,在宽度方向滑动至Cx=0位置,卷积核感受野在第一张量的N1×Cx×H×W部分对应的覆盖数据为可以将其转换为[0 1 2 4 5 6 8 9 10],卷积核感受野在第一张量的N2×Cx×H×W部分对应的覆盖数据为可以将其转换为[40 41 42 444546 48 49 50]。
第二次卷积核在宽度方向滑动至Q1位置,在高度方向还是保持在P0位置,在宽度方向滑动至Cx=0位置,卷积核感受野在第一张量的N1×Cx×H×W部分对应的覆盖数据为可以将其转换为[1 2 3 5 6 7 9 10 11],卷积核感受野在第一张量的N2×Cx×H×W部分对应的覆盖数据为可以将其转换为[41 42 43 45 46 47 495051]。
第三次卷积核在宽度方向滑动至Q0位置,在高度方向还是保持在P1位置,在宽度方向滑动至Cx=0位置,卷积核感受野在第一张量的N1×Cx×H×W部分对应的覆盖数据为可以将其转换为[4 5 6 8 9 10 12 13 14],卷积核感受野在第一张量的N2×Cx×H×W部分对应的覆盖数据为可以将其转换为[44 45 46 48 49 505253 54]。
以此类推,直至第12次卷积核在宽度方向滑动至Q1位置,在高度方向滑动至P2位置,在宽度方向滑动至Cx=1位置,卷积核感受野在第一张量的N1×Cx×H×W部分对应的覆盖数据为可以将其转换为[29 30 31 33 34 35 37 38 39],卷积核感受野在第一张量的N2×Cx×H×W部分对应的覆盖数据为可以将其转换为[697071 73 74 75 77 78 79]。
将这12次的覆盖数据转换之后的行向量,按行或列排列得到如图5所示的展开矩阵。可根据第一张量与展开矩阵中相同数字标号的元素的对应关系,获取展开矩阵与第一张量的映射关系。在示例中,张量存储引擎可以直接获取用户输入的展开矩阵与第一张量的映射关系;或者,张量存储引擎可以先根据获取的第一张量的张量信息和描述信息,对从全局存储器中读取的第一张量进行如上文所述的展开处理,确定展开矩阵,再根据第一张量与展开矩阵的对应关系,获取展开矩阵与第一张量的映射关系。
应当理解,图5示出的是描述信息为卷积描述信息的情况,如果描述信息是反卷积描述信息,可以参考上文的介绍,并在反卷积描述信息中卷积核的步幅stride大于1的情况下,在展开矩阵中每个元素之间进行常量值填充操作,此处不再赘叙。
在一种可能的实现方式中,根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息,包括:根据所述展开矩阵坐标、所述卷积核元素坐标,从所述展开矩阵中确定待访问的所述第二张量;根据所述展开矩阵与所述第一张量的所述映射关系,确定所述第二张量在所述第一张量中对应的多个元素;将所述第二张量在所述第一张量中对应的多个元素的地址信息,确定为所述第二张量的地址信息。
在如图5所示的展开矩阵中,可以将NPQ做为展开矩阵在竖直维度的坐标,用于定位展开矩阵中的某一行,例如N1P0Q0表示第一行,N1P0Q1表示第二行,N1P1Q0表示第三行,N1P1Q1表示第四行,N1P2Q0表示第五行,N1P2Q1表示第六行,N2P0Q0表示第七行,N2P0Q1表示第八行,N2P1Q0表示第九行,N2P1Q1表示第十行,N2P2Q0表示第十一行,N2P2Q1表示第十二行。
可以将Cx作为展开矩阵的在水平维度的坐标,Cx=0用于定位展开矩阵左侧的8列,Cx=1用于定位展开矩阵右侧的8列。
RS为卷积核元素的坐标,R表示卷积核竖直维度的坐标,用于定位卷积核的某一行,S表示卷积核水平维度的坐标,用于定位卷积核的某一列,例如R=0,S=0表示第一行的第一列的卷积核元素,R=0,S=1表示第一行的第二列的卷积核元素,R=0,S=2表示第一行的第三列的卷积核元素,R=1,S=0表示第二行的第一列的卷积核元素,R=1,S=1表示第一行的第二列的卷积核元素,R=1,S=2表示第二行的第三列的卷积核元素,R=2,S=0表示第三行的第一列的卷积核元素,R=2,S=1表示第三行的第二列的卷积核元素,R=2,S=2表示第三行的第三列的卷积核元素。
根据展开矩阵的在水平维度的坐标Cx,以及卷积核元素坐标RS,可以在展开矩阵中定位任意的一列或多列的第二张量,也即卷积核中任意一个或多个元素在第一张量中对应的覆盖数据。
例如,Cx=0,R=0,S=0表示展开矩阵中的第一列,也即卷积核中第一行第一列元素经过多次(例如12次)滑动在第一张量中对应的覆盖数据;Cx=0,R=0,S=1表示展开矩阵中的第二列,也即卷积核中第一行第二列元素经过多次(例如12次)滑动在第一张量中对应的覆盖数据;以此类推,Cx=1,R=2,S=2表示展开矩阵中的第十八列(最后一列),也即卷积核中第三行第三列元素经过多次(例如12次)滑动在第一张量中对应的覆盖数据。
在展开矩阵中定位到任意的一列或多列的第二张量,可以根据展开矩阵与第一张量的映射关系,确定第二张量在第一张量中对应的多个元素,并将第二张量在第一张量中对应的多个元素的地址信息,确定为第二张量的地址信息。
例如,假设第二张量为展开矩阵中的第一列[0 1 4 5 8 9 40 41 44 45 48 49],其对应卷积核中第一行第一列元素在第一张量中的覆盖数据,可以根据展开矩阵与第一张量的映射关系,从第一张量中获取与展开矩阵中第一列各元素编号相同的元素,将第一张量中元素[0 1 4 5 8 9 40 41 44 45 48 49]的地址,确定为第二张量的地址信息。
又例如,假设第二张量为展开矩阵中的第二列[1 2 5 6 9 10 41 42 45 46 4950],其对应卷积核中第一行第二列元素在第一张量中的覆盖数据,可以根据展开矩阵与第一张量的映射关系,从第一张量中获取与展开矩阵中第二列各元素编号相同的元素,将第一张量中元素[1 2 5 6 9 10 41 42 45 46 49 50]的地址,确定为第二张量的地址信息。
在实际的应用中,可以将上述过程封装为TensorMemoryEngine指令,可以用于访问展开矩阵中的一列或者多列(对应一个或多个卷积核元素覆盖的第一张量的元素),有利于张量存储引擎通过单条指令从全局存储器中访问占用较大空间的第一张量中,对应任意一个或多个卷积核元素的覆盖数据。伪代码如下:
这样,张量存储引擎可以不执行将第一张量展开为展开矩阵的过程,更不用占用大量的存储空间记录第一张量的展开矩阵,在未获取展开矩阵的场景下,张量存储引擎就可以根据展开矩阵坐标NPQCx、卷积核元素坐标RS,算出展开矩阵中任一元素在第一张量中的坐标(例如一个或多个卷积核元素覆盖的第一张量的元素的坐标),有利于使用少量的硬件资源来简化软件的实现逻辑(例如软件实现卷积运算与反卷积运算)。
通过这种方式,张量存储引擎可以根据第一张量的张量信息、要访问的第二张量的访问信息(例如展开矩阵坐标、卷积核元素坐标),从第一张量的地址中快速准确地确定第二张量(例如卷积核中任意一个或多个元素在第一张量中对应的覆盖数据)的地址信息。
在本公开实施例的数据处理方法中,第二张量可以是第一张量的分块数据,也可以是卷积核中任意一个或多个元素在第一张量中对应的覆盖数据,还可以是由覆盖数据以及覆盖数据中各元素间进行常量值填充构成的数据,可支持第一张量的分块载入、对第一张量进行适用于卷积运算的展开数据的分块载入、以及对第一张量进行适用于反卷积运算的展开数据的分块载入,将多种载入模式进行了统一,对用户编程更友好。
在一种可能的实现方式中,所述第一张量的所述张量信息存储在全局存储器,待访问的所述第二张量的所述访问信息存储在寄存器。
由于第一张量的张量信息的内容较多,并且第一张量的张量信息不会轻易发送变动,可以将第一张量的张量信息存储在全局存储器中。由于要访问的第二张量是第一张量中任一区域的分块数据,或者,要访问的第二张量是卷积核中任意一个或多个元素在第一张量中对应的覆盖数据,第二张量的访问信息是变化的,可以将第二张量的访问信息存放在寄存器中,便于在程序运行中对其进行改变。
这种将不变的第一张量的张量信息存储在全局存储器,将变动的待访问的第二张量的访问信息存储在寄存器的方式,按照信息是否容易发生变动,将各种信息分别放到不同的地方,有利于提高数据处理的灵活性和处理效率。
对比相关技术中的同步内存访问方法,需要把数据加载到寄存器堆,例如,对于通用图形处理器(General-Purpose Computing on Graphics Processing Units,GPGPU)单指令多线程(SIMT)架构,每个线程的寄存器是相互隔离的,无法进行共享,还需要把数据从寄存器搬运到共享存储空间。而在本公开的实施例中,由于张量存储引擎与存储了第二张量访问信息的寄存器相连接,张量存储引擎可以随时访问该寄存器,以使该张量存储引擎对应的多个线程可以共享该寄存器,并且,本公开实施例的处理方法还可以采用寄存器传递的方式,提高数据处理的灵活性。
在步骤S11中确定了第二张量的地址信息,可在步骤S12中,根据第二张量的地址信息,从存储了第一张量的全局存储器中读取第二张量至局部存储器。其中,局部存储器对比全局存储器更靠近张量存储引擎,张量存储引擎对局部存储器的读写操作可以具有更高的效率。张量存储引擎可以对全局存储器中存储的第一张量进行数据搬移处理,将基于第一张量确定的第二张量,存放至该张量存储引擎对应的局部存储器。
在一种可能的实现方式中,步骤S12可包括:在所述第二张量的尺寸大于读取带宽的情况下,根据所述第二张量的地址信息,将用于从所述全局存储器中读取第二张量至所述局部存储器的第一访存请求,拆分为多个第二访存请求,每个第二访存请求用于从所述全局存储器中读取第二张量中不同部分的拆分数据至局部存储器;根据多个第二访存请求,将所述全局存储器中构成第二张量的多个拆分数据串行写入局部存储器。其中,读取带宽是指单位时间内从存储器中读取数据的能力,可以用每次传输位数(bits)或每次传输字节数(Bytes)来表示存储器的读取带宽。
示例性的,假设全局存储器的读取带宽为128字节,第一访存请求要访问的1024比特的第二张量,其对应的地址是0,但是读取带宽支持最大128比特的访存请求,可以将第一访存请求拆分为八个第二访存请求,即:第二访存请求0~第二访存请求7,其中,第二访存请求0用于从全局存储器中地址0处读取第二张量中128比特的拆分数据0至局部存储器;第二访存请求0用于从全局存储器中地址0处,读取属于第二张量的128比特大小的拆分数据0至局部存储器;第二访存请求1用于从全局存储器中地址128处,读取属于第二张量的128比特大小的拆分数据1至局部存储器;第二访存请求2用于从全局存储器中地址256处,读取属于第二张量的128比特大小的拆分数据2至局部存储器;第二访存请求3用于从全局存储器中地址384处,读取属于第二张量的128比特大小的拆分数据3至局部存储器;第二访存请求4用于从全局存储器中地址512处,读取属于第二张量的128比特大小的拆分数据4至局部存储器;第二访存请求5用于从全局存储器中地址640处,读取属于第二张量的128比特大小的拆分数据5至局部存储器;第二访存请求6用于从全局存储器中地址768处,读取属于第二张量的128比特大小的拆分数据6至局部存储器;第二访存请求7用于从全局存储器中地址896处,读取属于第二张量的128比特大小的拆分数据7至局部存储器。然后,可以根据第二访存请求0~第二访存请求7,将全局存储器中构成第二张量的拆分数据0~拆分数据7串行写入局部存储器。应当理解,本公开对第二张量的大小、读取带宽的大小不作具体限制,可根据实际的应用场景进行设置。
通过这种方式,如果全局存储器中第二张量的大小超过存储系统支持的最大粒度,可以拆分做串行处理,提高了本公开实施例的数据处理方法的适用性。并且,在本公开的实施例中,全局存储器的读取带宽小于局部存储器的读取带宽,将数据(例如第二张量)从全局存储器读取到局部存储器,局部存储器可以被复用多次,减少对全局存储器的带宽压力。
在步骤S12中从存储了第一张量的全局存储器中读取第二张量至局部存储器,可在步骤S13中,响应于局部存储器接收到第二张量,触发中断。在步骤S12中,张量存储引擎对第二张量进行从全局存储器至局部存储器的搬运过程,其所消耗的时间可能会比较长,在等待局部存储器接收到第二张量触发中断之前,张量存储引擎可以异步的执行其他指令,进一步提高处理效率。
这样,通过设置中断唤醒机制,可以不用按照流水线的方式(例如,在数据搬运到目的地才可以执行下一条指令),而是可以在当前指令发出去之后,就可以执行其他指令,并等待当前指令完成给处理器内核发送信号触发中断,唤醒当前的指令,效率会更高。
本公开实施例的数据处理方法,可以根据第一张量的张量信息、待访问的第二张量的访问信息,从存储了第一张量的全局存储器中快速读取第二张量至局部存储器,提高了张量存储的效率和灵活性,并且,每当局部存储器接收到一次第二张量,可以触发一次中断,实现张量读取过程的异步。
其中,本公开实施例的第二张量可以是第一张量的分块数据,也可以是卷积核中任意一个或多个元素在第一张量中对应的覆盖数据,还可以是由覆盖数据以及覆盖数据中各元素间进行常量值填充构成的数据,可支持第一张量的分块载入、对第一张量进行适用于卷积运算的展开数据的分块载入、以及对第一张量进行适用于反卷积运算的展开数据的分块载入,将多种载入模式进行了统一,对用户编程更友好。
其中,本公开实施例的处理方法可以将不变的第一张量的张量信息存储在全局存储器,将变动的待访问的第二张量的访问信息存储在寄存器的方式,这种按照信息是否容易发生变动,将各种信息分别放到不同的地方,有利于提高数据处理的灵活性和处理效率。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了数据处理装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种数据处理方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图6示出根据本公开实施例的数据处理装置的框图,如图6所示,所述装置包括:
确定模块61,用于根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;
读取模块62,用于根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;
触发模块63,用于响应于所述局部存储器接收到所述第二张量,触发中断。
在一种可能的实现方式中,所述确定模块61用于:在待访问的所述第二张量为所述第一张量的分块数据,所述访问信息包括所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸的情况下,根据所述第一张量的张量信息、所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,从所述第一张量的地址中确定所述第二张量的地址信息。
在一种可能的实现方式中,所述确定模块61还用于:根据第一张量的张量信息、待访问的第二张量的访问信息,对所述第二张量进行边界检查,得到所述第二张量的检查结果;在所述检查结果指示所述第二张量的第一部分位于所述第一张量之内,所述第二张量的第二部分位于所述第一张量之外的情况下,根据第一张量的张量信息、第二张量的访问信息,确定所述第二张量的第一部分的地址信息;所述读取模块62用于:在第一张量的张量信息包括填充标识的情况下,根据第二张量的第一部分的地址信息,从存储第一张量的全局存储器中读取第二张量的第一部分至局部存储器,根据所述填充标识,对所述第二张量的第二部分进行填充,得到所述第二张量的第二部分;将所述第二张量的第二部分写入局部存储器。
在一种可能的实现方式中,所述确定模块61用于:在待访问的所述第二张量为卷积核中任意一个或多个元素在所述第一张量中对应的覆盖数据,所述访问信息包括展开矩阵坐标、卷积核元素坐标的情况下,获取所述展开矩阵与所述第一张量的映射关系;根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息;其中,所述展开矩阵是在第一张量中,根据描述信息依次将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成的矩阵,所述描述信息包括卷积描述信息、反卷积描述信息。
在一种可能的实现方式中,根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息,包括:根据所述展开矩阵坐标、所述卷积核元素坐标,从所述展开矩阵中确定待访问的所述第二张量;根据所述展开矩阵与所述第一张量的所述映射关系,确定所述第二张量在所述第一张量中对应的多个元素;将所述第二张量在所述第一张量中对应的多个元素的地址信息,确定为所述第二张量的地址信息。
在一种可能的实现方式中,所述读取模块62用于:在所述第二张量的尺寸大于读取带宽的情况下,根据所述第二张量的地址信息,将用于从所述全局存储器中读取第二张量至所述局部存储器的第一访存请求,拆分为多个第二访存请求,每个第二访存请求用于从所述全局存储器中读取第二张量中不同部分的拆分数据至局部存储器;根据多个第二访存请求,将所述全局存储器中构成第二张量的多个拆分数据串行写入局部存储器。
在一种可能的实现方式中,所述第一张量的所述张量信息存储在全局存储器,待访问的所述第二张量的所述访问信息存储在寄存器。
在一种可能的实现方式中,所述第一张量包括深度学习任务中的特征数据,所述特征数据包括图像特征数据、语音特征数据、文本特征数据中的至少一种。
该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
本公开实施例还提供了一种电子设备,电子设备可以被提供为终端、服务器或其它形态的设备。例如,用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
图7示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图7,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种数据处理方法,其特征在于,包括:
根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;
根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;
响应于所述局部存储器接收到所述第二张量,触发中断。
2.根据权利要求1所述的方法,其特征在于,在待访问的所述第二张量为所述第一张量的分块数据的情况下,所述访问信息包括:所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,
根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息,包括:
根据所述第一张量的张量信息、所述第二张量在所述第一张量中的位置,以及所述第二张量的尺寸,从所述第一张量的地址中确定所述第二张量的地址信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据第一张量的张量信息、待访问的第二张量的访问信息,对所述第二张量进行边界检查,得到所述第二张量的检查结果;
在所述检查结果指示所述第二张量的第一部分位于所述第一张量之内,所述第二张量的第二部分位于所述第一张量之外的情况下,根据第一张量的张量信息、第二张量的访问信息,确定所述第二张量的第一部分的地址信息;
第一张量的张量信息包括填充标识,根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器,包括:
根据第二张量的第一部分的地址信息,从存储第一张量的全局存储器中读取第二张量的第一部分至局部存储器,
根据所述填充标识,对所述第二张量的第二部分进行填充,得到所述第二张量的第二部分;
将所述第二张量的第二部分写入局部存储器。
4.根据权利要求1所述的方法,其特征在于,在待访问的所述第二张量为卷积核中任意一个或多个元素在所述第一张量中对应的覆盖数据的情况下,所述访问信息包括:展开矩阵坐标、卷积核元素坐标,所述展开矩阵是在第一张量中,根据描述信息依次将卷积核感受野对应的覆盖数据转换为相应的列向量或行向量,按行或列排列成的矩阵,所述描述信息包括卷积描述信息、反卷积描述信息,
根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息,包括:
获取所述展开矩阵与所述第一张量的映射关系;
根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息。
5.根据权利要求4所述的方法,其特征在于,根据所述第一张量的张量信息、所述映射关系、所述展开矩阵坐标、所述卷积核元素坐标,从所述第一张量的地址中确定所述第二张量的地址信息,包括:
根据所述展开矩阵坐标、所述卷积核元素坐标,从所述展开矩阵中确定待访问的所述第二张量;
根据所述展开矩阵与所述第一张量的所述映射关系,确定所述第二张量在所述第一张量中对应的多个元素;
将所述第二张量在所述第一张量中对应的多个元素的地址信息,确定为所述第二张量的地址信息。
6.根据权利要求1-5中任一项所述的方法,其特征在于,根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器,包括:
在所述第二张量的尺寸大于读取带宽的情况下,根据所述第二张量的地址信息,将用于从所述全局存储器中读取第二张量至所述局部存储器的第一访存请求,拆分为多个第二访存请求,每个第二访存请求用于从所述全局存储器中读取第二张量中不同部分的拆分数据至局部存储器;
根据多个第二访存请求,将所述全局存储器中构成第二张量的多个拆分数据串行写入局部存储器。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述第一张量的所述张量信息存储在全局存储器,待访问的所述第二张量的所述访问信息存储在寄存器。
8.根据权利要求1-5中任一项所述的方法,其特征在于,所述第一张量包括深度学习任务中的特征数据,所述特征数据包括图像特征数据、语音特征数据、文本特征数据中的至少一种。
9.一种数据处理装置,其特征在于,包括:
确定模块,用于根据第一张量的张量信息、待访问的第二张量的访问信息,确定所述第二张量的地址信息;
读取模块,用于根据所述第二张量的地址信息,从存储第一张量的全局存储器中读取第二张量至局部存储器;
触发模块,用于响应于所述局部存储器接收到所述第二张量,触发中断。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时执行权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至8中任一项所述的方法。
12.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行用于实现权利要求1至8中任一项所述的方法。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311865153.8A CN120277005A (zh) | 2023-12-29 | 2023-12-29 | 数据处理方法及装置、电子设备和存储介质 |
| PCT/CN2024/134081 WO2025139521A1 (zh) | 2023-12-29 | 2024-11-25 | 数据处理方法及装置、电子设备和存储介质 |
| TW113145792A TW202526668A (zh) | 2023-12-29 | 2024-11-27 | 數據處理方法及裝置、電子設備和存儲媒體 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311865153.8A CN120277005A (zh) | 2023-12-29 | 2023-12-29 | 数据处理方法及装置、电子设备和存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120277005A true CN120277005A (zh) | 2025-07-08 |
Family
ID=96216698
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311865153.8A Pending CN120277005A (zh) | 2023-12-29 | 2023-12-29 | 数据处理方法及装置、电子设备和存储介质 |
Country Status (3)
| Country | Link |
|---|---|
| CN (1) | CN120277005A (zh) |
| TW (1) | TW202526668A (zh) |
| WO (1) | WO2025139521A1 (zh) |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109324827A (zh) * | 2017-07-31 | 2019-02-12 | 谷歌有限责任公司 | 访问序言和结尾数据 |
| CN112470133A (zh) * | 2018-07-24 | 2021-03-09 | 美光科技公司 | 可促进张量存储器存取的存储装置和方法 |
| US20210224125A1 (en) * | 2018-10-09 | 2021-07-22 | Huawei Technologies Co., Ltd. | Operation Accelerator, Processing Method, and Related Device |
| CN113722269A (zh) * | 2021-08-26 | 2021-11-30 | 北京大学 | 一种基于昇腾ai处理器的跨步切片算子处理方法及装置 |
| CN115130667A (zh) * | 2021-03-26 | 2022-09-30 | 辉达公司 | 访问张量 |
| US20220405221A1 (en) * | 2019-07-03 | 2022-12-22 | Huaxia General Processor Technologies Inc. | System and architecture of pure functional neural network accelerator |
| CN116483550A (zh) * | 2022-01-12 | 2023-07-25 | 北京希姆计算科技有限公司 | 张量计算图的计算资源分配方法、装置和可读存储介质 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11321092B1 (en) * | 2017-11-08 | 2022-05-03 | Habana Labs Ltd. | Tensor-based memory access |
| CN114764489A (zh) * | 2021-01-13 | 2022-07-19 | 华为技术有限公司 | 张量处理方法、装置、设备及计算机可读存储介质 |
-
2023
- 2023-12-29 CN CN202311865153.8A patent/CN120277005A/zh active Pending
-
2024
- 2024-11-25 WO PCT/CN2024/134081 patent/WO2025139521A1/zh active Pending
- 2024-11-27 TW TW113145792A patent/TW202526668A/zh unknown
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109324827A (zh) * | 2017-07-31 | 2019-02-12 | 谷歌有限责任公司 | 访问序言和结尾数据 |
| CN112470133A (zh) * | 2018-07-24 | 2021-03-09 | 美光科技公司 | 可促进张量存储器存取的存储装置和方法 |
| US20210224125A1 (en) * | 2018-10-09 | 2021-07-22 | Huawei Technologies Co., Ltd. | Operation Accelerator, Processing Method, and Related Device |
| US20220405221A1 (en) * | 2019-07-03 | 2022-12-22 | Huaxia General Processor Technologies Inc. | System and architecture of pure functional neural network accelerator |
| CN115130667A (zh) * | 2021-03-26 | 2022-09-30 | 辉达公司 | 访问张量 |
| CN113722269A (zh) * | 2021-08-26 | 2021-11-30 | 北京大学 | 一种基于昇腾ai处理器的跨步切片算子处理方法及装置 |
| CN116483550A (zh) * | 2022-01-12 | 2023-07-25 | 北京希姆计算科技有限公司 | 张量计算图的计算资源分配方法、装置和可读存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2025139521A1 (zh) | 2025-07-03 |
| TW202526668A (zh) | 2025-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10169513B2 (en) | Method and system for designing FPGA based on hardware requirements defined in source code | |
| CN119312003B (zh) | 数据处理方法及装置、处理器、电子设备和存储介质 | |
| US20190179635A1 (en) | Method and apparatus for tensor and convolution operations | |
| US9239793B2 (en) | Mechanism for using a GPU controller for preloading caches | |
| CN113032007B (zh) | 一种数据处理方法及装置 | |
| US10565131B2 (en) | Main memory including hardware accelerator and method of operating the same | |
| US20190272159A1 (en) | Geometric 64-bit capability pointer | |
| EP2565786A1 (en) | Information processing device and task switching method | |
| CN110414534B (zh) | 图像特征的提取方法、装置、存储介质和电子设备 | |
| CN117609122B (zh) | 一种数据传输系统及方法、电子设备和存储介质 | |
| WO2025218403A1 (zh) | 数据处理方法、处理器、芯片及电子设备 | |
| CN118796272B (zh) | 一种访存方法、处理器、电子设备及可读存储介质 | |
| CN107451070B (zh) | 一种数据的处理方法和服务器 | |
| CN117424827A (zh) | 一种基于分布式深度学习缓存系统的通讯方法和装置 | |
| CN113961485B (zh) | 内存优化方法、装置、终端、存储介质 | |
| CN120045484A (zh) | 数据传输方法及装置、电子设备和存储介质 | |
| CN120277005A (zh) | 数据处理方法及装置、电子设备和存储介质 | |
| US10402164B1 (en) | Method for merge sort by representation | |
| CN116745754A (zh) | 一种访问远端资源的系统及方法 | |
| US20230289298A1 (en) | Method and device for splitting operators, and storage medium | |
| CN118012628A (zh) | 一种数据处理方法、装置和存储介质 | |
| US12530200B2 (en) | System and method for triggering a zero-cycle context switch | |
| CN112099737B (zh) | 存储数据的方法、装置、设备和存储介质 | |
| CN116541314A (zh) | 基于系统页表的地址映射方法、装置和存储介质 | |
| CN116028226A (zh) | 一种基于量子计算设备dpdk组件图像数据排序方法、存储装置和智能终端 |
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 |