CN111626415B - 适用于人工神经网络的高效矩阵数据格式 - Google Patents

适用于人工神经网络的高效矩阵数据格式 Download PDF

Info

Publication number
CN111626415B
CN111626415B CN201910556562.7A CN201910556562A CN111626415B CN 111626415 B CN111626415 B CN 111626415B CN 201910556562 A CN201910556562 A CN 201910556562A CN 111626415 B CN111626415 B CN 111626415B
Authority
CN
China
Prior art keywords
matrix
compressed sparse
compressed
matrices
sub
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
CN201910556562.7A
Other languages
English (en)
Other versions
CN111626415A (zh
Inventor
J·A·拉托雷
J·普尔
D·加西亚
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN111626415A publication Critical patent/CN111626415A/zh
Application granted granted Critical
Publication of CN111626415B publication Critical patent/CN111626415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Biophysics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了适用于人工神经网络的高效矩阵数据格式。许多计算系统处理以矩阵格式组织的数据。例如,人工神经网络(ANN)使用惯常的矩阵算术运算对组织成矩阵的数据执行大量计算。通常执行的一种这样的操作是转置操作。此外,许多这样的系统需要处理大尺寸的许多矩阵和/或矩阵。对于包含不重要值和许多可以忽略的值的稀疏矩阵,传输和处理这些矩阵中的所有值都是浪费的。因此,引入了用于以压缩格式存储稀疏矩阵的技术,其允许对压缩矩阵执行矩阵转置操作,而不必首先解压缩压缩矩阵。通过利用所引入的技术,可以执行比惯常系统更多的矩阵运算。

Description

适用于人工神经网络的高效矩阵数据格式
技术领域
本申请一般涉及人工神经网络,并且更具体地,涉及人工神经网络中的矩阵运算。
背景技术
人工神经网络(ANN)是受生物神经网络启发的计算系统。ANN为许多不同的机器学习算法提供了可以协同工作并处理复杂的数据输入的框架。ANN已用于各种任务,包括计算机视觉,语音和图像标识,机器翻译,社交网络过滤,游戏板和视频游戏以及医疗诊断。
概要
一个方面提供了一种对压缩的稀疏矩阵进行转置的方法。该方法包括将压缩的稀疏矩阵表示为逻辑空间中的多个压缩的稀疏子矩阵;并且在不解压缩压缩的稀疏矩阵的情况下生成压缩的稀疏矩阵的压缩转置。通过基于逻辑空间中的每个压缩的稀疏子矩阵的图案转置每个压缩的稀疏子矩阵来生成压缩的转置;以及根据一些压缩的稀疏子矩阵的位置交换一些压缩的稀疏子矩阵。
另一方面提供了一种用于对压缩的稀疏矩阵进行转置的处理器。处理器包括算术逻辑单元(ALU),其配置成将压缩的稀疏矩阵表示为逻辑空间中的多个压缩的稀疏子矩阵,并且生成压缩的稀疏矩阵的压缩转置而不解压缩压缩的稀疏矩阵。ALU配置成通过基于逻辑空间中的每个压缩的稀疏子矩阵的图案对每个压缩的稀疏子矩阵进行转置和基于一些压缩的稀疏子矩阵的位置对一些压缩的稀疏子矩阵进行交换来生成压缩的稀疏矩阵的压缩转置。
简要描述
现在参考结合以下附图的描述,其中:
图1A和图1B是根据本公开的原理压缩和编码的稀疏矩阵的示图;
图2是根据本公开的原理的用于对基于矩阵的数据执行运算的计算系统的实施例的框图;
图3A是根据本公开的原理的压缩矩阵的方法的实施例的流程图;
图3B是根据本公开的原理生成的查找表的实施例;
图4是根据本发明原理的用于解压缩稀疏矩阵的方法的实施例的流程图;
图5A-5B是根据本公开的原理压缩和加载的矩阵的图示;
图6是根据本公开的原理的用于在不解压缩的情况下对压缩的矩阵进行转置的方法的实施例的流程图;和
图7A-7C是根据本公开原理的加载有转置的压缩矩阵的图示。
详细描述
ANN是模仿人脑的一个或更多个计算系统。与生物大脑中的神经元类似,ANN由连接的单元或节点的集合构成,这些单元或节点彼此通信。在今天的大多数ANN中,节点组织成节点层,并且层的每个节点连接到其下面的层中的若干节点以及其上方的层中的若干节点。当ANN中的节点接收到信号时,它执行操作并沿其所有传出连接“触发”结果,模仿大脑。
ANN通过考虑示例来“学习”执行任务,通常不用任何特定于任务的规则编程。这种“学习”也称为训练,它涉及在节点之间传递数据,例如权重。由于ANN经常用于数据密集型任务,如计算机视觉和语音和图像标识,ANN处理的数据的复杂性和数量都很大。由于ANN通常表示为张量,所涉及的数据通常采用矩阵的形式。
这里引入的是用于有效地对基于矩阵的数据执行操作的技术。使用所引入的技术,可以使用比传统方法更少量的数据和处理能力来实现诸如对基于矩阵的数据进行压缩,解压缩和转置的操作。
当将其一些元素设置为零时,可以实现对矩阵更有效地压缩和处理,在压缩之前所引入的技术应用限制矩阵中的非零元素的数量的稀疏性限制。已经应用稀疏性限制的矩阵在此称为“稀疏”矩阵。所引入的技术沿着所应用的稀疏性限制的维度压缩稀疏矩阵,去掉不必要的、占位零的元素。
所引入的技术改变了如何考虑压缩稀疏矩阵的元数据。与考虑沿着压缩维度的非零元素的索引作为压缩稀疏矩阵的元数据的惯常方法不同,所引入的技术将逻辑空间(非压缩形式)中的非零元素的图案(pattern)视为稀疏矩阵的元数据。这基于以下认识:特定大小的稀疏矩阵(例如,4×4矩阵)可以仅具有有限数量的图案,即非零元素的位置。所引入的技术使用图案编号作为压缩的稀疏矩阵的元数据。由于表示每个图案所需的数据远小于沿压缩维度表示非零元素索引所需的数据,所引入的技术使用比惯常方法更少量的数据来存储和访问矩阵。
使用矩阵的图案编号作为索引,所引入的技术将关于矩阵的信息存储到查找表(LUT)中。通过查找诸如矩阵的非零元素索引之类的信息并从LUT转置,所引入的概念可以直接确定压缩矩阵的转置,而不必像惯常方式那样在转置之前和之后进行解压缩和重新压缩。
因此,所引入的技术不仅比惯常方法更简单和更快,而且更有效,因为它们不需要在转置之前存储解压缩数据。此外,由于存储在LUT中的信息基于对相对小的子矩阵的操纵,所引入的技术可以使用LUT来转置更大的矩阵,该更大的矩阵可以使用LUT中的子矩阵来缩放。
图1A示出了根据本公开的原理压缩和编码的稀疏矩阵100的示图。在所示的实施例中,提供了已将其限制在2维2元素稀疏性限制下的稀疏4×4矩阵100。“2维”指的是稀疏限制沿其施加的多个维度,例如沿着行N和列M,并且“2个元素”指的是每个维度中的多个非零元素,在这些维度中强加了稀疏性限制。由于对两个维度施加了两个元素限制,因此,矩阵100每行具有两个非零元素,并且每列也具有两个非零元素。阴影方块(如120s)表示零元素。
在所示的实施例中,将矩阵100水平地(沿着行N)压缩成两个2×4压缩矩阵130。考虑到压缩矩阵100的维度,通常认为在各个行140中非零元素的索引是元数据。从右到左依次从上到下计数,最右边的列为零,第一个非零元素的索引为3,第二个非零元素为0,第三个非零元素为3,第四个非零元素为2,第五个非零元素为2,第六个非零元素为1,第七个非零元素为1,第八个非零元素为0。索引为16位长度(2比特/元素*2元素/行*4行/矩阵)。
对于已将其限制在2维2元素稀疏性限制下的未压缩的矩阵(例如100),其可具有的可能的非零元素图案/位置的数量是90。因此,可以对每个图案进行编号并且仅使用7位数据进行区分。如果将诸如100之类的矩阵限制在2维1元素稀疏性限制(4→1非零)之下,则可能的图案数量将更小,导致仅24种可能的图案,其可以仅使用5位数据。
这样,代替非零元素索引/位置140,所引入的技术可以使用稀疏矩阵的图案编号作为元数据并且显著减小元数据存储区域的大小。此外,使用这些图案编号中的每一个作为LUT的索引,所引入的技术可以存储和查找关于特别受限的稀疏矩阵的有用信息,例如矩阵的非零元素索引/位置和压缩的转置信息。
与非零元素的图案类似,稀疏性限制下的矩阵中的非零元素方块的图案也可以用作元数据。图1B示出了4×4矩阵180,其在2维2元素稀疏性限制下并且因此当1×1或单个非零元素被认为是矩阵180的元素时具有90种可能的图案。当将2×2和4×4非零元素块认为是元素时,在相同的稀疏性限制下,对于8×8矩阵185和16×16矩阵两者可能的图案的数量也是90。当在矩阵中使用非零元素方块的图案作为元数据时,将块的大小(例如,作为LUT中的字段)存储。
应理解,使用非零元素正方形块的图案作为元数据不限于2维2元素稀疏性限制下的矩阵。这样的图案也可以用于不同稀疏性限制下的矩阵,例如2维1元素稀疏性限制,其提供合理数量的可能图案。还应理解,只要块可独立转置,非零元素正方形块就不具有完全密度。
图2示出了根据本公开原理的对基于矩阵的数据执行运算的计算系统200的实施例的框图。在所示的实施例中,系统200包括多个处理单元210及其各自的存储器215。处理单元210-N使用传统装置可通信地彼此耦合。
每个处理单元210包括配置成执行各种操作(诸如矩阵的压缩,解压缩和转置)的ALU,和配置成执行与上述操作有关的各种逻辑和辅助操作(例如加载,移动,复制和保存)的存储器管理单元(MMU)。在所示实施例中,每个处理单元210是图形处理单元。处理单元210可以是不同类型的通用或特殊处理单元,例如中央处理单元(CPU),存档可编程门阵列(FPGA)和专用集成电路(ASIC)。
每个存储器215s存储需要在LUT 216中执行矩阵运算的数据。如上所述,诸如每个矩阵的非零元素图案编号,非零元素的位置/索引,压缩转置信息之类的信息。存储器215s中的每一个还可以存储操作中涉及的矩阵的实际值以及可以使处理单元210s执行操作的一系列指令。
图3A示出了根据本公开原理的用于压缩矩阵的方法300的实施例的流程图。方法300可以由处理单元ALU(例如图2中的214)执行。方法300开始于305。
在步骤310中,将稀疏性限制应用于要压缩的矩阵。在步骤310中,将矩阵认为是多个子矩阵,并且将稀疏性限制应用于每个子矩阵。在一个实施例中,每个子矩阵是在2维2个元素稀疏性限制(每行和每列2个非零元素)下限制的4×4矩阵。
在步骤320中,标识子矩阵可具有的所有可能图案并将其索引到LUT中。为每个不同的图案指派一个数字,并用作LUT的索引,用于查找关于LUT中每个图案的相关信息。
在图3B中示出了根据本公开的原理生成的LUT 350的一些示例条目。所示的条目是在2维2元素稀疏性限制下限制的4×4子矩阵的前六个条目。对于六个条目中的每一个,第一列355包括索引或图案编号,第二列360包括图案/矩阵形状,第三列365包括关于非零元素的信息,例如,在图案中的非零元素的位置/索引(“常规元数据”),第四列370包括关于如何在压缩的非转置和压缩的转置的表示之间直接转换的信息,例如,对压缩转置表示中的零元素非转置的压缩表示中的源位置,以及第五列375示出了关于复制用于压缩转置的非零元素的信息,例如,用于复制的非零元素的索引。LUT 350可以位于处理单元的存储器内部或处理单元的外部,该处理单元包括执行方法300的ALU,例如图2中的215。第五列375中的信息存储在LUT 350中,例如,如果LUT 350用于编码/压缩,或者其他地方,例如在执行原始压缩的处理单元的数据结构中,例如,如果LUT 350仅用于换位/减压。
在步骤330中,压缩矩阵。通过压缩其子矩阵来压缩矩阵。可以沿着应用稀疏性限制的方向压缩子矩阵。对于具有2个方向稀疏度的子矩阵,可以沿着任何一个方向(例如,其行或列)压缩它。
在步骤340中,存储包括其元素值和元数据的矩阵。与将矩阵的所有元素的索引存储为元数据的传统方法(“常规元数据”)不同,步骤240将矩阵的子矩阵的图案编号存储为元数据。由于每个子矩阵的图案编号可以短至7位,因此可以显著减少存储矩阵元数据所需的存储空间。
矩阵的元素值和元数据都可以存储在与描述ANN中的其他矩阵的其余数据位于同一位置的长期存储介质中,或者存储在将使用矩阵以用于操作的处理单元的主存储器中。它们还可以存储在处理器的更靠近处理元件的存储器层次结构的其他级别。矩阵的元素值和元数据也可以单独存储在任何上述存储器中。例如,矩阵的元素值可以存储在长期存储器中,而其元数据和相关信息数据(例如LUT)可以存储在处理单元的存储器中。方法300在步骤345结束。
图4示出了根据本公开的原理的、用于解压缩稀疏矩阵的方法400的实施例的流程图。方法400解压缩压缩的稀疏矩阵而不对其进行解压缩,直到其到达目的地存储为止。方法400用于解压缩已经使用诸如300的压缩方法限制和压缩的压缩稀疏矩阵,其利用子矩阵的图案编号作为LUT的索引。方法400可以由处理单元的ALU执行,例如图2中的214。方法400从步骤405处开始。
在步骤410中,将压缩的稀疏矩阵从源存储器加载到中间存储器上,例如处理单元的寄存器文件和/或中间高速缓存级存储器。源存储器可以是执行方法400的处理单元的存储器。压缩的稀疏矩阵通过加载其子矩阵的元数据来加载,例如在2维2元素稀疏性限制下从4×4矩阵压缩的2×4压缩矩阵。元数据表示压缩子矩阵的非零元素图案的图案编号。对于包括多个子矩阵的压缩的稀疏矩阵,步骤410可以重复多次。
在步骤420中,使用加载的元数据作为索引,从LUT读取逻辑空间中的压缩子矩阵的图案中的非零元素的位置。步骤420可以与步骤410并行或同时执行。
在步骤430中,使用来自LUT的非零元素位置,将非零元素的值写入目标存储器。由于这些位置表示逻辑空间中非零元素的位置,因此它们对应于未压缩/解压缩形式的非零元素的位置。目的地存储器可以是另一个处理单元的存储器或同一存储器的另一个位置。应当理解,由于压缩的矩阵保持压缩直到其到达目的地存储为止,方法400可以节省大量的中间存储空间。方法400在步骤435处结束。
图5A和图5B是根据本公开的原理的压缩和加载的矩阵510、520的图。图5A示出了矩阵的逻辑(未压缩)视图,并且图5B示出了加载之前的矩阵的压缩视图。在所示的实施例中,将两个8×8矩阵压缩成两个8×4矩阵,形成一个8×8压缩矩阵。
在图5A中,示出了两个未压缩的8×8矩阵,矩阵A 510和矩阵B 520。在所示的视图中,矩阵A 510和矩阵B 520二者都被认为包括四个4×4子矩阵,矩阵A的子矩阵A1-4和矩阵B 520的子矩阵B1-4,每个矩阵施加有2维2个非零元素稀疏性限制。矩阵510、520内的白色单元表示用相应的子矩阵号标记的非零元素,并且黑色单元表示零元素。尽管未示出,但是一旦对矩阵施加了稀疏性限制,则标识子矩阵可以具有的所有可能图案并将其索引到LUT中。如图1A所讨论的那样,由于每个子矩阵是4×4且在2维2个非零元素稀疏性限制下,因此标识子矩阵的90种可能图案并将其索引到LUT中。
图5B示出了加载了压缩形式530、540的矩阵A和B 510、520。可以使用诸如图3A中的300的压缩方法来压缩矩阵A和B 510、520。在所示的实施例中,矩阵A和B 510、520的子矩阵A1-4和B1-4沿其行水平压缩。当每个子矩阵变为2×4压缩的子矩阵时,矩阵510、520变为两个压缩的4×8矩阵530、540。
使用其子矩阵的图案编号加载压缩的矩阵A和B 530、540。子矩阵可以加载“行优先”,它按物理位置加载子矩阵,或者“矩阵优先”,按逻辑顺序加载。当加载“行优先”时,子矩阵将按A0,A1,B0,B1,A2,A3,B2,B3的顺序加载,并且当加载“矩阵优先”时按照A0,A1,A2,A3,B0,B1,B2,B3,B4的顺序。可以使用加载稀疏矩阵(LDSM)指令(具有可选的转置)来加载矩阵530,540。
图6示出了根据本公开的原理的、用于在不解压缩的情况下转置压缩的矩阵的方法600的实施例的流程图。方法600用于转置已经使用诸如图3 A中的压缩方法300压缩的矩阵,其利用子矩阵的图案编号作为元数据和LUT的索引。方法600可以由处理单元的ALU执行,例如图2中的214。方法600开始于步骤605。
在步骤610中,将要转置的压缩矩阵加载到逻辑空间中。在所示实施例中,压缩矩阵由多个子矩阵组成,并且每个子矩阵表示在逻辑空间中。应当理解,对于工作方法600,压缩矩阵必须是矩形矩阵,其尺寸是逻辑空间/未压缩形式的子矩阵维度的倍数。
一旦加载,在步骤620中转置压缩的矩阵的每个压缩的子矩阵。基于逻辑空间中的每个压缩放入子矩阵的非零元素图案来对每个压缩子矩阵进行转置。使用各自的图案作为索引,针对每个压缩子矩阵的转置信息(例如图3B中的370和375)可以从LUT获得。LUT是在基于维度和稀疏性限制压缩子矩阵时创建的查找表。应当理解,当压缩的矩阵仅由1个子矩阵组成时,例如,当压缩矩阵具有与压缩的子矩阵相同的尺寸/维度时,方法600可以在执行步骤620时结束。
使用存储在LUT中的数据的子矩阵的转置可以在软件或硬件中以多种方式实现。一个硬件实现依赖于多路复用器从压缩子矩阵的非转置中针对压缩子矩阵的转置中的每个非零元素选择适当的值。具有二维双元素稀疏性的4×4子矩阵的非转置压缩表示如表1所示:
A B
C D
E F
G H
表1
对于诸如表1中的压缩子矩阵之类的压缩子矩阵,其转置可以看起来只有有限数量的方式。具体地,压缩子矩阵的转置中的每个非零元素的值只能来自压缩子矩阵的非转置中的非零元素的子集:
A,C,E C,E,G
A,B,C,D,E,F C,D,E,F,G,H
A,B,C,D,E,F, C,D,E,F,G,H
B,D,F D,F,H
表2
如上所示,压缩子矩阵的转置中的四个位置只能由来自三个非零元素之一的值填充,例如,ACE,CEG,BDF和DFH,并且其他四个位置可以由来自六个非零元素之一的值填充,例如ABCDEF,CDEFGH,ABCDEF,CDEFGH。因此,可以使用四个3:1多路复用器和四个6:1多路复用器来实现转置。
可以通过复制非转置的压缩子矩阵的一些非零元素的值并将它们作为额外的非零元素添加到非转置的压缩子矩阵来进行对该实现的修改。每个复制值将对应于来自CDEF的值,这对于需要6:1多路复用器的四个中间位置是通用的。修改将允许四个6:1多路复用器交换为四个3:1多路复用器,并简化硬件/软件的实现。
例如,在图3B中的LUT的四个索引提供如下表:
表3
使用表3中的第四和第五列中的转置信息,例如,图3B中的370和375,具有第二列的矩阵形状的子矩阵可以使用四个3:1多路复用器直接变换为转置的压缩表示。表3的第四和第五列通过复制CDEF的值(所有“中间”条目共有)允许所有非零元素的值来自三个位置之一。使用简化的多路复用,子矩阵的非转置压缩表示将看起来如下表所示:
1 2
3 4
5 6
7 8
3 6
0/X 4
表4
表4示出了非转置的压缩表示,其在末尾具有四个额外的重复条目,其填充有对应于第五列中的索引的值(3,6,X(不关心,空,0),4)。当如上所示将这些额外复制条目的值与非转置压缩子矩阵的数据一起存储时,可以从LUT中省略第五列中的信息(尽管在概念上属于索引中的子矩阵)。虽然这些复制值的索引仍然可以存储在如上所述的LUT或其他数据结构中(关于图3B),但是复制值本身与压缩子矩阵的数据一起存储。
为了提供子矩阵的压缩转置,必须移动非转置压缩表示中的值。第四列指示在何处查找每个条目的值。表5是表2的新版本,这些“额外条目”是明确的,每个位置只有三个可能的来源:
A,C,E C,E,G
A,B,3 G,H,6
A,B,0 G,H,4
B,D,F D,F,H
表5
基于第四列的内容选择位置,其中0,1,2分别指示第一源,第二源和第三源。因此,选择对应于表3第四列中的源位置的下划线元素,如下表所示:
A,C,E C,E,G
A,B,3 G,H,6
A,B,0 G,H,4
B,D,F D,F,H
表6
当正确选择时,子矩阵将看起来(上面的字母用来自压缩表示的相应数字替换)如下表所示:
5 7
3 6
1 4
2 8
表7
这匹配索引4中的子矩阵的压缩转置表示,其可以通过惯常的三阶段(解压缩+转置+再压缩)过程获得。可以从对LUT和原始压缩表示的一次访问直接生成压缩转置表示,而不是这三个阶段。略微增加压缩子矩阵的数据大小使得转置操作更加简单。应当理解,对转置操作的修改不限于上述示例,并且可以存在基于类似数据大小/简单性折衷的其他修改。
一旦将子矩阵转置,则在步骤630中通过交换一些子矩阵的位置来整体地压缩矩阵。交换一些子矩阵的位置,好像它们已经从左上角翻转在到压缩矩阵的右下角。对于矩形矩阵可以采用类似的方法,其中对角线是具有矩形矩阵的较大边的尺寸的方矩阵的对角线。方法600在步骤635处结束。
图7A-C示出了根据本公开原理的加载有转置的压缩矩阵的图。压缩矩阵可以使用诸如图6中的600的转置方法来转置。图7A示出了要转置的压缩的非转置矩阵700。在压缩时,矩阵700是8×16矩阵,由16个4×4子矩阵NT0-15组成,其已经施加有2个非零元素2个方向稀疏度并沿着该行压缩。NT指示每个子矩阵是非转置形式。
图7B和图7C示出了如何将压缩的非转置矩阵700直接加载到具有转置的目的地存储器而不经过解压缩。在图7B中,每个非转置子矩阵NT0-15分别转置到转置子矩阵T0-15中,形成部分转置矩阵710。如上所述,利用步骤620,采用来自LUT的转置信息转置非转置子矩阵NT0-15。使用逻辑空间中的每个子矩阵的各自图案作为索引,查找转置信息。一旦转置了所有非转置子矩阵NT0-15,就交换一些转置子矩阵T0-15的位置。对转置的子矩阵T1,2,4,5,7,8,10,11,13,14,15,16的位置进行交换,好像它们已经翻过主对角线725从压缩矩阵710的左上角延伸到右下角。
如图7C所示,对转置的子矩阵T5和T10的位置进行交换,对转置的子矩阵T4和T14的位置进行交换,对转置的子矩阵T1和T11的位置进行交换,对转置的子矩阵T0和T15的位置进行交换,对转置的子矩阵T2和T7位置进行交换,以及对转置的子矩阵T8和T13的位置进行交换。不对对角线延伸穿过的转置子矩阵T3,6,9,12的位置进行交换,因为它们仅仅进行自身翻转。一旦交换了一些转置的子矩阵,部分转置的压缩矩阵710就变成完全转置的压缩矩阵720。应当理解,可以使用诸如LDSM.T或MOVM.T的指令生成并加载/移动诸如720的完全转置的压缩矩阵。还应理解,基于指令的能力,可以使用多个指令(例如两个单独的指令)来执行转置,每次转置和一次加载/移动8×16矩阵的一半(8×8)。
上述装置,系统或方法的一部分可以体现在各种数字数据处理器或计算机中或由其执行,其中将计算机编程或在其内存储软件指令序列的可执行程序以执行一个或更多个这些方法的步骤。这些程序的软件指令可以表示算法并且以机器可执行的形式编码在非暂时性数字数据存储介质上,例如磁盘或光盘、随机存取存储器(RAM)、磁性硬盘、闪存和/或或只读存储器(ROM),以使各种类型的数字数据处理器或计算机能够执行上述方法中的一个或更多个的一个,多个或所有步骤,或本文所述的功能,系统或装置。
所公开的实施例的部分可以涉及具有非暂时性计算机可读介质的计算机存储产品,其上具有用于执行体现装置,设备的一部分或执行本文所述的方法的步骤的各种计算机实现的操作的程序代码。这里使用的非暂时性是指除了暂时的传播信号之外的所有计算机可读介质。非暂时性计算机可读介质的示例包括但不限于:磁性介质,诸如硬盘,软盘和磁带;光盘介质,如CD-ROM盘;磁光介质,如光盘;和专门配置用于存储和执行程序代码的硬件设备,例如ROM和RAM设备。程序代码的示例包括诸如由编译器产生的机器代码和包含可由计算机使用解释器执行的更高级代码的文档。
在解释本公开时,应以与上下文一致的最广泛的可能方式解释所有术语。特别地,应该将术语“包括”和“包含”解释为以非排他的方式指代元件,组件或步骤,该非排他的方式指示所引用的元件,组件或步骤可以存在,或者对其进行利用或与未明确引用的其他元素,组件或步骤进行组合。
本申请所涉及领域的技术人员将理解,可以对所描述的实施例进行其他和进一步的添加,删除,替换和修改。还应理解,本文使用的术语仅用于描述特定实施方案的目的,并不旨在限制,因为本公开的范围仅受权利要求的限制。除非另外定义,否则本文使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。尽管与本文描述的那些类似或等同的任何方法和材料也可用于本公开的实践或测试,但本文描述了有限数量的示例性方法和材料。

Claims (20)

1.一种对压缩的稀疏矩阵进行转置的方法,包括:
将所述压缩的稀疏矩阵加载为多个压缩的稀疏子矩阵;以及
在没有解压缩所述压缩的稀疏矩阵的情况下生成所述压缩的稀疏矩阵的转置;
其中所述生成包括:
使用所述压缩的稀疏子矩阵的图案编号来对所述压缩的稀疏子矩阵进行转置,其中所述压缩的稀疏子矩阵的每个不同的图案被指派具有不同的图案编号;以及
对一些所述压缩的稀疏子矩阵的位置进行交换。
2.如权利要求1所述的方法,其中所述转置包括使用来自查找表(LUT)的每个所述压缩的稀疏子矩阵的转置信息。
3.如权利要求2所述的方法,其中所述图案编号中的每一者用作所述压缩的稀疏子矩阵中的每一者的所述LUT的索引。
4.如权利要求3所述的方法,其中所述LUT包括在所述每个不同的图案中的非零元素的位置,和所述每个不同的图案的转置中的非零元素的位置。
5.如权利要求1所述的方法,还包括通过向矩阵应用稀疏性限制来生成所述压缩的稀疏矩阵,所述稀疏性限制限制所述矩阵的至少一个维度中的非零元素的数量并且沿着所述至少一个维度中的一个压缩所述矩阵。
6.如权利要求1所述的方法,还包括:在没有在所述压缩的稀疏矩阵存储在目的地存储器中时解压缩所述压缩的稀疏矩阵的情况下,解压缩所述压缩的稀疏矩阵,所述解压缩包括:
加载所述压缩的稀疏子矩阵的元数据,所述元数据是所述压缩的稀疏子矩阵的所述图案编号;
通过将所述元数据用作LUT的索引,从所述LUT读取逻辑空间中的所述压缩的稀疏子矩阵的所述图案中的非零元素的位置;和
根据所述位置将所述非零元素的值写入所述目的地存储器。
7.如权利要求1所述的方法,其中每个所述图案编号是每个所述压缩的稀疏矩阵的元数据,并且所述元数据小于表示每个所述图案中非零元素的位置的数据。
8.如权利要求1所述的方法,还包括:将每个所述图案编号作为每个所述压缩的稀疏子矩阵的元数据加载。
9.如权利要求1所述的方法,其中每个所述压缩的稀疏子矩阵是4×4矩阵,在一行和一列中具有两个非零元素。
10.如权利要求1所述的方法,其中所述生成包括复制所述压缩的稀疏子矩阵的一些非零元素,并且其中在所述转置期间访问所述一些非零元素。
11.一种用于对压缩的稀疏矩阵进行转置的处理器,包括:
算术逻辑单元(ALU),被配置成将所述压缩的稀疏矩阵作为多个压缩的稀疏子矩阵加载,并在没有解压缩所述压缩的稀疏矩阵的情况下生成所述压缩的稀疏矩阵的转置;
其中所述ALU被配置成通过使用所述压缩的稀疏子矩阵的图案编号对每个所述压缩的稀疏子矩阵进行转置和对一些所述压缩的稀疏子矩阵的位置进行交换来生成所述压缩的稀疏矩阵的所述转置,其中所述压缩的稀疏子矩阵的每个不同的图案被指派具有不同的图案编号。
12.如权利要求11所述的处理器,其中所述转置包括在查找表(LUT)中使用每个所述压缩的稀疏子矩阵的转置信息。
13.如权利要求12所述的处理器,其中每个所述图案编号用作所述压缩的稀疏子矩阵中的每一者的所述LUT的索引。
14.如权利要求13所述的处理器,其中所述LUT包括所述每个不同的图案中的非零元素的位置,以及所述每个不同的图案的转置中的非零元素的位置。
15.如权利要求11所述的处理器,其中所述ALU还配置成通过向矩阵应用稀疏性限制来生成所述压缩的稀疏矩阵,所述稀疏性限制限制所述矩阵的至少一个维度中的非零元素的数量并且沿着所述至少一个维度中的一个压缩所述矩阵。
16.如权利要求11所述的处理器,其中所述ALU配置成在没有在所述压缩的稀疏矩阵存储在目的地存储器中之前解压缩所述压缩的稀疏矩阵的情况下,通过以下方式解压缩所述压缩的稀疏矩阵:
加载所述压缩的稀疏子矩阵的元数据,所述元数据是所述压缩的稀疏子矩阵的所述图案编号;
通过将所述元数据用作LUT的索引,从所述LUT中读取逻辑空间中的所述压缩的稀疏子矩阵的所述图案中的非零元素的位置;以及
根据所述位置将所述非零元素的值写入所述目的地存储器。
17.如权利要求11所述的处理器,其中每个所述图案编号是每个所述压缩的稀疏矩阵的元数据,并且所述元数据小于表示每个所述图案中非零元素的位置的数据。
18.如权利要求11所述的处理器,还包括:存储器管理单元(MMU),配置成将每个所述图案编号作为每个所述压缩的稀疏子矩阵的元数据加载。
19.如权利要求11所述的处理器,其中每个所述压缩的稀疏子矩阵是4×4矩阵,在一行和一列中具有两个非零元素。
20.如权利要求11所述的处理器,其中,复制所述压缩的稀疏子矩阵的一些非零元素,并且在所述转置期间访问所述一些非零元素。
CN201910556562.7A 2019-02-27 2019-06-25 适用于人工神经网络的高效矩阵数据格式 Active CN111626415B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/287,564 US10860293B2 (en) 2019-02-27 2019-02-27 Efficient matrix data format applicable for artificial neural network
US16/287,564 2019-02-27

Publications (2)

Publication Number Publication Date
CN111626415A CN111626415A (zh) 2020-09-04
CN111626415B true CN111626415B (zh) 2023-10-10

Family

ID=72138983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910556562.7A Active CN111626415B (zh) 2019-02-27 2019-06-25 适用于人工神经网络的高效矩阵数据格式

Country Status (3)

Country Link
US (2) US10860293B2 (zh)
CN (1) CN111626415B (zh)
DE (1) DE102020102273A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860293B2 (en) 2019-02-27 2020-12-08 Nvidia Corporation Efficient matrix data format applicable for artificial neural network
CN114527930B (zh) * 2021-05-27 2024-01-30 北京灵汐科技有限公司 权重矩阵数据存储方法、数据获取方法和装置、电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
CN103761215A (zh) * 2014-01-15 2014-04-30 北京新松佳和电子系统股份有限公司 基于图形处理器的矩阵转置优化方法
CN104809161A (zh) * 2015-04-01 2015-07-29 中国科学院信息工程研究所 一种对稀疏矩阵进行压缩和查询的方法及系统
US10146740B1 (en) * 2017-03-08 2018-12-04 Symantec Corporation Sparse data set processing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1297568C (en) * 1986-09-29 1992-03-17 Nec Corporation Multiplexer/demultiplexer circuitry for lsi implementation
US6573846B1 (en) * 2001-12-31 2003-06-03 Apple Computer, Inc. Method and apparatus for variable length decoding and encoding of video streams
US8775495B2 (en) * 2006-02-13 2014-07-08 Indiana University Research And Technology Compression system and method for accelerating sparse matrix computations
US20080126467A1 (en) * 2006-09-26 2008-05-29 Anwar Ghuloum Technique for transposing nonsymmetric sparse matrices
US8612723B2 (en) * 2008-05-06 2013-12-17 L-3 Communications Integrated Systems, L.P. System and method for storing a sparse matrix
US7792013B2 (en) * 2008-07-31 2010-09-07 Nokia Corporation Low density lattice code generator matrices using mutually orthogonal latin squares
WO2011156247A2 (en) * 2010-06-11 2011-12-15 Massachusetts Institute Of Technology Processor for large graph algorithm computations and matrix operations
US9317482B2 (en) * 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
US10275479B2 (en) * 2014-02-27 2019-04-30 Sas Institute Inc. Sparse matrix storage in a database
US9632729B2 (en) * 2014-05-07 2017-04-25 Seagate Technology Llc Storage compute device with tiered memory processing
JP6384331B2 (ja) * 2015-01-08 2018-09-05 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
US9606934B2 (en) * 2015-02-02 2017-03-28 International Business Machines Corporation Matrix ordering for cache efficiency in performing large sparse matrix operations
US10452744B2 (en) * 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication
US10366322B2 (en) * 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
US10860293B2 (en) 2019-02-27 2020-12-08 Nvidia Corporation Efficient matrix data format applicable for artificial neural network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
CN103761215A (zh) * 2014-01-15 2014-04-30 北京新松佳和电子系统股份有限公司 基于图形处理器的矩阵转置优化方法
CN104809161A (zh) * 2015-04-01 2015-07-29 中国科学院信息工程研究所 一种对稀疏矩阵进行压缩和查询的方法及系统
US10146740B1 (en) * 2017-03-08 2018-12-04 Symantec Corporation Sparse data set processing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
压缩感知图像重构中矩阵互相关性的研究;郑永奇;焦铸;韩玉霞;;微型机与应用(05);全文 *

Also Published As

Publication number Publication date
US20210034332A1 (en) 2021-02-04
US10860293B2 (en) 2020-12-08
DE102020102273A1 (de) 2020-08-27
CN111626415A (zh) 2020-09-04
US20200272425A1 (en) 2020-08-27
US11249727B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
CN112292816B (zh) 处理核心数据压缩和存储系统
JP7029321B2 (ja) 情報処理方法、情報処理装置およびプログラム
EP3676700B1 (en) Efficient direct convolution using simd instructions
EP0431961B1 (en) Image reduction/enlargement technique
CN106852185A (zh) 基于字典的并行压缩编码器
CN111626415B (zh) 适用于人工神经网络的高效矩阵数据格式
KR20170128080A (ko) 신경 네트워크를 구현하는 방법 및 장치
CN113767371B (zh) 用于高性能向量处理的地址生成的方法
EP3637327A1 (en) Computing device and method
CN113222159B (zh) 一种量子态的确定方法及装置
EP4128066A1 (en) Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs
Žalik et al. Chain code compression using string transformation techniques
JP2020091831A (ja) 二次元シンボルを介した機械学習
DE112020004266T5 (de) Kompressionsunterstützungsanweisungen
CN115905546A (zh) 基于阻变存储器的图卷积网络文献识别装置与方法
JP5029684B2 (ja) パターンマッチング方法及びプログラム
GB2571818A (en) Selecting encoding options
JP2004258863A (ja) コンピュータシステム及びプログラマブル論理回路並びに回路データの書き込み方法並びにデータ作成プログラム
Wu et al. Accelerating a lossy compression method with fine-grained parallelism on a gpu
CN116910437B (zh) 矩阵转置装置、方法、ai处理器及计算机设备
KR102317205B1 (ko) 압축된 데이터를 복원하는 방법 및 장치
US20230069961A1 (en) Information processing method, information processing system, and information processing program
US20230237307A1 (en) Systems and methods for a hardware neural network engine
Dey Exploring Complexity Reduction in Deep Learning
CN113544684A (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