CN110673786B - 数据缓存的方法和装置 - Google Patents

数据缓存的方法和装置 Download PDF

Info

Publication number
CN110673786B
CN110673786B CN201910827022.8A CN201910827022A CN110673786B CN 110673786 B CN110673786 B CN 110673786B CN 201910827022 A CN201910827022 A CN 201910827022A CN 110673786 B CN110673786 B CN 110673786B
Authority
CN
China
Prior art keywords
output matrix
data
output
unit
writing
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.)
Active
Application number
CN201910827022.8A
Other languages
English (en)
Other versions
CN110673786A (zh
Inventor
刘海威
董刚
杨宏斌
赵雅倩
李仁刚
史宏志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
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
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201910827022.8A priority Critical patent/CN110673786B/zh
Priority to US17/640,276 priority patent/US11803475B2/en
Priority to EP19944564.4A priority patent/EP4012546B1/en
Priority to PCT/CN2019/121571 priority patent/WO2021042594A1/zh
Publication of CN110673786A publication Critical patent/CN110673786A/zh
Application granted granted Critical
Publication of CN110673786B publication Critical patent/CN110673786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Error Detection And Correction (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供一种数据缓存方法和装置,逐个获取输出矩阵,按照获取各个输出矩阵的先后顺序,将获取的多个输出矩阵交替的写入第一缓存单元的两个队列集合中,并且逐个将第一缓存单元中分行存储的输出矩阵写入第二缓存单元,按写入第二缓存单元的顺序,根据预设的参数逐个确定第二缓存单元的每个输出矩阵的有效数据,并将每个输出矩阵的有效数据写入第三缓存单元,第三缓存单元保存的输出矩阵的有效数据用于根据写入第三缓存单元的先后顺序依次写入到内存中。本方案利用写入速度与处理器计算速度匹配的缓存单元缓存输出矩阵,并将输出矩阵按生成时间的先后逐个完整的写入内存中。因此本发明能够解决处理器的计算速度与内存写入速度不匹配的问题。

Description

数据缓存的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种数据缓存的方法和装置。
背景技术
目前,各种形式的计算机已经被广泛应用于社会生活的各个领域。在计算机的运行过程中,经常会涉及到大量的数据运算。特别是在利用计算机进行卷积神经网络的相关计算时,处理器需要从内存逐个读取输入矩阵,然后对输入矩阵进行卷积计算,再逐个将计算得到的输出矩阵保存在内存中,供下一次计算使用。
其中,处理器的计算速度一般比内存的写入速度(也就是向内存中写入数据的速度)快,如果直接将处理器的输出矩阵写入内存,会出现前一个输出矩阵尚未完全写入,处理器就已经产生下一个输出矩阵的情况,导致前一个输出矩阵的数据丢失。因此,目前亟需一种数据缓存的方法,以解决处理器的计算速度和内存的写入速度不匹配的问题。
发明内容
基于上述现有技术问题,本发明提供一种数据缓存的方法,以解决处理器的计算速度和内存的写入速度不匹配的问题。
本发明第一方面提供一种数据缓存的方法,包括:
从处理器获取输出矩阵;其中,所述输出矩阵为N阶矩阵,N为正整数;
将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中;其中,第一缓存单元预先配置有两个队列集合,目标队列集合是所述两个队列集合中,未用于保存所述输出矩阵的前一个输出矩阵的队列集合;所述第一缓存单元的写入速度与所述处理器的计算速度匹配;
所述第一缓存单元中保存的所述输出矩阵的前一个输出矩阵被写入第二缓存单元后,逐行将所述目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将所述输出矩阵写入所述第二缓存单元;所述第二缓存单元的写入速度与所述处理器的计算速度匹配;
所述第二缓存单元中保存的所述输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元后,根据预设的参数确定所述输出矩阵中的有效数据,并将所述输出矩阵的有效数据写入所述第三缓存单元;其中,所述第三缓存单元中的多个输出矩阵的有效数据用于,按获取输出矩阵的先后顺序依次写入内存中;所述第三缓存单元的写入速度与所述处理器的计算速度匹配。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中之前,还包括:
按预设的数据存储顺序对所述数据矩阵进行重排序,得到重排序后的输出矩阵;
所述将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中,包括:
将所述重排序后的输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中。
可选的,所述将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中之前,还包括:
删除所述输出矩阵的冗余数据,得到过滤后的输出矩阵;
所述将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中,包括:
将所述过滤后的输出矩阵写入第一缓存单元的目标队列集合中;其中,所述过滤后的输出矩阵的M行数据分别保存在所述目标队列集合的M个缓存队列中,所述M是小于或等于N的正整数。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述根据预设的参数确定所述输出矩阵中的有效数据,包括:
根据所述神经网络中预设的步长,确定所述输出矩阵中的有效数据。
可选的,所述利用二维脉动阵列进行卷积计算得到输出矩阵的过程,包括:
将卷积层的输入数据划分为多个输入矩阵;
针对每一个输入矩阵,利用二维脉动阵列对所述输入矩阵进行卷积计算,得到所述输入矩阵对应的输出矩阵。
本发明第二方面提供一种数据缓存的装置,包括:
获取单元,用于从处理器获取输出矩阵;其中,所述输出矩阵为N阶矩阵,N为正整数;
第一写入单元,用于将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中;其中,第一缓存单元预先配置有两个队列集合,目标队列集合是所述两个队列集合中,未用于保存所述输出矩阵的前一个输出矩阵的队列集合;所述第一缓存单元的写入速度与所述处理器的计算速度匹配;
第一缓存单元,用于缓存所述第一写入单元写入的数据;
第二写入单元,用于在所述第一缓存单元中保存的所述输出矩阵的前一个输出矩阵被写入第二缓存单元后,逐行将所述目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将所述输出矩阵写入所述第二缓存单元;所述第二缓存单元的写入速度与所述处理器的计算速度匹配;
第二缓存单元,用于缓存所述第二写入单元写入的数据;
第三写入单元,用于在所述第二缓存单元中保存的所述输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元后,根据预设的参数确定所述输出矩阵中的有效数据,并将所述输出矩阵的有效数据写入所述第三缓存单元;其中,所述第三缓存单元中的多个输出矩阵的有效数据用于,按获取输出矩阵的先后顺序依次写入内存中;所述第三缓存单元的写入速度与所述处理器的计算速度匹配;
第三缓存单元,用于缓存第三写入单元写入的数据。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述第一写入单元具体用于:
按预设的数据存储顺序对所述数据矩阵进行重排序,得到重排序后的输出矩阵;
将所述重排序后的输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中。
可选的,所述第一写入单元具体用于:
删除所述输出矩阵的冗余数据,得到过滤后的输出矩阵;
将所述过滤后的输出矩阵写入第一缓存单元的目标队列集合中;其中,所述过滤后的输出矩阵的M行数据分别保存在所述目标队列集合的M个缓存队列中,所述M是小于或等于N的正整数。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述第三写入单元具体用于:
根据所述卷积神经网络中预设的步长,确定所述输出矩阵中的有效数据。
本发明提供一种数据缓存方法和装置,逐个获取输出矩阵,按照获取各个输出矩阵的先后顺序,将获取的多个输出矩阵交替的写入第一缓存单元的两个队列集合中,并且逐个将第一缓存单元中分行存储的输出矩阵写入第二缓存单元,按写入第二缓存单元的顺序,根据预设的参数逐个确定第二缓存单元的每个输出矩阵的有效数据,并将每个输出矩阵的有效数据写入第三缓存单元,第三缓存单元保存的输出矩阵的有效数据用于根据写入第三缓存单元的先后顺序依次写入到内存中。本方案利用写入速度与处理器计算速度匹配的缓存单元缓存输出矩阵,并将输出矩阵按生成时间的先后逐个完整的写入内存中。因此本发明能够解决处理器的计算速度与内存写入速度不匹配的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种数据缓存的方法的流程图;
图2为本发明实施例提供的一种输出矩阵的冗余数据的示意图;
图3为本发明实施例提供的一种数据缓存的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据缓存的方法,请参考图1,本方法包括下述步骤:
首先需要说明的是,本发明实施例提供的数据缓存方法,可以适用于卷积神经网络的任意一个卷积层的计算过程,还可以适用于其他的需要利用计算机对矩阵形式的数据进行计算的情况。
为了方便理解,下面以卷积神经网络的计算过程为例介绍本实施例提供的方法的实现过程。并且,本实施例中,卷积神经网络的计算是利用二维脉动阵列实现的。
S101、从处理器获取输出矩阵。
其中,输出矩阵为N阶矩阵,N为正整数。
步骤S101提及的处理器,指代用于进行卷积计算的二维脉动阵列。二维脉动阵列是一种常用的处理器架构,二维脉动阵列由多个处理单元构成,这些处理单元能够并行的进行运算,因此二维脉动阵列能够并行的进行大量数据的运算,并且在卷积神经网络等需要对大量的数据进行计算的场合被广泛应用。
卷积神经网络主要由串联的多个卷积层构成,每个卷积层对应一种卷积核,不同的卷积层对应的卷积核尺寸可能不同。例如卷积层1对应的卷积核尺寸为3x3,卷积层2对应的卷积核尺寸为1x1。卷积神经网络中,每一个卷积层均用于,以自身的卷积核作为运算参数,对该卷积层的输入进行卷积运算,得到该卷积层的输出。
其中,卷积神经网络的第一个卷积层的输入,就是这个卷积神经网络的输入,卷积神经网络的最后一个卷积层的输出,就是这个卷积神经网络的输出,除了第一个和最后一个卷积层外,卷积神经网络中的每一个卷积层的输出均作为下一个卷积层的输入。并且,卷积神经网络中的每个卷积层的输入和输出都是矩阵。
本实施例中,二维脉动阵列就用于作为一个计算工具实现卷积神经网络中各个卷积层的卷积运算。然而,在卷积神经网络中应用二维脉动阵列时,二维脉动阵列的输出一般并不能直接作为一个卷积层的输出写入内存,而是需要先对二维脉动阵列的输出进行一定的后处理,然后才能得到一个卷积层的输出。本实施例以二维脉动阵列为例介绍的数据缓存方法中,还包括一些后处理的步骤。
本领域技术人员能够理解,在本申请其他实施例提供的数据缓存方法中,若需要缓存的数据不是二维脉动阵列进行卷积运算后输出的数据,也可以不执行前文提及的后处理步骤。
一般的,利用二维脉动阵列实现卷积神经网络中某个卷积层的卷积运算的过程包括:
将卷积层的输入划分为多个9×9的输入矩阵。
针对每一个输入矩阵,利用二维脉动阵列以及这个卷积层的卷积核,对该输入矩阵进行卷积计算,得到这个输入矩阵对应的输出矩阵。
输出矩阵也是9×9的矩阵。
本实施例中,这些输出矩阵经过后续的后处理步骤后,最终缓存在第三缓存单元中,第三缓存单元中缓存的一个卷积层的所有输出矩阵写入内存后,就在内存中组合为这个卷积层的输出。
可选的,二维脉动阵列可以对卷积层的多个输出通道并行计算。
S102、对输出矩阵进行重排序,得到排序后的输出矩阵。
一般的,利用二维脉动阵列对一个9×9的输入矩阵进行卷积运算后,得到的输出矩阵中数据的位置一般与输入矩阵中的位置不匹配,因此,需要先对输出矩阵进行重排序,以调整输出矩阵中数据的位置。
例如,一个二维脉动阵列根据9×9的输入矩阵计算得到的输出矩阵的形式如下表1:
表1
y11 y12 y13 y14 y15 y16 y17 y18
y21 y22 y23 y24 y25 y26 y27 y28
y31 y32 y33 y34 y35 y36 y37 y38
y41 y42 y43 y44 y45 y46 y47 y48
y51 y52 y53 y54 y55 y56 y57 y58
y61 y62 y63 y64 y65 y66 y67 y68
y71 y72 y73 y74 y75 y76 y77 y78
y81 y82 y83 y84 y85 y86 y87 y88
y91 y92 y93 y94 y95 y96 y97 y98
其中,y21,y22和y23三个元素分别是根据输入矩阵的第一行的第3,4,5列的元素计算得到的,y31,y32和y33三个元素分别是根据输入矩阵的第一行的第6,7,8列的三个元素计算得到的,因此,上述元素的正确位置应该是,y21,y22和y23三个元素分别位于输出矩阵的第一行的第3,4,5列,y31,y32和y33三个元素分别位于输出矩阵的第一行的第6,7,8列。其他元素类似。
综上所述,当输出矩阵是二维脉动阵列进行卷积运算后得到的矩阵时,就需要执行步骤S102,从而对输出矩阵进行重排序,上述表1所示的输出矩阵进行重排序后得到的排序后的输出矩阵如下述表2所示:
表2
y11 y12 y13 y21 y22 y23 y31 y32 y33
y14 y15 y16 y24 y25 y26 y34 y35 y36
y17 y18 y19 y27 y28 y29 y37 y38 y39
y41 y42 y43 y51 y52 y53 y61 y62 y63
y44 y45 y46 y54 y55 y56 y64 y65 y66
y47 y48 y49 y57 y58 y59 y67 y68 y69
y71 y72 y73 y81 y82 y83 y91 y92 y93
y74 y75 y76 y84 y85 y86 y94 y95 y96
y77 y78 y79 y87 y88 y89 y97 y98 y99
S103、删除排序后的输出矩阵中的冗余数据,得到过滤后的输出矩阵。
在将卷积层的输入划分为多个9×9的输入矩阵时,若卷积层的输入的行数和列数不能被9整除,就需要用扩充数据对卷积层的输入进行扩充(例如,在卷积层的输入的右侧增加若干列的数字0,在下方增加若干行的数字0),使扩充后的输入的行数和列数均能够被9整除,然后再对扩充后的输入进行划分得到多个9×9输入矩阵。这种情况下,某些输入矩阵就会携带有上述扩充数据,并且这些扩充数据也会在二维脉动阵列中被计算;携带有扩充数据的输入矩阵对应的输出矩阵中,根据扩充数据计算得到的数据就是这个输出矩阵的冗余数据。
参考图2,实线框内就是一个卷积层的输入,其行数和列数均为M,并且M是一个不能被9整除的正整数,将这个卷积层的输入扩充后就得到图示的扩充后的输入,其行数和列数均为A,A是一个能被9整除的正整数,实线框和虚线框之间的数据就是扩充数据。
可以发现,对扩充后的输入划分后,边缘的若干个输入矩阵就携带有上述扩充数据。这些输入矩阵被计算得到对应的输出矩阵后,输出矩阵中根据上述扩充数据计算得到的数据就是冗余数据,将多个输出矩阵组合为卷积层的输出时,就需要删除输出矩阵中的冗余数据。
S104、将过滤后的输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中。
其中,第一缓存单元预先配置有两个队列集合,目标队列集合是两个队列集合中,未用于保存输出矩阵的前一个输出矩阵的队列集合;第一缓存单元的写入速度与处理器的计算速度匹配。
第一缓存单元中预先配置有2×N个一级缓存队列,可选的,缓存队列可以是先入先出缓存队列(First Input First Output,FIFO)。
需要说明的是,第一缓存单元中一级缓存队列的数量是根据步骤S101中获取的输出矩阵的阶数决定的。一般将其设置为输出矩阵的阶数的两倍。
进一步的,上述2×N个一级缓存队列被平均分为两个队列集合,每个队列集合包括N个一级缓存队列,并且,队列集合中的各个一级缓存队列分别对应于输出矩阵中的每一行数据。
具体的,本实施例中,第一缓存单元分为两个队列集合(分别记为第一队列集合和第二队列集合),第一队列集合包括9个一级缓存队列,分别记为1-1,1-2,1-3……1-9,类似的,第二队列集合的9个一级缓存队列分别记为2-1,2-2,2-3……2-9。将输出矩阵写入第一缓存单元时,基于乒乓缓存结构确定从两个队列集合中确定一个队列集合作为目标队列集合。然后就可以按步骤S102所述的方式,将输出矩阵的9行数据分别写入目标队列集合的9个一级缓存队列中。
确定目标队列集合的过程如下:
前文已经指出,本实施例是针对输出流中的某一个输出矩阵介绍的,因此,可以理解的,在对当前的这个输出矩阵执行步骤S104之前,状态机还向第一缓存单元中写入了多个输出矩阵。
若当前的这个输出矩阵的前一个输出矩阵被写入了第一队列集合,那么对于当前的这个输出矩阵,其目标队列集合就是第二队列集合;若当前的这个输出矩阵的前一个输出矩阵被写入了第二队列集合,那么对于当前的这个输出矩阵,其目标队列集合就是第一队列集合,也就是说,对于由多个输出矩阵构成的输出流,其中的多个输出矩阵是按照被二维脉动阵列输出的先后顺序交替的分别写入第一队列集合和第二队列集合中的。
S105、逐行将目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将输出矩阵写入所述第二缓存单元。
可以理解的,步骤S105所述的目标队列集合中的输出矩阵的数据,是过滤后的输出矩阵的数据。
需要说明的是,步骤S105所述的将输出矩阵写入第二缓存单元,是在当前的这个输出矩阵的前一个输出矩阵已经被写入第二缓存单元之后才进行的。
可以理解的,若将当前这个输出矩阵记为矩阵1,矩阵1的前一个输出矩阵记为矩阵2,那么向第二缓存单元写入矩阵2,也需要在矩阵2的前一个输出矩阵(记为矩阵3)写入第二缓存单元后才进行。
也就是说,若一个输出矩阵被写入第一缓存单元之后,第一缓存单元中保存在这个输出矩阵之前产生的多个输出矩阵,那么这些输出矩阵需要按照被输出的先后顺序逐个的被写入第二缓存单元。
第二缓存单元的写入速度与处理器的计算速度匹配。
第一缓存单元中,输出矩阵被分成多行分别存储在对应的一级缓存队列中。因此,步骤S105的执行过程,可以是,逐个从目标队列集合中的各个一级缓存队列中读取输出矩阵的一行数据。
例如,假设目标队列集合为第一队列集合,那么步骤S105的执行过程,就是,逐个从一级缓存器1-1,1-2,1-3……1-9中,读取输出矩阵保存在这些一级缓存器中的各行数据,并逐行写入第二缓存单元,从而在第二缓存单元中组合出输出矩阵。
第二缓存单元,也可以称为二级缓存器,可以用一个FIFO实现。
S106、根据预设的参数确定第二缓存单元的输出矩阵中的有效数据,并将输出矩阵的有效数据写入第三缓存单元。
本实施例中的输出矩阵,是利用二维脉动阵列进行卷积神经网络中的卷积层的运算时产生的输出矩阵,因此,步骤S106中的参数,可以是卷积层的步长。
若将本实施例应用于缓存其他计算过程中产生的输出矩阵,那么上述参数可以对应的进行调整。
卷积层的步长,是卷积运算过程中的一个参数。步长是一个大于或等于1的正整数,若一个卷积层的步长为1,那么实现这个卷积层的卷积运算时,需要对卷积层的输入中的每一个元素进行卷积运算,从而得到对应的卷积层的输出中的元素。
若卷积层的步长为2,那么上述计算过程就是,从卷积层的输入的第一行,第一列的元素开始,每隔一个元素计算得到一个卷积层的输出的元素。
具体的,步长为2时,将卷积层的输入的元素记为Xij,将卷积层的输出的元素记为Yij,其中,i表示这个元素所在的行是第i行,j表示这个元素所在的列是第j列,那么Y11通过对X11进行卷积运算得到,Y12则通过对X13进行卷积运算得到(相当于Y12对应于X13),Y13对应于X15,以此类推,并且,Y21对应于X31,Y22对应于X33,Y23对应于X35,以此类推。相当于,对卷积层的输入,每隔一个元素才计算得到一个卷积层的输出中的元素。
步长为3时,则每隔两个卷积层的输入中的元素计算一次,步长为4时则隔三个,以此类推。
然而,在利用二维脉动阵列计算得到输出矩阵时,为了方便设计二维脉动阵列,一般不考虑卷积层的步长,也就是说,不论卷积层的步长是几,二维脉动阵列计算得到输出矩阵时均将其默认为1,也就是对输入矩阵的每一个元素均进行计算得到输出矩阵的一个对应的元素。因此,当卷积层的步长大于1时,就需要从根据步长将第二缓存单元的输出矩阵中对应位置的数据确定为有效数据,并且只将有效数据写入第三缓存单元。
例如,假设步长为2,输出矩阵的每一个元素(记为Aij),均根据输入矩阵的对应位置的元素(记为Bij)计算得到,i和j分别表示元素的行坐标和列坐标,那么根据前文,输出矩阵中的A11,A13,A15,A17和A19;A31,A33,A35,A37和A39;A51,A53,A55,A57和A59;A71,A73,A75,A77和A79;A91,A93,A95,A97和A99是需要保存在卷积层的输出中的元素,这些元素就是输出矩阵的有效数据,输出矩阵中除上述元素以外的其他元素则不需要写入卷积层的输出,可以直接删除。
当然,若步长为1,则输出矩阵的所有数据均为有效数据。
输出矩阵的有效数据被写入第三缓存单元后,这些有效数据构成的矩阵可以认为是有效输出矩阵。
其中,第三缓存单元中的多个有效输出矩阵用于,按输出矩阵被生成的先后顺序依次写入内存中;第三缓存单元的写入速度与处理器的计算速度匹配。
第三缓存单元,也可以称为三级缓存器,可以用一个FIFO实现。
第二缓存单元中的输出矩阵的有效数据被写入第三缓存单元,是在当前的这个输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元之后才进行的。第三缓存单元的有效输出矩阵被写入内存,也是在前一个有效输出矩阵被写入内存后才进行的。
参考步骤S105中的论述,若第二缓存单元中有多个输出矩阵这些输出矩阵需要按产生的先后顺序逐个写入第三缓存单元。第三缓存单元中的有效输出矩阵,也需要按产生的先后顺序逐个写入内存。
三级缓存器设计为异步缓存器,三级缓存器的写时钟属于卷积计算及缓存时钟域,读时钟属于写内存时钟域。三级缓存器和内存之间通过AXI总线连接,通过AXI突发写长度、AXI总线状态实现三级缓存器和内存之间的数据传输。
可以理解的,前文介绍的数据缓存的过程,是以二维脉动阵列产生的一个输出矩阵为例介绍的本实施例提供数据缓存方法的实现过程,在实际的运算过程中,前文介绍的处理并缓存一个输出矩阵的过程可以直接适用于二维脉动阵列产生的每一个输出矩阵,也就是二维脉动阵列的输出流。
具体的,针对由二维脉动阵列逐个产生的多个输出矩阵构成的输出流,本实施例提供的数据缓存方法的工作过程是:
获取二维脉动阵列的输出流,将第一个输出矩阵按前文的对应步骤写入第一缓存单元;然后将第一个输出矩阵写入第二缓存单元,同时向第一缓存单元写入第二个输出矩阵;再将第一个输出矩阵写入第三缓存单元,将第一缓存单元中的第二个输出矩阵写入第二缓存单元,同时将第三个输出矩阵写入第一缓存单元,以此类推,二维脉动阵列的每一个输出矩阵都会按照生成的顺序经过前文介绍的过程被处理并缓存至第三缓存单元,同时第三缓存单元中的多个输出矩阵按照生成顺序逐个写入内存,最终将整个卷积层的输出都写入内存中。
本申请实施例提供的方法,其执行主体可以认为是一个,利用可编程逻辑门阵列(Field Programmable Gate Array,FPGA)实现的状态机,这个状态机通过执行本实施例提供的方法,对各个缓存单元进行数据的读取和写入,从而实现输出矩阵的缓存。
本发明提供一种数据缓存方法,逐个获取输出矩阵,按照获取各个输出矩阵的先后顺序,将获取的多个输出矩阵交替的写入第一缓存单元的两个队列集合中,并且逐个将第一缓存单元中分行存储的输出矩阵写入第二缓存单元,按写入第二缓存单元的顺序,根据预设的参数逐个确定第二缓存单元的每个输出矩阵的有效数据,并将每个输出矩阵的有效数据写入第三缓存单元,第三缓存单元保存的输出矩阵的有效数据用于根据写入第三缓存单元的先后顺序依次写入到内存中。本方案利用写入速度与处理器计算速度匹配的缓存单元缓存输出矩阵,并将输出矩阵按生成时间的先后逐个完整的写入内存中。因此本发明能够解决处理器的计算速度与内存写入速度不匹配的问题。
结合本申请实施例提供的缓存数据的方法,本申请另一实施例提供一种缓存数据的装置,参考图3,所述装置包括:
获取单元301,用于从处理器获取输出矩阵;其中,所述输出矩阵为N阶矩阵,N为正整数。
第一写入单元302,用于将所述输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中;其中,第一缓存单元预先配置有两个队列集合,目标队列集合是所述两个队列集合中,未用于保存所述输出矩阵的前一个输出矩阵的队列集合;所述第一缓存单元的写入速度与所述处理器的计算速度匹配。
第一缓存单元303,用于缓存第一写入单元302写入的数据。
其中,如图所示,第一缓存单元包括18个一级缓存器(FIFO),其中编号为1-1,-12,1-3……1-9的9个一级缓存器构成第一队列集合,编号为2-1,2-2,2-3……2-9的9个一级缓存器构成第二队列集合。
第二写入单元304,用于在所述第一缓存单元中保存的所述输出矩阵的前一个输出矩阵被写入第二缓存单元后,逐行将所述目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将所述输出矩阵写入所述第二缓存单元;所述第二缓存单元的写入速度与所述处理器的计算速度匹配。
第二缓存单元305,用于缓存第二写入单元写入的数据。
第三写入单元306,用于在所述第二缓存单元中保存的所述输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元后,根据预设的参数确定所述输出矩阵中的有效数据,并将所述输出矩阵的有效数据写入所述第三缓存单元;其中,所述第三缓存单元中的多个输出矩阵的有效数据用于,按获取输出矩阵的先后顺序依次写入内存中;所述第三缓存单元的写入速度与所述处理器的计算速度匹配。
第三缓存单元307,用于缓存第三写入单元306写入的数据。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述第一写入单元302具体用于:
按预设的数据存储顺序对所述数据矩阵进行重排序,得到重排序后的输出矩阵;
将所述重排序后的输出矩阵的N行数据分别写入第一缓存单元的目标队列集合的N个一级缓存队列中。
可选的,所述第一写入单元302具体用于:
删除所述输出矩阵的冗余数据,得到过滤后的输出矩阵;
将所述过滤后的输出矩阵写入第一缓存单元的目标队列集合中;其中,所述过滤后的输出矩阵的M行数据分别保存在所述目标队列集合的M个缓存队列中,所述M是小于或等于N的正整数。
可选的,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述第三写入单元306具体用于:
根据所述卷积神经网络中预设的步长,确定所述输出矩阵中的有效数据。
本申请实施例提供的缓存数据的装置,其工作原理可以参考本申请实施例提供的数据缓存的方法,此处不再赘述。
专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (5)

1.一种数据缓存的方法,其特征在于,包括:
从处理器获取输出矩阵;其中,所述输出矩阵为N阶矩阵,N为正整数;
对所述输出矩阵进行重排序,得到排序后的输出矩阵;
删除排序后的输出矩阵中的冗余数据,得到过滤后的输出矩阵;
将所述过滤后的输出矩阵的M行数据分别写入第一缓存单元的目标队列集合的M个一级缓存队列中;其中,第一缓存单元预先配置有两个队列集合,目标队列集合是所述两个队列集合中,未用于保存所述输出矩阵的前一个输出矩阵的队列集合,所述M是小于或等于N的正整数;所述第一缓存单元的写入速度与所述处理器的计算速度匹配;
所述第一缓存单元中保存的所述输出矩阵的前一个输出矩阵被写入第二缓存单元后,逐行将所述目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将所述输出矩阵写入所述第二缓存单元;所述第二缓存单元的写入速度与所述处理器的计算速度匹配;
所述第二缓存单元中保存的所述输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元后,根据预设的参数确定所述输出矩阵中的有效数据,并将所述输出矩阵的有效数据写入所述第三缓存单元;其中,所述第三缓存单元中的多个输出矩阵的有效数据用于,按获取输出矩阵的先后顺序依次写入内存中;所述第三缓存单元的写入速度与所述处理器的计算速度匹配;
其中,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述对所述输出矩阵进行重排序,得到排序后的输出矩阵包括:
按预设的数据存储顺序对所述输出矩阵进行重排序,得到重排序后的输出矩阵。
2.根据权利要求1所述的方法,其特征在于,
所述根据预设的参数确定所述输出矩阵中的有效数据,包括:
根据所述神经网络中预设的步长,确定所述输出矩阵中的有效数据。
3.根据权利要求1或2所述的方法,其特征在于,所述利用二维脉动阵列进行卷积计算得到输出矩阵的过程,包括:
将卷积层的输入数据划分为多个输入矩阵;
针对每一个输入矩阵,利用二维脉动阵列对所述输入矩阵进行卷积计算,得到所述输入矩阵对应的输出矩阵。
4.一种数据缓存的装置,其特征在于,包括:
获取单元,用于从处理器获取输出矩阵;其中,所述输出矩阵为N阶矩阵,N为正整数;
第一写入单元,用于将对所述输出矩阵进行重排序,得到排序后的输出矩阵;删除排序后的输出矩阵中的冗余数据,得到过滤后的输出矩阵;所述过滤后的输出矩阵的M行数据分别写入第一缓存单元的目标队列集合的M个一级缓存队列中;其中,第一缓存单元预先配置有两个队列集合,目标队列集合是所述两个队列集合中,未用于保存所述输出矩阵的前一个输出矩阵的队列集合,所述M是小于或等于N的正整数;所述第一缓存单元的写入速度与所述处理器的计算速度匹配;
第一缓存单元,用于缓存所述第一写入单元写入的数据;
第二写入单元,用于在所述第一缓存单元中保存的所述输出矩阵的前一个输出矩阵被写入第二缓存单元后,逐行将所述目标队列集合中保存的输出矩阵的数据写入第二缓存单元,从而将所述输出矩阵写入所述第二缓存单元;所述第二缓存单元的写入速度与所述处理器的计算速度匹配;
第二缓存单元,用于缓存所述第二写入单元写入的数据;
第三写入单元,用于在所述第二缓存单元中保存的所述输出矩阵的前一个输出矩阵的有效数据被写入第三缓存单元后,根据预设的参数确定所述输出矩阵中的有效数据,并将所述输出矩阵的有效数据写入所述第三缓存单元;其中,所述第三缓存单元中的多个输出矩阵的有效数据用于,按获取输出矩阵的先后顺序依次写入内存中;所述第三缓存单元的写入速度与所述处理器的计算速度匹配;
第三缓存单元,用于缓存第三写入单元写入的数据;
其中,所述输出矩阵是,在卷积神经网络的计算过程中,利用二维脉动阵列进行卷积计算得到的输出矩阵;
所述第一写入单元具体用于:
按预设的数据存储顺序对所述输出矩阵进行重排序,得到重排序后的输出矩阵。
5.根据权利要求4所述的装置,其特征在于,所述第三写入单元具体用于:
根据所述卷积神经网络中预设的步长,确定所述输出矩阵中的有效数据。
CN201910827022.8A 2019-09-03 2019-09-03 数据缓存的方法和装置 Active CN110673786B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910827022.8A CN110673786B (zh) 2019-09-03 2019-09-03 数据缓存的方法和装置
US17/640,276 US11803475B2 (en) 2019-09-03 2019-11-28 Method and apparatus for data caching
EP19944564.4A EP4012546B1 (en) 2019-09-03 2019-11-28 Method and apparatus for data caching
PCT/CN2019/121571 WO2021042594A1 (zh) 2019-09-03 2019-11-28 数据缓存的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910827022.8A CN110673786B (zh) 2019-09-03 2019-09-03 数据缓存的方法和装置

Publications (2)

Publication Number Publication Date
CN110673786A CN110673786A (zh) 2020-01-10
CN110673786B true CN110673786B (zh) 2020-11-10

Family

ID=69076291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910827022.8A Active CN110673786B (zh) 2019-09-03 2019-09-03 数据缓存的方法和装置

Country Status (4)

Country Link
US (1) US11803475B2 (zh)
EP (1) EP4012546B1 (zh)
CN (1) CN110673786B (zh)
WO (1) WO2021042594A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673786B (zh) 2019-09-03 2020-11-10 浪潮电子信息产业股份有限公司 数据缓存的方法和装置
CN111338986B (zh) * 2020-03-13 2023-08-04 北京艾克斯特科技有限公司 一种获取三维模型数据结构中数据的方法
CN112085128B (zh) * 2020-10-27 2022-06-07 苏州浪潮智能科技有限公司 一种基于脉动阵列的图像识别方法、装置和介质
CN115794674B (zh) * 2023-01-19 2023-05-12 北京象帝先计算技术有限公司 一种缓存数据写回方法、装置、图形处理系统及电子设备
CN117391149B (zh) * 2023-11-30 2024-03-26 爱芯元智半导体(宁波)有限公司 神经网络输出数据的处理方法、装置及芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
CN108090496A (zh) * 2017-12-22 2018-05-29 银河水滴科技(北京)有限公司 基于卷积神经网络的图像处理的方法和装置
CN109598338A (zh) * 2018-12-07 2019-04-09 东南大学 一种基于fpga的计算优化的卷积神经网络加速器

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue
WO2009086269A2 (en) 2007-12-21 2009-07-09 Massachusetts Institute Of Technology Endovascular devices/catheter platforms and methods for achieving congruency in sequentially deployed devices
CN101515295B (zh) * 2009-03-23 2010-12-01 浙江大学 片上硬件数据库的高速缓冲器支持实现方法
CN104199790B (zh) * 2014-08-21 2017-10-24 北京奇艺世纪科技有限公司 数据处理方法及装置
CN104545902B (zh) * 2015-01-30 2019-07-30 中国科学院电子学研究所 4段流水线数字信号处理器及采用其的无线片上系统芯片
CN105512054B (zh) * 2015-12-09 2018-11-09 上海兆芯集成电路有限公司 主机接口控制器以及储存装置控制方法
CN105468305A (zh) 2015-12-09 2016-04-06 浪潮(北京)电子信息产业有限公司 一种数据缓存方法、装置和系统
CN106909554B (zh) * 2015-12-22 2020-08-04 亿阳信通股份有限公司 一种数据库文本表数据的加载方法及装置
US10318173B2 (en) * 2016-09-30 2019-06-11 Seagate Technology Llc Multi-speed data storage device with media cache for high speed writes
US10430706B2 (en) * 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
CN106844740B (zh) * 2017-02-14 2020-12-29 华南师范大学 基于内存对象缓存系统的数据预读方法
CN108229645B (zh) * 2017-04-28 2021-08-06 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
CN108304923B (zh) 2017-12-06 2022-01-18 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN109446996B (zh) * 2018-10-31 2021-01-22 智慧眼科技股份有限公司 基于fpga的人脸识别数据处理装置及处理方法
CN109934339B (zh) * 2019-03-06 2023-05-16 东南大学 一种基于一维脉动阵列的通用卷积神经网络加速器
CN109934336B (zh) * 2019-03-08 2023-05-16 江南大学 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台
CN110673786B (zh) 2019-09-03 2020-11-10 浪潮电子信息产业股份有限公司 数据缓存的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
CN108090496A (zh) * 2017-12-22 2018-05-29 银河水滴科技(北京)有限公司 基于卷积神经网络的图像处理的方法和装置
CN109598338A (zh) * 2018-12-07 2019-04-09 东南大学 一种基于fpga的计算优化的卷积神经网络加速器

Also Published As

Publication number Publication date
EP4012546A1 (en) 2022-06-15
EP4012546B1 (en) 2024-05-01
US20220342824A1 (en) 2022-10-27
WO2021042594A1 (zh) 2021-03-11
EP4012546A4 (en) 2022-10-12
US11803475B2 (en) 2023-10-31
CN110673786A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
CN110673786B (zh) 数据缓存的方法和装置
JP5840994B2 (ja) 行列演算装置
CN113240085B (zh) 模型剪枝方法、装置、设备及存储介质
US20200134435A1 (en) Computation apparatus, circuit and relevant method for neural network
CN111915001A (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
EP4227886A1 (en) Matrix operation method and apparatus for image data, device, and storage medium
CN111951269A (zh) 图像处理方法及相关设备
CN111814957B (zh) 神经网络运算方法及相关设备
CN112800386A (zh) 傅里叶变换处理方法和处理器、终端、芯片及存储介质
CN113821373B (zh) 提高磁盘地址转换速度的方法、系统、设备和存储介质
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN110580522A (zh) 卷积计算方法及相关设备
CN111178513B (zh) 神经网络的卷积实现方法、卷积实现装置及终端设备
CN110377877B (zh) 一种数据处理方法、装置、设备及存储介质
CN111858157A (zh) 基于纠删码的丢失数据恢复方法、系统、终端及存储介质
CN114758209B (zh) 卷积结果获取方法、装置、计算机设备及存储介质
WO2011102291A1 (ja) 高速フーリエ変換回路
CN115544438A (zh) 数字通信系统中的旋转因子生成方法、装置和计算机设备
CN102480334B (zh) 一种速率匹配的方法及装置
CN110780849A (zh) 矩阵处理方法、装置、设备及计算机可读存储介质
CN112308217A (zh) 一种卷积神经网络加速方法及系统
CN111931123B (zh) 边界卷积计算方法、装置、硬件加速器及计算机设备
CN110190934B (zh) 一种数据打孔的方法及设备
CN111368250A (zh) 基于傅里叶变换/逆变换的数据处理系统、方法及设备
CN113111891B (zh) 一种图像重建方法、装置、终端设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant