CN111625476A - 用于存储和访问多维数据的方法和装置 - Google Patents
用于存储和访问多维数据的方法和装置 Download PDFInfo
- Publication number
- CN111625476A CN111625476A CN202010123072.0A CN202010123072A CN111625476A CN 111625476 A CN111625476 A CN 111625476A CN 202010123072 A CN202010123072 A CN 202010123072A CN 111625476 A CN111625476 A CN 111625476A
- Authority
- CN
- China
- Prior art keywords
- memory
- storing
- data
- storage
- storage element
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000015654 memory Effects 0.000 claims abstract description 549
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 abstract description 7
- 239000013598 vector Substances 0.000 description 139
- 230000004913 activation Effects 0.000 description 116
- 238000001994 activation Methods 0.000 description 116
- 238000013500 data storage Methods 0.000 description 57
- 238000012545 processing Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 24
- 238000013527 convolutional neural network Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Life Sciences & Earth Sciences (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Molecular Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
公开了用于存储和访问多维数据的方法、装置、系统和制品。示例性装置包括:存储器;存储器分配器,其用于分配存储器的一部分用于存储多维数据对象;以及存储元素组织器,其用于:将多维数据分成存储元素;将存储元素存储在存储器中,所存储的存储元素是能够选择性地执行的;将数组中的存储元素的起始存储器地址位置存储在存储器中,该数组用于促进能够选择性地访问所存储元素的数据;将数组的指针存储到存储器中。
Description
技术领域
概括而言,本公开涉及处理器,并且更具体而言,涉及用于存储和访问多维数据的方法和装置。
背景技术
移动设备通常包括图像处理能力,该图像处理能力受到尺寸约束、温度管理约束和/或功率约束的限制。在一些示例中,神经网络应用使用此类图像处理能力。这样的神经网络应用可以将数据存储在二维向量(例如,地图、通道等)中。在一些示例中,二维向量可以被聚集以产生多维(例如,三维、四维等)体积/数组,其被称为张量。张量和其他多维数据结构通常根据特定顺序(例如,对应于多维数据结构的维度)存储在存储器中的地址处。
附图说明
图1是根据本公开的教导的示例性张量存储方案的图示。
图2是包括根据本公开的教导构造的数据存储管理器的示例性处理器的框图。
图3是图2的示例性处理器的数据存储管理器的框图。
图4是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器以分配存储器来存储稀疏对象。
图5是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器来基于所分配的存储器块存储稀疏对象。
图6是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器以将多维数据作为存储元素存储在图2的示例性存储器中。
图7是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器以访问作为存储元素存储在图2的示例性存储器中的多维数据。
图8是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器以访问作为存储元素存储在图2的示例性存储器中的块中的多维数据。
图9是表示示例性机器可读指令的流程图,该示例性机器可读指令可以被执行以实现图1和/或图2的示例性数据存储管理器以操纵被访问的张量针对基于图块的模式协议促进更高效地处理所访问的张量。
图10A-10D示出了与可以由图2和/或图3的示例性数据存储管理器使用以从存储器访问多维数据的偏移相对应的示例性表。
图11A至图11B示出了可以由图2和/或图3的示例性数据存储管理器基于从存储器访问的多维数据执行的示例性数据操纵协议。
图12是被构造为执行图4、图5、图6、图7、图8和/或图9的指令以实现图2和/或图3的示例性数据存储管理器的示例性处理器平台的框图。
附图未按比例绘制。通常,贯穿附图和所附的书面描述将使用相同的附图标记来指代相同或相似的部分。
当标识可以被单独地引用的多个元素或组件时,在本文中使用描述符“第一”、“第二”、“第三”等。除非另外指定或基于它们的使用上下文理解,否则这样的描述符并非旨在赋予优先级或时间顺序的任何含义,而是仅仅作为用于为了便于理解所公开的示例而单独地引用多个元素或组件的标签。在一些示例中,描述符“第一”可以用于引用详细描述中的元素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来引用相同的元素。在这样的实例中,应该理解的是,这样的描述符仅用于便于引用多个元素或组件。
具体实施方式
包括个人计算机和/或移动设备在内的计算系统采用高级图像处理或计算机视觉来自动化人类视觉可以执行的任务。计算机视觉任务包括获取、处理、分析和/或理解图像。这样的任务部分地促进了从数字图像中提取维度数据以产生数字和/或符号信息。计算机视觉可以使用数字和/或符号信息来进行决策和/或以其他方式执行与三维(3-D)姿态估计、事件检测、对象识别、视频跟踪等相关联的操作。为了支持增强现实(AR)、虚拟现实(VR)、机器人技术和/或其他应用,更快(例如,实时或近实时)且更高效地执行此类任务得到改善的图像处理性以及改善的用户体验。
先进的图像处理和/或计算机视觉有时采用卷积神经网络(CNN或ConvNet)。CNN是一种神经网络,其可以用于各种任务,例如对图像进行分类、通过相似性对图像进行聚类(例如,照片搜索)和/或使用卷积在图像内执行对象识别。如本文中所使用的,卷积被定义为通过积分从两个给定的函数派生的函数,该积分表示如何通过另一个函数的形状来修改函数中的一个函数的形状。因此,通过传递与输入图像上的图像特征(例如,水平线、二维(2-D)形状等)相对应的一个或多个过滤器的输出以识别输入图像内的图像特征的一个或多个匹配,CNN可以用于识别输入图像中包括的对象(例如,脸、个人、路牌、动物等)。
CNN获得要存储和/或用于执行一个或多个功能的计算中的多维数组(例如,张量)。例如,CNN可以接收包括对应于一个或多个图像的数据的一个或多个多维数组(例如,一个或多个张量)。CNN可以将多维数组分解成向量。例如,CNN可以将1,000,000数据的元素的三维数组分解成一万个向量,其中,每个向量中有一百个数据元素。因此,每个向量可以包括大量(例如,数百、数千、数万等)的数据元素(例如,激活)。如本文所使用的,术语数据元素和激活是可互换的并且意指相同的事物。特别地,如本文所定义的,数据元素或激活是数据结构中的数据的隔室(compartment)。另外,每个这样的数据元素/激活可以包括大量的位。例如,具有10,000个16位数据元素/激活的向量对应于160,000位的信息。存储此类向量需要大量存储器。然而,这样的向量可以包括大量值为零的数据元素/激活。因此,一些CNN或其他处理引擎可以将这样的向量分解成稀疏向量和稀疏性图向量(例如,位图向量)。
如本文所定义,稀疏对象是向量或矩阵,其以与密集对象中的顺序相同的顺序包括密集向量的所有非零数据元素。如本文所定义,密集对象是包括所有(零和非零二者)数据元素的向量或矩阵。如此,密集向量[0,0,5,0,18,0,4,0]对应于稀疏向量[5,18,4]。如本文所定义,稀疏性图是包括一位数据元素的向量,该一位数据元素标识密集向量的相应数据元素是零还是非零。因此,稀疏性图可以将密集向量的非零值映射到“1”,并且可以将密集向量的零值映射到“0”。对于上述[0,0,5,0,18,0,4,0]的密集向量,稀疏性图可以是[0,0,1,0,1,0,1,0](例如,因为密集向量的第三、第五和第八个数据元素是非零)。稀疏向量和稀疏性图的组合表示密集向量(例如,可以基于对应的稀疏向量和对应的稀疏性图来生成和/或重构密集向量)。因此,处理器可以基于对应的稀疏向量和对应的稀疏性图来生成和/或确定密集向量,而不将密集向量存储在存储器中。
假设密集向量中存在足够的零,将稀疏向量和稀疏性图存储在存储器中而不是密集向量可以节省存储器和处理资源。例如,如果上述密集向量的每个数据元素(例如,[0,0,5,0,18,0,4,0])对应于16位信息,则存储密集向量所需的存储器量是128位(例如,8个数据元素X16位)。然而,存储对应的稀疏向量(例如,[5,18,4])和稀疏性图(例如,0,0,1,0,1,0,1,0]所需的存储器量为56位(例如,(稀疏向量的3个数据元素X16位)+(稀疏性图的8个数据元素X1位))。因此,存储稀疏向量和稀疏性图而不是对应的密集向量减少了在不丢失任何信息的情况下存储这种向量所需的存储器量。另外,利用稀疏向量和稀疏性图改善了带宽需求,因为它们减少了通过数据总线和/或网络传输的数据量,并且因此提高了到计算引擎的递送速度。
一些存储方案将多维数据(例如,张量、稀疏向量等)连续地存储到存储器中。然而,当数据被连续存储时,存储器处理单元需要遍历所有所存储的多维数据元素以访问张量的一个或多个激活(例如,多维数据对象的数据元素),这耗时且低效。此外,如果已经分配了一些存储器,则可能很难或不可能找到足够的连续存储器来存储此类张量。本文公开的示例缓解了这种存储方案的不灵活性,并提供了灵活的张量存储协议,该协议通过允许多个处理器选择性地从存储元素访问数据以更快地存储和/或访问多维数据来提升效率并促进并行处理。
如本文所使用,激活是被包括在多维数据对象中的数据元素。如本文所使用的,维度对应于多维数据对象的坐标维度。例如,可以通过三坐标维度(例如,X维度、Y维度和Z维度)来定义三维数据对象。本文公开的示例将张量或任何其他多维数据对象划分成固定大小的子单元,在该子单元内连续地存储激活。例如,如果张量将被分割成三个固定大小的数据子单元,则本文公开的示例将张量的激活的第一部分(例如,激活的三分之一)指派为第一数据子单元,张量的激活的第二部分(例如,三分之一)指派为第二数据子单元,并且张量激活的第三部分(例如,三分之一)指派为第三数据子单元。每个数据子单元都存储在对应的存储元素(SE)中。所存储的存储元素可选择性地彼此独立地执行以促进并行处理器访问存储元素的数据元素。例如,因为存储元素被存储在存储器的不同位置中,并且每个存储元素的指针也被存储在存储器中,所以两个处理器可以同时独立地从不同的存储元素获得数据。SE是被保留用于存储数据子单元的存储器的一部分。因此,本文公开的示例将张量的数据的子单元分组并且将子单元存储在存储器的存储元素中。
SE可以是连续的、不连续的和/或其组合。然而,每个SE内的激活是连续存储的。SE是存储器的的对应于预设坐标维度的一组数据元素存储的部分。例如,SE可以存储与三乘三乘三子单元相对应的数据。另外,如果张量对应于稀疏对象和/或矩阵,则SE可以包括稀疏性图。以这种方式,可以根据稀疏对象和/或矩阵以及稀疏性图来确定密集对象。另外,如上所述,SE包括连续存储的激活。另外,SE对应于存储器中的SE的第一激活的存储器中的位置(例如,地址)的指针。该指针可以用于遍历SE内的激活。SE对应于激活存储顺序。激活顺序与线性存储器中多维数组的存储顺序相对应。例如,当将由X坐标、Y坐标和Z坐标定义的三维张量存储到存储器中时,字符串顺序对应于特定维度中的激活的顺序。下表中示出了两个示例性存储方案,其分别对应于XYZ顺序和ZXY顺序,其中,(z,y,x)对应于张量的激活的坐标,其由维度(TD,TH,TW)定义。
表1-存储器中对应于XYZ顺序的张量存储
表2-存储器中对应于ZXY顺序的张量存储
基于用户和/或制造商的偏好,SE的维度可以是从1x1x1(Td(深度)*Th(高度)*Tw(宽度))上至张量本身的大小的任何事物。在一些示例中,SE具有相同的维度。
通过将张量的每个数据元素存储在存储器中单独的、连续打包的数组中,将完整张量存储在存储器中。另外,在本文公开的一些示例中,稀疏性图连续地存储在存储器中的另一数组中。另外,本文公开的示例利用针对指针数组的预定义存储顺序(例如,在打包SE指针时遍历张量的维度顺序)。此类公开的示例根据预定义的存储顺序来打包SE稀疏性图。因此,使用本文公开的示例,可以基于指向SE指针数组的指针、指向第一存储的稀疏性图的位置的指针、SE间存储顺序(例如,SE本身的存储顺序)、SE内存储顺序(例如,SE内激活的存储顺序)、张量维度和/或SE维度来访问存储器中存储的张量。
本文公开的示例可以通过以下方式来从张量的坐标访问张量内任何激活的存储位置:(1)计算张量内对应SE的坐标,以及(2)计算SE内激活的坐标。本文公开的示例使用坐标来索引到指针数组中以取回SE指针和稀疏性图。本文公开的示例使用SE内的坐标来计算与SE指针的地址偏移(例如,当多维数据密集且/或包含非零数据元素时),或作为到从中可以确定偏移的稀疏性图中的索引。
因为SE可以不连续地存储,所以本文公开的示例改善了存储灵活性。张量可以存储在存储器的不同部分中。当可用的连续存储器不足以存储整个张量时,这特别有利。另外,因为每个SE被存储为与单独的指针相对应的单独的子单元,所以本文公开的示例促进并行处理以能够使用指针同时访问和/或存储来自多个不同的SE的激活,从而增加了数据访问的效率以及处理器使用数据的效率(例如,避免处理器停顿,使得多产地使用更多时钟周期)。另外,因为SE可以小于整个张量(例如,包括被存储在存储器中较少的位置中的较少的激活),因此处理器遍历SE所花费的时间量短于处理器遍历整个张量所花费的时间量。
图1是根据本公开内容的教导的示例性张量存储方案100的图示。图1的示例性图示包括示例性三维张量102、示例性子单元104a-h、示例性存储器106以及存储在存储器106的地址处的示例性数据108。
图1的示例性三维张量102包括以四乘四乘四(例如,4-4-4)维度张量存储的六十四个激活(例如,数据元素a1-a64)。如以下结合图1进一步描述的,数据存储管理器将张量分解成示例性子单元104a-h。在所示的示例中,子单元104a-h对应于二乘二乘二(例如,2-2-2)维度。然而,子单元104a-h可以分解成任何维度(例如,2-2-4、4-2-2、2-4-2、2-4-4等)。一旦被分解后,数据存储管理器将子单元存储到一个或多个对应的SE中。SE如何存储的顺序与SE间顺序相对应。例如,在所示的存储方案100中,SE间顺序是XYZ顺序,其中,第一SE对应于第一子单元104a,第二SE对应于第二子单元104b,第三SE对应于第三子单元104c,等等。然而,可以使用任何SE间顺序(例如,YZX、ZYX、XZY、YXZ、ZXY)。例如,以YXZ顺序,第一SE将对应于第一子单元104a,第二SE将对应于第三子单元104c,第三SE将对应于第二子单元104b,第四SE将对应于第四子单元104d,等等。
激活如何被存储在每个SE内的顺序是SE内顺序。在所示的存储方案100中,SE内顺序是XYZ顺序。例如,如果首先存储第一SE a1,则第二个存储a2,第三个存储a5,第四个存储a6,第五个存储a17,等等。然而,SE内顺序可以是任何顺序(例如,YZX、ZYX、XZY、YXZ、ZXY)。SE内的激活根据SE内顺序连续存储。然而,SE本身可以或者可以不被非连续性地存储。例如,第一SE和第二SE由49个存储器地址位置(例如,存储器地址58-存储器地址09)分开。
在所示的示例中,张量102是稀疏张量。因此,如上所述,稀疏张量对应于稀疏性图。因此,每个SE包括用于存储用于对应激活的稀疏性图的存储器地址。如果张量102不是稀疏张量,则可以排除稀疏性图。另外,存储器106包括用于存储示例性指针数组指针110的存储器地址。示例性指针数组指针110是标识指向每个SE的起始位置的指针数组112(例如,指针的数组)的位置(例如,存储器地址位置)的指针。例如,在所示的存储方案100中,指针数组指针标识存储器地址40,该存储器地址40是用于将指针数组112存储在存储器206中的起始地址。存储器106包括一个或多个存储指针数组的存储器地址(例如,存储器地址40和41)。指针数组是用于存储SE的第一起始存储器地址位置的数组。例如,所示的存储方案100中的指针数组存储示例性起始存储器地址[01,58,91,...]。
图2是示例性处理器200(例如,卷积神经网络引擎)的框图。处理器200包括根据本公开的教导构造的示例性数据存储管理器202,以用于存储数据并从示例性存储器204访问所存储的数据。示例性存储器204可以对应于图1的示例性存储器106。
图2的示例性数据存储管理器202获得多维数据(例如,张量、向量、矩阵等),分配示例性存储器204的部分用于数据的存储,并且将数据存储在所分配的存储器中。例如,当数据存储管理器202获得密集张量(例如,从处理器的另一部分和/或接口接收的输入)时,数据存储管理器202分配存储器204中的空闲(例如,可用)位置(例如,当前不存储信息的存储器中的存储器地址位置),以便能够存储所获得的密集张量。在一些示例中,在被存储之前,将密集张量转换成稀疏对象(例如,向量或矩阵)和稀疏性图(例如,位图)(例如,以节省存储)。在这样的示例中,数据存储管理器202分配(例如,分割)某个未知量的存储器以存储稀疏对象和稀疏性图(例如,基于密集张量中的非零数据元素的量),因为稀疏对象的大小是未知的。在一些示例中,数据存储管理器202分配预设量的存储器(例如,小于存储整个密集张量所需的数量),并且动态监视稀疏对象的存储以在需要时分配附加的存储器,如下文结合图2进一步所述。
为了提高访问所存储的数据的速度和效率,图2的示例性数据存储管理器202将多维数据分解成SE,并且将不同的SE存储到存储器204中。以这种方式,当从存储器204调用一个或多个激活时,数据存储管理器202遍历整个张量可以确定对应的SE存储在何处并且遍历SE(例如,其可以比整个张量小得多)而不是遍历整个张量,从而提高对存储在存储器204中的激活的访问的速度和效率。另外,因为在存储器中连续地存储张量可能并非总是实际或期望的(例如,因为张量和/或存储器的特性)(尽管在SE中的激活是连续的),所以SE本身可以不连续地定位,从而提供更加灵活的多维数据存储。例如,第一SE完全存储在可用存储器空间的连续范围内,但是第一SE可以存储在与存储第二SE的第二存储空间不连续的第一存储空间中。另外,将多维数据存储为分立的SE促进并行处理。例如,数据存储管理器202可以包括一个或多个用于访问和/或存储与每个SE相对应的数据的处理器,从而提高了访问和/或存储数据的速度和效率。SE由预设维度(例如,基于用户和/或制造偏好)、指向存储器204中的SE的第一激活在的位置的指针、以及预设的激活存储顺序(例如,XYZ、ZXY、YZX等三维数据如何组织的顺序)定义。另外,当存储在SE中的张量对应于稀疏对象时,SE包括用于对应于SE中的激活的稀疏性图。激活存储顺序对应于将多维数据存储在存储器204内的位置(例如,存储器地址或存储器地址位置)中的顺序。
如上所述,SE的维度可以基于用户和/或制造商的偏好。较大的或较小的SE均具有优点和缺点。例如,较小的SE比较大的SE更快地访问激活。此外,当数据稀疏时,可以为较小的SE分配较少的存储器。然而,较小的SE具有较大的开销比率(例如,SE的附加位与存储在SE中的内容的比率),因为较大的SE和较小的SE二者都必须存储维度、大小、指针等,但是较小的SE通过配置存储比较大的SE更少的数据(例如,更少的内容)。因此,较大的SE的存储效率高于较小的SE的存储效率。然而,较小的SE提供更大的灵活性。例如,当存储器204受到限制时,存在连续的可用存储空间的更多选择,该可用存储空间足够大以存储比较大的SE小的SE。用户和/或制造商可以基于处理器200的特性和/或存储器使用来选择SE的大小,以最符合情况的方式存储数据。例如,SE大小可以基于其的处理器特性包括存储空间的结构和可用性。附加地或替代地,SE大小可以基于其的存储器使用特性包括处理器速度、带宽等。示例性数据存储管理器202可以通过执行除法和取模运算基于SE维度和指向SE的指针来访问存储在存储器204中的SE的激活,如下面结合图2进一步描述的。
在一些示例中,图2的数据存储管理器202将SE分解成多个块(例如,子单元)。因为SE的块在SE内是连续的,因此将SE分解成块会将SE缩小为较小的尺寸,而不显著增加开销。以这种方式,代替或访问SE并遍历整个SE以访问激活,处理器可以访问SE,然后访问SE内的块(例如,其比整个SE小并且包含更少的激活)并且遍历较小的块以访问激活。用户和/或制造商可以确定是否将SE分解成块。尽管将SE分成多个块通过减少处理器需要遍历以找到激活的地址量来进一步提高了激活访问速度和效率,而没有较小的SE所需的开销,但是在输入和/或映射张量时,数据的块顺序可能是低效的。因此,在块中存储数据可能需要额外的处理器资源以在被输入和/或映射到处理数组之前将块顺序转换回光栅顺序。示例性数据存储管理器202可以基于SE维度、块维度、指向SE的指针以及除法和取模运算来访问存储在存储器204中的SE的块中的激活,如下面结合图2进一步描述的。
在一些示例中,图2的示例性数据存储管理器202从处理器200接收指令以通过操纵指针表和/或稀疏性图来操纵张量。例如,当要在图像的边缘处对存储器204中存储的数据进行过滤时,处理器200可能需要对所存储的数据执行稀疏点积和/或卷积。处理器200可以具有基于图块的模式向量(tile-based pattern vector)以执行这种卷积,所述基于图块的模式向量具有特定尺寸的图块。因此,在一些示例中,数据存储管理器202可以将多维数据对象转换成一维向量,并且将与多维数据相对应的稀疏性图和/或过滤器内核(例如,用于基于图块的模式)进行零填充,使得稀疏性图的维度与特定大小的图块匹配,从而实现更高效的卷积过程,如下所述。
图2的示例性存储器204基于示例性数据存储管理器202的操作来存储所接收的多维数据(例如,向量、矩阵、张量等)。例如,存储器204将稀疏向量的每个数据元素存储在存储器204的一个或多个地址中。以此方式,稀疏向量的每个数据元素对应于一个或多个存储器地址。因此,当数据存储管理器202接收指令以访问与稀疏向量内的位置相对应的稀疏向量的数据元素时,数据存储管理器202可以基于存储数据元素的地址来访问稀疏向量内的所请求的位置处的数据元素。
图3是图2的示例性数据存储管理器202的框图。图3的示例性数据存储管理器202包括示例性组件接口300、示例性存储器接口302、示例性稀疏向量转换器304、示例性存储器分配器306、示例性存储器块缓冲器308、示例性存储组织器310、示例性存储器处理单元312、示例性向量操纵器314、以及示例性基于图块的卷积确定器316。
图3的示例性组件接口300从图2的示例性处理器200的另一数据元素和/或应用获得要存储在示例性存储器204中的多维数据。另外,示例性组件接口300可以从示例性处理器200的另一数据元素接收指令。指令可以对应于用于动态分配过程的存储器块的期望大小、SE的期望维度、SE内的块的期望维度、是否将密集的多维数据存储为稀疏对象、关于是否操纵指针的数组和/或稀疏性图的指令等。此外,示例性组件接口300可以输出从示例性存储器204到图2的处理器200的另一数据元素和/或应用的访问的激活。图3的示例性存储器接口302与示例性存储器204对接以存储和/或访问多维数据激活。
图3的示例性稀疏向量转换器304接收密集向量并且将密集向量转换成稀疏向量(例如,仅包括所接收的向量的非零值的向量)和稀疏性图(例如,标识密集向量的哪些数据元素为零以及向量的哪些数据元素为非零的位图)。例如,如果稀疏向量转换器304接收九乘一的密集向量[0;0;532;0;1432;4;0;0;1],则稀疏向量转换器304将九乘一维度的密集向量转换成四乘一维的稀疏向量(例如,[532;1432;4;1]),其包括密集向量的非零值并且消除了密集向量的零值。稀疏向量转换器304还生成八乘一维度稀疏性图(例如,[0;0;1;0;1;1;0;0;0;1]),其表示所接收的密集向量的每个数据元素,其中单个位标识对应的数据元素是零还是非零(例如,当向量的对应数据元素为“0”时为“0”,而当向量的相应数据元素为非零时为“1”)。可以使用稀疏性图(例如,密集向量的位图向量)从稀疏向量(例如,具有至少一个零值和至少一个非零值二者的向量)重构密集向量(例如,具有至少一个零值和至少一个非零值的向量)。然而,当密集向量包括足够的零值数据元素时,与存储密集向量相比,存储稀疏向量和稀疏性图需要较少的存储器。例如,如果上述密集向量的每个数据元素对应于16位,则存储密集向量所需的位数为72位(例如,9个数据元素X 8位=72位)。然而,因为对应的稀疏向量仅包括4个数据元素,并且对应的稀疏性图每数据元素仅需要一位,所以存储对应的稀疏向量和稀疏性图需要41位(例如,(4个数据元素X 8位)+(9个数据元素X1位)=41位)。在一些示例中,密集向量是从另一处理器获得的。在一些示例中,密集向量是经由用户界面从用户获得的。
当示例性组件接口300接收到要存储在示例性存储器204中的多维数据时,图3的示例性存储器分配器306分配示例性存储器204(图2)中的空间和/或位置(例如,存储器地址)。当多维数据将被转换成稀疏对象时,示例性存储器分配器306分配示例性存储器204中的预设数量的存储器块。存储器块是小于完全密集的多维数据的预设大小(例如,基于用户和/或制造商的偏好)。示例性存储器分配器306在示例性存储器块缓冲器308中存储存储器块的位置和/或大小。由于示例性SE组织器310使用所分配的存储器块来存储稀疏对象,所以从存储器块缓冲器308中移除对应的存储器块数据。因此,当所存储的存储器块数据的数量低于门限时,存储器分配器306监视存储器块缓冲器308以分配附加的存储器块。另外,示例性存储器分配器306在数据正被存储的同时监视示例性存储器204中的可用存储量。如果可用存储量低于门限,则示例性存储器分配器306将已填充的存储器块拉入到长期存储器中(例如,从而释放短期存储器以进行重新分配),并且更新SE指针表中受影响的SE的地址。当存储器分配完成时,示例性存储器分配器306解除分配任何未使用的存储器块。
图3的示例性SE组织器310经由示例性存储器接口302将所接收的多维数据和/或稀疏对象(例如,从多维数据生成的)存储在示例性存储器204中。例如,SE组织器310将多维数据分解成SE和/或SE块。在一些示例中,SE组织器310可以是并行处理器,以并行存储一个或多个SE。一个或多个示例性SE组织器310附加地确定每个所存储的SE的指针,并且将该SE指针的数组存储在示例性存储器204中。如果多维数据被转换成稀疏对象,则示例性SE组织器310附加地将稀疏性图和与用于稀疏性图的指针相对应的稀疏性图指针数组存储到示例性存储器204中。SE指针促进所存储的SE的可选择的执行以使用多个处理器并行访问数据。
图3的示例性存储器处理器单元312访问示例性存储器204的SE和/或SE内的块中存储的一个或多个激活。当有多个激活要访问时,示例性存储器处理器单元312可以应用并行处理来选择性地使不同的存储器处理器单元基于指针数组中的指针访问不同的激活。例如,因为存储元素被存储在存储器的不同位置中,并且每个存储元素的指针也被存储在存储器中,所以两个处理器可以同时独立地从不同的存储元素获得数据。在一些示例中,存储器处理器单元专用于一个或多个SE。在这样的示例中,当激活属于SE之一时,对应的存储器处理单元遍历存储器204以访问该激活,同时其他存储器处理器单元针对其他SE中的其他激活遍历存储器204。示例性存储器处理器单元312基于与SE和/或SE内的块的维度相对应的激活和除法和/或取模运算的坐标来确定激活在存储器204中的位置。另外,示例性存储器处理器单元312可能必须基于与SE的结构如何相对应的顺序(例如,XYZ、ZYX、YXZ等)、如何在SE内存储块的顺序和/或激活如何在SE和/或块的SE内存储的顺序来考虑顺序偏移。下面结合图10A-10D进一步描述顺序偏移的应用。
图3的示例性向量操纵器314包括操纵被访问的多维张量和/或过滤器张量,以便增加访问后操作的效率。例如,当从示例性存储器204调用多维数据时,随后可以使用基于图块的协议来过滤多维数据。这种基于图块的过滤对应于使用卷积应用于多维数据的多个权重(例如,作为过滤器内核的一部分)。因为可以预先设置过滤器,所以示例性向量操纵器314可以对多维张量和/或过滤器张量进行零填充和/或执行其他操作,以提高卷积过程的效率。常规地,对密集数据本身使用零填充以使密集数据与过滤器张量一致。然而,一些卷积技术可以通过基于稀疏性图执行卷积来节省处理器资源,这消除了任何非零的计算。因此,在这样的示例中,当多维数据对应于稀疏对象时,示例性向量操纵器314可以将稀疏性图而不是稀疏数据零填充,从而节省资源,因为稀疏性图比稀疏数据使用更少的存储器。在一些示例中,当多维数据对应于稀疏对象时,向量操纵器314零填充过滤器张量的稀疏性图以匹配稀疏性图的维度,并且基于零填充的过滤器稀疏性图和数据稀疏性图来执行必要的卷积。下面结合图11A-B进一步描述了由示例性向量操纵器314执行的操纵的示例。
图3的示例性的基于图块的卷积确定器316用过滤器执行多维数据的卷积。在一些示例中,基于图块的卷积确定器316可以执行基于稀疏性图的卷积,其处理多维数据的稀疏性图和过滤器内核的稀疏性图(例如,零填充的)以识别需要相乘以便完成用于过滤过程的卷积的非零数据元素。
尽管在图3中示出了的实现图2的示例性数据存储管理器202的示例方式,图3中示出的元素、过程和/或设备中的一个或多个可以以任何其他方式来组合、划分、重新布置、省略、消除和/或实现。此外,图3的示例性组件接口300、示例性存储器接口304、示例性存储器分配器306、示例性稀疏向量转换器308、示例性存储组织器312、示例性存储器处理单元314、示例性向量操纵器314、示例性基于图块的卷积确定器316和/或更一般地的示例性数据存储管理器202可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,图3的示例性组件接口300、示例性存储器接口304、示例性存储器分配器306、示例性稀疏向量转换器308、示例性存储组织器312、示例性存储器处理单元314、示例性向量操纵器314、示例性基于图块的卷积确定器316和/或更一般的示例性数据存储管理器202中的任何一个可以由一个或多个模拟或数字电路、逻辑电路、可编程处理器、可编程控制器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)来实现。当阅读本专利的任何装置或系统权利要求以覆盖纯软件和/或固件实施方式时,图3的示例性组件接口300、示例性存储器接口304、示例性存储器分配器306、示例性稀疏向量转换器、示例性存储组织器312、示例性存储器处理单元314、示例性向量操纵器314、示例性基于图块的卷积确定器316和/或更一般的示例性数据存储管理器202中的任何一个特此明确地定义为和/或包括非暂时性计算机可读存储设备或存储磁盘,例如存储器、数字多功能磁盘(DVD)、光盘(CD)、蓝光光盘等,包括软件和/或固件。更进一步,附加或代替图3中所示的元素、过程和/或设备,图3的示例性数据存储管理器202可以包括一个或多个元素、过程和/或设备,和/或可以包括所示出的元素、过程和设备中的任何一个或全部中的多于一个。如本文所使用的,短语“在通信中”(包括其变体)涵盖直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接的物理(例如,有线)通信和/或恒定的通信,而是附加地包括以周期的间隔、计划的间隔、非周期的间隔和/或一次性事件的选择性通信。
表示用于实现图2和/或图3的示例性数据存储管理器202的示例性硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图在图4-9中示出。机器可读指令可以是可执行程序或可执行程序的部分,以供诸如下面结合图12讨论的示例性处理器平台1200中所示的处理器200之类的计算机处理器执行。该程序可以体现在存储在非暂时性计算机可读存储介质上的软件中,所述非暂时性计算机可读存储介质例如CD-ROM、软盘、硬盘驱动器、DVD、蓝光磁盘或与处理器200相关联的存储器,但是整个程序和/或其部分可以替代地由处理器200以外的设备执行和/或体现在固件或专用硬件中。此外,尽管参考图4-9所示的流程图描述了示例性程序,但是可以替代地使用实现图3的示例性数据存储管理器202的许多其他方法。例如,可以改变框的执行顺序,和/或可以改变、消除或组合所描述的一些框。附加地或替代地,任何或所有块可以由被构造为在不执行软件或固件的情况下执行对应的操作的一个或多个硬件电路(例如,分立和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。
本文描述的机器可读指令可以以压缩格式、加密格式、分段格式、打包格式等中的一种或多种来存储。本文描述的机器可读指令可以作为数据(例如,指令、代码、代码的表示等的部分)存储,该数据可以用于创建、制造和/或产生机器可执行指令。例如,机器可读指令可以被分段并且存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重新指派等中的一个或多个,以便使它们可由计算设备和/或其他机器直接读取和/或执行。例如,机器可读指令可以存储在多个部分中,这些部分被个别地压缩、加密并存储在单独的计算设备上,其中,这些部分在解密、解压缩和组合时形成一组可执行指令,这些可执行指令实现诸如本文所述的程序之类的程序。在另一示例中,机器可读指令可以以它们可以由计算机读取的状态存储,但是需要添加库(例如,动态链接库(DLL))、软件开发套件(SDK)、应用编程接口(API)等,以便在特定计算设备或其他设备上执行指令。在另一示例中,在机器可读指令和/或对应的程序可整体或部分地执行之前,可能需要配置机器可读指令(例如,存储的设置,数据输入、记录的网络地址等)。因此,所公开的机器可读指令和/或对应的程序旨在涵盖这样的机器可读指令和/或程序,而不论存储或静置或运输时的机器可读指令和/或程序的特定格式或状态。
如上所述,图4-9的示例性过程可以使用可执行指令(例如,计算机和/或机器可读指令)来实现,所述可执行指令被存储在非暂时性计算机和/或机器可读介质上,例如硬盘驱动器、闪存、只读存储器、压缩盘、数字多功能磁盘、高速缓存、随机访问存储器和/或任何其他存储设备或存储盘,其中信息被存储任何持续时间(例如,延长的时间段、永久地、短暂的时间,例如用于临时缓冲和/或用于信息的缓存)。如本文所使用的,术语“非暂时性计算机可读介质”被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播的信号并排除传输介质。
“包括”和“包含”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包含有、包括有、包含了、包括了、具有等)作为前序或在任何种类的权利要求记载内时,应理解为在落在对应权利要求或记载的范围外的情况下,可以存在附加的元素、术语等。如本文所使用的,当例如在权利要求的前序中使用短语“至少”作为过渡术语时,其以与术语“包含”和“包括”是开放式的相同的方式是开放式的。当例如以诸如A、B和/或C之类的形式使用时,术语“和/或”是指A、B、C的任何组合或子集,例如(1)仅A(2)仅B,(3)仅C,(4)A与B,(5)A与C,(6)B与C,以及(7)A与B与C。如本文在描述结构、组件、项目、对象和/或事物的上下文中使用的,短语“A和B中的至少一个”旨在指代包括以下各项中的任何一项的实施方式:(1)至少一个A,(2)至少一个B和(3)至少一个A和至少一个B。类似地,如本文在描述结构、组件、物品、对象和/或事物的上下文中使用的,短语“A或B中的至少一个”旨在指代包括以下各项中的任何一项的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。如本文在描述过程、指令、动作、活动和/或步骤的实施或执行的上下文中使用的,短语“A和B中的至少一个”旨在指代包括以下各项中的任何一项的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,如本文在描述过程、指令、动作、活动和/或步骤的实施或执行的上下文中使用的,短语“A或B中的至少一个”旨在指代包括以下各项中的任何一项的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。
图4是表示可以由处理器200(图2)执行以实现图3的示例性数据存储管理器202以分配存储器来存储稀疏对象(例如,向量或矩阵)的示例性机器可读指令的示例性流程图400。尽管结合图3的示例性数据存储管理器202描述了图4的流程图400,可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。
在框402处,示例性存储器分配器306(图3)经由示例性组件接口300(图3)接收存储器分配请求。存储器分配请求可以对应于获得要被转换成稀疏对象和稀疏性图并且存储在示例性存储器204(图2)中的多维数据。在框404处,示例性存储器分配器306分配多个存储器块以用于稀疏对象的存储。如上所述,因为要存储的多维数据的稀疏性在转换成稀疏对象之前是未知的,因此需要分配给稀疏对象的存储器量同样是未知的。因此,示例性存储器分配器306将多个存储器块分配为当需要更多存储器块时可以在存储过程期间被更新的初始存储器量。
在框406处,示例性存储器分配器306将所分配的存储器块的存储器地址位置存储和/或发布在示例性存储器块缓冲器308中(图3)。以此方式,示例性SE组织器310(图3)之一可以从存储器块缓冲器308拉出存储器块位置,并且在存储器204中的对应存储器地址位置处开始存储数据。在框408处,存储器分配器306确定对应于多维数据的稀疏对象的存储是否完成(例如,基于来自SE组织器310的触发、标志和/或信号)。如果示例性存储器分配器306确定存储完成(框408:是),则示例性存储器分配器306从示例性存储器204解除分配未使用的存储器块(框418)。图4的示例性过程然后结束。
返回到框408,如果示例性存储器分配器306确定存储未完成(框408:否),则示例性存储器分配器306确定示例性存储器块缓冲器308中的分配的存储器块位置的数量是否低于存储器块位置的门限数量(框410)。如上所述,当SE组织器310(图3)将位置从存储器块缓冲器308拉出以存储数据时。因此,随着SE组织器310拉出位置,存储器块缓冲器308中的可用存储器块位置的数量减少。如果示例性存储器分配器306确定示例性存储器块缓冲器308中的分配的存储器块位置的数量不低于存储器块位置的门限数量(框410:否),则控制返回到框408。如果示例性存储器分配器306确定示例性存储器块缓冲器308中的分配的存储器块位置的数量低于存储器块位置的门限数量(框410:是),则示例性存储器分配器306确定示例性存储器204中的可用存储器块的数量是否低于存储器的门限量(框412)。因为存储器204的量是有限的,所以随着附加存储器块被分配,可用存储器块的数量减少。
如果示例性存储器分配器306确定示例性存储器204中的可用存储器块的数量不低于存储器的门限量(框412:否),则控制返回到框404以分配附加数量的存储器块。如果示例性存储器分配器306确定示例性存储器204中的可用存储器块的数量低于存储器的门限量(框412:是),则示例性存储器分配器306将已填充的存储器块的数据移动到长期存储器中(框414)(例如,以为示例性存储器204中所需的附加存储器块腾出空间)。在框416处,示例性存储器分配器306更新存储在示例性存储器204中的SE指针表中的受影响的SE的地址,以反映在所填充的存储器块中数据的新位置。图4的示例性过程然后结束。
图5是表示可以由示例性处理器200(图2)执行以实现图3的示例性数据存储管理器202以基于分配的存储器块来存储稀疏对象(例如,向量或矩阵)的示例性机器可读指令的示例性流程图500。尽管图5的流程图500结合图3的示例性数据存储管理器202来描述,但是可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。
在框502处,示例性SE组织器310(图3)获得要转换成稀疏对象(例如,向量或矩阵)并且存储到示例性存储器204(图2)中的数据对象(例如,三维数据)。在框504处,示例性SE组织器310向示例性存储器分配器306(图3)发送存储器分配请求。以这种方式,示例性存储器分配器306可以分配存储器块以用于稀疏对象的存储,如以上结合图3所描述的。
在框506处,示例性SE组织器310从示例性存储器块缓冲器308请求存储器块地址。在一些示例中,SE组织器310将稀疏对象分解成SE以能够使用多个SE组织器310并行存储数据。在这样的示例中,SE组织器310可以收集用于不同SE的存储器块位置。在框508处,示例性稀疏向量转换器304基于数据对象的非零数据元素来生成稀疏对象。在框510处,示例性SE组织器310写入存储器204的地址(例如,经由图3的示例性存储器接口302),其中,稀疏对象被填充到存储器204中的SE指针表中。在框512处,示例性SE组织器310用基于从存储器块缓冲器308拉出的所请求的存储器块位置生成的稀疏对象来填充存储器的一部分。
在框514处,示例性稀疏向量转换器304(图3)确定是否存在要存储的附加的非零数据元素。如果示例性稀疏向量转换器304确定没有附加的非零数据元素要存储(框514:否),则SE组织器310将存储完成指示发送到示例性存储器分配器306(框520)。以这种方式,存储器分配器306可以解除分配任何未使用的存储器块。图5的示例性过程然后结束。然而,如果示例性稀疏向量转换器304确定存在至少一个附加的非零数据元素要存储(框514:是),则示例性SE组织器310确定所请求的存储器块是否已满(框516)。
如果示例性SE组织器310确定存储器块未满(框516:否),则控制返回到框508以在存储器块中生成并存储附加的稀疏对象。如果示例性SE组织器310确定存储器块已满(框516:是),则示例性SE组织器310从示例性存储器块308(图3)请求附加的存储器块位置(框518),并且控制返回到框508以生成附加稀疏对象并将其存储在附加的存储器块中。图5的示例性过程然后结束。
图6是表示示例性机器可读指令的示例性流程图600,所述示例性机器可读指令可以由处理器200(图2)执行以实现图3的数据存储管理器202的示例性实施方式以将多维数据存储为示例性存储器204中的SE。虽然结合图3的示例性数据存储管理器202描述了图6的流程图600,可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。另外,尽管结合多维数据(例如,张量)描述了流程图600,但是可以结合其他类型的数据(例如,用于权重存储的权重)来描述流程图600。
在框602处,示例性SE组织器310(图3)经由示例性组件接口300(图3)获得多维数据。在框604处,示例性SE组织器310基于SE特性来确定示例性存储器204的配置和/或分配。例如,如果SE对应于特定维度,则SE组织器310确定将在其中存储SE的存储器204的每个块的起始位置(例如,起始存储器地址),使得SE内的数据激活被连续存储。然而,如上所述,尽管SE内的数据元素是连续的,但SE本身可以连续也可以不连续存储。在一些示例中,SE组织器310基于图4的指令来确定存储器204的分配。在框606处,示例性SE组织器310确定SE是否被分解成块(例如,基于用户和/或制造商的偏好)。
如果示例性SE组织器310确定SE被分解成块(框606:是),则示例性SE组织器310基于块激活顺序(例如,块内数据激活的XYZ、ZXY或YZX)、SE间顺序(例如,对应于SE要位于在存储器204中的位置)和/或SE内顺序(例如,SE内的块的XYZ、ZXY或YZX)将成块的激活(blocked activation)(例如,与块的维度相对应的激活)存储到SE的块中(框608)。在一些示例中,出于并行处理的目的,SE和/或块可以对应于不同的SE组织器310,以便以更快、更高效的方式存储数据激活。
如果示例性SE组织器310确定SE没有被分解成块(框606:否),则示例性SE组织器310将多维数据的激活分解(例如,分开或分割)成SE(框610)。例如,如果将SE的大小确定为适合十个激活(例如,基于用户和/或制造商的偏好),则示例性SE组织器310将多维数据分解成十个激活的SE(例如,组)。在框612处,示例性SE组织器310基于激活顺序(例如,所获得的多维数据的顺序)、SE间顺序(例如,对应于SE将位于存储器204中指出)和/或SE内顺序(例如,SE内激活的XYZ、ZXY或YZX)将存储激活存储在存储器204中。在一些示例中,出于并行处理的目的,SE可以对应于不同的SE组织器310,以便以更快、更有高的方式存储数据激活。
在框614处,示例性SE组织器310基于每个SE的存储器204中的起始存储器地址位置(例如,第一SE的第一位置对应于地址X,第二SE的第一位置对应于地址Y,等等)来确定SE的SE指针。在框616处,示例性SE组织器310使用示例性存储器接口302来将SE指针作为SE指针数组连续地存储在存储器204中。在框618处,示例性SE组织器310使用示例性存储器接口302将SE指针数组的存储元素指针存储到存储器204中。SE指针跟踪SE指针数组内的SE。如以上结合图3所描述的,SE指针促进由示例性存储器处理器单元312的可选择的执行,从而使得能够并行访问数据元素。例如,存储器处理器单元312可以利用与感兴趣的数据元素的SE相对应的指针,并且存储器处理器单元312可以基于指针从不同的SE并行地获得不同的感兴趣的数据元素。
在框620处,示例性SE组织器310确定所获得的数据是否对应于稀疏对象。在一些示例中,由示例性组件接口300获得的多维数据包括用于将多维数据转换成稀疏对象的指令和/或已经对应于稀疏对象和稀疏性图。在这样的示例中,稀疏向量转换器304(图3)可以将多维数据转换成稀疏对象和稀疏性图。响应于稀疏向量转换器304生成稀疏对象和稀疏性图和/或响应于组件接口300接收到稀疏对象和稀疏性图,SE组织器310确定所获得的对象对应于稀疏对象。
如果示例性SE组织器310确定所获得的数据不对应于稀疏对象(框620:否),则图6的示例性过程结束。如果示例性SE组织器310确定所获得的数据对应于稀疏对象(框620:是),则示例性SE组织器310使用示例性存储器接口302将稀疏性图连续地存储为稀疏性图数组。在框624处,示例性SE组织器310使用示例性存储器接口302将稀疏性图数组的稀疏性图指针(例如,跟踪稀疏性图)存储到示例性存储器204中。在一些示例中,SE组织器310可以在将稀疏性图存储在示例性存储器204中之前,对稀疏性图进行边缘填充(例如,通过添加零来进行零填充)。与数据本身相反,对稀疏性图进行零填充允许示例卷积确定器316能够基于填充的稀疏性图来过滤和/或处理多维数据。因此,不执行不必要的计算(例如,具有零数据元素的点积需要比具有非零数据元素的点积更少的计算)。
图7是表示示例性机器可读指令的示例性流程图700,该示例性机器可读指令可以由处理器200(图2)执行以实现图3的示例性数据存储管理器202,以访问作为SE存储在示例性存储器204中的多维数据)。结合图10A-10B的示例性表1000、1002来描述图7的示例性流程图700。第一示例性表2000对应于基于张量内的SE顺序(例如,SE由多维数据形成的顺序)的偏移变量,并且第二示例性表2002对应于基于SE内激活顺序的偏移变量。尽管结合图3的示例性数据存储管理器202描述了图7的流程图700,但是可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。另外,虽然结合多维数据(例如,张量)描述了流程图700,但是可以结合其他类型的数据(例如,权重存储)来描述流程图700。
在框702处,示例性存储器处理器单元312(图3)经由示例性组件接口300(图3)获得激活坐标。如果示例性存储器处理器单元312获得用于多个激活的多个坐标,则示例性存储器处理器单元312可以并行地处理多个单元(例如,基于与激活的坐标相对应的SE)。在框704处,示例性存储器处理器单元312基于SE维度和激活的坐标(例如,基于除法运算)来确定SE的坐标。例如,当激活的坐标是(za,ya,xa)(例如,对应于激活顺序ZYX)时,示例性存储器处理器单元312根据以下公式1确定对应SE(例如,存储与激活坐标相对应的数据的SE)的坐标。
(za和/或SED,ya和/或SEH,xa和/或SEW) (公式1)
在公式1中,“和/或”是无余数的除法运算,SED是SE的深度,SEH是SE的高度,并且SEW是SE的宽度。
在框706处,示例性存储器处理器单元312基于SE维度和激活的坐标(例如,基于取模运算)来确定SE内的激活的坐标。例如,当激活的坐标是(za,ya,xa)时,示例性存储器处理器单元312基于以下公式2来确定对应SE(例如,存储与激活坐标相对应的数据的SE)的坐标。
(za%SED,ya%SEH,xa%SEW) (公式2)
在公式2中,“%”是取模运算。
在框708处,示例性存储器处理器单元312基于SE坐标和SE顺序偏移(例如,SE内的激活的顺序)来确定到SE指针的数组的指针偏移。例如,存储器处理器单元312基于以下公式3确定指针偏移。
Poff=((za和/或SED)*ZTSOFF)+((ya和/或SEH)*YTSOFF)+((xa和/或SEW)*XTSOFF) (公式3)
在公式3中,Poff是指针偏移,“*”是乘法运算,并且ZTSOFF、YTSOFF和XTSOFF是基于张量内SE顺序的偏移(例如,SE的如何存储的XYZ、XZY、YZX、YXZ等的顺序)。可以基于图10A的第一示例性表1000来确定ZTSOFF、YTSOFF和XTSOFF。
在框710处,示例性存储器处理器单元312将指针偏移应用于SE坐标以索引到SE指针数组中。例如,如果偏移是四,则示例性存储器处理器单元312基于四的偏移值来移动SE指针数组的SE指针。在框712处,示例性存储器处理器单元312基于激活坐标和SE内的激活顺序(例如,激活被存储在SE内的顺序)来确定SE内的激活偏移。例如,存储器处理器单元312基于以下公式4确定激活偏移。
ASOFF=((za%SED)*ZSAOFF)+((ya%SEH)*YSAOFF)+((xa%SEW)*XSAOFF) (公式4)
在公式4中,ASOFF是激活偏移,并且ZSAOFF、YSAOFF和XASOFF是基于SE内激活顺序(例如,激活如何存储在SE中的XYZ、XZY、YZX、YXZ等的顺序)的偏移。可以基于图10B的第一示例性表1002来确定ZSAOFF、YSAOFF和XSAOFF。
在框714处,示例性存储器处理器单元312使用示例性存储器接口302(图3)基于到SE指针数组中的索引来访问SE指针。所访问的指针对应于SE的第一位置,其包括与所获得的激活坐标相对应的激活。在框716处,示例性存储器处理器单元312确定激活是否对应于稀疏对象。例如,在示例性存储器204中被存储为SE的数据可以是密集数据或稀疏对象以及与该密集数据相对应的对应稀疏性图。如果示例性存储器处理器单元312确定激活不对应于稀疏对象(框716:否),则示例性存储器处理器单元312通过使用示例性存储器接口302访问存储在对应于存储器204中的SE指针的位置的数据和SE内的激活偏移坐标来访问该激活(框718)。例如,存储器处理器单元312将存储器204遍历到SE指针中标识的位置(例如,SE的开始),并且移动到与稀疏性图中的索引相对应的位置以获得激活。
如果示例性存储器处理器单元312确定激活对应于稀疏对象(框716:是),则示例性存储器处理器单元312将激活偏移应用于到稀疏性图中的索引(框720)。例如,存储器处理器单元312基于稀疏性图指针加上激活偏移来访问与稀疏性图相对应的位置,以使用示例性存储器接口302来访问稀疏性图元素(例如,“0”或“1”)。以这种方式,如果稀疏性图元素为“0”,则存储器处理器单元312确定激活为零。如果稀疏性图元素是“1”,则存储器处理器单元312确定激活是非零值并且通过访问与存储器204中的激活相对应的位置来确定该非零值。例如,存储器处理器单元312可以确定稀疏性图上的一的计数以获得偏移来访问激活。在框722处,示例性存储器处理器单元312使用示例性存储器接口302基于SE指针和激活偏移来访问激活。图7的示例性过程结束。
图8是表示示例性机器可读指令的示例性流程图800,所述示例性机器可读指令可以由图2的处理器200执行以实现图3的示例性数据存储管理器202以访问在示例性存储器204中的块中存储为SE的多维数据的。结合图10A-10D的示例性表1000、1002、1004、1006来描述图8的示例性流程图800。第一示例性表1000对应于基于张量内的SE顺序(例如,由多维数据形成SE的顺序)的偏移变量,第二示例性表1002对应于基于SE内的激活顺序的偏移变量,第三示例性表1004对应于基于SE内的块顺序的偏移变量,并且第四示例性表对应于基于块内的激活顺序的偏移变量。尽管结合图3的示例性数据存储管理器202来描述图8的流程图800,但是可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。另外,尽管结合多维数据(例如,张量)描述了流程图800,但是可以结合其他类型的数据(例如,权重存储)来描述流程图800。
在框802处,示例性存储器处理器单元312(图3)获得激活的一个或多个坐标。如果存在多于一个用于不同激活的坐标,则存储器处理器单元312可以在不同存储器处理器单元312之间划分对不同坐标的访问,以促进并行处理。在框804处,示例性存储器处理器单元312基于SE维度和激活坐标(例如,基于除法运算)来确定SE的坐标。例如,示例性存储器处理器单元312基于以上公式1确定对应SE的坐标(例如,存储与激活坐标相对应的数据的SE)。
在框806处,示例性存储器处理器单元312基于SE坐标和SE顺序偏移(例如,张量内的SE的顺序)确定到SE指针数组的指针的偏移。例如,存储处理器单元基于以上公式3确定指针偏移。在框808处,示例性存储器处理器单元312将到SE坐标的指针偏移应用于到SE指针数组中的索引。例如,如果偏移是四,则示例性存储器处理器单元312基于四的偏移值来移动SE指针数组的SE指针。在框810处,示例性存储器处理器单元312使用示例性存储器接口302(图3)基于到SE指针数组中的索引来访问SE指针。所访问的指针对应于SE的第一位置,其包括与所获得的激活坐标相对应的激活。
在框812处,示例性存储器处理器单元312基于SE维度、块维度和激活的坐标来确定与激活相对应的存储块(SB)的坐标。例如,存储器处理器单元312可以基于以下公式5来确定块的坐标。
((za%SED)和/或SBD,(ya%SEH)和/或SBH,(xa%SEW)和/或SBW) (公式5)
在公式5中,SBD是块的深度,SBH是块的高度,并且SBW是块的宽度。
在框814处,示例性存储器处理器单元312基于SE维度、块维度和激活的坐标来确定块内的激活的坐标。例如,存储器处理器单元312可以基于以下公式6来确定块内的激活的坐标。
((za%SED)%SBD,(ya%SEH)%SBH,(xa%SEW)%SBW) (公式6)
在框816处,示例性存储器处理器单元312基于块的坐标和SE内的块顺序来确定用于块的开始的块偏移。例如,存储器处理器单元312可以基于以下公式7来确定块偏移。
BSOFF=SBs*(((((za%SED)和/或SBD)*ZSBOFF)+(((ya%SEH)和/或SBH)*YSBOFF)+((((xa%SEW)和/或SBW)*XSBOFF)) (公式7)
其中,BSOFF是激活位于SE内的块的起始位置,并且ZSBOFF、YSBOFF和XSBOFF是与SE内的块顺序相对应的块偏移。可以基于图10C的第一示例性表1004来确定ZSBOFF、YSBOFF和XSBOFF偏移。
在框818处,示例性存储器处理器单元312基于激活的坐标和块内的激活顺序来确定从块的开始起的激活偏移。例如,存储器处理器单元312可以基于以下公式8来确定激活偏移。
ABOFF=((((za%SED)%SBD)*ZBAOFF)+(((ya%SEH)%SBH)*YBAOFF)
+((((xa%SEW)%SBW)*XBAOFF) (公式8)
在公式8中,ABOFF是从块开始到激活的偏移,并且ZBAOFF、YBAOFF和XBAOFF是与激活被存储在块内的顺序相对应的激活的偏移。可以基于图10D的第一示例性表1006来确定ZBAOFF、YBAOFF和XBAOFF偏移。
在框820处,示例性存储器处理器单元312通过将块偏移与激活偏移组合(例如,相加)来确定从SE的开始起的激活偏移。例如,存储器处理器单元312基于以下公式9来确定从SE的开始起的激活偏移。
ASOFF=BSOFF+ABOFF(公式9)
在框822处,示例性存储器处理器单元312使用示例性存储器接口302基于SE指针和激活偏移来访问激活。例如,存储器处理器单元312遍历存储器204到在SE指针中标识的位置(例如,SE的开始),并且移动到与稀疏性图中的索引相对应的位置以获得激活。图8的示例性过程结束。
图9是表示示例性机器可读指令的示例性流程图900,示例性机器可读指令可以由处理器200(图2)执行以实现图3的示例性数据存储管理器202以操纵被访问的张量以促进针对基于图块的图案协议更高效处理被访问的张量。结合图11A-B的示例来描述图9的示例性流程图900。尽管结合图3的示例性数据存储管理器112来描述图9的流程图900,但是可以替代地利用其他类型的数据存储管理器和/或其他类型的处理器。如上所述,一些用于处理张量的技术包括用Y个权重来执行X个卷积(例如,其中,X等于被过滤的数据元素的数量)。然而,用于处理张量的其他技术可以利用卷积技术,该卷积技术可以涉及操纵位图以减少执行卷积所需的资源量。因此,图9的流程图900对应于其中位图用于执行卷积以节省处理器资源的技术。
在框902处,示例性向量操纵器314(图3)确定是否期望对多维数据进行操纵。例如,向量操纵器314可以从示例的基于图块的卷积确定器316(图3)接收用于操纵多维数据的指令,以操纵所访问的多维数据以便能够与特定尺寸的基于图块的模式相适应。如果示例性向量操纵器314确定不期望对多维数据进行操纵(框902:否),则控制结束。如果示例性向量操纵器314确定期望对多维数据进行操纵(框902:是),则示例性向量操纵器314将二维数据数组和/或矩阵展平成一维数据向量(框904)。例如,图11的示例性二维数据1100(例如,数据内核)对应于与四乘四图像相对应的数据的四乘四矩阵,该四乘四图像已被零填充以包括填充图像的零,从而对应于六乘六内核。示例性向量操纵器314将示例二维数据1100展平成示例性一维数据向量1102。在示例性一维数据向量1102中,示例性数据元素1104对应于示例性数据元素位置1106。通过将维度数据展平成较小的维度,卷积引擎可以通过强制位图显示相同的行为而不循环协议来进行处理,而不论数据的原始维度,从而移除了处理引擎中的控制逻辑。
在框906处,示例性向量操纵器314将过滤器内核(例如,基于图块的模式)展平成一维过滤器向量。例如,图11的示例性过滤器内核1108对应于与过滤器核相对应的三乘三的权重矩阵。示例性向量操纵器314将示例过滤器内核1108展平成示例性一维过滤器向量1110。在示例性一维过滤器向量1110中,示例性数据元素1112对应于示例性数据元素位置1114。在框907处,示例性稀疏向量转换器304基于过滤器向量生成过滤器稀疏性图,并且基于数据向量生成数据稀疏性图。
在框908处,示例性向量操纵器314确定数据稀疏性图的大小。例如,因为数据向量1102的稀疏性图的大小与数据向量1102的大小相同,因此向量操纵器314将数据向量1102的大小确定为36个数据元素。在框910处,示例性向量操纵器314将过滤器稀疏性图零填充以匹配与人工内核稀疏性图相对应的数据稀疏性图的大小。例如,向量操纵器314可以通过生成人工内核稀疏性图对过滤器稀疏性图进行零填充,其中,一组Fw个一后跟然后是Iw-Fw个零重复Fh次,后跟任何剩余位为零,其中,Fw为过滤器内核1108的宽度,Iw是数据内核1100的宽度,并且Fh是过滤器内核1108的高度。示例性人工稀疏性图1118对应于使用上述技术对与示例性过滤器内核1108相对应的过滤器稀疏性图的零填充。
在框912处,示例性的基于图块的卷积确定器316基于零填充的过滤器稀疏性图(例如,示例性零填充的过滤器稀疏性图1118)和数据稀疏性图(例如,示例性数据稀疏性图1120)执行卷积(例如,初始卷积1116)。在框914处,示例性的基于图块的卷积确定器316确定是否需要附加的卷积。例如,如上所述,所需的卷积数量对应于要被过滤的数据元素的数量。如果示例性的基于图块的卷积确定器316确定不需要附加的卷积(框914:否),则控制结束。如果示例性的基于图块的卷积确定器316确定需要附加的卷积(框914:是),则示例性向量操纵器314将零填充的内核向量稀疏性图移位(框916)。内核向量稀疏性图被移位的位数取决于卷积的当前计数的维度、数据内核1100的维度和过滤器内核1108的维度。例如,对于第二卷积(例如,图11B的示例性卷积1122),将零填充的过滤器稀疏性图1118左移一位(例如,对应于示例性的移位的零填充的过滤器稀疏性图1124),其对应于过滤过程所需的地址序列。然而,在等于数据内核的宽度的卷积次数之后需要不同的移位,该不同的移位等于过滤器内核1108的宽度。例如,在四次卷积之后(例如,数据内核1100的宽度),以及每个随后的四次卷积,向量操纵器314将零填充的过滤器稀疏性图移位三(例如,过滤器内核1108的宽度)。
在框918处,示例性的基于图块的卷积确定器316基于移位的零填充的过滤器稀疏性图(例如,示例的移位零填充的过滤器稀疏性图1124)和数据稀疏性图(例如,示例性数据稀疏性图1120)执行卷积(例如,第二卷积1122)。在一些示例中,向量操纵器314通过生成对于卷积的过滤器零填充的稀疏性图的所有必要的移位来建立所有必要的卷积,使得基于图块的卷积确定器316可以并行地执行必要的卷积。图9的示例性过程结束。
图12是被构造成执行图3的指令以实现图3的示例性数据存储管理器202的示例性处理器平台1200的框图。处理器平台1200可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、平板电脑(例如,iPadTM)或其他任何类型的计算设备)。
所示示例的处理器平台1200包括处理器200。所示示例的处理器200是硬件。例如,处理器200可以由一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或来自任何期望的系列或制造商的控制器来实现。硬件处理器200可以是基于半导体的(例如,基于硅的)设备。在该示例中,处理器实现示例性组件接口300、示例性存储器接口302、示例性稀疏向量转换器304、示例性存储器分配器306、示例性存储组织器310、示例性存储器处理单元312、示例性向量操纵器314、示例性基于图块的卷积确定器316。
所示示例的处理器200包括本地存储器1213(例如,高速缓存)。在一些示例中,本地存储器1213实现示例性存储器块缓冲器308。所示示例的处理器200经由总线1218与包括易失性存储器1214和非易失性存储器1216的主存储器通信。在一些示例中,主存储器实现示例性存储器204。易失性存储器1214可以通过同步动态随机访问存储器(SDRAM)、动态随机访问存储器(DRAM)、动态随机访问存储器和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器1216可以由闪存和/或任何其他期望类型的存储器设备来实现。对主存储器1214、1216的访问由存储器控制器控制。
所示示例的处理器平台1200还包括接口电路1220。接口电路1220可以通过任何类型的接口标准来实现,所述接口标准例如以太网接口、通用串行总线(USB)、接口、近场通信(NFC)接口和/或PCI Express接口。
在所示的示例中,一个或多个输入设备1222连接到接口电路1220。输入设备1222允许用户向处理器200中录入数据和/或命令。可以通过例如音频传感器、麦克风、相机(静止或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint和/或语音识别系统来实现。
一个或多个输出设备1224还连接到所示示例的接口电路1220。输出设备1224可以例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、就地开关(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器来实现。因此,所示示例的接口电路1220通常包括图形驱动程序卡、图形驱动程序芯片和/或图形驱动程序处理器。
所示示例的接口电路1220还包括通信设备,例如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点和/或网络接口,以促进经由网络1226与外部机器(例如,任何种类的计算设备)进行数据交换。该通信可以经由例如以太网连接、数字用户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、站点线无线系统、蜂窝电话系统等。
所示示例的处理器平台1200还包括一个或多个用于存储软件和/或数据的大容量存储设备1228。这样的大容量存储设备1228的示例包括软盘驱动器、硬盘驱动器、压缩盘驱动器、蓝光磁盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
在图4-9中表示的机器可执行指令1232可以被存储在大容量存储设备1228中、在易失性存储器1214中、在非易失性存储器1216中和/或在诸如CD或DVD之类的可移动非暂时性计算机可读存储介质上。
示例1包括种用于存储多维数据的装置,所述装置包括:存储器;存储器分配器,其用于分配所述存储器的一部分以用于存储多维数据对象;以及存储元素组织器,其用于:将所述多维数据分成存储元素;将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;将所述存储元素的起始存储器地址位置以数组存储在所述存储器中,所述数组用于促进选择性地访问所述存储器中的所述存储元素;将所述数组的指针存储到所述存储器中。
示例2包括示例1的装置,其中,当所述多维数据是稀疏对象时,所述存储元素组织器用于:将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;以及存储所述稀疏性图的稀疏性图指针。
示例3包括示例1的装置,其中,所述存储器分配器用于通过以下方式来分配所述存储器的一部分以用于存储所述多维数据对象:分配所述存储器中的多个存储器块;以及将所述存储器块的所分配的存储器地址位置存储在缓冲器中。
示例4包括示例3的装置,其中,所述存储元素组织器用于通过以下方式来存储所述存储元素:从所述缓冲器拉出所述存储器块中的一个存储器块的所分配的存储器地址位置中的一个所分配的存储器地址位置,并且在所分配的存储器地址位置中的所述一个所分配的存储器地址位置处开始存储所述存储元素中的对应的一个存储元素。
示例5包括示例3的装置,其中,所述存储器分配器用于:监视所述缓冲器;以及当存储在所述缓冲器中的所分配的存储器地址位置的数量低于第一门限时:分配所述存储器中的附加存储器块;以及将所述附加存储器块的附加的所分配的存储器地址存储在所述缓冲器中。
示例6包括示例5的装置,其中,所述存储器是第一存储器,并且所述存储器分配器用于:当可用存储器块的数量低于第二门限时,将已填充的存储器块中存储的数据移动到第二存储器中。
示例7包括示例1的装置,其中,所述存储元素组织器用于将所述存储元素非连续地存储在所述存储器中。
示例8包括示例1的装置,其中,所述存储元素组织器是第一存储元素组织器,所述存储元素是第一存储元素,并且所述起始存储器地址位置是第一起始存储器地址位置,所述装置还包括第二存储元素组织器,其用于:将第二存储元素存储在所述存储器中;以及将所述第二存储元素的第二起始存储地址存储在所述存储器中的所述数组中。
示例9包括示例8的装置,其中,所述第二存储元素组织器用于在与所述第一存储元素组织器将所述第一存储元素存储在所述存储器中相同的持续时间期间将所述第二存储元素存储在所述存储器中。
示例10包括一种非暂时性计算机可读存储介质,其包括指令,所述指令当被执行时使一个或多个处理器至少:分配存储器的一部分以用于存储多维数据对象;以及将所述多维数据分割成存储元素;将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;将所述存储元素的起始存储器地址位置以数组存储到所述存储器中,所述数组用于促进选择访问所述存储器中的所述存储元素;以及将所述数组的指针存储到所述存储器中。
示例11包括示例10的计算机可读存储介质,其中,当所述多维数据是稀疏对象时,所述指令使所述一个或多个处理器:将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;以及存储所述稀疏性图的稀疏性图指针。
示例12包括示例10所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来分配所述存储器的一部分以用于存储所述多维数据对象:分配所述存储器中的多个存储器块;以及将所述存储器块的所分配的存储器地址位置存储在缓冲器中。
示例13包括示例12的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来存储所述存储元素:从所述缓冲器拉出所述存储器块中的一个存储器块的所分配的存储器地址位置中的一个所分配的存储器地址位置,并且在所分配的存储器地址位置中的所述一个所分配的存储器地址位置处开始存储所述存储元素中的对应的一个存储元素。
示例14包括示例12的计算机可读存储介质,其中,所述指令使所述一个或多个处理器:监视所述缓冲器;以及当存储在所述缓冲器中的所分配的存储器地址位置的数量低于第一门限时:分配所述存储器中的附加存储器块;以及将所述附加存储器块的附加的所分配的存储器地址位置存储在所述缓冲器中。
示例15包括示例14的计算机可读存储介质,其中,所述存储器是第一存储器,并且所述指令使所述一个或多个处理器:当可用存储器块的数量低于第二门限时,将已填充的存储器块中存储的数据移动到第二存储器中。
示例16包括示例10的计算机可读存储介质,其中,所述指令使所述一个或多个处理器将所述存储元素非连续地存储在所述存储器中。
示例17包括示例10的计算机可读存储介质,其中,所述存储元素是第一存储元素,并且所述起始存储器地址位置是第一起始存储器地址位置,其中,所述指令使所述一个或多个处理器:将第二存储元素存储在所述存储器中;以及将所述第二存储元素的第二起始存储地址存储在所述存储器中的所述数组中。
示例18包括示例17的计算机可读存储介质,其中,所述指令使所述一个或多个处理器在与所述第一存储元素组织器将所述第一存储元素存储在所述存储器中相同的持续时间期间将所述第二存储元素存储在所述存储器中。
示例19包括一种用于存储多维数据的方法,所述方法包括:通过用一个或多个处理器执行指令,分配存储器的一部分以用于存储多维数据对象;以及通过用所述一个或多个处理器执行指令,将所述多维数据分割成存储元素;将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;将所述存储元素的起始存储器地址位置以数组存储到所述存储器中,所述数组用于促进选择访问所述存储器中的所述存储元素;以及将所述数组的指针存储到所述存储器中。
示例20包括示例19的方法,还包括当所述多维数据是稀疏对象时:将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;以及存储所述稀疏性图的稀疏性图指针。
示例21是一种示例性计算机可读介质,包括第一指令,所述第一指令在被执行时使机器执行以下各项中的至少一项:分发、配置、组装、安装、实例化、取回、解压缩和解密第二条指令以进行执行,所述第二指令用于当被执行时使机器至少:分配存储器的一部分以用于存储多维数据对象;以及将所述多维数据分割成存储元素;将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;将所述存储元素的起始存储器地址位置以数组存储到所述存储器中,所述数组用于促进选择访问所述存储器中的所述存储元素;以及将所述数组的指针存储到所述存储器中。
示例22包括示例21的计算机可读存储介质,其中,所述指令使所述一个或多个处理器:在多维数据是稀疏对象时将与稀疏对象相对应的稀疏性图存储在存储器中,存储稀疏性图的稀疏性图指针。
示例23包括示例21的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来分配所述存储器的一部分以用于存储所述多维数据对象:分配所述存储器中的多个存储器块;以及将所述存储器块的所分配的存储器地址位置存储在缓冲器中。
示例24包括示例23的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来存储所述存储元素:从所述缓冲器拉出所述存储器块中的一个存储器块的所分配的存储器地址位置中的一个所分配的存储器地址位置,并且在所分配的存储器地址位置中的所述一个所分配的存储器地址位置处开始存储所述存储元素中的对应的一个存储元素。
示例25包括示例23的计算机可读存储介质,其中,所述指令使所述一个或多个处理器:监视所述缓冲器;以及当存储在所述缓冲器中的所分配的存储器地址位置的数量低于第一门限时:分配所述存储器中的附加存储器块;以及将所述附加存储器块的附加的所分配的存储器地址位置存储在所述缓冲器中。
示例26包括示例25的计算机可读存储介质,其中,所述存储器是第一存储器,并且所述指令使所述一个或多个处理器:当可用存储器块的数量低于第二门限时,将已填充的存储器块中存储的数据移动到第二存储器中。
示例27包括示例21的计算机可读存储介质,其中,所述指令使所述一个或多个处理器将所述存储元素非连续地存储在所述存储器中。
示例28包括示例21的计算机可读存储介质,其中,所述存储元素是第一存储元素,并且所述起始存储器地址位置是第一起始存储器地址位置,其中,所述指令使所述一个或多个处理器:将第二存储元素存储在所述存储器中;以及将所述第二存储元素的第二起始存储地址存储在所述存储器中的所述数组中。
示例29包括示例28所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器在与所述第一存储元素组织器将所述第一存储元素存储在所述存储器中相同的持续时间期间将所述第二存储元素存储在所述存储器中。
根据前述内容将意识到,已经公开了示例性方法、装置和制品,其将多维数据存储到存储器和/或从存储器访问多维数据。与将整个多维数据存储为一个单元相反,所公开的方法、装置和制品通过将多维数据分解成存储元素、将存储元素存储到存储器中来提高计算设备的效率和灵活性。因为存储元素可以被不连续地存储,所以本文公开的示例提供了更灵活的存储方案,其中,当可用的连续存储器的量不足以存储整个张量时,张量可以存储在存储器的不同部分中。另外,因为每个存储装置被存储为与单独的指针相对应的单独的子单元,所以本文公开的示例促进并行处理以能够同时存储和/或访问来自多个不同存储元素的激活,从而提高了数据访问的效率。另外,因为存储元素可以小于整个张量(例如,包括存储在存储器中较少的位置上的较少的激活),因此处理器遍历存储元素所花费的时间将小于处理器遍历整个张量所花费的时间。因此,所公开的方法、装置和制品涉及计算机运行方面的一项或多项改进。
尽管本文已经公开了一些示例性方法、装置和制品,但是本专利的覆盖范围不限于此。相反,本专利覆盖了完全落入本专利的权利要求范围内的所有方法、装置和制品。
Claims (20)
1.一种用于存储多维数据的装置,所述装置包括:
存储器;
存储器分配器,其用于分配所述存储器的一部分以用于存储多维数据对象;以及
存储元素组织器,其用于:
将所述多维数据分成存储元素;
将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;
将所述存储元素的起始存储器地址位置以数组存储在所述存储器中,所述数组用于促进选择性地访问所述存储器中的所述存储元素;
将所述数组的指针存储到所述存储器中。
2.根据权利要求1所述的装置,其中,当所述多维数据是稀疏对象时,所述存储元素组织器用于:
将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;以及
存储所述稀疏性图的稀疏性图指针。
3.根据权利要求1所述的装置,其中,所述存储器分配器用于通过以下方式来分配所述存储器的一部分以用于存储所述多维数据对象:
分配所述存储器中的多个存储器块;以及
将所述存储器块的所分配的存储器地址位置存储在缓冲器中。
4.根据权利要求3所述的装置,其中,所述存储元素组织器用于通过以下方式来存储所述存储元素:从所述缓冲器拉出所述存储器块中的一个存储器块的所分配的存储器地址位置中的一个所分配的存储器地址位置,并且在所分配的存储器地址位置中的所述一个所分配的存储器地址位置处开始存储所述存储元素中的对应的一个存储元素。
5.根据权利要求3所述的装置,其中,所述存储器分配器用于:
监视所述缓冲器;以及
当存储在所述缓冲器中的所分配的存储器地址位置的数量低于第一门限时:
分配所述存储器中的附加存储器块;以及
将所述附加存储器块的附加的所分配的存储器地址存储在所述缓冲器中。
6.根据权利要求5所述的装置,其中,所述存储器是第一存储器,并且所述存储器分配器用于:当可用存储器块的数量低于第二门限时,将已填充的存储器块中存储的数据移动到第二存储器中。
7.根据权利要求1所述的装置,其中,所述存储元素组织器用于将所述存储元素非连续地存储在所述存储器中。
8.根据权利要求1所述的装置,其中,所述存储元素组织器是第一存储元素组织器,所述存储元素是第一存储元素,并且所述起始存储器地址位置是第一起始存储器地址位置,所述装置还包括第二存储元素组织器,其用于:
将第二存储元素存储在所述存储器中;以及
将所述第二存储元素的第二起始存储器地址存储在所述存储器中的所述数组中。
9.根据权利要求8所述的装置,其中,所述第二存储元素组织器用于在与所述第一存储元素组织器将所述第一存储元素存储在所述存储器中相同的持续时间期间将所述第二存储元素存储在所述存储器中。
10.一种非暂时性计算机可读存储介质,其包括指令,所述指令当被执行时使一个或多个处理器至少:
分配存储器的一部分以用于存储多维数据对象;以及
将所述多维数据分割成存储元素;
将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;
将所述存储元素的起始存储器地址位置以数组存储到所述存储器中,所述数组用于促进选择性地访问所述存储器中的所述存储元素;以及
将所述数组的指针存储到所述存储器中。
11.根据权利要求10所述的计算机可读存储介质,其中,当所述多维数据是稀疏对象时,所述指令使所述一个或多个处理器:
将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;
存储所述稀疏性图的稀疏性图指针。
12.根据权利要求10所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来分配所述存储器的一部分以用于存储所述多维数据对象:
分配所述存储器中的多个存储器块;以及
将所述存储器块的所分配的存储器地址位置存储在缓冲器中。
13.根据权利要求12所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器通过以下方式来存储所述存储元素:从所述缓冲器拉出所述存储器块中的一个存储器块的所分配的存储器地址位置中的一个所分配的存储器地址位置,并且在所分配的存储器地址位置中的所述一个所分配的存储器地址位置处开始存储所述存储元素中的对应的一个存储元素。
14.根据权利要求12所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器:
监视所述缓冲器;以及
当存储在所述缓冲器中的所分配的存储器地址位置的数量低于第一门限时:
分配所述存储器中的附加存储器块;以及
将所述附加存储器块的附加的所分配的存储器地址位置存储在所述缓冲器中。
15.根据权利要求14所述的计算机可读存储介质,其中,所述存储器是第一存储器,并且所述指令使所述一个或多个处理器:当可用存储器块的数量低于第二门限时,将已填充的存储器块中存储的数据移动到第二存储器中。
16.根据权利要求10所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器将所述存储元素非连续地存储在所述存储器中。
17.根据权利要求10所述的计算机可读存储介质,其中,所述存储元素是第一存储元素,并且所述起始存储器地址位置是第一起始存储器地址位置,其中,所述指令使所述一个或多个处理器:
将第二存储元素存储在所述存储器中;以及
将所述第二存储元素的第二起始存储器地址位置存储在所述存储器中的所述数组中。
18.根据权利要求17所述的计算机可读存储介质,其中,所述指令使所述一个或多个处理器在与所述第一存储元素组织器将所述第一存储元素存储在所述存储器中相同的持续时间期间将所述第二存储元素存储在所述存储器中。
19.一种用于存储多维数据的方法,所述方法包括:
通过用一个或多个处理器执行指令,分配存储器的一部分以用于存储多维数据对象;以及
通过用所述一个或多个处理器执行指令,将所述多维数据分割成存储元素;
将所述存储元素存储在所述存储器中,所述存储元素中的存储元素是能够独立于所述存储元素中的其他存储元素选择性地执行的;
将所述存储元素的起始存储器地址位置以数组存储到所述存储器中,所述数组用于促进选择性地访问所述存储器中的所述存储元素;以及
将所述数组的指针存储到所述存储器中。
20.根据权利要求19所述的方法,还包括当所述多维数据是稀疏对象时:
将与所述稀疏对象相对应的稀疏性图存储在所述存储器中;以及
存储所述稀疏性图的稀疏性图指针。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/289,150 US11061738B2 (en) | 2019-02-28 | 2019-02-28 | Methods and apparatus to store and access multi dimensional data |
US16/289,150 | 2019-02-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625476A true CN111625476A (zh) | 2020-09-04 |
Family
ID=72046489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010123072.0A Pending CN111625476A (zh) | 2019-02-28 | 2020-02-27 | 用于存储和访问多维数据的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11061738B2 (zh) |
JP (1) | JP2020140713A (zh) |
KR (1) | KR20200105630A (zh) |
CN (1) | CN111625476A (zh) |
DE (1) | DE102020201154A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416319A (zh) * | 2020-11-12 | 2021-02-26 | 北京和德宇航技术有限公司 | 变量保护方法、装置、电子设备及存储介质 |
CN112529157A (zh) * | 2020-12-09 | 2021-03-19 | 北京航空航天大学 | 一种基于卷积神经网络的稀疏张量存储格式自动选择方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
US10872057B1 (en) * | 2019-05-23 | 2020-12-22 | Xilinx, Inc. | Partitioning in a compiler flow for a heterogeneous multi-core architecture |
US20210357748A1 (en) * | 2020-05-14 | 2021-11-18 | Samsung Electronics Co., Ltd. | Hierarchical weight preprocessing for neural network accelerator |
CN111814202B (zh) * | 2020-08-31 | 2020-12-11 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
US11748251B2 (en) | 2021-01-08 | 2023-09-05 | Microsoft Technology Licensing, Llc | Storing tensors in memory based on depth |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0823468D0 (en) * | 2008-12-23 | 2009-01-28 | Imagination Tech Ltd | Display list control stream grouping in tile based 3D computer graphics systems |
WO2013001535A2 (en) * | 2011-06-27 | 2013-01-03 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
US9367519B2 (en) * | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
US9933838B2 (en) * | 2014-09-24 | 2018-04-03 | Seagate Technology Llc | Power management in a storage compute device |
JP6645508B2 (ja) * | 2015-11-04 | 2020-02-14 | 富士通株式会社 | 構造解析方法、及び構造解析プログラム |
US10210430B2 (en) * | 2016-01-26 | 2019-02-19 | Fabula Ai Limited | System and a method for learning features on geometric domains |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US10360214B2 (en) * | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
US10620951B2 (en) * | 2018-06-22 | 2020-04-14 | Intel Corporation | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
US20200159810A1 (en) * | 2018-11-15 | 2020-05-21 | Hewlett Packard Enterprise Development Lp | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures |
US20200183837A1 (en) * | 2018-12-07 | 2020-06-11 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
US20200202198A1 (en) * | 2018-12-21 | 2020-06-25 | Waymo Llc | Neural network processor |
US11061738B2 (en) | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
-
2019
- 2019-02-28 US US16/289,150 patent/US11061738B2/en active Active
-
2020
- 2020-01-30 DE DE102020201154.0A patent/DE102020201154A1/de active Pending
- 2020-02-27 JP JP2020031349A patent/JP2020140713A/ja active Pending
- 2020-02-27 CN CN202010123072.0A patent/CN111625476A/zh active Pending
- 2020-02-28 KR KR1020200024822A patent/KR20200105630A/ko unknown
-
2021
- 2021-07-12 US US17/373,491 patent/US11675629B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416319A (zh) * | 2020-11-12 | 2021-02-26 | 北京和德宇航技术有限公司 | 变量保护方法、装置、电子设备及存储介质 |
CN112416319B (zh) * | 2020-11-12 | 2021-07-30 | 北京和德宇航技术有限公司 | 卫星系统变量保护方法、装置、电子设备及存储介质 |
CN112529157A (zh) * | 2020-12-09 | 2021-03-19 | 北京航空航天大学 | 一种基于卷积神经网络的稀疏张量存储格式自动选择方法 |
CN112529157B (zh) * | 2020-12-09 | 2022-07-01 | 北京航空航天大学 | 一种基于卷积神经网络的稀疏张量存储格式自动选择方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2020140713A (ja) | 2020-09-03 |
US11675629B2 (en) | 2023-06-13 |
KR20200105630A (ko) | 2020-09-08 |
US11061738B2 (en) | 2021-07-13 |
US20200278888A1 (en) | 2020-09-03 |
DE102020201154A1 (de) | 2020-09-03 |
US20220138016A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625476A (zh) | 用于存储和访问多维数据的方法和装置 | |
US20190220731A1 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
CN113330421B (zh) | 点积计算器及其操作方法 | |
US11030095B2 (en) | Virtual space memory bandwidth reduction | |
US11804851B2 (en) | Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors | |
CN103793893A (zh) | 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序 | |
CN111708511A (zh) | 用于神经网络的数据压缩 | |
CN103793876A (zh) | 分布式拼接式进行高速缓存 | |
KR101609079B1 (ko) | 그래픽 프로세싱 유닛에서의 명령 선별 | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 | |
US20210343072A1 (en) | Shader binding management in ray tracing | |
CN103995684A (zh) | 超高分辨率平台下的海量影像并行处理显示方法及系统 | |
CN115422098A (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
JP6974510B2 (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
US10049487B2 (en) | Identifying duplicate indices in an input index stream | |
US11080299B2 (en) | Methods and apparatus to partition a database | |
CN113535597B (zh) | 内存管理方法、内存管理单元和物联网设备 | |
CN112395249A (zh) | 用于多个异步消耗者的方法和装置 | |
CN113688064A (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
US20140289484A1 (en) | Portable apparatus using multi-core storage mechanism and data access method therefor | |
CN115809956B (zh) | 图形处理器性能分析方法、装置、计算机设备和存储介质 | |
US11709812B2 (en) | Techniques for generating and processing hierarchical representations of sparse matrices | |
CN111913657A (zh) | 块数据读写方法、装置、系统及存储介质 | |
US20220374496A1 (en) | Techniques for accelerating matrix multiplication computations using hierarchical representations of sparse matrices | |
GB2607432A (en) | Techniques for performing matrix operations using hierarchical representations of sparse matrices |
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 |