CN116997887A - 用于矩阵乘法运算的矩阵的近似的数据压缩器 - Google Patents
用于矩阵乘法运算的矩阵的近似的数据压缩器 Download PDFInfo
- Publication number
- CN116997887A CN116997887A CN202280022143.5A CN202280022143A CN116997887A CN 116997887 A CN116997887 A CN 116997887A CN 202280022143 A CN202280022143 A CN 202280022143A CN 116997887 A CN116997887 A CN 116997887A
- Authority
- CN
- China
- Prior art keywords
- matrix
- elements
- values
- multiplexer
- bits
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 270
- 238000003491 array Methods 0.000 claims abstract description 39
- 238000004891 communication Methods 0.000 claims description 8
- 230000000717 retained effect Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 description 14
- 230000014759 maintenance of location Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种处理设备,该处理设备包括被配置为存储数据的存储器以及处理器。该处理器包括多个MAC,该多个MAC被配置为执行第一矩阵的元素与第二矩阵的元素的矩阵乘法。该处理器还包括多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值。该处理器还包括多个多路复用器阵列,每个多路复用器阵列被配置为接收第一矩阵和第二矩阵的元素的位以及保留位值,并且提供用于选择将第一矩阵和第二矩阵值的哪些元素提供给MAC以用于矩阵乘法的数据。
Description
相关申请的交叉引用
本申请要求2021年3月26日提交的名称为“DATA COMPRESSOR FOR APPROXIMATIONOF MATRICES FOR MATRIX MULTIPLY OPERATIONS(用于矩阵乘法运算的矩阵的近似的数据压缩器)”的待审美国非临时专利申请17/214,779号的权益,该申请全部内容据此以引用方式并入本文。本申请涉及2021年3月26日提交的名称为“APPROXIMATION OF MATRICES FORMATRIX MULTIPLY OPERATIONS(用于矩阵乘法运算的矩阵的近似)”的非临时申请17/214,784号,该申请以引用方式并入本文,如同充分阐述的一样。
背景技术
矩阵乘法是跨越多个应用领域的关键构建块,包括在高性能计算(HPC)和机器学习中的使用。矩阵乘法也用于卷积神经网络、递归神经网络和其他形式的人工神经网络。
矩阵乘法技术采用并行化来提高矩阵乘法的效率。例如,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。矩阵乘法计算被映射到处理器网络的不同处理器核心,并且由不同处理器核心执行以执行矩阵乘法运算。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例设备的框图;
图2是示出可实现本公开的一个或多个特征的处理器的示例性部件的框图;
图3是示出用于实现本公开的一个或多个特征的图2中所示的数据压缩器和MAC的示例部件的图;
图4是示出根据本公开的特征的选择用于矩阵乘法的数据的示例方法的流程图;
图5A示出根据本公开的特征的近似乘积指数值的数组的第一示例;
图5B示出根据本公开的特征的近似乘积指数值的数组的第二示例;
图5C示出根据本公开的特征的近似乘积指数值的数组的第三示例;
图5D示出根据本公开的特征的近似乘积指数值的数组的第四示例;并且
图6是示出根据本公开的特征的两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例的图。
具体实施方式
如本文所使用的,程序包括待使用一个或多个处理器执行以执行过程或例程(例如,操作、计算、功能、过程、作业)的指令序列。编程的指令和数据的处理包括多个处理阶段中的一个或多个处理阶段,诸如但不限于获取、解码、执行调度、执行和解码编程的指令和数据。编程的指令包括例如应用程序和控制程序,诸如操作系统。处理器包括例如多个处理核心(例如,计算单元(CU)),每个处理核心被配置为读取并执行程序指令,诸如执行矩阵乘法的指令。
矩阵乘法包括计算第一矩阵和第二矩阵的数据的子部分的点积。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行与矩阵B的列的点积。例如,乘法累加运算计算一对值的乘积,每个值对应于矩阵的一部分(例如,行、列、行或列的一部分,或多个行或列)的元素,并且使用称为乘数累加器(MAC)的硬件部件将乘积添加到累加器。例如,64×64乘积可实现为四个16×16MAC或八个8×8MAC。矩阵乘法通常涉及许多计算,这是耗时且昂贵的。
本申请提供用于有效地执行矩阵乘法的近似的设备和方法。本公开的特征包括数据压缩硬件,该数据压缩硬件被配置为通过沿着两个矩阵的公共维度K从待用于输入矩阵的矩阵乘法的点积计算的乘积中丢弃多个乘积(即,两个输入矩阵的元素对的乘积)来动态地确定输出矩阵。丢弃的乘积是近似为在待用于点积计算的乘积中具有最小指数和的乘积。
数据压缩硬件包括保留逻辑和多组多路复用器阵列。保留逻辑被配置为基于近似乘积指数值来确定保留位值,并且将该保留位值提供给多组多路复用器阵列,以用于确定将两个矩阵的数据元素的数组中的哪些元素保留(即,不被丢弃)并且提供给MAC以用于矩阵乘法。保留逻辑通过以下方式来确定待保留的每个矩阵的元素值的数组中的元素值的目标数量:对近似乘积指数值中的每一者的相同有效性的位值求和并且将该和与目标数量(例如,6)进行比较,从对乘积指数值的最高有效位(MSB)求和开始并且继续到每组对应的下一有效位。本公开的特征在无需首先根据乘积的值对输入数组的元素进行分类的情况下减少它们的数量,否则这在硬件中实现将是昂贵的。
例如,通过在64×64乘积值中保留最大的近似48个乘积值(即,丢弃最低的16个近似值),将64×64乘积减小为48×48乘积。举例来说,如果将64×64乘积实现为16×16MAC,则将四个16×16MAC减少为三个16×16MAC,从而导致执行任务的时间减少25%并且执行任务的能量成本减少。同样地,如果将64×64乘积实现为8×8MAC,则将八个8×8MAC减少为6个8×8MAC,从而也导致时间减少25%。待保留并且待提供给MAC以执行矩阵乘法的元素值的目标数量或者待从乘积值中丢弃的乘积值(即,丢弃的乘积值)的目标数量可为任何数量,并且基于运行时间期间的各种因素(诸如可由用于特定任务或应用程序的近似容忍的结果误差的量)来确定。例如,当用于机器学习训练时,被确定为待丢弃的乘积的目标数量是基于近似将对所得网络的精度的影响。还可基于公共维度K的大小来确定待丢弃的乘积值的目标数量。例如,基于试探法,对于较大的K值,可丢弃额外的乘积值,而对于较低的K值,可保留额外的乘积值并将其提供给MAC。
本公开的特征包括对各种不同的数据类型执行矩阵乘法,诸如浮点数据类型(例如,FP32、FP16和BF16格式)和整数数据类型(例如,int8格式)。
提供了一种处理设备,该处理设备包括被配置为存储数据的存储器和处理器。该处理器包括多个MAC,该多个MAC被配置为执行第一矩阵的元素与第二矩阵的元素的矩阵乘法。该处理器还包括多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值。该处理器还包括多个多路复用器阵列,每个多路复用器阵列被配置为接收第一矩阵和第二矩阵的元素的位和保留位值,并且提供用于选择将第一矩阵和第二矩阵值的哪些元素提供给MAC以用于矩阵乘法的数据。
提供了一种处理设备,该处理设备包括被配置为存储数据的存储器和彼此通信的多个处理器核心。每个处理器核心包括:多个MAC,该多个MAC被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法;多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的近似乘积指数的位的值求和,并且生成保留位值;以及多个多路复用器阵列,每个多路复用器阵列被配置为接收乘积指数和保留位值,并且提供用于选择将乘积指数中的哪些乘积指数提供给MAC以用于矩阵乘法的数据。
提供了一种用于矩阵乘法的处理设备,该处理设备包括被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法的多个MAC。该处理设备还包括多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值。该处理设备进一步包括多个多路复用器阵列,每个多路复用器阵列被配置为接收乘积指数值和保留位值的位,并且提供用于选择将乘积指数中的哪些乘积指数提供给MAC以用于矩阵乘法的数据。
图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。
在各种另选方案中,处理器102包括任何加速处理设备,诸如中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上,或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM),包括动态RAM(DRAM)或静态RAM(SRAM)。RAM包括例如高速缓存存储器、高速暂存存储器和寄存器。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。
本文使用CU作为处理器核心的示例来描述本公开的特征。CU包括一个或多个单指令多数据(SIMD)单元,该一个或多个单指令多数据单元被配置为根据SIMD范式以并行方式在处理器102的请求下执行操作。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元包括十六个通道,其中每个通道与SIMD单元中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。由CU提供的并行性适合于矩阵乘法,诸如例如在图形相关操作(诸如像素值计算、顶点变换和其他图形操作)中使用的矩阵乘法。
图2是示出可实现本公开的一个或多个特征的图1中所示的处理器102的示例的框图。如图2中所示,处理器102包括多个CU 202。每个CU 202包括与对应的N级高速缓存204通信并且被配置为使用对应的N级高速缓存204来处理数据的N级(例如,1级)高速缓存控制器208。另选地,使用多个N级高速缓存控制器208(例如,用于每个CU 202的高速缓存控制器208或多个高速缓存控制器208,每个高速缓存控制器与一组CU 202通信)来处理数据。
如图2中所示,处理器102还包括与N+1级高速缓存206通信并且被配置为使用N+1级高速缓存206来处理数据的N+1级(例如,2级)高速缓存控制器210。另选地,使用与一个或多个对应的N+1级高速缓存通信的多个N+1级高速缓存控制器来处理数据。如图2中所示,高速缓存控制器210还与下一高速缓存级(例如,3级)和每个N级高速缓存控制器208通信。另外地或替代地,每个CU 202与不同类型的存储器104(诸如寄存器和高速暂存存储器)通信。
如图2中所示,每个CU 202还包括MAC 212和与MAC 212通信的数据压缩器214。MAC212被配置为计算矩阵的部分的元素对的乘积(例如,近似乘积指数值)并且累加(例如,存储)该乘积以执行矩阵乘法运算。
例如,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。矩阵乘法计算被映射到不同处理器核心(例如,CU202),并且由不同处理器核心执行以执行矩阵乘法运算。
图6中示出两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行和矩阵B的列的点积。矩阵A和矩阵B在图6的顶部示出。例如,根据本公开的特征,通过以下方式来执行矩阵A与B的矩阵乘法的一部分:将矩阵B的元素数组602的4个元素602(1)至602(4)与矩阵B的数组604的4个对应的元素604(1)至604(4)的乘积值进行近似,以产生矩阵C的部分1(P1)中的结果。
尽管图6中的矩阵A和矩阵B的大小彼此不同,但是如果一个矩阵中的列的数量等于另一矩阵中的行的数量,则可对矩阵执行矩阵乘法运算。在图6中所示的示例中,矩阵A包括八列并且矩阵B包括8行。矩阵A和B中的列和行的数量仅为示例。根据本公开的特征,对满足用于矩阵乘法的一般规则的任何大小的矩阵执行矩阵乘法(例如,矩阵A中的列的数量等于矩阵B中的行的数量)。
如下文关于图3更详细描述的,数据压缩器214包括硬件电路,该硬件电路被配置为通过沿着两个矩阵的公共维度K从待用于输入矩阵的矩阵乘法的点积计算的乘积中丢弃多个乘积(即,两个输入矩阵的元素对的乘积)来动态地确定输出矩阵C。丢弃的乘积是近似为在待用于点积计算的乘积中具有最小指数和的乘积。
图3是示出用于实现本公开的一个或多个特征的图2中所示的数据压缩器214和MAC 212的示例部件的图。如图3中所示,数据压缩器214包括保留逻辑306、多组多路复用器阵列300,每组多路复用器阵列具有6个多路复用器。图3中所示的多路复用器的数量被用作用于从8个数据元素的数组中选择6个元素的示例。本公开的特征可包括不同数量的多路复用器,这取决于矩阵的部分的大小和待保留以用于矩阵乘法的目标乘积的数量。
保留逻辑306包括逻辑电路,诸如例如固定功能逻辑器件、算术电路、顺序逻辑器件(例如,触发器、计数器和寄存器)和可编程逻辑器件,它们被配置为对近似乘积值执行不同计算。保留逻辑306生成被提供给多组多路复用器阵列300的保留信号,以用于确定来自8个数据元素的数组的哪些6个元素待保留并且待提供给MAC 212以用于矩阵乘法。例如,如下文更详细描述的,使用保留逻辑306来对乘积指数的对应的有效位的值求和,从乘积指数值的最高有效位开始,并且将和中的每个和与乘积指数值的目标数量(例如,6)进行比较直到确定乘积指数值的目标数量为止。
图3中所示的每组多路复用器阵列300被配置为接收矩阵A的对应的8个元素值(即,A0至A7)中的每一者的相同有效位,并且被配置为接收由保留逻辑306确定的保留信号(K0至K7)。由多路复用器阵列300提供的输出值(例如,A’0、A’1、A’2、A’3、A’4和A’5)对应于被选择待提供给MAC 212以用于矩阵乘法的8个元素中的6个元素。被选择待保留的6个元素是当与来自第二矩阵B的6个对应的元素相乘时被确定为生成8个乘积值中的6个最大乘积值的元素。
该乘积值近似为2,自乘到操作数A和B的指数的和。然而,当MAC单元212进行精确乘法时,尾数值也被相乘并且这些值被四舍五入。结果,A和B的丢弃值的精确乘积中的一者或多者可能大于保留值,这对于应用程序(诸如机器学习)而言可能导致网络的精度的微小但可接受的降低。除此之外,执行矩阵乘法运算的时间减少(例如,如上所述的时间减少25%)超过了精度的可能的微小降低。
如图3中所示,使用N个阵列来接收矩阵A的8个元素值(A0至A7)中的每一者的相同有效位,其中N是每个元素值的位的数量。如果例如矩阵A的元素值中的每个元素值包括4个位,则将4组多路复用器阵列300用于矩阵A。每组多路复用器阵列300并行地接收元素的对应的有效位和来自保留逻辑306的保留信号。即,第一组多路复用器阵列接收矩阵A的8个元素值的最高有效位(即,第一位),第二组多路复用器阵列300接收矩阵A的8个元素值的下一最高有效位(即,第二位),第三组多路复用器阵列300接收矩阵A的8个元素值的第三位,以及第四组多路复用器阵列300接收矩阵A的8个元素值的最低有效位。
除此之外,数据压缩器214还包括多组多路复用器阵列300,该多组多路复用器阵列被配置为并行地接收元素值的对应的有效位和来自保留逻辑306的保留信号。因此,对于其中元素值(B0至B7)中的每个元素值包括4个位的示例,4组多路复用器阵列300也用于矩阵B。用于矩阵B的多组多路复用器阵列300的架构和用于矩阵B的多组多路复用器阵列300的功能与针对矩阵A示出和描述的多组多路复用器阵列300相同(除了用于矩阵B的多路复用器阵列300接收位和与矩阵B相关联的保留信号之外)。因此,用于矩阵B的多组多路复用器阵列的详细描述和图示因多余而被省略。
如图3中所示,每组多路复用器阵列300包括第一多路复用器阵列302和第二多路复用器阵列304。第一多路复用器阵列302包括6个多路复用器302(1)、302(2)、302(3)、302(4)、302(5)和302(6)。第二多路复用器阵列304包括6个多路复用器304(1)、304(2)、304(3)、304(4)、304(5)和304(6)。图3中所示的第一阵列302和第二阵列304中的多路复用器的数量仅用作矩阵的8个输入元素减少到6个输入元素的情况的示例。本公开的特征可使用具有任何数量的多路复用器的多路复用器阵列来实现。
如图3中所示,第一组多路复用器阵列300的第一阵列302中的每个多路复用器302(1)至302(6)接收来自矩阵A的第7元素值(A6)的位值和来自矩阵A的第8元素值(A7)的位值。第一阵列302中的每个多路复用器302(1)至302(6)还接收对应的U值(即,U0、U1、U2、U3、U4、U5),其中U0=K6(元素值A6的保留信号值),U1=K0&&U0(即,如果K0和K6都为1,则U1的值=1),U2=K1&&K0&&U0,U3=K2&&K1&&K0&&U0,U4=K3&&K2&&K1&&K0&&U0以及U5=K4&&K3&&K2&&K1&&K0&&U0。
第二阵列304中的每个多路复用器304(1)至304(6)接收来自矩阵A的对应的元素值(A0至A5)的位值以及对应的保留位值(即,K0至K5)。多路复用器阵列302和304的功能的示例在下文关于图4的框412至420描述。
图4是示出根据本公开的特征的选择用于矩阵乘法的数据的示例方法400的流程图。如上文所述,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。
图6中示出两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行和矩阵B的列的点积。矩阵A和矩阵B在图6的顶部示出。例如,根据本公开的特征,通过以下方式来执行矩阵A与B的矩阵乘法的一部分:将矩阵B的元素数组602的4个元素602(1)至602(4)与矩阵B的数组604的4个对应的元素604(1)至604(4)的乘积值进行近似,以产生矩阵C的部分1(P1)中的结果。
尽管图6中的矩阵A和矩阵B的大小彼此不同,但是如果一个矩阵中的列的数量等于另一矩阵中的行的数量,则可对矩阵执行矩阵乘法运算。在图6中所示的示例中,矩阵A包括八列并且矩阵B包括8行。矩阵A和B中的列和行的数量仅为示例。根据本公开的特征,对满足用于矩阵乘法的一般规则的任何大小的矩阵执行矩阵乘法(例如,矩阵A中的列的数量等于矩阵B中的行的数量)。
返回参考图4,如在框402和404处所示,方法500包括接收(例如,通过CU 202的数据压缩器214)第一矩阵A的数据(数据A[8])的一部分和第二矩阵B的数据(数据B[8])的一部分。在图4中所示的示例中,数据的每个部分包括8个元素(即,值)。即,矩阵A的数据的8个元素被表示为图4中的数据A[8],并且矩阵B的数据的8个元素被表示为图4中的数据B[8]。然而,图4中所示的元素的数量只是示例。数据的部分可包括待提供给MAC 212以执行矩阵乘法的任何数量的元素。
第一矩阵和第二矩阵的数据的部分可为多种数据类型中的任一种,诸如例如整数数据类型(例如,int8格式)和浮点数据类型(例如,BF16格式)。表示每个元素的位的数量取决于浮点格式(例如,FP32、FP16、BF16)和正在使用的整数格式(例如,int8、int16、int32)。例如,对于浮点格式BF16,每个元素由16位表示,而每个指数由8位表示。
如在框406和408所示,方法300包括从第一矩阵A和第二矩阵B的数据的部分中的元素提取指数。即,从第一矩阵A的8个元素中的每个元素提取指数(在框406处示为“EA[8]=提取指数(A[8])”),并且从第二矩阵B的8个元素中的每个元素提取指数(在框408处示为“EB[8]=提取指数(B[8])”)。
如果第一矩阵和第二矩阵的数据的部分的元素是浮点数据类型,则可仅从每个元素的指数位提取指数值。例如,如果元素是BF16格式,则第一位是符号位,位2至9是指数位,以及位10至16是尾数位。因此,可从位2至9的值中提取指数值。
如果第一矩阵A和第二矩阵B的数据的部分的元素是整数数据类型(int8),则通过以下方式来提取指数:确定数据(Aa[8],Ba[8])的每个子部分的元素的绝对值,确定对于每个元素待丢弃的前导零的数量,将每个元素表示为1.M*2e(其中M是元素值的尾数并且e是元素值的指数),以及将每个元素的指数值近似为[位的数量-1]-LA(其中LA是元素的前导零的数量)。
举例来说,如果第一矩阵(Aa[1])的第一元素的绝对值为00001011,则确定待丢弃四个前导零。该元素被表示为1.011*2e,并且A[1]的指数值(e)被计算为[位的数量-1]-LA=7-4=3。如果第二矩阵(Ba[1])的第一元素的绝对值为00101111,则确定待丢弃两个前导零。该元素被表示为1.01111*2e,并且A[1]的指数值(e)被计算为[位的数量-1]-LB=7-2=5。因此,A[1]和B[1]的近似乘积(P)的指数被确定为14-(LA+LB)=14-8=6。
执行相同的过程以确定第一矩阵A的子部分的剩余7个元素(A[2-8])与第二矩阵B的子部分的对应的剩余7个元素(B[2-8])的近似乘积。
在框410处,将第一矩阵和第二矩阵的8个对应的元素对的乘积值(即,乘积)进行近似。即,将第一对应的元素对的乘积近似为矩阵A的第一元素与矩阵B的第一元素的所提取指数的和(即,EA[1]+EB[1]),将第二元素对的乘积近似为矩阵A的第二元素与矩阵B的第二元素的所提取指数的和(即,EA[2]+EB[2]),依此类推,直到对8个对应的元素对中的每个元素对的乘积进行近似为止(在框410处示为EP[8]=EA[8]+EB[8])。
使用保留逻辑306来分析近似乘积值EP[8],并且基于该分析来生成保留信号K[8],如在框412处所示。将保留信号K[0]至K[5]提供给多路复用器302,并且将保留信号K[6]提供给多路复用器304(其中保留信号K7的值是从K0至K6的值推断出来的),以确定从矩阵A和矩阵B两者中选择哪6个元素并将其提供给MAC 212以用于矩阵乘法。如在框414和416处所示,再次接收来自矩阵A的8个数据元素(数据A[8])和8个数据元素(数据B[8])。如在框418和420处所示,基于多路复用器阵列302和304的输出来从待提供给MAC 212的8个元素(即,dataSelect(A[8])和dataSelect(B[8]))中选择来自矩阵A的6个元素(A’[6])和来自矩阵B的6个元素(B’[6])。
现在使用图5A至图5D中所示的乘积指数值的4个不同数组的示例来描述分析近似乘积值EP[8]并生成保留信号(K[8])的示例。出于简化的目的,图5A至图5D中所示的乘积指数值是4位值。然而,本公开的特征可针对具有任何数量的位的乘积指数值来实现。除此之外,在下文描述的示例中,使用8个乘积指数值的数组,并且为每个对应的乘积指数值确定保留位值。保留逻辑306被配置为使得针对对应于被确定为待保留的8个乘积指数值中的6个乘积指数值的6个保留位生成真值(例如,值1),并且针对对应于被确定为待丢弃的乘积指数值的剩余2个目标数量的2个保留位值生成假值(例如,值0)。然而,本公开的特征可针对任何数量的乘积指数值和待丢弃的任何目标数量的乘积指数值来实现。例如,如果待保留A和B的8个乘积指数值中的5个乘积指数值,则保留逻辑306被配置为针对对应于被确定为待保留的8个乘积指数值中的5个乘积指数值的5个保留位生成真值,并且针对对应于被确定为待丢弃的乘积指数值的剩余3个目标数量的3个保留位值生成假值。
对于图5A至图5D中所示的数组中的每个数组,确定哪些保留信号为真以及哪些保留值为假包括对乘积指数的对应的有效位的值求和,从乘积指数值的最高有效位开始,并且将和中的每个和与乘积指数值的目标数量(例如,当待保留A和B的8个值中的6个值时为6)进行比较直到保留位值的目标数量被确定为真为止。
例如,对于图5A中所示的8个乘积指数值的数组,对8个乘积指数值的MSB求和。在这种情况下,8个乘积指数值的MSB的和是6,这等于待保留的6个乘积指数值的目标数量。其中MSB是1的6个乘积指数值被确定为待保留的乘积指数值,并且对于其中MSB是1的乘积指数值而言保留位被设置为1。即,因为对于第1乘积指数值(Ep[0])、第二乘积指数值(Ep[1])、第3乘积指数值(Ep[2])、第五乘积指数值(Ep[4])、第6乘积指数值(Ep[5])和第8乘积指数值(Ep[7])而言MSB是1,所以对应的保留位值(K0、K1、K2、K4和K5)被设置为1,其中K7的保留位值从K0至K6的值被推断为1。其中MSB是0的2个乘积指数值被确定为待丢弃的乘积指数值,并且保留位值K3和K6被设置为0。
对于图5B中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,其大于待保留的A和B的6个值的目标数量。当MSB的和大于6时,对8个乘积指数值的下一较低有效位求和。在这种情况下,以“11”开始的8个乘积指数值的下一较低有效位的(即,第2位)的和等于4。因此,以“11”开始的乘积指数值被识别为4个最大乘积指数值,并且对于以“11”开始的乘积指数值,对应的保留位被设置为1。即,因为第1乘积指数值(Ep[0])、第二乘积指数值(Ep[1])、第4乘积指数值(Ep[3])和第8乘积指数值(Ep[7])各自以“11”开始,所以对应的保留位值(K0、K1、K3)被设置为1,其中K7的保留位值从K0至K6的值被推断为1。然而,因为4个最大乘积指数值比目标数量6小2,所以以“101”开始的乘积指数值被识别,对以“101”开始的乘积指数值的下一最低有效位(即,第3位)求和,并且将结果与先前的和相加。在这种情况下,以“101”开始的乘积指数值的第3位的和等于2,当与先前的和4相加时,其等于目标数量6。因此,以“101”开始的2个乘积指数值也被识别为待保留的乘积指数值。即,因为第5乘积指数值(Ep[4])和第6乘积指数值(Ep[5])各自以“101”开始,所以对应的保留位值K4和K5也被设置为1,并且对应于待丢弃的剩余2个乘积指数值的保留位值K2和K6被设置为0。
对于图5C中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,其大于待保留的输入矩阵A和B的6个值的目标数量。如上所述,当MSB的和大于6时,对8个乘积指数值的下一较低有效位求和。在这种情况下(其与上文针对图5B中所示的乘积指数值所描述的情况相同),8个乘积指数值的下一较低有效位(即,第2位)的和等于4。因此,以“11”开始的乘积指数值被识别为待保留的4个值。因此,对于以“11”开始的乘积指数值,K0、K1、K3和K7的保留位值被设置为1。但是因为4个最大乘积指数值比目标数量6小2,所以以“101”开始的乘积指数值被识别,并且对以“101”开始的乘积指数值的下一最低有效位(即,第3位)求和,并且将其与先前的和4相加。在这种情况下,以“101”开始的乘积指数值的第3位的和等于3,当与先前的和4相加时其等于7。因为总和7大于目标数量6,所以将以“1011”开始的8个乘积指数值的最低有效位(即,第4位)求和,这再次等于3,并且当与先前的和4相加时,其再次大于目标数量6。在这种情况下,因为没有更多的位待求和并且先前的和的总和大于目标数量,所以以“1011”开始的前2个乘积指数值(Ep[4]和Ep[5])也被保留。因此,保留位值K4和K5被设置为1,并且对应于待丢弃的剩余2个乘积指数值的保留位值K2和K6被设置为0。
对于图5D中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,这大于待保留的6个乘积指数值的目标数量(这与上文针对图5B和图5C中所示的乘积指数值所描述的情况相同)。然而,在这种情况下,剩余的位中的每个位是零。在这种情况下,保留数组中的前6个乘积指数值。即,对于乘积指数值的目标数量中的任一者(例如,数组中的前6个值),保留位被设置为1。
用于第N位位置(例如,对应于图5至图5C中所示的值的第一位、第二位、第三位或第四位的位置)的保留逻辑306的硬件具体实施的示例如下:
数据输入Ii N,第N位的第i个数据输入,i=0、1、......7
总TN=和(Ii N&&Qi N+1)
累计和AN=CN+1+(DN+1?0:TN)
启用EN=(TN!=0)&&(AN<=(8–2))
//注释:丢弃8个值中的2个值
求逆VN={(TN!=0)&&(AN<(8–2))}||(TN==0)
限定Qi N=Qi N+1&&(VN?!Ii N:Ii N)
用于选择第N位置处的位的保留逻辑306的硬件具体实施的示例如下:
完成DN=DN+1
计数CN=CN+1
对于i=0至7
{
保留Ki N=Ii N&&Qi N+1&&EN&&!DN
CN=CN+Ki N
DN=(CN==(8-2))
}
用于选择第-1位置(图5C和图5D中最低有效位右侧的位位置)处的位的保留逻辑306的硬件具体实施的示例如下:
完成DN=DN+1
计数CN=CN+1
对于I=0至7
{
Ki N=Qi N+1&&!DN
CN=CN+KiN
DN=(CN==(8-2))
}
保留i=∑Ki N,其中和表示对K的所有值的或运算(OR)。
然后对从矩阵A中选择的6个数据元素和从矩阵B中选择的6个数据元素执行矩阵乘法。除此之外,由矩阵乘法运算生成的信息可被显示在显示设备(例如,图1中的输出设备110)上。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。此类处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种处理设备,所述处理设备包括:
存储器,所述存储器被配置为存储数据;和
处理器,所述处理器包括:
多个乘数累加器(MAC),所述多个MAC被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法,
多个逻辑器件,所述多个逻辑器件被配置为对所述第一矩阵和所述第二矩阵的所述元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值;和
多个多路复用器阵列,每个多路复用器阵列被配置为:
接收所述第一矩阵和所述第二矩阵的所述元素的位以及所述保留位值;以及
提供用于选择将所述第一矩阵和所述第二矩阵的哪些元素提供给所述MAC以用于矩阵乘法的数据。
2.根据权利要求1所述的处理设备,其中所述多个逻辑器件被配置为对所述乘积指数值的对应的有效位的值求和。
3.根据权利要求2所述的处理设备,其中所述多个逻辑器件被配置为通过以下方式对所述位的值求和:从对所述乘积指数值的最高有效位求和开始,并且将和中的每个和与待保留并且待提供给所述MAC以用于矩阵乘法的所述第一矩阵和所述第二矩阵的元素的目标数量进行比较。
4.根据权利要求2所述的处理设备,其中所述第一矩阵和所述第二矩阵的元素的目标数量被确定为待保留以用于矩阵乘法,并且
所述多个逻辑器件被配置为当所述乘积指数值的剩余位为零时确定待保留的所述第一矩阵和所述第二矩阵的元素的所述目标数量中的任一者。
5.根据权利要求1所述的处理设备,其中所述多个多路复用器阵列中的每个多路复用器阵列包括:
第一多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的所述元素中的两个元素,和
选择值,用于在输出所述两个元素中的一个元素之间进行选择;和
第二多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的不同于所述两个元素的剩余元素;和
所述保留位值中的一者,用于在输出从所述第一阵列中的所述多路复用器中的一者输出的所述一个元素以及所述剩余元素之间进行选择。
6.根据权利要求1所述的处理设备,其中所述多路复用器阵列的数量基于表示所述第一矩阵和所述第二矩阵的所述元素的值的位的数量。
7.根据权利要求1所述的处理设备,其中所述多路复用器阵列包括被配置为接收所述第一矩阵的所述元素的第一组阵列和被配置为接收所述第二矩阵的所述元素的第二组阵列。
8.根据权利要求1所述的处理设备,所述处理设备进一步包括显示设备,
其中从所述矩阵乘法生成的信息被显示在所述显示设备上。
9.一种处理设备,所述处理设备包括:
存储器,所述存储器被配置为存储数据;和
彼此通信的多个处理器核心,每个处理器核心包括:
多个乘数累加器(MAC),所述多个MAC被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法,
多个逻辑器件,所述多个逻辑器件被配置为对所述第一矩阵和所述第二矩阵的所述元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值;和
多个多路复用器阵列,每个多路复用器阵列被配置为:
接收所述第一矩阵和所述第二矩阵的所述元素的位以及所述保留位值;以及
提供用于选择将所述第一矩阵和所述第二矩阵的哪些元素提供给所述MAC以用于矩阵乘法的数据。
10.根据权利要求9所述的处理设备,其中所述多个逻辑器件被配置为对所述乘积指数值的对应的有效位的值求和。
11.根据权利要求10所述的处理设备,其中所述多个逻辑器件被配置为通过以下方式对所述位的值求和:从对所述乘积指数值的最高有效位求和开始,并且将和中的每个和与待保留并且待提供给所述MAC以用于矩阵乘法的所述第一矩阵和所述第二矩阵的元素的目标数量进行比较。
12.根据权利要求10所述的处理设备,其中所述第一矩阵和所述第二矩阵的元素的目标数量被确定为待保留以用于矩阵乘法,并且
所述多个逻辑器件被配置为当所述乘积指数值的剩余位为零时确定待保留的所述第一矩阵和所述第二矩阵的元素的所述目标数量中的任一者。
13.根据权利要求9所述的处理设备,其中所述多个多路复用器阵列中的每个多路复用器阵列包括:
第一多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的所述元素中的两个元素,和
选择值,用于在输出所述两个元素中的一个元素之间进行选择;和
第二多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的不同于所述两个元素的剩余元素;和
所述保留位值中的一者,用于在输出从所述第一阵列中的所述多路复用器中的一者输出的所述一个元素和所述剩余元素之间进行选择。
14.根据权利要求9所述的处理设备,其中所述多路复用器阵列的数量基于表示所述第一矩阵和所述第二矩阵的所述元素的值的位的数量。
15.根据权利要求9所述的处理设备,其中所述多路复用器阵列包括被配置为接收所述第一矩阵的元素的所述乘积指数值的第一组阵列和被配置为接收所述第二矩阵的元素的所述乘积指数值的第二组阵列。
16.一种与矩阵乘法一起使用的处理设备:
多个乘数累加器(MAC),所述多个MAC被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法,
多个逻辑器件,所述多个逻辑器件被配置为对所述第一矩阵和所述第二矩阵的所述元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值;和
多个多路复用器阵列,每个多路复用器阵列被配置为:
接收所述第一矩阵和所述第二矩阵的所述元素的位以及所述保留位值;以及
提供用于选择将所述第一矩阵和所述第二矩阵的哪些元素提供给所述MAC以用于矩阵乘法的数据。
17.根据权利要求16所述的处理设备,其中所述多个逻辑器件被配置为对所述乘积指数值的对应的有效位的值求和。
18.根据权利要求17所述的处理设备,其中所述多个逻辑器件被配置为通过以下方式对所述位的值求和:从对所述乘积指数值的最高有效位求和开始,并且将和中的每个和与待保留并且待提供给所述MAC以用于矩阵乘法的所述第一矩阵和所述第二矩阵的元素的目标数量进行比较。
19.根据权利要求17所述的处理设备,其中所述第一矩阵和所述第二矩阵的元素的目标数量被确定为待保留以用于矩阵乘法,并且
所述多个逻辑器件被配置为当所述乘积指数值的剩余位为零时确定待保留的所述第一矩阵和所述第二矩阵的元素的所述目标数量中的任一者。
20.根据权利要求16所述的处理设备,其中所述多个多路复用器阵列中的每个多路复用器阵列包括:
第一多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的所述元素中的两个元素,和
选择值,用于在输出所述两个元素中的一个元素之间进行选择;和
第二多路复用器阵列,每个多路复用器被配置为接收:
来自所述第一矩阵和所述第二矩阵中的一者的不同于所述两个元素的剩余元素;和
所述保留位值中的一者,用于在输出从所述第一阵列中的所述多路复用器中的一者输出的所述一个元素和所述剩余元素之间进行选择。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/214,779 | 2021-03-26 | ||
US17/214,779 US20220309125A1 (en) | 2021-03-26 | 2021-03-26 | Data compressor for approximation of matrices for matrix multiply operations |
PCT/US2022/020071 WO2022203884A1 (en) | 2021-03-26 | 2022-03-11 | Data compressor for approximation of matrices for matrix multiply operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116997887A true CN116997887A (zh) | 2023-11-03 |
Family
ID=83363431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280022143.5A Pending CN116997887A (zh) | 2021-03-26 | 2022-03-11 | 用于矩阵乘法运算的矩阵的近似的数据压缩器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220309125A1 (zh) |
EP (1) | EP4315023A1 (zh) |
JP (1) | JP2024510624A (zh) |
KR (1) | KR20230159488A (zh) |
CN (1) | CN116997887A (zh) |
WO (1) | WO2022203884A1 (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US8620984B2 (en) * | 2009-11-23 | 2013-12-31 | Xilinx, Inc. | Minimum mean square error processing |
WO2011063824A1 (en) * | 2009-11-30 | 2011-06-03 | Martin Raubuch | Microprocessor and method for enhanced precision sum-of-products calculation on a microprocessor |
US8838664B2 (en) * | 2011-06-29 | 2014-09-16 | Advanced Micro Devices, Inc. | Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format |
US20140331014A1 (en) * | 2013-05-01 | 2014-11-06 | Silicon Graphics International Corp. | Scalable Matrix Multiplication in a Shared Memory System |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US9558156B1 (en) * | 2015-11-24 | 2017-01-31 | International Business Machines Corporation | Sparse matrix multiplication using a single field programmable gate array module |
US9600194B1 (en) * | 2015-11-25 | 2017-03-21 | International Business Machines Corporation | Integrating sign extensions for loads |
US10747501B2 (en) * | 2017-08-31 | 2020-08-18 | Qualcomm Incorporated | Providing efficient floating-point operations using matrix processors in processor-based systems |
US11645493B2 (en) * | 2018-05-04 | 2023-05-09 | Microsoft Technology Licensing, Llc | Flow for quantized neural networks |
US10599429B2 (en) * | 2018-06-08 | 2020-03-24 | Intel Corporation | Variable format, variable sparsity matrix multiplication instruction |
US20220075598A1 (en) * | 2018-09-23 | 2022-03-10 | Groq, Inc. | Systems and Methods for Numerical Precision in Digital Multiplier Circuitry |
KR102340412B1 (ko) * | 2018-11-02 | 2021-12-17 | 울산과학기술원 | 스토캐스틱 연산을 위한 로그-양자화된 곱셈 및 누적기와 이를 포함하는 가속기 |
US11150298B1 (en) * | 2020-12-11 | 2021-10-19 | International Business Machines Corporation | Converting formal verification testbench drivers with nondeterministic inputs to simulation monitors |
-
2021
- 2021-03-26 US US17/214,779 patent/US20220309125A1/en active Pending
-
2022
- 2022-03-11 CN CN202280022143.5A patent/CN116997887A/zh active Pending
- 2022-03-11 EP EP22776317.4A patent/EP4315023A1/en active Pending
- 2022-03-11 WO PCT/US2022/020071 patent/WO2022203884A1/en active Application Filing
- 2022-03-11 JP JP2023556919A patent/JP2024510624A/ja active Pending
- 2022-03-11 KR KR1020237035314A patent/KR20230159488A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
JP2024510624A (ja) | 2024-03-08 |
KR20230159488A (ko) | 2023-11-21 |
US20220309125A1 (en) | 2022-09-29 |
WO2022203884A1 (en) | 2022-09-29 |
EP4315023A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844322B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
KR102557589B1 (ko) | 가속화된 수학 엔진 | |
US20190339939A1 (en) | Operation processing device, information processing device, and information processing method | |
US8239438B2 (en) | Method and apparatus for implementing a multiple operand vector floating point summation to scalar function | |
US20180321938A1 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US7725520B2 (en) | Processor | |
US6038652A (en) | Exception reporting on function generation in an SIMD processor | |
US8356160B2 (en) | Pipelined multiple operand minimum and maximum function | |
US8239439B2 (en) | Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor | |
US20090043836A1 (en) | Method and system for large number multiplication | |
CN102855220B (zh) | 用于使用并行处理来求解线性方程组的设备、系统和方法 | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及系统 | |
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
US20120072704A1 (en) | "or" bit matrix multiply vector instruction | |
US10409604B2 (en) | Apparatus and method for performing multiply-and-accumulate-products operations | |
CN114090954A (zh) | 一种基于ft-2000+的整数矩阵乘法内核优化方法 | |
US20080288756A1 (en) | "or" bit matrix multiply vector instruction | |
JP4477959B2 (ja) | ブロードキャスト型並列処理のための演算処理装置 | |
CN116997887A (zh) | 用于矩阵乘法运算的矩阵的近似的数据压缩器 | |
CN116997888A (zh) | 矩阵乘法运算的矩阵的近似 | |
CN116090511A (zh) | 卷积神经网络的预处理方法和加速方法、加速系统和介质 | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
CN114116012B (zh) | 基于混洗操作的fft码位反序算法向量化实现方法及装置 | |
US20240220255A1 (en) | Data parallelism | |
US11263291B2 (en) | Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication |
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 |