CN111752530A - 对块稀疏度的机器学习架构支持 - Google Patents
对块稀疏度的机器学习架构支持 Download PDFInfo
- Publication number
- CN111752530A CN111752530A CN202010104093.8A CN202010104093A CN111752530A CN 111752530 A CN111752530 A CN 111752530A CN 202010104093 A CN202010104093 A CN 202010104093A CN 111752530 A CN111752530 A CN 111752530A
- Authority
- CN
- China
- Prior art keywords
- matrix
- order
- sparsity
- memory
- accelerator
- 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
- 238000010801 machine learning Methods 0.000 title description 14
- 239000011159 matrix material Substances 0.000 claims abstract description 358
- 230000015654 memory Effects 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 3
- 230000001133 acceleration Effects 0.000 abstract description 10
- QRYFCNPYGUORTK-UHFFFAOYSA-N 4-(1,3-benzothiazol-2-yldisulfanyl)morpholine Chemical compound C1COCCN1SSC1=NC2=CC=CC=C2S1 QRYFCNPYGUORTK-UHFFFAOYSA-N 0.000 description 49
- 238000012545 processing Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008707 rearrangement Effects 0.000 description 4
- 241001442055 Vipera berus Species 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/3001—Arithmetic instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Algebra (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Advance Control (AREA)
Abstract
本公开涉及用于不同矩阵稀疏度模式的矩阵操作加速。可以将矩阵操作加速器设计为针对第一矩阵稀疏度模式而不是针对第二矩阵稀疏度模式更有效地执行矩阵操作。具有第二稀疏度模式的矩阵可以被转换为具有第一稀疏度模式的矩阵,并且被提供给矩阵操作加速器。通过重新排列矩阵的行和/或列,可以将矩阵的稀疏度模式转换为适合于利用矩阵操作加速器计算的稀疏度模式。
Description
背景技术
本公开总体上涉及数据处理领域,并且更具体地,涉及用于不同矩阵稀疏度模式的矩阵操作加速。
本节旨在向读者介绍可能与本公开的各个方面有关的本领域的各个方面,下面将对其进行描述和/或要求保护。本讨论被认为有助于向读者提供背景信息,以促进更好地理解本公开的各个方面。因此,应当理解,这些陈述应当从这个角度来理解,而不是作为对现有技术的承认。
机器学习(ML)在许多技术领域中变得越来越有价值。例如,机器学习可以用于自然语言处理、图像处理、计算机视觉(诸如对象识别)、生物信息学、和经济学等等其他领域和应用中。深度学习(DL)是机器学习的子集,深度学习可以使用神经网络中的大量推断计算来递送预测数据,以供在合适的领域和应用(诸如,上文列出的那些)中使用。此外,深度学习中神经网络的增长和/或机器学习应用的增长可能导致增加的数据量和推断计算量。但是,这些训练和/或推断计算可以包括多个矩阵乘法操作(例如,通用矩阵乘法(GeMM)操作)(诸如点积计算),这可能会消耗计算机架构的显著的面积、功率和路由资源和/或可能对计算引入等待时间。
附图说明
在阅读下文详细描述时并在参考附图时,可以更好地理解本公开的各个方面,其中:
图1是根据实施例的用于实现矩阵操作的系统的框图;
图2是根据实施例的乘法累加(MAC)电路的框图;
图3是根据实施例的具有不同稀疏度的矩阵的示例的框图;
图4是根据实施例的作为输入矩阵稀疏度水平的函数的硬件加速器的性能加速的曲线图;
图5是根据实施例的原始矩阵和重新排列的矩阵的示例的框图;
图6是根据实施例的涉及重新排列的矩阵的矩阵操作的框图;
图7是根据实施例的使用针对特定稀疏度模式所设计的(例如,优化的)的硬件加速器来跨各种稀疏度模式执行矩阵操作的过程的流程图;
图8是根据实施例的作为输入矩阵原始稀疏度水平的函数的硬件加速器的性能加速的曲线图;以及
图9是根据实施例的处理器的框图。
具体实施方式
下文将描述一个或多个具体的实施例。为了提供对这些实施例的简要描述,说明书中并未描述实际实现方式的所有特征。应当领悟,在任何此类实际实现方式的开发中,如同在任何工程或设计项目中一样,为了实现开发人员的特定目标,可能做出许多特定于实现方式的决策,诸如遵守与系统相关和与业务相关的约束,这些约束可能从一个实现方式到另一个实现方式不同。此外,应当领会,此类开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这仍将是设计、制作和制造的例程任务。
当介绍本公开的各实施例的要素时,冠词“一(a,an)”、“该(the)”旨在意指存在这些要素中的一个或多个。术语“包含”、“包括”、“具有”旨在是包含性的,并且意指除了所列举的要素之外还可能存在附加要素。另外,应该理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除也合并了陈述的特征的附加实施例的存在。此外,短语A“基于”B旨在表示A至少部分地基于B。
本公开通常涉及一种数据处理系统,该数据处理系统被实现为有效地执行可与机器学习(ML)应用、深度学习(DL)应用等相关联的操作(诸如矩阵操作)。例如,本公开涉及针对不同矩阵稀疏度模式的矩阵乘法加速的技术。如本文所述,“稀疏度”是指矩阵中非零元素与剩余元素(例如,零和/或空元素)的比例。此外,在一些实施例中,矩阵操作加速器(例如,在专用集成电路(ASIC)中实现的硬件加速器、在可编程逻辑器件(诸如现场可编程门阵列)中实现的硬件加速器、软件矩阵加速器)可以处理某一组稀疏度模式(诸如非结构化稀疏度(例如,细粒度稀疏度)或结构化稀疏度(例如,块稀疏度))。在某些情况下,矩阵操作加速器仅对特定类型的稀疏度模式(例如,仅细粒度稀疏度或仅结构化稀疏度)进行操作。在其他情况下,矩阵操作加速器可能能够对多种类型的稀疏度模式进行操作,但是在某些稀疏度模式下可能更有效(例如,在细粒度稀疏度的情况下更有效或在结构化稀疏度的情况下更有效)。例如,矩阵操作加速器可以被实现以至少部分地基于对输入到矩阵操作的矩阵中的零元素和/或空元素的数量和/或位置的检测和/或预测来减少和/或优化涉及矩阵操作(例如矩阵乘法、通用矩阵乘法(GeMM)等)的计算。由此,可以减少计算矩阵操作所涉及的功率、时间(例如,等待时间)、和/或资源(例如,硬件或软件资源)。
然而,在一些实施例中,适用于第一稀疏度模式的硬件优化可能不适用于第二稀疏度模式。例如,用于加速具有非结构化稀疏度的矩阵的矩阵乘法的技术和/或硬件可能与用于加速具有结构化稀疏度的矩阵的矩阵乘法的技术和/或硬件不同。此外,不同的推断和/或深度学习模型可以使用不同的稀疏度模式来保持特定的准确度水平。由此,被设计(例如,被优化)成对具有与第一深度学习模型相对应的非结构化稀疏度模式的矩阵执行矩阵操作的矩阵操作加速器在对具有与第二深度学习模型相对应的结构化稀疏度模式的矩阵执行矩阵操作时可能能力或效率较低。如本文所使用的,被“设计”或“优化”成对一个或多个特定稀疏模式的矩阵执行矩阵操作的矩阵操作加速器可以在对具有非结构化稀疏度模式的矩阵进行矩阵操作的期间提供比在对具有结构化稀疏度模式的矩阵进行矩阵操作的期间更好的性能(例如,速度、功率等)。
例如,可以设计(例如,优化)矩阵操作加速器以在对具有非结构化稀疏度模式的矩阵进行矩阵操作的期间提供比在对具有结构化稀疏度模式的矩阵进行矩阵操作的期间更好的性能(例如,速度、功率等)。
因此,本公开描述了在其中被设计以最佳地对具有第一稀疏度模式(例如,非结构化和/或细粒度稀疏度)的矩阵进行操作的矩阵操作加速器可以对具有第二稀疏度模式(例如,结构化和/或块稀疏度)的矩阵进行基本上同样地有能力或有效率的操作的技术。实际上,软件或矩阵操作加速器可以标识具有第二稀疏度模式的矩阵和/或将具有第二稀疏度模式的矩阵转换为具有第一稀疏度模式(例如,非结构化和/或细粒度的稀疏度)的矩阵。以此方式,在不重新设计矩阵操作加速器或使其以能力和/或效率可能较低的不同的矩阵操作加速器模式操作的情况下,已经被设计成对具有第一稀疏度模式的矩阵进行最佳操作的矩阵操作加速器也可以对具有第二稀疏度模式的矩阵进行有能力和/或有效的操作。
例如,在一些实施例中,矩阵的行和/或列可以表示人工智能(AI)或机器学习(ML)应用的要素,当矩阵的行和/或列可以在从存储器中被读取和/或被提供给矩阵操作加速器时被重新排列(例如,加扰)以产生重新排列的矩阵,使得重新排列的矩阵的稀疏度模式不同于存储在存储器中的矩阵的稀疏度模式。此外,在一些实施例中,通过重新排列矩阵的行和/或列,可以将矩阵的稀疏度模式转换为更适合于特定矩阵操作加速器的稀疏度模式。例如,矩阵操作加速器可以被设计(例如优化)以对具有细粒度稀疏度模式的矩阵执行矩阵操作。由此,通过以块稀疏度模式重新排列矩阵的行和/或列,可以产生具有更细粒度的稀疏度模式的重新排列的矩阵,该重新排列的矩阵更适合于矩阵操作加速器的性能。此外,由矩阵操作加速器对重新排列的矩阵执行的矩阵操作的结果可以被重新排列以产生与原始矩阵(例如,与矩阵的原始排列)相对应的结果矩阵。为此,矩阵操作的最终结果可以保持不受输入矩阵的行和/或列的重新排列的影响。
考虑到前述情况,图1图示了可以实现机器学习(ML)和/或深度学习(DL)操作(例如,矩阵操作)的处理系统10(诸如处理器和/或处理器的组件)的框图。如图所示,存储器12(诸如随机存取存储器(RAM)、只读存储器(ROM)、和/或非易失性存储电路,闪存等)可以存储矩阵乘法指令14。在一些实施例中,如下面更详细地所述,矩阵乘法指令14可以与用于有效地执行稀疏GeMM操作的指令相对应。进一步地,处理系统10可以包括取出和解码电路16。在一些实施例中,取出和解码电路16可以从存储器12取出矩阵乘法指令14,并且可以将取出的指令解码为一个或多个操作。例如,在一些实施例中,对矩阵乘法指令14解码可涉及将矩阵乘法指令14解码为适合于由矩阵操作加速器26(例如,执行电路)执行的多个操作和/或指令。因此,处理系统10的矩阵操作加速器26可以通信地耦合至取出和解码电路16。例如,在一些实施例中,路由电路20可以将矩阵操作加速器26可通信地耦合至取出和解码电路16。此外,处理系统10可以包括写回电路30,该写回电路30可以例如将矩阵操作加速器26产生的结果提交给存储器12。
在一些实施例中,矩阵操作加速器26(例如,点积电路)可以被实现以使用逻辑和/或电路来执行点积和/或机器学习操作,如下文更详细地描述。进一步地,矩阵操作加速器26可被实现以包括控制逻辑28或可通信地耦合至控制逻辑28。控制逻辑28可被实现以包括适于与矩阵操作加速器26通信和/或用于控制矩阵操作加速器26的电路和/或逻辑(诸如状态机、控制器、一个或多个处理器,等等)。例如,控制逻辑28可以指示矩阵操作加速器26部分地基于从取出和解码电路16接收到的经解码的指令和/或部分地基于控制逻辑28的配置来执行某些操作。
上文所述关于处理系统10的组件是示例性组件。为此,处理系统10可以包括与所示的那些组件相比附加的或更少的组件。另外,可以领会,本文描述的功能块可以利用硬件和软件的任何适当的组合来实现。此外,在一些实施例中,取出和解码电路16可以被实现为不同的取出电路和不同的解码电路。类似地,尽管控制逻辑28被图示为矩阵操作加速器的组件,但是控制逻辑28可以被实现为处理系统10中的单独组件或组件的组合。此外,路由电路可以在矩阵操作加速器26的外部实现为矩阵操作加速器26的组件或其组合,因此,本文所描述的实施例旨在是说明性的而非限制性的。
图2图示了可以被包括在矩阵操作加速器26中的乘法累加(MAC)电路40的实施例。如所图示的实施例中所示,MAC电路40可以包括一组乘法器42(例如,乘法器电路),以及可以被排列在加法器树46中的一组加法器44(例如,加法器电路)。因此,MAC电路40可以被实现以执行矩阵操作(诸如矩阵乘法)。为此,矩阵操作加速器26可以包括MAC电路40并且可以执行矩阵乘法。
现在转向图3,可以部分地基于矩阵中的空元素和/或零元素的模式(例如,分布)以及矩阵中的空元素和/或零元素相对于矩阵中的非零元素的比例,利用许多不同稀疏度的模式中的一种或多种来实现矩阵。例如,如上所述,矩阵可以包括细粒度的稀疏度(例如,非结构化稀疏度)、块稀疏度(例如,结构化稀疏度)等。为了帮助说明,在图3中示出了具有不同的各自稀疏度模式的多个矩阵100的框图。例如,第一矩阵100A图示了具有细粒度稀疏度的矩阵的示例,因为空元素102(例如,零和/或空元素)通过非零元素103相对地彼此隔离。进一步地,第二矩阵100图示了具有2x2块稀疏度的矩阵的示例。为此,第二矩阵100B包括为两个空元素102宽并且两个空元素102高的空块104。此外,第三矩阵100C图示了具有4×1块稀疏度的矩阵的示例,因为第三矩阵100C包括为一个空元素102宽并且四个空元素102高的空块104。第四矩阵100D图示了具有4×4的块稀疏度的矩阵的示例,该第四矩阵100D包括为四个空元素102宽并且四个空元素102高的空块104。另外,尽管图示了四种稀疏度模式(例如,细粒度、2x2块稀疏度、4x1块稀疏度、和4x4块稀疏度),但是可以领会,可以利用其他稀疏度模式(例如8x1、8x8、16x1等)来实现矩阵。因此,本文描述的实施例旨在是说明性的而不是限制性的。
在一些实施例中,为了改善处理系统10的性能(例如,等待时间)和功率效率,矩阵操作加速器26(诸如深度学习矩阵操作加速器)可以被实现以支持稀疏通用矩阵乘法(GeMM)的改善的(例如优化的)处理。更具体地,在一些实施例中,矩阵操作加速器26可以被实现以优化对诸如非结构化稀疏度(例如,细粒度的稀疏度)或结构化稀疏度(例如,块稀疏度)之类的某一组稀疏度模式的处理。然而,在一些实施例中,适用于第一稀疏度模式的硬件和/或逻辑优化可能不适用于第二稀疏度模式。例如,为了使用具有细粒度的稀疏度的输入矩阵来执行矩阵操作,矩阵操作加速器26可以被实现以使用滑动窗口来定位将计算移动至未使用的乘法器(例如,乘法电路)的机会。但是,因为块稀疏度模式的空元素102可能位于空块104(例如,群集)中,所以就针对没有细粒度稀疏度的矩阵得到的性能量度(例如,速度、功率等)而言,此技术可能不适用。
为了帮助说明,图4示出了被设计(例如被优化)成根据输入到矩阵操作加速器26的矩阵的稀疏度水平的函数对具有细粒度稀疏度的矩阵执行操作的矩阵操作加速器26的性能加速的示例曲线图。如图所示,矩阵操作加速器26利用以最细粒度的稀疏度模式(例如1x1稀疏度)实现的矩阵来产生最大的性能加速。相反,对于以更加结构化的稀疏度模式(例如,4×4块稀疏度、8×8块稀疏度等)实现的矩阵,矩阵操作加速器产生最低的相对性能加速。在一些实施例中,为了说明跨涉及以不同稀疏度模式实现的多个矩阵的操作的性能(例如,速度、等待时间、效率,等等)差异,矩阵操作加速器26可以利用被设计(例如被优化)成使用更多结构化的稀疏度模式来执行操作的附加的电路和/或逻辑来实现。此外,随着矩阵操作加速器26被设计(例如被优化)成处理的稀疏度模式的数量增加,用于实现矩阵操作加速器26的硬件可以增加。例如,在一些实施例中,第一矩阵操作加速器26可以用于使用具有第一稀疏度模式的矩阵来执行操作,而第二矩阵操作加速器26可以用于使用具有第二稀疏度模式的矩阵来执行操作。为此,设计(例如,优化)矩阵操作加速器26以对多个不同稀疏度模式执行高性能(例如,更高效率)操作在资源(例如,硬件、面积、路由、计算效率等)方面的实现可能是昂贵的。
为了避免这些成本,在一些实施例中,可以对输入矩阵的行和/或列重新排列(例如,重新排序),这可以改变矩阵的稀疏度以匹配针对其矩阵操作加速器26被设计(例如,被优化)成处理的稀疏度。例如,如图所示,通过对利用4x4块稀疏度实现的原始矩阵160的列的顺序进行加扰,可以将原始矩阵160转换为利用4x1块稀疏度实现的重新排列的矩阵180。在一些实施例中,原始矩阵160的行和/或列的顺序可以根据从存储器12读取(例如,检取)原始矩阵160的元素的顺序来确定。附加地或替代地,可以部分地基于被实现为用于存储原始矩阵160的数据结构和/或将原始矩阵160的元素存储在存储器12内的顺序来确定原始矩阵160的行和/或列的顺序。因此,通过改变从存储器12读取原始矩阵160的元素的顺序,或者通过改变在矩阵操作加速器26处接收原始矩阵160的元素的顺序和/或由矩阵操作加速器26使用原始矩阵160的元素的顺序,可以重新排列原始矩阵160的行和/或列,并且可以产生重新排列的矩阵180。例如,在所图示的实施例中,通过从存储器12中读取每第四列直到每列被读取(例如,列索引0、4、8和12,接着是列索引1、5、9和13,接着是列索引2、6、10、14,接着是列索引3、7、11,15,依此类推)来使用步长4读取矩阵100D的元素并且产生重新排列的矩阵180。
此外,如图6所示,作为用于矩阵操作(例如,矩阵乘法)的操作数的矩阵的行和/或列的顺序可能会影响操作产生的矩阵中元素(诸如内积)的位置。例如,通过加扰(例如,重新排列)输入到矩阵乘法(例如,点积计算)的矩阵200的列,可以重新排列结果矩阵220的列。即,例如,与矩阵200中具有特定索引的列相对应的内积可以位于矩阵220中具有相同索引的列中。此外,如果列索引从矩阵200中的第一个数改变为第二个数,则与矩阵220中的内积相对应的列索引将从第一个数改变为第二个数。因此,在一些实施例中,用于重新排列输入矩阵200的列的逻辑可以逆转以重新排列结果矩阵220。例如,结果矩阵220的行和/或列可以按照与用于读取输入矩阵200的顺序相反的顺序写入存储器12,使得存储在存储器12中的结果与矩阵200在其被重新排列之前产生的结果相对应。为此,使用相等但相反的技术重新排列输入矩阵200和结果220可能不会影响矩阵操作的结果。
进一步地,可以领会,在第一矩阵230和第二矩阵200的矩阵乘法中,可以重新排列第一矩阵230、结果矩阵220或两者,并且在没有任何重新排列的情况下可以产生与第一矩阵230和第二矩阵200相乘而产生的内积项相同的内积项(例如,矩阵元素)。因此,在一些实施例中,可以重新排列第一矩阵230的行、第二矩阵200的列或其组合。附加地或替代地,可以重新排列第一矩阵230的列和第二矩阵200的行。然而,在一些实施例中,结果矩阵220中的内积项的位置可基于第一矩阵230和/或第二矩阵200的行和/或列的重新排列而变化。
考虑到前述情况,图7图示了根据本文所述的实施例的用于使用针对非结构化稀疏度模式设计的(例如优化的)矩阵操作加速器跨各种稀疏度模式执行高性能矩阵操作的方法250的流程图。尽管以表示特定实施例的特定顺序描述了方法250,但是应当注意,可以以任何合适的顺序执行方法250,并且可以添加或省略步骤。此外,方法250可由处理系统10、矩阵操作加速器26、控制逻辑28、或其任何合适的组合来执行。
方法250可以通过检索矩阵(处理块252)来发起。在一些实施例中,例如,矩阵可以被存储在存储器12(例如,存储电路、随机存取存储器(RAM)、只读存储器(ROM)等)中。附加地或可替代地,矩阵可以被存储在处理系统10外部的存储器设备(诸如动态随机存取存储器(DRAM)设备,同步DRAM设备等)中。由此,可以从存储器12中检索(例如,读取、访问和/或接收)矩阵。此外,在一些实施例中,可以至少部分地基于矩阵乘法指令14来检索矩阵。例如,矩阵乘法指令14可以指定矩阵是针对要被执行的矩阵乘法的操作数。矩阵乘法指令14可以附加地指定存储器12中的矩阵的地址。更具体地,在一些实施例中,指令14可以包括关于存储器12中矩阵的元素(例如,行和/或列)的排列的信息,如下文更详细地描述。进一步地,在一些实施例中,控制逻辑28可以控制矩阵的检取。
在一些实施例中,可以将矩阵检取为重新排列的矩阵。即,例如,可以以与存储在存储器12中的原始矩阵设计的行和/或列的时间顺序不同的顺序来检取矩阵的行和/或列。因此,在一些实例中,例如,控制逻辑28可以被实现以使用特定步长等以随机顺序检取矩阵。更具体地,在一些实施例中,步长4可用于检取矩阵的每第四列,如图5所示。例如,在检取第一组列(例如,列索引0、4、8和12)之后,可以检取第二组列(例如,列索引1、5、9和13)。然而,在某些情况下,第一组列中最后一列的索引(12)与第二组列中第一列的索引(1)之间的差可能随着步长而变化。因此,可以在多组列之间调整步长,使得检取矩阵中的每个列。另一方面,在一些实施例中,可以相对于矩阵中的列的总数选择步长作为互质数。由此,在检取每组列时,步长可以保持恒定。
在一些实施例中,控制逻辑28可以被实现以使用特定的模式和/或步长来检取矩阵的行和/或列。即,例如,可以利用模式和/或步长来初始化控制逻辑28。附加地或替代地,控制逻辑28可被实现以部分地基于矩阵的大小、矩阵的稀疏度、处理系统10中的当前可用的资源(例如时间、功率等)等等来选择适于在检取期间对矩阵的行和/或列重新排列的模式和/或步长。此外,在一些实施例中,用于检取矩阵的行和/或列的模式和/或步长可以是可选择的(例如,可编程的)。例如,在一些实施例中,控制逻辑28可以被实现以使用部分地基于在处理系统10处(例如,经由输入结构(诸如键盘、鼠标、触摸屏显示器等))接收的输入而确定的模式和/或步长来检取矩阵的行和/或列。
此外,在一些实施例中,控制逻辑28可以被实现以至少部分地基于矩阵乘法指令14以特定顺序检取矩阵。例如,在一些实施例中,取出和解码电路16可以基于被实现以使控制逻辑28以特定顺序检取矩阵的矩阵乘法指令14来提供操作。附加地或可替代地,控制逻辑28可以被实现以基于与由矩阵乘法指令14所指定的顺序不同的替代顺序来检取矩阵。例如,在某些实施例中,矩阵乘法指令14中指定的矩阵的顺序可以与矩阵的原始设计相对应。因此,控制逻辑28可以被实现以响应于确定矩阵的原始设计与结构化稀疏度相对应而以产生重新排列的矩阵的顺序来检取矩阵。此外,在一些实施例中,控制逻辑28可以被实现以检取具有原始矩阵设计的矩阵。在此类实施例中,控制逻辑28可以将矩阵存储在存储器中和/或通信地耦合至矩阵操作加速器26和/或包括在矩阵操作加速器26中的存储位置中,诸如矩阵操作加速器26内的数据缓冲器。随后,控制逻辑28可以确定矩阵包括结构化稀疏度,并且,响应于确定矩阵包括结构化稀疏度,控制逻辑28可以按照重新排列的顺序将矩阵的元素递送到矩阵操作加速器26。在一些实施例中,例如,以重新排列的顺序将矩阵的元素递送到矩阵操作加速器26可能涉及重新配置路由电路20。
在检取矩阵之后,方法250可以继续进行利用矩阵来执行矩阵操作(处理块254)。例如,矩阵操作加速器26可以使用如上文所述的矩阵(该矩阵可以在递送到矩阵操作加速器26之前被重新排列)作为矩阵乘法(例如,点积操作)的操作数。此外,如上文所述,矩阵操作的一个或多个操作数可以包括重新排列的行和/或列。
方法250可以继续进行至少部分地基于矩阵操作来存储结果(例如,结果矩阵)(处理块256)。在一些实施例中,例如,写回电路30可以将结果提交到存储位置(诸如,存储器12)。此外,在一些实施例中,由写回电路提交的结果可以不同于矩阵操作的输出。即,例如,因为输入到矩阵操作的矩阵可以是重新排列的矩阵,所以矩阵操作的输出可以是重新排列的结果矩阵。因此,矩阵操作的输出可以在存储结果之前和/或存储结果的期间重新排列。为此,重新排列矩阵操作的输出可能涉及以与由矩阵操作产生的行和/或列的顺序不同的顺序将结果矩阵的行和/或列存储(例如,写入)到的存储位置(诸如存储器12)。
更具体地,在一些实施例中,控制逻辑28可以被实现以与用于检取重新排列的矩阵的顺序相反的顺序来写入和/或存储结果矩阵的行和/或列。为此,结果矩阵可以被恢复为若不重新排列输入矩阵而会从矩阵操作产生的矩阵设计。此外,为了重新排列矩阵操作的输出,控制逻辑28可以保持对矩阵操作的输入矩阵所进行的重新排列的映射。由此,控制逻辑28执行与映射中的操作相逆的操作,以重新排列结果矩阵。进一步地,可以领悟,在一些实施例中,控制逻辑28可以指示写回电路30重新排列矩阵操作的输出以存储结果。此外,如上文所述,在重新排列矩阵操作的输出之后,控制逻辑28可以将矩阵操作的输出存储在例如矩阵操作加速器26的数据缓冲器中。如上文附加地所述,控制逻辑28可以被实现以部分地基于矩阵乘法指令14和/或至少部分地基于控制逻辑28的配置来重新排列矩阵操作的输出。
图8图示了被设计(例如被优化)成根据输入到矩阵操作加速器26的矩阵的稀疏度水平的函数来对具有细粒度稀疏度的矩阵执行操作的矩阵操作加速器26的性能改善的曲线图300的示例。更具体地,曲线图300图示了根据本文所描述的技术、作为在被输入到矩阵操作加速器26之前被重新排列为具有不同稀疏度级别的矩阵的原始稀疏度级别的函数的矩阵操作加速器26的性能加速。如图所示并与图4的曲线图150相比,在一些实施例中,通过在具有不同稀疏度的矩阵被输入到矩阵操作加速器26之前重新排列这些矩阵来减小与这些矩阵相关联的性能加速之间的差异,如本文所述。因此,通过以重新排列的顺序读取输入矩阵,可以减少涉及实现矩阵操作加速器26以提供某些性能度量(例如,等待时间、功率、效率等等)的硬件和/或资源(例如,时间、面积、制造成本等等)。
进一步地,如本文所述,处理系统10可以是或可以是处理器400的组件,如图9所示。如图所示,在一些实施例中,处理器400可包括一个或多个核402(例如,处理核)、集成存储器控制器404、互连电路406和/或逻辑,该处理器400和/或逻辑可包括路由电路20等。在一些实施例中,核402可以是多线程核,该多线程核可以被实现以并发地执行多个指令线程。进一步地,虽然在所图示的实施例中示出了三个核402,但是处理器400中可以包括任何合适数量的核(例如,1、2、4、5或更多)。此外,可以领悟,核402中的每一个可以包括常见组件(诸如核402A中图示的取回和解码电路16、寄存器408和/或高速缓存单元410),或者可以包括不同的电路。例如,第一组核402可以是高性能和/或高功率核,而第二组核402可以是低性能和/或低功率核。
如进一步所示出,矩阵操作加速器26可以经由互连电路406(诸如管芯中互连)通信地耦合至核402。因此,如本文所述,取出和解码电路16可以对将由矩阵操作加速器26执行的指令进行解码,并且可以经由互连电路406将经解码的指令传送到矩阵操作加速器26。附加地或替代地,矩阵操作加速器可以包括取出和解码电路16。此外,在执行指令之后,矩阵操作加速器26可以将结果存储到存储器12(例如,系统存储器)中的区域,该存储器也可以被核402访问。此外,在一些实施例中,矩阵操作加速器26可以附加地或可选地位于与包含核402的芯片分离的芯片上。在此类实施例中,核402可以经由互连电路406和/或芯片之间的接口耦合到矩阵操作加速器26。
处理器400还可以包括集成存储器控制器404。在一些实施例中,集成存储器控制器404可以提供对存储器12的访问。进一步地,核402和/或矩阵操作加速器26可以包括多个不同的寄存器408。寄存器可以包括例如通用寄存器、控制寄存器、数据寄存器、指令指针寄存器等。在一些实施例中,控制寄存器可存储可反映核402和/或处理器400的另一组件的状态的控制位(例如,标志)。
如本文所述,实施例旨在是说明性的而不是限制性的。因此,可以领悟,上文所述关于处理器400的组件是示例性组件。例如,在一些实施例中,处理器400可以被实现为图形处理单元(GPU)、向量处理单元(VPU)、微处理器、微控制器、专用集成电路(ASIC)、数字信号处理器(DSP)等。为此,与所示的那些相比,处理器400可以包括附加的或更少的组件。
此外,在一些实施例中,处理器400可以被包括在计算机架构和/或系统中,诸如计算设备(例如,计算机、移动设备、平板设备等)。例如,在一些实施例中,处理器400可以与多个其他处理器400(例如,协处理器)一起被包括在系统中。附加地或替代地,处理器可以被包括在片上系统(SoC)集成电路设计中。
本文中所公开的技术的实施例可被实现在硬件、软件、固件或其组合中。此外,本文所述的技术可以被实现为可以由处理系统(诸如包括至少一个处理器的系统、存储系统(例如,易失性存储器、非易失性存储器、存储电路等)等等)实现的计算机程序或程序代码(例如,机器可读代码)。在一些实施例中,程序代码可以用高级或面向对象的编程语言来实现。此外,程序代码可以用汇编语言或机器语言来实现。为此,可以使用任何合适的程序代码。
进一步地,本文描述的实施例可以通过存储在表示处理器内各种逻辑的机器可读介质上的代表性指令和/或硬件描述语言(HLD)来实现。当由机器读取时,该代表性指令可以使机器制造用于执行本文所述的技术的逻辑。代表性指令可以被存储在有形的、机器可读的介质上,并且可以被执行以制造和/或配置逻辑和/或电路。在一些实施例中,机器可读存储介质可以包括由机器或设备制造或形成的制品的非暂态的有形布置。例如,机器可读存储介质可以包括诸如硬盘、软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘只读存储器(CD-ROM)、磁光盘等之类的存储介质。附加地或替代地,机器可读存储介质可以包括诸如只读存储器(ROM)、随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或其他合适的介质之类的半导体器件。
本文所提出和要求保护的技术被引用并应用于实际性质的实物和具体实例,这些实物和实例明显改善了当前技术领域,因此不是抽象的、无形的或纯理论的。进一步地,如果本说明书末尾所附的任何权利要求包含一个或多个被指定为“用于[执行][功能]…的装置”或“用于[执行][功能]…的步骤”的要素元件,则其旨在基于35U.S.C.112(f)来解释此类要素。然而,对于包含以任何其他方式指定的要素的任何权利要求,任何权利要求不旨在基于35U.S.C.112(f)来解释此类要素。
Claims (20)
1.一种系统,包括:
矩阵操作加速器电路,所述矩阵操作加速器电路被配置成用于使用第一矩阵执行矩阵操作,并至少部分地基于所述矩阵操作来输出结果矩阵;以及
控制逻辑电路,所述控制逻辑电路通信地耦合至所述矩阵操作加速器电路和存储器,其中所述控制逻辑电路被配置成用于:
从所述存储器中检取所述第一矩阵,其中从所述存储器中检取所述第一矩阵包括以不同于第二顺序的第一顺序从第二矩阵中检取以所述第二顺序排列的第一多个列;并且
将所述结果矩阵存储在所述存储器中,其中将所述结果矩阵存储在所述存储器中包括以不同于第四顺序的第三顺序将所述结果矩阵中以所述第四顺序排列的第二多个列写入第三矩阵。
2.如权利要求1所述的系统,其特征在于,所述第一矩阵包括第一稀疏度,并且所述第二矩阵包括与所述第一稀疏度不同的第二稀疏度。
3.如权利要求2所述的系统,其特征在于,所述第一稀疏度比所述第二稀疏度更细粒度。
4.如权利要求2所述的系统,其特征在于,所述矩阵操作加速器电路被配置成用于对具有所述第一稀疏度而不是所述第二稀疏度的矩阵执行矩阵操作。
5.如权利要求1所述的系统,其特征在于,所述控制逻辑电路包括一个或多个处理器。
6.如权利要求1所述的系统,其特征在于,所述第一顺序包括互质步长。
7.如权利要求1所述的系统,其特征在于,所述控制逻辑电路被配置成用于至少部分地基于提供给所述系统的输入而使用所述第一顺序来检取所述第一矩阵。
8.如权利要求1所述的系统,其特征在于,所述控制逻辑电路被配置成用于至少部分地基于所述第二矩阵的特性来确定所述第一顺序。
9.如权利要求8所述的系统,其特征在于,所述特性包括所述第二矩阵的大小、所述第二矩阵的稀疏度、或其组合。
10.如权利要求1所述的系统,包括解码电路,其中,所述控制逻辑电路被配置成用于响应于经由所述解码电路接收经解码的指令而从存储器检取所述第一矩阵。
11.如权利要求1所述的系统,其特征在于,所述系统包括处理器。
12.一种方法,包括:
从存储位置检取第一矩阵,其中检取所述第一矩阵包括以不同于第二顺序的第一顺序从第二矩阵中读取以所述第二顺序排列的第一多个列;
至少部分地基于矩阵操作和所述第一矩阵来生成结果矩阵;以及
将所述结果矩阵存储在所述存储位置中,其中存储所述结果矩阵包括以不同于第四顺序的第三顺序将所述结果矩阵中以所述第四顺序排列的第二多个列写入第三矩阵。
13.如权利要求12所述的方法,其特征在于,所述矩阵操作包括所述第一矩阵和第四矩阵的矩阵乘法。
14.如权利要求13所述的方法,包括从存储位置检取所述第四矩阵,其中检取所述第一矩阵包括以不同于第六顺序的第五顺序从第五矩阵读取以所述第六顺序排列的第一多个行。
15.如权利要求12所述的方法,包括:至少部分地基于所述第一顺序来确定所述第三顺序。
16.如权利要求12所述的方法,其特征在于,所述第一顺序包括所述第二顺序的随机化。
17.一种有形的非暂态机器可读介质,包括机器可读指令,该机器可读指令在由一个或多个处理器执行时使所述一个或多个处理器执行包括以下各项的操作:
配置矩阵操作加速器以使用第一矩阵执行矩阵操作,并至少部分地基于所述矩阵操作来输出结果矩阵;以及
配置与所述矩阵操作加速器和存储器通信耦合的控制逻辑电路,所述控制逻辑电路用于:
从所述存储器中检取所述第一矩阵,其中从所述存储器中检取所述第一矩阵包括以不同于第一顺序的第二顺序从第二矩阵中检取以所述第一顺序排列的第一多个行;并且
将所述结果矩阵存储在所述存储器中,其中将所述结果矩阵存储在所述存储器中包括以不同于第四顺序的第三顺序将所述结果矩阵中以所述第四顺序排列的第二多个行写入第三矩阵。
18.如权利要求17所述的有形的非暂态机器可读介质,其中,从所述存储器中检取所述第一矩阵包括:从存储器设备检取所述第一矩阵,其中,所述存储器设备包括动态随机存取存储器(DRAM)。
19.如权利要求17所述的有形的非暂态机器可读介质,其特征在于,配置所述矩阵操作加速器包括:
配置所述矩阵操作加速器以第一等待时间使用具有第一稀疏度的矩阵来执行矩阵操作;以及
配置所述矩阵操作加速器以不同于所述第一等待时间的第二等待时间使用具有第二稀疏度的矩阵来执行所述矩阵操作。
20.如权利要求17所述的有形的非暂态机器可读介质,其特征在于,配置所述矩阵操作加速器包括:
配置所述矩阵操作加速器以用于使用第一功率来使用具有第一稀疏度的矩阵来执行矩阵操作;以及
配置所述矩阵操作加速器以用于使用不同于所述第一功率的第二功率来使用具有第二稀疏度的矩阵来执行所述矩阵操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/370,094 | 2019-03-29 | ||
US16/370,094 US11126690B2 (en) | 2019-03-29 | 2019-03-29 | Machine learning architecture support for block sparsity |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752530A true CN111752530A (zh) | 2020-10-09 |
Family
ID=69742721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010104093.8A Pending CN111752530A (zh) | 2019-03-29 | 2020-02-20 | 对块稀疏度的机器学习架构支持 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11126690B2 (zh) |
EP (1) | EP3716102A1 (zh) |
CN (1) | CN111752530A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692847A (zh) * | 2020-12-25 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 数据处理电路、数据处理方法及相关产品 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210024865A (ko) * | 2019-08-26 | 2021-03-08 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
US11366875B2 (en) * | 2020-03-13 | 2022-06-21 | Alibaba Group Holding Limited | Method and device for matrix multiplication optimization using vector registers |
US20210400286A1 (en) * | 2020-06-19 | 2021-12-23 | Micron Technology, Inc. | Video Compression in Removable Storage Device having Deep Learning Accelerator and Random Access Memory |
US11500962B1 (en) * | 2020-06-30 | 2022-11-15 | Amazon Technologies, Inc. | Emulating fine-grained sparsity in a systolic array |
US11803736B1 (en) | 2020-06-30 | 2023-10-31 | Amazon Technologies, Inc. | Fine-grained sparsity computations in systolic array |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9081731B2 (en) * | 2013-01-31 | 2015-07-14 | Inview Technology Corporation | Efficient transforms and efficient row generation for Kronecker products of Hadamard matrices |
US9367519B2 (en) | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
US9396164B2 (en) * | 2013-10-21 | 2016-07-19 | International Business Machines Corporation | Sparsity-driven matrix representation to optimize operational and storage efficiency |
US10275479B2 (en) * | 2014-02-27 | 2019-04-30 | Sas Institute Inc. | Sparse matrix storage in a database |
US10310826B2 (en) * | 2015-11-19 | 2019-06-04 | Intel Corporation | Technologies for automatic reordering of sparse matrices |
US10489063B2 (en) * | 2016-12-19 | 2019-11-26 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
US10387037B2 (en) | 2016-12-31 | 2019-08-20 | Intel Corporation | Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies |
JP6911949B2 (ja) | 2017-07-04 | 2021-07-28 | 日本電気株式会社 | 情報処理装置、制御方法、及びプログラム |
KR102555057B1 (ko) * | 2018-05-09 | 2023-07-12 | 에스케이하이닉스 주식회사 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
US10620951B2 (en) | 2018-06-22 | 2020-04-14 | Intel Corporation | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
US10929503B2 (en) | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
-
2019
- 2019-03-29 US US16/370,094 patent/US11126690B2/en active Active
-
2020
- 2020-02-20 CN CN202010104093.8A patent/CN111752530A/zh active Pending
- 2020-02-27 EP EP20159725.9A patent/EP3716102A1/en active Pending
-
2021
- 2021-09-21 US US17/481,064 patent/US11977600B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692847A (zh) * | 2020-12-25 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 数据处理电路、数据处理方法及相关产品 |
CN114692847B (zh) * | 2020-12-25 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 数据处理电路、数据处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
US11126690B2 (en) | 2021-09-21 |
US20220004597A1 (en) | 2022-01-06 |
US11977600B2 (en) | 2024-05-07 |
EP3716102A1 (en) | 2020-09-30 |
US20200311181A1 (en) | 2020-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11977600B2 (en) | Machine learning architecture support for block sparsity | |
Cao et al. | Efficient and effective sparse LSTM on FPGA with bank-balanced sparsity | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
KR102539893B1 (ko) | 다차원 어레이로부터 요소들의 다차원 블록을 프리페치하는 하드웨어 장치들 및 방법들 | |
US20210216318A1 (en) | Vector Processor Architectures | |
KR101121606B1 (ko) | 스레드 최적화 멀티프로세서 아키텍처 | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
Zha et al. | Hyper-AP: Enhancing associative processing through a full-stack optimization | |
Yavits et al. | GIRAF: General purpose in-storage resistive associative framework | |
Gu et al. | DLUX: A LUT-based near-bank accelerator for data center deep learning training workloads | |
JP2009514070A (ja) | 局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム | |
KR20220051006A (ko) | Pim(processing-in-memory) 연산 수행 방법, 및 관련 메모리 디바이스 및 시스템 | |
GB2284690A (en) | Computer system and method for evaluating predicates and boolean expressions | |
Zeng et al. | DM-IMCA: A dual-mode in-memory computing architecture for general purpose processing | |
CN114253999A (zh) | 存储器中的数据查询的加速 | |
US11823771B2 (en) | Streaming access memory device, system and method | |
CN116204232A (zh) | 一种数据操作位宽的扩展方法及装置 | |
WO2022047802A1 (en) | Processing-in-memory device and data processing method thereof | |
Kim et al. | ComPreEND: Computation pruning through predictive early negative detection for ReLU in a deep neural network accelerator | |
Ungethüm et al. | Overview on hardware optimizations for database engines | |
KR102644951B1 (ko) | 산술 논리 장치 레지스터 시퀀싱 | |
WO2020246598A1 (ja) | 演算装置、演算方法、および演算プログラム | |
US20240054075A1 (en) | Neural processing device and load/store method of neural processing device |
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 |