CN111338974B - 用于矩阵数学指令集的图块化算法 - Google Patents
用于矩阵数学指令集的图块化算法 Download PDFInfo
- Publication number
- CN111338974B CN111338974B CN201811566422.XA CN201811566422A CN111338974B CN 111338974 B CN111338974 B CN 111338974B CN 201811566422 A CN201811566422 A CN 201811566422A CN 111338974 B CN111338974 B CN 111338974B
- Authority
- CN
- China
- Prior art keywords
- matrix
- format
- elements
- matrix elements
- tiled
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及用于矩阵数学指令集的图块化算法。公开了用于实现矩阵数学指令集的图块化算法的系统、装置和方法。一种系统至少包括存储器、高速缓存、处理器和多个计算单元。存储器以线性格式存储多个矩阵元素,并且处理器将多个矩阵元素从线性格式转换为图块化格式。每个计算单元从存储器中取回多个矩阵元素进入到高速缓存中。每个计算单元包括矩阵运算单元,该矩阵运算单元加载来自高速缓存的相应图块的多个矩阵元素,并对多个矩阵元素执行矩阵运算,以生成图块化格式的结果。系统基于矩阵运算的结果实现第一数据集的分类。
Description
技术领域
本发明总体上涉及计算机领域,尤其涉及用于矩阵数学指令集的图块化算法。
背景技术
在并行处理单元中执行矩阵运算涉及从存储器加载大量数据,这导致高存储器带宽利用率。加载矩阵元素通常需要计算偏移量以便步进通过以线性格式存储在存储器中的矩阵数据元素。然而,这对于每个加载指令需要复杂的公式来计算用于以正确顺序移动通过矩阵的元素的偏移量以执行矩阵运算。如本文所使用的,术语“线性格式”被定义为这样的格式,其中连续矩阵元素以顺序方式存储在相邻存储器位置中,直至到达存储器的物理行或列的末尾。用于存储矩阵元素的线性格式的示例包括行主序和列主序。在行主序中,矩阵行的连续元素在存储器中彼此相邻。在列主序中,矩阵列的连续元素在存储器中彼此相邻。以线性格式处理矩阵元素导致存储器带宽和矩阵运算单元的低效使用。
发明内容
本发明的一些方面可以阐述如下:
1.一种系统,其可以包括:
存储器,其以线性格式存储多个矩阵元素;
高速缓存;
处理器,其被配置为将所述多个矩阵元素从所述线性格式转换为图块化格式;以及
多个计算单元,其中,所述多个计算单元中的每个计算单元包括矩阵运算单元;
其中每个矩阵运算单元被配置用于:
加载来自所述高速缓存的一个或多个相应图块的给定的多个矩阵元素;以及
对所述给定的多个矩阵元素执行矩阵运算,以生成所述图块化格式的结果;
其中,所述系统被配置为基于来自多个矩阵运算单元的多个结果实现第一数据集的分类。
2.根据条款1所述的系统,其中所述高速缓存包括多个信道,其中所述多个计算单元被配置为在单个时钟周期中并行地在所述多个信道上加载矩阵元素。
3.根据条款2所述的系统,其中:
每个计算单元还被配置为并行地执行内核,所述内核等效于由所述多个计算单元中的其他计算单元执行的内核;以及
每个矩阵运算单元被配置为在来自其他矩阵运算单元的不同的信道上加载来自所述高速缓存的矩阵元素。
4.根据条款1所述的系统,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述处理器被配置为:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
5.根据条款1所述的系统,其中所述矩阵运算是矩阵乘法运算,并且其中所述给定的多个矩阵元素沿着每个矩阵运算单元的多个通道被传送。
6.根据条款1所述的系统,其中在执行机器学习引擎应用程序期间实现所述第一数据集的所述分类。
7.根据条款1所述的系统,其中以所述线性格式存储在连续存储器位置中的第一源矩阵的元素被以图块化格式存储在以图块高度分隔开的存储器位置中。
8.一种方法,其可以包括:
通过处理器,将存储在存储器中的多个矩阵元素从线性格式转换为图块化格式;
通过多个计算单元,将多个矩阵元素从所述存储器加载到高速缓存中;
通过多个矩阵运算单元中的每个矩阵运算单元,加载来自所述高速缓存的一个或多个相应图块的给定的多个矩阵元素;
通过每个矩阵运算单元,对所述给定的多个矩阵元素执行矩阵运算,以生成所述图块化格式的结果;以及
基于来自所述多个矩阵运算单元的多个结果实现第一数据集的分类。
9.根据条款8所述的方法,其中所述高速缓存包括多个信道,并且其中所述方法还包括通过所述多个计算单元在单个时钟周期中并行地在所述多个信道上加载矩阵元素。
10.根据条款9所述的方法,其还包括:
通过每个计算单元并行地执行内核,所述内核等效于由所述多个计算单元中的其他计算单元执行的内核;以及
通过每个矩阵运算单元在来自其他矩阵运算单元的不同的信道上加载来自所述高速缓存的矩阵元素。
11.根据条款8所述的方法,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述方法包括:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
12.根据条款8所述的方法,其还包括:针对每个矩阵运算单元,将所述给定的多个矩阵元素沿着所述矩阵运算单元的多个通道传送,其中所述矩阵运算是矩阵乘法运算。
13.根据条款8所述的方法,其中在执行机器学习引擎应用程序期间实现所述第一数据集的所述分类。
14.根据条款8所述的方法,其中将以所述线性格式存储在连续存储器位置中的第一源矩阵的元素以图块化格式存储在以图块高度分隔开的存储器位置中。
15.一种装置,其可以包括:
存储器,其以线性格式存储多个矩阵元素;以及
多个计算单元,所述多个计算单元被配置用于:
生成将所述多个矩阵元素从所述线性格式转换为图块化格式的请求;
对所述图块化格式的所述多个矩阵元素执行矩阵运算,以便以所述图块化格式生成多个结果;以及
基于所述多个结果实现第一数据集的分类。
16.根据条款15所述的装置,其还包括高速缓存,其中所述高速缓存包括多个信道,并且其中所述多个计算单元被配置为在单个时钟周期中并行地在所述多个信道上加载矩阵元素。
17.根据条款16所述的装置,其中,所述多个计算单元中的每个计算单元被配置为:
并行地执行内核,所述内核等效于由所述多个计算单元中的其他计算单元执行的内核;以及
将来自所述高速缓存的矩阵元素加载到与由所述多个计算单元中的其他计算单元所利用的其他信道不同的信道上。
18.根据条款15所述的装置,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述装置被配置为:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
19.根据条款15所述的装置,其中矩阵元素沿所述多个计算单元中的每个计算单元的多个通道被传送,并且其中所述矩阵运算是矩阵乘法运算。
20.根据条款15所述的装置,其中在执行机器学习引擎应用程序期间实现所述第一数据集的所述分类。
附图说明
通过结合附图参考以下描述,可以更好地理解在本文中所描述的方法和机制的优点,其中:
图1是计算系统的一种实现方式的框图。
图2是计算系统的另一实现方式的框图。
图3是矩阵运算单元的一种实现方式的框图。
图4是由SIMD单元操作的源A矩阵的数据布局的一种实现方式的示意图。
图5是由SIMD单元操作的源B矩阵的数据布局的一种实现方式的示意图。
图6是用于图块化块的图块化布局的一种实现方式的示意图。
图7是源A矩阵内的32×32块的格式的一种实现方式的示意图。
图8是源A矩阵内的128×128块的格式的一种实现方式的示意图。
图9是由128×128块构成的图像的格式的一种实现方式的示意图。
图10是源B矩阵的一种实现方式的示意图。
图11是源B矩阵内的32×32块的格式的一种实现方式的示意图。
图12是源B矩阵内的128×128块的格式的一种实现方式的示意图。
图13是由128×128块构成的图像的格式的一种实现方式的示意图。
图14是结果C矩阵的一种实现方式的示意图。
图15示出了根据一种实现方式的用于将源A矩阵从线性格式转换为图块化格式的伪代码的示例。
图16示出了根据一种实现方式的用于将源B矩阵从线性格式转换为图块化格式的伪代码的示例。
图17是示出用于将矩阵数据从线性格式转换为图块化格式以执行矩阵运算的方法的一种实现方式的概括流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文所呈现的方法和机制的透彻理解。然而,本领域的普通技术人员应该认识到,可以在没有这些具体细节的情况下实践各种实现方式。在一些情况下,没有详细示出公知的结构、组件、信号、计算机程序指令和技术,以避免使本文所述的方法难以理解。应该理解的是,为了说明的简单和清楚,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其他元件被放大。
本文公开了用于将矩阵数据从线性格式转换为图块化格式以执行矩阵运算的各种系统、装置和方法。一种系统至少包括存储器、高速缓存、处理器和多个计算单元。存储器以线性格式存储多个矩阵元素,并且处理器将多个矩阵元素从线性格式转换为图块化格式。在一种实现方式中,术语“图块(tile)格式”或“图块化格式”被定义为用于将矩阵元素存储在存储器位置中使得用于执行给定的矩阵操作的矩阵元素存储在相邻的存储器位置中的格式。在一种实现方式中,给定的矩阵运算是矩阵乘法运算。在另一实现方式中,术语“图块化格式”被定义为这样的格式,其中构成图块的列的矩阵元素存储在相邻的存储器位置中。术语“图块”(“tile”)被定义为N×M个元素块,其中N和M是正整数,并且其中N或M中的至少一个大于1。“图块”在本文中也可称为“块”(“block”)。在一种实现方式中,第一源矩阵的图块的列的数量“M”等于矩阵运算单元的通道的数量。在一种实现方式中,对于矩阵乘法运算,第一源矩阵被划分为N×M个元素的图块,而第二源矩阵被划分为M×N个元素的图块。
图块化格式导致矩阵数据以特定布局排序,该特定布局允许连续加载数据而不执行偏移量计算。每个计算单元从存储器中取回(retrieve)一个或多个图块的矩阵元素的行和/或列使其进入高速缓存中。每个计算单元包括矩阵运算单元,该矩阵运算单元从高速缓存中取回相应图块的多个矩阵元素,并对多个矩阵元素执行矩阵运算以生成图块化格式的结果。在一种实现方式中,系统对作为机器学习引擎的一部分的多个计算单元执行多个矩阵运算,以实现第一数据集的分类。例如,在一种实现方式中,系统执行多个矩阵运算,同时实现神经网络以将图像分类为一个或多个类别。神经网络可以是卷积神经网络、递归神经网络或其他类型。可以通过神经网络执行诸如手写数位分类和面部检测之类的各种任务。另外,神经网络可以执行其他更具挑战性的视觉分类任务。神经网络的其他应用包括语音识别、语言建模、情感分析、文本预测等。在其他实现方式中,系统对作为其他类型的软件应用程序的一部分的多个计算单元执行多个矩阵操作。
在多种实现方式中,高速缓存具有P个信道,其中P是大于1的正整数。在一种实现方式中,P等于32。在其他实现方式中,P等于其他数字。基于物理地址位的一部分将请求映射到高速缓存的不同信道。例如,在一种实现方式中,每个信道用物理地址的位12-8映射。在其他实现方式中,信道映射基于物理地址的其他位。在一种实现方式中,以图块化格式存储矩阵元素增加了高速缓存命中效率。在典型的应用中,每个计算单元处理不同的矩阵图块,但是图块可以映射到相同的高速缓存信道。这会影响高速缓存效率,因为不同的计算单元最终将通过相同的高速缓存信道请求数据。因此,计算单元将等待从高速缓存返回数据,并且高速缓存将在同一信道中逐个处理请求。然而,当矩阵元素以图块化格式存储时,不同的计算单元被映射到不同的信道。当计算单元并行执行相同的内核时,请求将通过不同信道被发送到高速缓存,这有助于提高高速缓存的访问效率。
现在参考图1,示出了计算系统100的一种实现方式的框图。在一种实现方式中,计算系统100至少包括处理器105A-N、输入/输出(I/O)接口120、总线125、存储器控制器130、网络接口135、存储器设备140、显示控制器150和显示器155。在其他实现方式中,计算系统100包括其他组件和/或计算系统100以不同方式布置。处理器105A-N代表系统100中包括的任何数量的处理器。
在一种实现方式中,处理器105A是通用处理器,例如中央处理单元(CPU)。在一种实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。在一些实现方式中,处理器105A-N包括多个数据并行处理器。在一种实现方式中,处理器105N是GPU,其向显示控制器150提供像素以被驱动到显示器155。
存储器控制器130表示可由处理器105A-N访问的任何数量和类型的存储器控制器。存储器控制器130耦合到任何数量和类型的存储器设备140。存储器设备140代表任何数量和类型的存储器设备。例如,存储器设备140中的存储器类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND快闪存储器、NOR快闪存储器、铁电随机存取存储器(FeRAM)等。
I/O接口120代表任何数量和类型的I/O接口(例如,外围组件互连(PCI)总线、PCI-扩展(PCI-X)、PCIE(PCI Express)总线、千兆以太网(GBE)总线、通用串行总线(USB))。各种类型的外围设备(未示出)耦合到I/O接口120。这些外围设备包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、游戏杆或其他类型的游戏控制器、媒体记录设备、外部存储设备、网络接口卡等等。网络接口135用于通过网络接收和发送网络消息。
在多种实现方式中,计算系统100是计算机,膝上型计算机,移动设备,游戏控制台,服务器,流式传输设备,可穿戴设备或任何各种其他类型的计算系统或设备。注意,计算系统100的组件的数量因实现方式不同(from implementation to implementation)而变化。例如,在其他实现方式中,每种组件的数量比图1中所示的数量更多或更少。还应注意,在其他实现方式中,计算系统100包括图1中未示出的其他组件。另外,在其他实现方式中,计算系统100以与图1中所示的方式不同的其他方式构造。
现在转向图2,示出了计算系统200的另一实现方式的框图。在一种实现方式中,系统200包括GPU 205、系统存储器225和本地存储器230。系统200还包括未示出的其他组件以避免使图形不清晰。GPU205至少包括命令处理器235、控制逻辑240、调度单元250、计算单元255A-N、存储器控制器220、全局数据共享270,一级(L1)高速缓存265和二级(L2)高速缓存260。在其他实施方式中,GPU205包括其他组件,省略一个或多个所示组件,具有组件的多个实例,尽管图2中仅示出了一个实例,和/或以其他合适的方式组织。在一种实现方式中,GPU205的电路包括在(图1的)处理器105N中。
在多种实现方式中,计算系统200执行各种类型的软件应用程序中的任何一种。作为执行给定的软件应用程序的一部分,计算系统200的主机CPU(未示出)启动要在GPU 205上执行的内核。命令处理器235从主机CPU接收内核并使用调度单元250向计算单元255A-N发出相应的波前。在一种实现方式中,每个计算单元255A-N包括矩阵运算单元。例如,矩阵运算单元执行矩阵乘法运算。另外,在多种实现方式中,矩阵运算单元执行其他类型的矩阵运算。在计算单元255A-N上执行的波前将数据读取和写入到GPU 205内的全局数据共享270,L1高速缓存265和L2高速缓存260中。尽管未在图2中示出,但在一种实现方式中,计算单元255A-N还包括每个计算单元255A-N内的一个或多个高速缓存和/或本地存储器。
在一种实现方式中,矩阵数据以线性格式存储在系统存储器225和/或本地存储器230中。在将矩阵数据加载到L2高速缓存260之前,矩阵数据从线性格式转换为图块化格式。在一种实现方式中,术语“图块化格式”被定义为将矩阵元素一起存储到图块的单元中,每个图块存储N×M个矩阵元素块,其中N和M是正整数。“图块化格式”导致连续的图块以顺序方式存储在存储器中。
在一种实现方式中,命令处理器235将矩阵数据从线性格式转换为图块化格式。在另一实现方式中,主处理器(例如,图1的处理器105A)将矩阵数据从线性格式转换为图块化格式。然后,在计算单元255A-N上执行波前期间,由于矩阵数据以图块化格式存储,所以矩阵数据以有效的方式从L2高速缓存260加载。在一种实现方式中,当矩阵元素以图块化格式存储时,矩阵数据元素在多个信道上从L2高速缓存260被并行读入到计算单元255A-N中。这是比以线性格式存储矩阵数据元素更有效的方法,线性格式将导致矩阵数据元素以串行方式从L2高速缓存260在单个信道上读取。
现在参考图3,示出了矩阵运算单元300的一种实现方式的框图。在一种实现方式中,每个计算单元255A-N包括矩阵运算单元300的电路。在一种实现方式中,矩阵运算单元300至少包括架构向量通用寄存器(VGPR)文件305、导出单元310、累积VGPR文件315、单指令、多数据(SIMD)单元320和SIMD单元325。应当理解,矩阵运算单元300包括为了避免使该图不清晰而未示出的任何数量的其他组件。另外,在其他实现方式中,矩阵运算单元300以其他合适的方式组织。
在一种实现方式中,SIMD单元320是用于执行各种浮点运算的浮点单元,SIMD单元325是用于执行各种矩阵运算(例如,点积运算、矩阵乘法运算)的矩阵单元。在一种实现方式中,示出连接到架构VGPR文件305和累积VGPR文件315的每个单独输入具有16个通道,每个通道有32位。在其他实现方式中,输入具有其他数量的有其他位宽的通道。在一种实现方式中,当矩阵元素以图块化格式存储时,SIMD单元325更有效地对输入矩阵元素进行运算。因此,在该实现方式中,在被读入体系架构VGPR文件305和/或累积VGPR文件315之前,矩阵元素从线性格式转换为图块化格式。这使得运算能够由SIMD单元325以更有效的方式执行。
现在转向图4,示出了由SIMD单元运算的源A矩阵的数据布局400的一种实现方式的示意图。在一种实现方式中,SIMD单元325(图3)根据图4中所示的数据布局400来组织,用于在源A矩阵中读取以执行源A矩阵乘以源B矩阵的矩阵乘法运算。例如,在该实现方式中,在数据布局400中每个SIMD单元有64个线程。在其他实现方式中,SIMD单元包括数据布局中的其他数量(例如,32、128个)的线程。数据布局400中的每个线程对应于SIMD单元的通道。
根据正在处理的块的大小,可以依据数据布局400来映射不同数量的块。例如,如果每个块的大小为32×2,则两个块(Blk0和Blk1)从VGPR文件映射到SIMD单元。如果每个块的大小为16×2,则将四个块(Blk0,Blk1,Blk2和Blk3)从VGPR文件映射到SIMD单元。如果每个块的大小为4×2,则将16个块(Blk0,Blk1,Blk2,Blk3,Blk4,Blk5,Blk6,Blk7,Blk8,Blk9,Blk10,Blk11,Blk12,Blk13,Blk14和Blk15)从VGPR文件映射到SIMD单元。
现在参考图5,示出了用于SIMD单元的源B矩阵的数据布局500的一种实现方式的示意图。在一种实现方式中,根据数据布局500来组织VGPR文件和SIMD单元(例如,SIMD单元325(图3))之间的连接。例如,在一种实现方式中,数据布局500定义用于加载源B矩阵的连接,以便在源A矩阵和源B矩阵之间执行矩阵乘法运算。在一种实现方式中,数据布局500被组织用于64个线程。在其他实现方式中,数据布局500包括其他数量的线程。数据布局500的每个线程对应于SIMD单元的通道。根据正被处理的块的大小(例如,2×32、2×16、2×4),可以依据数据布局500映射不同数量(例如,2、4、16个)的块。
现在转向图6,示出了源A矩阵的块600的图块化布局的一种实现方式的示意图。在一种实现方式中,矩阵被划分为多个块,每个块根据块600进行组织。块600中的元素的组织示出了线性数据和图块化数据之间的映射关系。例如,矩阵元素65由圆圈605表示。该元素的原始位置是(x=3,y=0)。因此,线性格式的位置是(y*步幅+x)=0*4+3=3,图块化格式的位置是65。在一种实现方式中,基本图块化的块对于源A矩阵是32×4,对于源B矩阵是4×32以实现矩阵乘法运算。在其他实现方式中,矩阵操作的基本图块化的块可以是其他大小。在一种实现方式中,对于矩阵层次结构中的下一级,将大小为32×4的8个基本块组合成32×32的中间块。此外,向上移动矩阵层次结构,16个中间块组合成128×128的大块。出于剩余讨论的目的,假设正在处理的矩阵大小与128×128的大块对齐。然而,应该理解,在其他实现方式中,矩阵大小可以与其他大小的块对齐。
现在参考图7,示出了源A矩阵内的32×32块700的一种实现方式的图。如图所示,每个4×32块从左到右从块0到块7排列,以形成32×32块700。在其他实现方式中,可以将其他大小的块组合在一起以形成矩阵块层次中更高的块。
现在转向图8,示出了源A矩阵内的128×128块800的一种实现方式的示意图。128×128块800的第一列由32×32块0-3构成,如块800所示。128×128块800的第二列由32×32块4-7构成,128×128块800的第三列由32×32块8-12构成,并且128×128块800的第四列(即,最右列)由32×32块12-15构成。在一种实现方式中,根据块700(图7)构造每个32×32块。
现在参考图9,示出了由128×128块构成的图像900的一种实现方式的示意图。应当理解,在其他实现方式中,图像可以由其他尺寸的块构成,这些块可以以其他合适的方式组织。例如,在其他实现方式中,图像可以由64×64块,256×256块或其他大小的块构成。对于这些实现,这里针对图像900描述的机制和方法可以被调整以应用于由其他大小的块组成的其他图像。
现在转向图10,示出了源B矩阵的块1000的图块化布局的一种实现方式的示意图。在一种实现方式中,矩阵运算单元将源A矩阵乘以源B矩阵。源B矩阵的块1000的组织是根据用于实现矩阵乘法运算的一种实现方式的源B矩阵块1000的元素的组织的一个示例。
现在参考图11,示出了源B矩阵的32×32块1100的一种实现方式的示意图。在一种实现方式中,使用八个不同的32×4块来构造源B矩阵的32×32块1100。如图11所示,每个32×4块从顶部到底部从块0到块7排列,如块1100所示。在其它实现方式中,32×32块1100可以用其他数量、大小和/或较小块的排列构造。
现在转到图12,示出了源B矩阵的128×128块1200的一种实现方式的示意图。128×128块1200的第一行由从左到右移动的32×32块0-3构成。128x128块1200的第二行由从左到右移动的32×32块4-7构成,128×128块1200的第三行由从左到右移动的32×32块8-11构成,而28×128块1200的第四行(即,底行)由从左到右移动的32×32块12-15构成。在一种实现方式中,根据块1100(图11)的布局构造每个32×32块。
现在参考图13,示出了由128×128块构成的图像1300的一种实现方式的示意图。图像1300的第一行包括从左到右移动的128×128块0-7。类似地,图像1300的第二行包括从左到右移动的128×128块8-15。图像1300的其他行以相同的方式组织,其中底行包括从左到右移动的128×128块56-63。在一种实现方式中,根据块1200(图12)构造每个128×128块0-63。
现在转向图14,示出了结果C矩阵的块1400的一种实现方式的示意图。在一种实现方式中,矩阵运算单元将源A矩阵乘以源B矩阵以生成结果C矩阵。块1400的元素的组织是在根据一种实现已经执行矩阵乘法运算之后在结果C矩阵内组织块的元素的一个示例。块1400的第一列包括元素0,后跟元素1,元素2,然后是元素3。块1400的第二列包括元素4、元素5、元素6和元素7,其中元素4在元素5顶部,元素5在元素6顶部,元素6在元素7顶部。元素布局的这种模式在移动到矩阵C 1400右侧的列中继续,直到最后的最右列包括元素60、元素61、元素62和元素63。
现在参考图15,示出了根据一种实现方式的用于将源A矩阵从线性格式转换为图块化格式的伪代码1500的示例。伪代码1500包括具有用于一个特定实现方式的特定值的变量的定义。在其他实现方式中,这些变量的值可以根据图块的大小、通道的数量和矩阵乘法单元的位宽、高速缓存信道的数量等而变化。
为了讨论伪码1500和伪码1600(图16),假设存在两个输入矩阵:源A矩阵和源B矩阵。还假设源A矩阵的大小是M×K,源B矩阵的大小是K×N,并且结果C矩阵的大小是M×N,其中M、N和K是正整数。在一种实现方式中,M、N和K等于1024。在其他实现方式中,M、N和K的值可以变化。
在一种实现方式中,存储器中存在两组缓冲器。A_outbuffer[]和B_outbuffer[]分别以线性格式将源A矩阵和源B矩阵的矩阵元素存储在存储器中。A_package_outbuffer[]和B_package_outbuffer[]分别以图块化格式将源A矩阵和源B矩阵的矩阵元素存储在存储器中。基于伪代码1500中的指令,以线性格式存储在连续存储器位置中的源A矩阵的元素以图块化格式被存储在分隔开图块高度的存储器位置中。换句话说,从第一缓冲区(即A_outbuffer[])的连续位置读取值并将其写入第二缓冲区(即A_package_outbuffer[])中的位置,同时以等于图块高度的步幅步进通过第二缓冲区。在源A矩阵和源B矩阵从线性格式转换为图块化格式之后,在计算单元上执行的内核代码将数据从存储器加载到高速缓存(例如,L2高速缓存)中。
现在转向图16,示出了用于将源B矩阵从线性格式转换为图块化格式的伪代码1600的一个示例。伪代码1600的讨论旨在作为伪代码1500(图15)的讨论的继续。在一种实现方式中,伪代码1600用于将源B矩阵从线性格式转换为图块化格式。一旦源B矩阵从线性格式转换为图块化格式,内核代码就会将数据从内存加载到缓存中。
现在参考图17,示出了用于将矩阵数据从线性格式转换为图块化格式以执行矩阵运算的方法1700的一种实现方式。出于讨论的目的,该实现方式中的步骤按顺序显示。然而,应注意,在所描述的方法的多种实现方式中,所描述的元件中的一个或多个同时执行、以不同于所示的顺序执行或者完全被省略。还根据需要执行其他附加元件。本文描述的多种系统或装置中的任何一个被配置为实现方法1700。
主处理器(例如,CPU)检测对以线性格式存储的矩阵数据执行矩阵运算的请求(框1705)。在一种实现方式中,矩阵运算是矩阵乘法运算。在其他实现方式中,请求其他类型的矩阵运算。接下来,响应于检测到请求,主处理器将矩阵数据从线性格式转换为图块化格式(块1710)。用于将源A矩阵和源B矩阵从线性格式转换为图块化格式的伪代码1500和1600的示例分别在图15和图16中示出。在其他实现方式中,可以使用用于将源A矩阵和源B矩阵从线性格式转换为图块化格式的其他技术。
接下来,多个矩阵运算单元将图块化格式的矩阵数据从存储器加载到高速缓存的所有N个信道中(框1715)。在一种实现方式中,高速缓存是L2高速缓存。在一种实现方式中,高速缓存具有N个信道,其中N是大于1的正整数。然后,多个矩阵运算单元并行地对矩阵数据执行矩阵运算以产生结果(框1720)。接下来,处理器使用结果来完成与给定的软件应用程序相关联的第一动作(框1725)。在一种实现方式中,第一动作是第一数据集的分类,并且给定的软件应用程序是机器学习应用程序。在一种实现方式中,第一数据集是图像,并且所述分类标识图像所属的给定的类别。在另一实现方式中,第一数据集是视频,并且分类将视频分配给给定的类别。在其他实现方式中,第一数据集包括以其他方式分类的其他类型的数据。在其他实现方式中,执行与其他类型的软件应用程序相关联的其他类型的动作。在框1725之后,方法1700结束。
在多种实现方式中,使用软件应用程序的程序指令来实现本文描述的方法和/或机制。例如,可以设想可由通用或专用处理器执行的程序指令。在多种实现方式中,这样的程序指令由高级编程语言来表示。在其他实现方式中,程序指令从高级编程语言编译为二进制、中级或其他形式。可选地,编写描述硬件行为或设计的程序指令。这样的程序指令可以由诸如C之类的高级编程语言来表示。可选地,使用诸如Verilog之类的硬件设计语言(HDL)。在多种实现方式中,程序指令被存储在各种非暂时性计算机可读存储介质中的任一个上。存储介质在使用期间可由计算系统访问以向计算系统提供程序指令用于程序执行。一般而言,这样的计算系统包括至少一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
应该强调的是,上述实现方式仅是实现方式的非限制性示例。对于本领域技术人员而言,一旦完全理解了上述公开内容,许多变化和修改将变得显而易见。意图将以下权利要求解释为包含所有这些变化和修改方案。
Claims (18)
1.一种系统,其包括:
存储器,其以线性格式存储多个矩阵元素;
高速缓存,所述高速缓存包括多个信道;
处理器,其被配置为将所述多个矩阵元素从所述线性格式转换为图块化格式;以及
多个计算单元,其中,所述多个计算单元中的每个计算单元包括矩阵运算单元,所述矩阵运算单元包括一个或多个单指令多数据(SIMD)单元;
其中当所述多个计算单元中的两个以上计算单元并行地执行相同的内核时,每个矩阵运算单元的SIMD单元的多个通道中的每个通道被配置用于:
通过所述高速缓存的所述多个信道中的不同的信道并行地加载来自所述高速缓存的一个或多个相应图块的给定的多个矩阵元素;以及
对所述给定的多个矩阵元素执行矩阵运算,以生成所述图块化格式的结果。
2.根据权利要求1所述的系统,其中所述多个计算单元被配置为在单个时钟周期中通过所述多个信道并行地加载矩阵元素。
3.根据权利要求1所述的系统,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述处理器被配置为:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
4.根据权利要求1所述的系统,其中所述矩阵运算是矩阵乘法运算,并且其中所述给定的多个矩阵元素沿着每个矩阵运算单元的多个通道被传送。
5.根据权利要求1所述的系统,其中所述系统被配置为基于来自多个矩阵运算单元的多个结果生成第一数据集的分类。
6.根据权利要求1所述的系统,其中以所述线性格式存储在连续存储器位置中的第一源矩阵的元素被以图块化格式存储在以图块高度分隔开的存储器位置中。
7.一种方法,其包括:
通过处理器,将存储在存储器中的多个矩阵元素从线性格式转换为图块化格式;
将所述图块化格式的所述多个矩阵元素存储在高速缓存中,所述高速缓存包括多个信道;
由两个以上计算单元并行地执行相同的内核;
通过所述高速缓存的所述多个信道中的不同的信道并行地加载来自所述高速缓存的一个或多个相应图块的给定的多个矩阵元素;以及
通过每个矩阵运算单元,对所述给定的多个矩阵元素执行矩阵运算,以生成所述图块化格式的结果。
8.根据权利要求7所述的方法,其中所述方法还包括通过所述多个计算单元在单个时钟周期中并行地在所述多个信道上加载矩阵元素。
9.根据权利要求7所述的方法,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述方法包括:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
10.根据权利要求7所述的方法,其还包括:针对每个矩阵运算单元,将所述给定的多个矩阵元素沿着所述矩阵运算单元的多个通道传送,其中所述矩阵运算是矩阵乘法运算。
11.根据权利要求7所述的方法,其还包括基于来自多个矩阵运算单元的多个结果生成第一数据集的分类。
12.根据权利要求7所述的方法,其中将以所述线性格式存储在连续存储器位置中的第一源矩阵的元素以图块化格式存储在以图块高度分隔开的存储器位置中。
13.一种装置,其包括:
存储器,其以线性格式存储多个矩阵元素;以及
多个计算单元,每个所述计算单元包括一个或多个单指令多数据(SIMD)单元,所述多个计算单元被配置用于:
生成将所述多个矩阵元素从所述线性格式转换为图块化格式的请求,其中在所述图块化格式中,源矩阵的所述矩阵元素被存储为多个图块,其中所述多个图块中的每个具有比所述源矩阵更少的元素;
当所述多个计算单元中的两个以上计算单元并行地执行相同的内核时,所述两个以上计算单元中的每个被配置用于:
通过高速缓存的不同的信道并行地加载来自所述高速缓存的所述多个图块中的给定的多个矩阵元素;以及
对所述图块化格式的所述多个矩阵元素执行矩阵运算,以便以所述图块化格式生成多个结果;以及
基于所述多个结果实现第一数据集的分类。
14.根据权利要求13所述的装置,其中所述多个计算单元被配置为在单个时钟周期中并行地在所述多个信道上加载矩阵元素。
15.根据权利要求14所述的装置,其中所述两个以上计算单元中的每个包括具有多个通道的矩阵运算单元,其中具有至少一个SIMD单元。
16.根据权利要求13所述的装置,其中响应于接收到将第一源矩阵的多个矩阵元素从所述线性格式转换为图块化格式的请求,所述装置被配置为:
从所述存储器中的第一缓冲器的顺序位置读取值,其中所述第一缓冲器以所述线性格式存储矩阵元素;以及
在将所述值写入第二缓冲器时,以等于图块高度的步幅步进通过所述第二缓冲器,其中所述第二缓冲器以所述图块化格式存储矩阵元素。
17.根据权利要求13所述的装置,其中矩阵元素沿所述多个计算单元中的每个计算单元的多个通道被传送,并且其中所述矩阵运算是矩阵乘法运算。
18.根据权利要求13所述的装置,其中所述源矩阵对应于第一数据集以及在执行机器学习引擎应用程序期间实现所述第一数据集的所述分类。
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201811566422.XA CN111338974B (zh) | 2018-12-19 | 2018-12-19 | 用于矩阵数学指令集的图块化算法 |
| US16/232,768 US11687615B2 (en) | 2018-12-19 | 2018-12-26 | Tiling algorithm for a matrix math instruction set |
| PCT/US2019/067050 WO2020131993A1 (en) | 2018-12-19 | 2019-12-18 | Tiling algorithm for a matrix math instruction set |
| JP2021531339A JP7427001B2 (ja) | 2018-12-19 | 2019-12-18 | 行列数学命令セットのタイリングアルゴリズム |
| EP19836908.4A EP3899716A1 (en) | 2018-12-19 | 2019-12-18 | Tiling algorithm for a matrix math instruction set |
| KR1020217016767A KR102606207B1 (ko) | 2018-12-19 | 2019-12-18 | 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201811566422.XA CN111338974B (zh) | 2018-12-19 | 2018-12-19 | 用于矩阵数学指令集的图块化算法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111338974A CN111338974A (zh) | 2020-06-26 |
| CN111338974B true CN111338974B (zh) | 2025-05-16 |
Family
ID=71099356
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201811566422.XA Active CN111338974B (zh) | 2018-12-19 | 2018-12-19 | 用于矩阵数学指令集的图块化算法 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US11687615B2 (zh) |
| EP (1) | EP3899716A1 (zh) |
| JP (1) | JP7427001B2 (zh) |
| KR (1) | KR102606207B1 (zh) |
| CN (1) | CN111338974B (zh) |
| WO (1) | WO2020131993A1 (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112433760B (zh) * | 2020-11-27 | 2022-09-23 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
| US20220405552A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Recurrent neural network cell activation to perform a plurality of operations in a single invocation |
| KR20250134697A (ko) * | 2023-02-10 | 2025-09-11 | 구글 엘엘씨 | 하드웨어 집적 회로용 텐서 매핑 유닛 |
Family Cites Families (40)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1126437B1 (en) | 1991-06-11 | 2004-08-04 | QUALCOMM Incorporated | Apparatus and method for masking errors in frames of data |
| US6067287A (en) | 1997-09-15 | 2000-05-23 | Accton Technology | Neural fuzzy connection admission controller and method in a node of an asynchronous transfer mode (ATM) communication network |
| US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
| US7469266B2 (en) * | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
| US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
| US7912889B1 (en) * | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
| US8122078B2 (en) * | 2006-10-06 | 2012-02-21 | Calos Fund, LLC | Processor with enhanced combined-arithmetic capability |
| US8131660B2 (en) | 2008-04-08 | 2012-03-06 | Microsoft Corporation | Reconfigurable hardware accelerator for boolean satisfiability solver |
| US8484276B2 (en) * | 2009-03-18 | 2013-07-09 | International Business Machines Corporation | Processing array data on SIMD multi-core processor architectures |
| US8458442B2 (en) * | 2009-08-26 | 2013-06-04 | International Business Machines Corporation | Method and structure of using SIMD vector architectures to implement matrix multiplication |
| US8539201B2 (en) * | 2009-11-04 | 2013-09-17 | International Business Machines Corporation | Transposing array data on SIMD multi-core processor architectures |
| CA2843929C (en) | 2011-09-15 | 2018-03-27 | Exxonmobil Upstream Research Company | Optimized matrix and vector operations in instruction limited algorithms that perform eos calculations |
| US8369595B1 (en) | 2012-08-10 | 2013-02-05 | EyeVerify LLC | Texture features for biometric authentication |
| US9319137B2 (en) | 2013-09-09 | 2016-04-19 | Ciena Corporation | Methods and systems for reduced complexity nonlinear compensation |
| US9613001B2 (en) | 2013-12-20 | 2017-04-04 | Intel Corporation | Processing device for performing convolution operations |
| US10015616B2 (en) | 2014-06-06 | 2018-07-03 | University Of Maryland, College Park | Sparse decomposition of head related impulse responses with applications to spatial audio rendering |
| JP5976057B2 (ja) | 2014-08-28 | 2016-08-23 | 京セラドキュメントソリューションズ株式会社 | シート収納カセット及びそれを備えた画像形成装置 |
| EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
| US10417555B2 (en) | 2015-05-29 | 2019-09-17 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
| US20160379109A1 (en) | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
| WO2017095948A1 (en) | 2015-11-30 | 2017-06-08 | Pilot Ai Labs, Inc. | Improved general object detection using neural networks |
| US11055063B2 (en) | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
| KR20180012439A (ko) | 2016-07-27 | 2018-02-06 | 삼성전자주식회사 | 회선 신경망에서 가속기 및 이의 동작 방법 |
| US12118451B2 (en) | 2017-01-04 | 2024-10-15 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
| US20180218303A1 (en) | 2017-02-01 | 2018-08-02 | Weather Build, Inc. | Systems and methods for analyzing weather event impacts on schedule activities |
| US9959247B1 (en) | 2017-02-17 | 2018-05-01 | Google Llc | Permuting in a matrix-vector processor |
| EP3596609B1 (en) * | 2017-03-14 | 2025-08-06 | Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing |
| CN114461276A (zh) * | 2017-03-20 | 2022-05-10 | 英特尔公司 | 用于点积操作的系统、方法和装置 |
| US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
| KR102258120B1 (ko) | 2017-05-17 | 2021-05-28 | 구글 엘엘씨 | 하드웨어에서 매트릭스 곱셈을 수행 |
| KR102367859B1 (ko) | 2017-06-07 | 2022-02-25 | 주식회사 케이티 | 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법 |
| US10582250B2 (en) | 2017-07-24 | 2020-03-03 | Advanced Micro Devices, Inc. | Integrated video codec and inference engine |
| US10747844B2 (en) * | 2017-12-12 | 2020-08-18 | Tesla, Inc. | Systems and methods for converting a matrix input to a vectorized input for a matrix processor |
| US11561791B2 (en) * | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
| US11948073B2 (en) | 2018-04-20 | 2024-04-02 | Advanced Micro Devices, Inc. | Machine learning inference engine scalability |
| US10719323B2 (en) * | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
| US11769041B2 (en) | 2018-10-31 | 2023-09-26 | Advanced Micro Devices, Inc. | Low latency long short-term memory inference with sequence interleaving |
| US11657119B2 (en) * | 2018-12-10 | 2023-05-23 | Advanced Micro Devices, Inc. | Hardware accelerated convolution |
| CN111353575B (zh) * | 2018-12-20 | 2025-01-10 | 超威半导体公司 | 用于卷积神经网络的图块化格式 |
| CN111723918A (zh) | 2019-03-18 | 2020-09-29 | 超威半导体公司 | 用于卷积内核的自动生成和调谐工具 |
-
2018
- 2018-12-19 CN CN201811566422.XA patent/CN111338974B/zh active Active
- 2018-12-26 US US16/232,768 patent/US11687615B2/en active Active
-
2019
- 2019-12-18 JP JP2021531339A patent/JP7427001B2/ja active Active
- 2019-12-18 KR KR1020217016767A patent/KR102606207B1/ko active Active
- 2019-12-18 WO PCT/US2019/067050 patent/WO2020131993A1/en not_active Ceased
- 2019-12-18 EP EP19836908.4A patent/EP3899716A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| KR102606207B1 (ko) | 2023-11-24 |
| WO2020131993A1 (en) | 2020-06-25 |
| KR20210082527A (ko) | 2021-07-05 |
| US20200201931A1 (en) | 2020-06-25 |
| US11687615B2 (en) | 2023-06-27 |
| CN111338974A (zh) | 2020-06-26 |
| JP2022512311A (ja) | 2022-02-03 |
| EP3899716A1 (en) | 2021-10-27 |
| JP7427001B2 (ja) | 2024-02-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11900253B2 (en) | Tiling format for convolutional neural networks | |
| AU2023251540B2 (en) | Video upsampling using one or more neural networks | |
| US12406526B2 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
| US20220383068A1 (en) | Systems and methods for improved neural network execution | |
| US12067401B2 (en) | Stream processor with low power parallel matrix multiply pipeline | |
| US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
| US10223333B2 (en) | Performing multi-convolution operations in a parallel processing system | |
| US9971959B2 (en) | Performing object detection operations via a graphics processing unit | |
| CN111247533A (zh) | 用于神经网络加速的机器学习运行时库 | |
| US20210406209A1 (en) | Allreduce enhanced direct memory access functionality | |
| JP7427001B2 (ja) | 行列数学命令セットのタイリングアルゴリズム | |
| US11663001B2 (en) | Family of lossy sparse load SIMD instructions | |
| KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
| US20240127056A1 (en) | Computational storage for an energy-efficient deep neural network training system | |
| US11275632B2 (en) | Broadcast command and response | |
| US20220092410A1 (en) | Architected library interface for kernel fusion | |
| TWI850513B (zh) | 用於記憶體內計算的方法及用於計算的系統 | |
| CN116127685A (zh) | 使用机器学习执行模拟 | |
| US10679316B2 (en) | Single pass prefix sum in a vertex shader | |
| KR20240118633A (ko) | 메모리 장치 및 그 동작 방법 | |
| CN117875382A (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 |