CN107045493A - 矩阵处理装置 - Google Patents
矩阵处理装置 Download PDFInfo
- Publication number
- CN107045493A CN107045493A CN201710025742.3A CN201710025742A CN107045493A CN 107045493 A CN107045493 A CN 107045493A CN 201710025742 A CN201710025742 A CN 201710025742A CN 107045493 A CN107045493 A CN 107045493A
- Authority
- CN
- China
- Prior art keywords
- sparse element
- sparse
- dense matrix
- access unit
- dense
- 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.)
- Granted
Links
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
-
- 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/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Multi Processors (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
Abstract
本申请涉及矩阵处理装置。提供了方法、系统、和装置,其包括用于将稀疏元素变换为稠密矩阵的系统。所述系统被配置为:接收对于输出稠密矩阵的请求,所述输出稠密矩阵基于包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素的稀疏元素;获得由所述第一稀疏元素访问单元群组提取的与所述第一稠密矩阵相关联的稀疏元素;获得由所述第二稀疏元素访问单元群组提取的与所述第二稠密矩阵相关联的稀疏元素;以及对与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素进行变换以生成包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素的所述输出稠密矩阵。
Description
背景技术
本说明书大体上涉及使用电路来处理矩阵。
发明内容
根据本说明书中所描述的主题的一个创新方面,矩阵处理器能够被用来执行稀疏转稠密或者稠密转稀疏矩阵变换。大体上,高效能计算系统可以使用线性代数例程来处理矩阵。在一些实例中,矩阵的大小可能过大而无法存入一个数据存储中,并且该矩阵的不同部分可以被稀疏地存储在分布式数据存储系统的不同位置中。为了加载该矩阵,计算系统的中央处理单元可以指令单独的电路访问该矩阵的不同部分。该电路可以包括根据网络拓扑而布置的多个存储器控制器,其中稀疏数据可以基于一组预定规则来被划分和存储。每个存储器控制器可以基于该组预定规则来聚集稀疏数据,以执行对该稀疏数据的并行计算并且生成稠密矩阵,该稠密矩阵能够被串接在一起以供中央处理单元执行进一步的处理。
大体上,本说明书中所描述的主题的一个创新方面能够被包含在用于将稀疏元素变换为稠密矩阵的系统中。所述系统包括:第一稀疏元素访问单元群组,所述第一稀疏元素访问单元群组被配置为提取与第一稠密矩阵相关联的稀疏元素;以及第二稀疏元素访问单元群组,所述第二稀疏元素访问单元群组被配置为提取与不同于所述第一稠密矩阵的第二稠密矩阵相关联的稀疏元素。所述系统被配置为:接收对于输出稠密矩阵的请求,所述输出稠密矩阵基于包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素的稀疏元素;获得由所述第一稀疏元素访问单元群组提取的与所述第一稠密矩阵相关联的稀疏元素;获得由所述第二稀疏元素访问单元群组提取的与所述第二稠密矩阵相关联的稀疏元素;以及对与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素进行变换以生成包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素的所述输出稠密矩阵。
这些或其他实施方式均能够可选地包括以下特征中的一个或多个。例如,所述第一稀疏元素访问单元群组可以包括第一稀疏元素访问单元和第二稀疏元素访问单元。所述第一稀疏元素访问单元可以被配置为提取与所述第一稠密矩阵相关联的稀疏元素的第一子集。所述第二稀疏元素访问单元可以被配置为提取与所述第一稠密矩阵相关联的稀疏元素的不同的第二子集。
所述第一稀疏元素访问单元被配置为:接收对于多个稀疏元素的请求,所述多个稀疏元素包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素;以及向所述第二稀疏元素访问单元传送所述请求。所述第一稀疏元素访问单元可以被配置为:确定所述多个稀疏元素中的特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份。所述第一稀疏元素访问单元可以被配置为:响应于确定所述多个稀疏元素中的所述特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份,提取包括所述特定稀疏元素的、与所述第一稠密矩阵相关联的稀疏元素的所述第一子集。
所述第一稀疏元素访问单元可以被配置为从第一数据片提取与所述第一稠密矩阵相关联的稀疏元素的所述第一子集,以及所述第二稀疏元素访问单元可以被配置为从不同的第二数据片提取与所述第一稠密矩阵相关联的稀疏元素的不同的所述第二子集。所述第一稀疏元素访问单元可以被配置为对与所述第一稠密矩阵相关联的稀疏元素的所述第一子集进行变换以生成第三稠密矩阵,以及所述第二稀疏元素访问单元可以被配置为接收所述第三稠密矩阵;对与所述第二稠密矩阵相关联的稀疏元素的所述第二子集进行变换以生成第四稠密矩阵;以及对所述第三稠密矩阵和所述第四稠密矩阵进行变换以生成第五稠密矩阵,所述第五稠密矩阵包括与所述第一稠密矩阵相关联的稀疏元素的所述第一子集和与所述第二稠密矩阵相关联的稀疏元素的所述第二子集。
所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组可以以二维网状配置来布置。所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组可以以二维环面配置来布置。与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素可以是多维矩阵,并且所述输出稠密矩阵可以是向量。
本说明书中所描述的主题能够以特定实施例来实现以便达到以下优点中的一个或多个。根据网络拓扑来连接存储器控制器单元允许对稀疏数据的存储的划分以遵从一组预定规则。将稀疏转稠密数据加载任务从中央处理单元转移到专门的矩阵处理器提高了中央处理单元的计算带宽并且降低了所述系统的处理成本。通过使用专门的电路,能够避免将专用于稠密线性代数的处理器用于提取稀疏数据。通过在分布式系统中同时使用许多存储器,分布式系统中可用的总和聚合带宽高于单个存储器库的带宽,所述单个存储器库需要序列化并且对聚合带宽具有单个存储器限额。
以上和其他方面的其他实施方式包括对应的系统、装置、和计算机程序,其被配置来执行所述方法的动作,并且被编码在计算机存储设备上。一个或多个计算机的系统能够依靠安装在所述系统上的软件、固件、硬件、或它们的组合来被如此配置,从而在操作中使得所述系统执行所述动作。一个或多个计算机程序能够依靠具有指令来被如此配置,所述指令在由数据处理装置执行时,使得所述装置执行所述动作。
在附图和下面的描述中阐述了本说明书中所描述的主题的一个或多个实施方式的细节。本主题的其他潜在特征、方面、和优点根据说明书、附图、和权利要求书将变得显而易见。
附图说明
图1是示例计算系统的框图。
图2A至图2D图示了示例稀疏-稠密变换单元。
图3A至图3B图示了示例稀疏元素访问单元。
图4是图示了用于生成稠密矩阵的过程的示例的流程图。
图5是图示了用于将稀疏元素变换为稠密矩阵的过程的示例的流程图。
各附图中相似的附图标记和名称指示相似的元素。
具体实施方式
大体上,数据能够以矩阵的形式来表示并且计算系统可以使用线性代数算法来对该数据进行操纵。矩阵可以是一维向量或者是多维矩阵。矩阵可以由数据结构来表示,诸如数据库表或变量。然而,当矩阵的大小过大时,将整个矩阵存储在一个数据存储中也许是不可能的。稠密矩阵可以被变换为多个稀疏元素(element),其中每个稀疏元素可以被存储在不同的数据存储中。稠密矩阵的稀疏元素可以是其中仅该矩阵的小的子矩阵(例如,单值元素、行、列、或子矩阵)具有非零值的矩阵。当计算系统需要访问该稠密矩阵时,中央处理单元(CPU)可以开始一个线程,该线程到达数据存储中的每一个以提取存储的稀疏元素并且应用稀疏转稠密变换以恢复该稠密矩阵。然而,提取全部的稠密元素所用的时间量可能很长,并且CPU的计算带宽可能因此未被充分利用。在一些情况下,计算系统可能需要访问若干稠密矩阵的稀疏元素以形成新的稠密矩阵,其中这些稠密矩阵可以不具有相等的维度。与到达数据存储中的每一个以提取不同稠密矩阵的稀疏元素的线程相关联的CPU空闲时间可能遇到不同的等待时间,并且可能进一步以不期望的方式影响计算设备的效能。在一些情况下,计算系统可能需要访问若干稠密矩阵的稀疏元素以形成新的稠密矩阵,其中这些稀疏元素可以不具有相等的维度。与到达数据存储中的每一个以提取不同稠密矩阵的稀疏元素的线程相关联的CPU空闲时间可能遇到不同的等待时间,并且可能进一步以不期望的方式影响计算设备的效能。与CPU分离的硬件稀疏-稠密变换单元可以通过独立于CPU操作来收集稀疏元素并且将该稀疏元素变换为稠密矩阵而提高处理器的计算带宽。
图1示出了用于变换来自一个或多个稠密矩阵的稀疏元素以生成稠密矩阵的示例计算系统100的框图。计算系统100包括处理单元102、稀疏-稠密变换单元104、和数据片106a-106k,其中k是大于1的整数。大体上,处理单元102处理用于访问目标稠密矩阵的指令,并且将指令110发送至稀疏-稠密变换单元104以生成目标稠密矩阵。稀疏-稠密变换单元104访问来自数据片106a-106k中的一个或多个数据片的对应的稀疏元素108a-108n,其中n是大于1的整数。稀疏-稠密变换单元104使用对应的稀疏元素108a-108n来生成目标稠密矩阵112,并且将目标稠密矩阵112发送至处理单元102以供进一步处理。例如,稀疏元素108a-108n可以是具有不同大小的二维矩阵,并且稀疏-稠密变换单元104可以通过将稀疏元素108a-108n中的每一个变换为向量来生成稠密矩阵112,并且将n个向量串接为单个向量。
在一些实施方式中,处理单元102可以处理用于更新目标稠密矩阵的指令并且将已更新的稠密矩阵发送至稀疏-稠密变换单元104。稀疏-稠密变换单元104可以将已更新的稠密矩阵变换为对应的稀疏元素并且相应地对存储在数据片106a-106k中的一个或多个稠密元素进行更新。
处理单元102被配置为处理用于在计算系统100内执行的指令。处理单元102可以包括一个或多个处理器。在一些实施方式中,处理单元102被配置为处理由稀疏-稠密变换单元104生成的目标稠密矩阵112。在一些其他的实施方式中,处理单元102可以被配置为请求稀疏-稠密变换单元104生成目标稠密矩阵112,并且另一个处理单元可以被配置为处理该目标稠密矩阵112。数据片106a-106k存储包括稀疏元素108a-108n的数据。在一些实施方式中,数据片106a-106k可以是一个或多个易失性存储器单元。在一些其他实施方式中,数据片106a-106k可以是一个或多个非易失性存储器单元。数据片106a-106k也可以是另一形式的计算机可读介质,诸如存储区域网或其他配置中的设备。数据片106a-106k可以使用电连接、光连接、或无线连接来被耦合至稀疏-稠密变换单元104。在一些实施方式中,数据片106a-106k可以是稀疏-稠密变换单元104的一部分。
稀疏-稠密变换单元104被配置为基于稀疏元素来确定稠密矩阵。在一些实施方式中,稀疏-稠密变换单元104可以被配置为基于稠密矩阵来确定稀疏元素的位置。在一些实施方式中,稀疏-稠密变换单元104可以包括多个互连的稀疏元素访问单元,以下参照图2A来更详细描述。
图2A示出了示例稀疏-稠密变换单元200。稀疏-稠密变换单元200可以对应于稀疏-稠密变换单元104。稀疏-稠密变换单元200包括物理或逻辑上被布置为M行和N列的M乘N稀疏元素访问单元X1,1至XM,N,其中M和N为等于或大于1的整数。在一些实施方式中,稀疏-稠密变换单元200可以包括被配置为处理数据的附加电路。大体上,稀疏-稠密变换单元200被配置为:接收对于稠密矩阵的请求,并且基于可由稠密元素访问单元X1,1至XM,N访问的对应的稀疏元素来确定稠密矩阵。大体上,每个稀疏元素访问单元被配置为访问指定的稀疏元素集合,并且在下面参照图3A-3B来更详细描述。在一些实施方式中,稀疏元素访问单元可以是单指令多数据(SIMD)处理设备。
在一些实施方式中,稀疏元素访问单元X1,1至XM,N可以在物理上或逻辑上被布置为二维网状配置。例如,稀疏元素访问单元X1,1直接耦合至稀疏元素访问单元X1,2和X2,1。作为另一个示例,稀疏元素访问单元X2,2直接耦合至稀疏元素访问单元X2,1、X3,1、X2,3、和X1,2。两个稀疏元素访问单元之间的耦合可以是电连接、光连接、有线连接、或者任何其他合适的连接。
在一些其他实施方式中,稀疏元素访问单元X1,1至XM,N可以在物理上或逻辑上被布置为二维环面(torus)配置。例如,稀疏元素访问单元X1,1直接耦合至稀疏元素访问单元X1,2、X2,1、X1,N和XM,1。作为另一个示例,稀疏元素访问单元XM,N直接耦合至稀疏元素访问单元XM,N-1、XM-1,N、XM,1、和X1,N。
在一些实施方式中,稀疏-稠密变换单元200可以被配置为根据一组预定条件来对从稠密矩阵变换的稀疏元素进行划分(partition)。稀疏元素访问单元X1,1至XM,N中的每一行可以被划分以访问从特定稠密矩阵变换的稀疏元素。例如,稀疏-稠密变换单元200可以被配置为访问与计算机模型的1000个不同的数据库表相对应的稠密矩阵变换的稀疏元素。数据库表中的一个或多个可以具有不同的大小。稀疏元素访问单元的第一行202可以被配置为访问从数据库表No.1至数据库表No.100变换的稀疏元素,稀疏元素访问单元的第二行204可以被配置为访问从数据库表No.101至数据库表No.300变换的稀疏元素,并且稀疏元素访问单元的第M行206可以被配置为访问从数据库表No.751至数据库表No.1000变换的稀疏元素。在一些实施方式中,在处理器访问稀疏元素之前,可以使用稀疏-稠密变换单元200通过硬件指令来对所述划分进行配置。
稀疏元素访问单元X1,1至XM,N中的每一列可以被划分以访问从特定稠密矩阵变换的稀疏元素的子集。例如,与数据库表No.1相对应的稠密矩阵可以被变换为1000个稀疏元素,其中该1000个稀疏元素如上所述可由第一行202访问。稀疏元素访问单元X1,1可以被配置为访问数据库表No.1的稀疏元素No.1至No.200,并且稀疏元素访问单元X1,2可以被配置为访问数据库表No.1的稀疏元素No.201至No.500。作为另一个示例,与数据库表No.2相对应的稠密矩阵可以被变换为500个稀疏元素,其中该500个稀疏元素如上所述可由第一行202访问。稀疏元素访问单元X1,1可以被配置为访问数据库表No.2的稀疏元素No.1至No.50,并且稀疏元素访问单元X1,2可以被配置为访问数据库表No.2的稀疏元素No.51至No.200。作为另一个示例,与数据库表No.1000相对应的稠密矩阵可以被变换为10000个稀疏元素,其中该10000个稀疏元素如上所述可由第M行206访问。稀疏元素访问单元XM,1可以被配置为访问数据库表No.1000的稀疏元素No.1至No.2000,并且稀疏元素访问单元XM,N可以被配置为访问数据库表No.1000的稀疏元素No.9000至No.10000。
图2B示出了稀疏-稠密变换单元200可以如何使用稀疏元素访问单元的二维网状网络来请求稀疏元素的示例。作为示例,处理单元可以执行指令以向稀疏-稠密变换单元200请求稠密一维向量,该稠密一维向量是使用数据库表No.1的稀疏元素No.1至No.50、数据库表No.2的稀疏元素No.100至No.200、以及数据库表No.1000的稀疏元素No.9050至No.9060来生成的。在稀疏-稠密变换单元200从该处理单元接收到该请求后,稀疏-稠密变换单元200可以指令稀疏元素访问单元X1,1向网状网络中的其他稀疏元素访问单元广播对于所述稀疏元素的请求。稀疏元素访问单元X1,1可以向稀疏元素访问单元X1,2广播请求222并且向稀疏元素访问单元X2,1广播请求224。在接收到请求222后,稀疏元素访问单元X1,2可以向稀疏元素访问单元X1,3广播请求226。在一些实施方式中,稀疏元素访问单元可以被配置为基于路由方案来向另一稀疏元素访问单元广播请求。例如,稀疏元素访问单元X2,1可以不被配置为向稀疏元素访问单元X2,2广播请求,因为稀疏元素访问单元X2,2被配置为从稀疏元素访问单元X2,1接收广播。路由方案可以是静态的或者被动态生成。例如,路由方案可以是查找表。在一些实施方式中,稀疏元素访问单元可以被配置为基于请求224来向另一稀疏元素访问单元广播请求224。例如,请求224可以包括对所请求的稀疏元素(例如数据库表No.1,稀疏元素No.1至No.50)的识别,并且稀疏元素访问单元X1,2可以基于该识别来确定是否向稀疏元素访问单元X2,2和/或稀疏元素访问单元X1,3广播请求224。广播过程通过网状网络来传播,其中稀疏元素访问单元XM,N从稀疏元素访问单元XM,N-1接收请求230。
图2C示出了稀疏-稠密变换单元200可以如何使用稀疏元素访问单元的二维网状网络来生成所请求的稠密矩阵的示例。在一些实施方式中,在稀疏元素访问单元接收到所广播的请求后,该稀疏元素访问单元被配置为确定是否其被配置来访问所请求的稀疏元素中的任何稀疏元素。例如,稀疏元素访问单元X1,1可以确定其被配置来访问数据库表No.1的稀疏元素No.1至No.50,但其没有被配置来访问数据库表No.2的稀疏元素No.100至No.200或者数据库表No.1000的稀疏元素No.9050至No.9060。响应于确定其被配置来访问数据库表No.1的稀疏元素No.1至No.50,稀疏元素访问单元X1,1可以从存储这些稀疏元素的数据片中提取数据库表No.1的稀疏元素No.1至No.50,并且基于这些稀疏元素来生成稠密矩阵242。
作为另一个示例,稀疏元素访问单元X2,1可以确定其没有被配置来访问数据库表No.1的稀疏元素No.1至No.50、数据库表No.2的稀疏元素No.100至No.200、以及数据库表No.1000的稀疏元素No.9050至No.9060中的任何稀疏元素。响应于确定其没有被配置来访问所请求的稀疏元素中的任何稀疏元素,稀疏元素访问单元X2,1可以不执行进一步的动作。
作为另一个示例,稀疏元素访问单元X1,2可以确定其被配置来访问数据库表No.2的稀疏元素No.100至No.200,但是其没有被配置来访问数据库表No.1的稀疏元素No.1至No.50或者数据库表No.1000的稀疏元素No.9050至No.9060。响应于确定其被配置来访问数据库表No.2的稀疏元素No.100至No.200,稀疏元素访问单元X1,2可以从存储这些稀疏元素的数据片中提取这些稀疏元素,并且基于这些稀疏元素来生成稠密矩阵244。在一些实施方式中,在稀疏元素访问单元生成稠密矩阵后,该稀疏元素访问单元可以被配置为将该稠密矩阵转发至所广播的请求的发送者。此处,稀疏元素访问单元X1,2将稠密矩阵244转发至稀疏元素访问单元X1,1。
作为另一个示例,稀疏元素访问单元XM,N可以确定其被配置来访问数据库表No.1000的稀疏元素No.9050至No.9060,但是其没有被配置来访问数据库表No.1的稀疏元素No.1至No.50或者数据库表No.2的稀疏元素No.100至No.200。响应于确定其被配置来访问数据库表No.1000的稀疏元素No.9050至No.9060,稀疏元素访问单元XM,N可以从存储这些稀疏元素的数据片中提取这些稀疏元素,并且基于这些稀疏元素来生成稠密矩阵246。在一些实施方式中,在稀疏元素访问单元生成稠密矩阵后,该稀疏元素访问单元可以被配置为将该稠密矩阵转发至所广播的请求的发送者。此处,稀疏元素访问单元XM,N将稠密矩阵246转发至稀疏元素访问单元XM,N-1。在下一循环中,稀疏元素访问单元XM,N-1被配置为将稠密矩阵246转发至稀疏元素访问单元XM,N-1。该过程继续,直到稀疏元素访问单元X2,1已将稠密矩阵246转发至稀疏元素访问单元X1,1为止。
在一些实施方式中,稀疏-稠密变换单元200被配置为对由稀疏元素访问单元生成的稠密矩阵进行变换并且针对处理器单元生成稠密矩阵。此处,稀疏-稠密变换单元200针对处理器单元来将稠密矩阵242、244、和246变换为稠密矩阵。例如,稠密矩阵242可以具有100乘10的维度,稠密矩阵244可以具有20乘100的维度、并且稠密矩阵246可以具有3乘3的维度。稀疏-稠密变换单元200可以将稠密矩阵242、244、和246变换为具有1乘3009维度的向量。有利地,根据稠密矩阵(例如数据库表)的对行的划分允许稀疏-稠密变换单元200在所生成的稠密矩阵已经从列N传播至列1后获得全部所请求的稀疏元素。对列的划分减少了由仅使用稀疏元素访问单元中的一个访问过多稀疏元素所导致的带宽瓶颈。
图2D示出了稀疏-稠密变换单元200可以如何使用稀疏元素访问单元的二维网状网络基于稠密矩阵来更新稀疏元素的示例。作为示例,处理单元可以执行请求稀疏-稠密变换单元200稠密一维向量来更新所存储的稀疏元素,该稠密一维向量是使用数据库表No.1的稀疏元素No.1至No.50和数据库表No.1000的稀疏元素No.9050至No.9060来生成的。在稀疏-稠密变换单元200从处理单元接收到该请求后,稀疏-稠密变换单元200可以指令稀疏元素访问单元X1,1向网状网络中的其他稀疏元素访问单元广播稀疏元素更新请求,其中该稀疏元素更新请求可以包括由该处理单元提供的稠密一维向量。在一些实施方式中,稀疏元素访问单元X1,1可以确定是否其被指派来访问在该稠密一维向量中所包括的稀疏元素。响应于确定其被指派来访问该稠密一维向量中所包括的稀疏元素,稀疏元素访问单元X1,1可以更新数据片中所存储的稀疏元素。此处,稀疏元素访问单元X1,1确定其被指派来访问数据库表No.1的稀疏元素No.1至No.50,并且稀疏元素访问单元X1,1执行指令以更新该数据片中的这些稀疏元素。
稀疏元素访问单元X1,1可以向稀疏元素访问单元X1,2广播稀疏元素更新请求252并且向稀疏元素访问单元X2,1广播稀疏元素更新请求254。在接收到稀疏元素更新请求252后,稀疏元素访问单元X1,2可以确定其没有被指派来访问在稠密一维向量中所包括的稀疏元素。稀疏元素访问单元X1,2向稀疏元素访问单元X1,3广播请求256。广播过程通过网状网络来传播,其中稀疏元素访问单元XM,N从稀疏元素访问单元XM,N-1接收请求260。此处,稀疏元素访问单元XM,N确定其被指派来访问数据库表No.1000的稀疏元素No.9050至No.9060,并且稀疏元素访问单元XM,N执行指令以更新数据片中的这些稀疏元素。
图3A示出了示例稀疏元素访问单元300。稀疏元素访问单元300可以是稀疏元素访问单元X1,1至XM,N中的任何一个。大体上,稀疏元素访问单元300被配置为从节点网络320接收请求342以提取在一个或多个数据片中存储的稀疏元素并且将所提取的稀疏元素变换为稠密矩阵。在一些实施方式中,处理单元316向节点网络320中的稀疏元素访问单元发送对于使用稀疏元素生成的稠密矩阵的请求。稀疏元素访问单元可以向稀疏元素访问单元300广播请求342。对所广播的请求342的路由可以类似于图2B中的描述。稀疏元素访问单元300包括请求识别单元302、数据提取单元304、稀疏降低单元306、串接单元308、压缩/解压缩单元310、以及分裂单元312。节点网络302可以是二维网状网络。处理单元316可以类似于处理单元102。
大体上,请求识别单元302被配置为接收请求342以提取在一个或多个数据片330中存储的稀疏元素,并且确定稀疏元素访问单元300是否被指派为访问由请求342指示的稀疏元素。在一些实施方式中,请求识别单元302可以通过使用查找表来确定稀疏元素访问单元300是否被指派为访问由请求342指示的稀疏元素。例如,如果对特定的所请求稀疏元素(例如数据库表No.1的No.1)的识别被包括在查找表中,则请求识别单元302可以向数据提取单元304发送信号344以提取该特定的所请求稀疏元素。如果对特定的所请求稀疏元素(例如数据库表No.1的No.1)的识别没有被包括在查找表中,则请求识别单元302可以丢弃所接收的请求。在一些实施方式中,请求识别单元302可以被配置为向节点网络320上的另一稀疏元素访问单元广播所接收的请求。
数据提取单元304被配置为响应于接收到信号344而从数据片330中提取一个或多个所请求的稀疏元素。在一些实施方式中,数据提取单元304包括一个或多个处理器322a-322k,其中k为整数。处理器322a-322k可以是向量处理单元(VPU)、阵列处理单元、或者任何合适的处理单元。在一些实施方式中,处理器322a-322k被布置在数据片330附近以降低处理器322a-322k与数据片330之间的时延。基于稀疏元素访问单元300被指派来提取的所请求的稀疏元素的数目,数据提取单元304可以被配置为生成一个或多个请求以在处理器322a-322k当中分布。在一些实施方式中,处理器322a-322k中的每一个可以基于对稀疏元素的识别来被指派至特定稀疏元素,并且数据提取单元304可以被配置为基于对稀疏元素的识别来生成对于处理器322a-322k的一个或多个请求。在一些实施方式中,数据提取单元304可以通过使用查找表来确定处理器指派。在一些实施方式中,数据提取单元304可以针对处理器322a-322k而生成多个批次,其中每个批次是对于所请求的稀疏元素的子集的一个请求。处理器322a-322k被配置为从数据片330独立地提取所指派的稀疏元素,并且将所提取的稀疏元素346转发至稀疏降低单元306。
稀疏降低单元306被配置来降低所提取的稀疏元素346的维度。例如,处理器322a-322k中的每一个可以生成具有100乘1的维度的稀疏元素。稀疏降低单元306可以接收具有100乘k的维度的所提取的稀疏元素346,并且通过利用逻辑操作、数学操作、或者这两者的组合来将所提取的稀疏元素346的维度降低为100乘1来生成稀疏降低的元素348。稀疏降低单元306被配置为向串接单元308输出稀疏降低的元素348。
串接单元308被配置为重新布置并串接稀疏降低的元素348以生成所串接元素350。例如,稀疏元素访问单元X1,1可以被配置为访问数据库表No.1的稀疏元素No.1至No.200。处理器322a可以比被配置来返回所提取的稀疏元素No.5的处理器322b更快地向稀疏降低单元306返回所提取的稀疏元素No.10。串接单元308被配置为对较晚接收到的稀疏元素No.5重新布置以使其被排序在较早接收到的稀疏元素No.10之前,并且将稀疏元素No.1至No.200串接为串接元素350。
压缩/解压缩单元310被配置为压缩所串接元素350以针对节点网络320生成稠密矩阵352。例如,压缩/解压缩单元310可以被配置为对所串接元素350中的零值进行压缩以改善节点网络320的带宽。在一些实施方式中,压缩/解压缩单元310可以对所接收的稠密矩阵解压缩。例如,稀疏元素访问单元300可以经由节点网络320来从邻近稀疏元素访问单元接收稠密矩阵。稀疏元素访问单元300可以对所接收的稠密矩阵解压缩,并且可以将已解压缩的稠密矩阵与串接元素350串接以形成更新的所串接元素,其能够被压缩并且之后被输出至节点网络320。
图3B示出了稀疏元素访问单元300可以如何基于从节点网络320接收的稠密矩阵来更新稀疏元素的示例。作为示例,处理单元可以执行请求稀疏-稠密变换单元使用稠密一维向量来而更新所存储的稀疏元素的指令,该稠密一维向量是使用数据库表No.1的稀疏元素No.1至No.50和数据库表No.1000的稀疏元素No.9050至No.9060来生成的。在稀疏-稠密变换单元从处理单元接收到该请求后,该稀疏-稠密变换单元可以发送请求362以指令稀疏元素访问单元300确定是否其被指派来访问在稠密一维向量中所包括的稀疏元素。请求识别单元302被配置为确定是否稀疏元素访问单元300被指派来访问在稠密一维向量中所包括的稀疏元素。响应于确定稀疏元素访问单元300被指派来访问在稠密一维向量中所包括的稀疏元素,请求识别单元302可以向分裂单元312发送指示364以更新在数据片中存储的稀疏元素。
分裂单元312被配置来将所接收的稠密矩阵变换为稀疏元素,该稀疏元素能够由数据提取单元304在数据片330中更新。例如,分离单元312可以被配置为将稠密一维向量变换为多个稀疏元素,并且指令数据提取单元304更新稀疏元素访问单元300被指派来提取的数据片330中存储的稀疏元素。
图4是图示了用于生成稠密矩阵的过程400的示例的流程图。过程400可以由诸如稀疏-稠密变换单元104或稀疏-稠密变换单元200的系统来执行。系统可以包括第一稀疏元素访问单元群组和第二稀疏元素访问单元群组。例如,参照图2A,稀疏-稠密变换单元200可以包括在物理上或逻辑上被布置为M行和N列的M乘N稀疏元素访问单元X1,1至XM,N。稀疏元素访问单元X1,1至XM,N中的每一行可以被划分以访问从特定稠密矩阵变换的稀疏元素。在一些实施方式中,第一稀疏元素访问单元群组可以包括第一稀疏元素访问单元和第二稀疏元素访问单元。例如,稀疏-稠密变换单元200的第一行可以包括稀疏元素访问单元X1,1和X1,2。在一些实施方式中,第一稀疏元素访问单元群组和第二稀疏元素访问单元群组可以以二维网状配置来布置。在一些实施方式中,第一稀疏元素访问单元群组和第二稀疏元素访问单元群组可以以二维环面配置来布置。
系统接收对于基于稀疏元素的输出矩阵的请求,所述稀疏元素包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素。例如,参照图2B,处理单元可以执行向稀疏-稠密变换单元200请求稠密一维向量的指令,该稠密一维向量是使用数据库表No.1的稀疏元素No.1至No.50、数据库表No.2的稀疏元素No.100至No.200、以及数据库表No.1000的稀疏元素No.9050至No.9060来生成的。
在一些实施方式中,第一稀疏元素访问单元可以接收对于多个稀疏元素的请求,所述多个稀疏元素包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素。第一稀疏元素访问单元可以将该请求传送至第二稀疏元素访问单元。例如,参照图2B,在稀疏-稠密变换单元200从处理单元接收到该请求后,稀疏-稠密变换单元200可以指令稀疏元素访问单元X1,1向网状网络中的其他稀疏元素访问单元广播对于所述稀疏元素的请求。稀疏元素访问单元X1,1可以向稀疏元素访问单元X1,2广播请求222。
系统获得第一稀疏元素访问单元群组所提取的、与第一稠密矩阵相关联的稀疏元素(402)。在一些实施方式中,第一稀疏元素访问单元可以确定:所述多个稀疏元素中的特定稀疏元素的身份匹配与第一稠密矩阵相关联的稀疏元素的第一子集中的一个稀疏元素的身份。例如,参照图2C,稀疏元素访问单元X1,1可以被配置为访问数据库表No.1的稀疏元素No.1至No.200。稀疏元素访问单元X1,1可以确定其被配置为访问数据库表No.1的稀疏元素No.1至No.50,但是其没有被配置来访问数据库表No.2的稀疏元素No.100至No.200或者数据库表No.1000的稀疏元素No.9050至No.9060。响应于确定所述多个稀疏元素中的特定稀疏元素的身份匹配与第一稠密矩阵相关联的稀疏元素的第一子集中的一个稀疏元素的身份,第一稀疏元素访问单元可以提取与包括该特定稀疏元素的第一稠密矩阵相关联的稀疏元素的第一子集。例如,响应于确定其被配置来访问数据库表No.1的稀疏元素No.1至No.50,稀疏元素访问单元X1,1可以从存储这些稀疏元素的数据片中提取数据库表No.1的稀疏元素No.1至No.50。
第二稀疏元素访问单元可以提取与第一稠密矩阵相关联的稀疏元素的不同的第二子集。例如,参照图2C,稀疏元素访问单元X1,2可以被配置来访问数据库表No.2的稀疏元素No.51至No.200。响应于确定其被配置来访问数据库表No.2的稀疏元素No.100至No.200,稀疏元素访问单元X1,2可以从存储这些稀疏元素的数据片中提取这些稀疏元素。
系统获得由第二稀疏元素访问单元群组提取的、与第二稠密矩阵相关联的稀疏元素(404)。例如,参照图2C,第二稀疏元素访问单元群组可以是M乘N稀疏元素访问单元的第M行,其中稀疏元素访问单元XM,N可以被配置为访问数据库表No.1000的稀疏元素No.9000至No.10000。响应于确定其被配置来访问数据库表No.1000的稀疏元素No.9050至No.9060,稀疏元素访问单元XM,N可以从存储这些稀疏元素的数据片中提取这些稀疏元素,并且基于这些稀疏元素来生成稠密矩阵246。
在一些实施方式中,第一稀疏元素访问单元可以从第一数据片提取与第一稠密矩阵相关联的稀疏元素的第一子集,并且第二稀疏元素访问单元可以从不同的第二数据片提取与第一稠密矩阵相关联的稀疏元素的不同的第二子集。例如,参照图1,第一稀疏元素访问单元可以从数据片106a提取与第一稠密矩阵相关联的稀疏元素的第一子集,并且第二稀疏元素访问单元可以从数据片106b提取与第一稠密矩阵相关联的稀疏元素的不同的第二子集。
系统对与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素进行变换以生成包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素的输出稠密矩阵(406)。例如,参照图2C,稀疏-稠密变换单元200针对处理器单元来将稠密矩阵242、244、和246变换为一个稠密矩阵。
在一些实施方式中,与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素可以是多维矩阵,并且输出稠密矩阵可以是向量。例如,稠密矩阵242可以具有100乘10的维度,稠密矩阵244可以具有20乘100的维度、并且稠密矩阵246可以具有3乘3的维度。稀疏-稠密变换单元200可以将稠密矩阵242、244、和246变换为具有1乘3009维度的向量。
图5是图示了用于生成稠密矩阵的过程500的示例的流程图。过程500可以由诸如稀疏-稠密变换单元104或稀疏元素访问单元300的系统来执行。
系统接收访问特定稀疏元素的子集的指示(502)。例如,参照图3A,数据提取单元304可以被配置为接收信号344以用于从数据片330提取一个或多个所请求的稀疏元素。在一些实施方式中,对于存储在一个或多个数据片中的特定稀疏元素的请求可以通过节点网络来接收。例如,参照图3A,请求识别单元302可以被配置为通过节点网络320来接收请求342以提取在数据片330中存储的稀疏元素。系统可以确定该数据提取单元被指派来管控(handle)该特定稀疏元素的子集。例如,请求识别单元302可以被配置为确定稀疏元素访问单元300是否被指派为访问由请求342指示的稀疏元素。响应于确定该数据提取单元被指派来管控该特定稀疏元素的子集,该指示可以被生成以用于访问该特定稀疏元素的子集。例如,如果对特定的所请求稀疏元素(例如数据库表No.1的No.1)的识别被包括在查找表中,则请求识别单元302可以向数据提取单元304发送信号344以提取该特定的所请求稀疏元素。
系统基于对该特定稀疏元素的子集的识别来确定用于提取该特定稀疏元素的子集的处理器指定(504)。例如,参照图3A,数据提取单元304包括一个或多个处理器322a-322k。处理器322a-322k中的每一个可以基于对稀疏元素的识别来被指派至特定稀疏元素,并且数据提取单元304可以被配置为基于对稀疏元素的识别来生成对于处理器322a-322k的一个或多个请求。在一些实施方式中,系统可以确定该系统被指派来管控特定稀疏元素的子集包括:基于查找表来确定该系统被指派来管控该特定稀疏元素的子集。例如,数据提取单元304可以通过使用查找表来确定处理器指派。
系统基于该指定由多个处理器中的第一处理器来提取该特定稀疏元素的子集中的第一稀疏元素(506)。例如,参照图3A,数据提取单元304可以指令处理器322a提取在信号344中包括的稀疏元素。
系统基于该指定由多个处理器中的第二处理器来提取该特定稀疏元素的子集中的第二稀疏元素(508)。例如,参照图3A,数据提取单元304可以指令处理器322b提取在信号344中包括的不同的稀疏元素。
在一些实施方式中,可以接收包括来自第一处理器的第一稀疏元素的第一矩阵,其中该第一矩阵可以具有第一维度。系统可以生成包括该第一稀疏元素的第二矩阵,该第二矩阵可以具有小于该第一维度的第二维度。例如,稀疏降低矩阵306可以被配置为降低所提取的稀疏元素346的维度。处理器322a-322k中的每一个可以生成具有100乘1的维度的稀疏元素。稀疏降低单元306可以接收具有100乘k的维度的所提取的稀疏元素346,并且通过利用逻辑操作、数学操作、或者这两者的组合来将所提取的稀疏元素346的维度降低为100乘1来生成稀疏降低的元素348。系统可以生成输出稠密矩阵,该输出稠密矩阵可以基于该第二矩阵来被生成。例如,串接单元308可以被配置为重新布置并串接稀疏降低的元素348以生成串接元素350。
在一些实施方式中,可以在第一时间点接收第一稀疏元素,并且可以在不同的第二时间点接收第二稀疏元素。系统可以针对该输出稠密矩阵来确定第一稀疏元素和第二稀疏元素的顺序。例如,参照图3A,处理器322a可以比被配置来返回所提取的稀疏元素No.5的处理器322b更快地向稀疏降低单元306返回所提取的稀疏元素No.10。串接单元308被配置为对较晚接收到的稀疏元素No.重新布置以使其被排序在较早接收到的稀疏元素No.10之前,并且将稀疏元素No.1至No.200串接为串接元素350。
系统基于至少被应用于第一稀疏元素和第二稀疏元素的变换来生成输出稠密矩阵(510)。在一些实施方式中,系统可以压缩该输出稠密矩阵以生成压缩输出稠密矩阵。系统可以向节点网络提供该压缩输出稠密矩阵。例如,压缩/解压缩单元310可以被配置来压缩串接元素350以生成针对网络320的稠密矩阵352。
在一些实施方式中,系统可以接收表示通过节点网络所发送的稠密矩阵的第一稠密矩阵,并且基于该第一稠密矩阵、第一稀疏元素、和第二稀疏元素来生成输出稠密矩阵。例如,稀疏元素访问单元300可以经由节点网络320来从邻近的稀疏元素访问单元接收稠密矩阵。稀疏元素访问单元300可以对所接收的稠密矩阵解压缩,并且可以将已解压缩的稠密矩阵与所串接元素350串接以形成更新的所串接元素,其能够被压缩并且之后被输出至节点网络320。
在一些实施方式中,特定稀疏元素中的一个或多个稀疏元素是多维矩阵,并且输出稠密矩阵是向量。本说明书中描述的主题和功能性操作的实施例能够以数字电子电路、以有形体现的计算机软件或固件、以硬件——包括本说明书中公开的结构及其结构等同物、或者以它们中的一个或多个的组合来实现。本说明书中描述的主题能够被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在有形非暂时性程序载体上,以用于由数据处理装置执行或控制数据处理装置的操作。替选地或另外地,程序指令能够被编码在人工生成的传播信号上,该信号例如机器生成的电、光、或电磁信号,其被生成以对信息进行编码以用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质能够是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备、或它们中的一个或多个的组合。
术语“数据处理装置”涵盖用于处理数据的各种装置、设备、和机器,包括例如可编程处理器、计算机、或者多个处理器或计算机。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还能够包括创建用于所讨论的计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用、模块、软件模块、脚本、或代码)能够以任何形式的编程语言编写,包括编译或解释语言、声明性或过程性语言,并且其能够以任何形式部署,包括作为独立程序或作为适于在计算环境中使用的模块、组件、子例程、或其它单元。计算机程序可以但不必对应于文件系统中的文件。程序能够被存储在保持其他程序或数据——例如存储在标记语言文档中的一个或多个脚本——的文件的一部分中、专用于所讨论的程序的单个文件中、或者多个协作文件——例如存储一个或多个模块、子程序、或代码部分的文件中。计算机程序能够被部署为在一个计算机上或在位于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上执行。
本说明书中所描述的过程和逻辑流程能够由一个或多个可编程计算机来执行,所述可编程计算机执行一个或多个计算机程序以通过在输入数据上操作并且生成输出来执行功能。该过程和逻辑流程也能够由专用逻辑电路执行并且装置也能够被实现为专用逻辑电路,所述专用逻辑电路例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)、或者GPGPU(通用图形处理单元)。
适合于执行计算机程序的处理器包括例如通用微处理器或专用微处理器或者这两者,或者任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的必需元件是用于实施或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备——例如磁盘、磁光盘、或光盘,或者可操作地耦合以从其接收数据或向其传输数据、或者这两者。然而,计算机不需要具有这样的设备。此外,计算机能够被嵌入另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或便携式存储设备——例如通用串行总线(USB)闪存驱动器,仅举数例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM、和闪速存储器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施方式能够被实现在具有以下的计算机上:用于向用户显示信息的显示设备——例如CRT(阴极射线管)或LCD(液晶显示器)监视器;以及键盘和指示设备——例如鼠标或轨迹球,用户通过其能够向计算机提供输入。其他种类的设备也能够被用于提供与用户的交互;提供给用户的反馈能够是任何形式的感官反馈,例如视觉反馈、听觉反馈、或触觉反馈;并且能够接收来自用户的处于任何形式的输入,包括声音、语音、或触觉输入。此外,计算机能够通过向用户使用的设备发送文档以及从其接收文档来与该用户交互,例如通过响应于从用户的客户端设备上的web浏览器接收的请求而向该web浏览器发送网页。
在本说明书中描述的主题的实施例能够被实现在计算系统中,该计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如具有图形用户界面或Web浏览器的客户端计算机的前端组件——用户通过该Web浏览器能够与本说明书中所描述的主题的实施方式交互,或者包括一个或多个这样的后端组件、中间件组件、或前端组件的任何组合。系统的组件能够通过例如通信网络的任何形式或介质的数字数据通信来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且一般通过通信网络交互。客户端和服务器的关系依靠在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实施方式细节,但是这些不应被解释为对任何发明或可以要求保护的内容的范围的限制,而是应当被解释为对特定发明的特定实施例特有的特征的描述。本说明书中在单独实施例的场境下所描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例场境下所描述的各个特征也能够在多个实施例中单独地或以任何合适的子组合来实现。此外,虽然上面可能将特征描述为以某些组合来起作用并且甚至最初如此要求保护,但是在一些情况下来自所要求保护的组合的一个或多个特征能够从组合中被删去,并且所要求保护的组合可以涉及子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为需要以所示的特定顺序或以连续顺序来执行这样的操作、或者需要执行所有所图示的操作才能达到期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常能够一起集成在单个软件产品中或封装到多个软件产品内。
已经描述了本主题的特定实施例。其他实施例落入所附权利要求书的范围内。例如,权利要求书中所记载的动作能够以不同的顺序执行并且仍然达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来达到期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
Claims (20)
1.一种用于将稀疏元素变换为稠密矩阵的系统,所述系统包括:
第一稀疏元素访问单元群组,所述第一稀疏元素访问单元群组被配置为提取与第一稠密矩阵相关联的稀疏元素;以及
第二稀疏元素访问单元群组,所述第二稀疏元素访问单元群组被配置为提取与不同于所述第一稠密矩阵的第二稠密矩阵相关联的稀疏元素,
其中,所述系统被配置为:
接收对于输出稠密矩阵的请求,所述输出稠密矩阵基于包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素的稀疏元素;
获得由所述第一稀疏元素访问单元群组提取的与所述第一稠密矩阵相关联的稀疏元素;
获得由所述第二稀疏元素访问单元群组提取的与所述第二稠密矩阵相关联的稀疏元素;以及
对与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素进行变换以生成包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素的所述输出稠密矩阵。
2.根据权利要求1所述的系统,
其中,所述第一稀疏元素访问单元群组包括第一稀疏元素访问单元和第二稀疏元素访问单元;
其中,所述第一稀疏元素访问单元被配置为提取与所述第一稠密矩阵相关联的稀疏元素的第一子集,以及
其中,所述第二稀疏元素访问单元被配置为提取与所述第一稠密矩阵相关联的稀疏元素的不同的第二子集。
3.根据权利要求2所述的系统,其中,所述第一稀疏元素访问单元被配置为:
接收对于多个稀疏元素的请求,所述多个稀疏元素包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素;以及
向所述第二稀疏元素访问单元传送所述请求。
4.根据权利要求3所述的系统,其中,所述第一稀疏元素访问单元被配置为:
确定所述多个稀疏元素中的特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份,以及
其中,所述第一稀疏元素访问单元被配置为响应于确定所述多个稀疏元素中的所述特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份,提取包括所述特定稀疏元素的、与所述第一稠密矩阵相关联的稀疏元素的所述第一子集。
5.根据权利要求2所述的系统,
其中,所述第一稀疏元素访问单元被配置为从第一数据片提取与所述第一稠密矩阵相关联的稀疏元素的所述第一子集,以及
其中,所述第二稀疏元素访问单元被配置为从不同的第二数据片提取与所述第一稠密矩阵相关联的稀疏元素的不同的所述第二子集。
6.根据权利要求2所述的系统,
其中,所述第一稀疏元素访问单元被配置为对与所述第一稠密矩阵相关联的稀疏元素的所述第一子集进行变换以生成第三稠密矩阵,以及
其中,所述第二稀疏元素访问单元被配置为:
接收所述第三稠密矩阵;
对与所述第二稠密矩阵相关联的稀疏元素的所述第二子集进行变换以生成第四稠密矩阵;以及
利用所述第四稠密矩阵对所述第三稠密矩阵进行变换以生成第五稠密矩阵,所述第五稠密矩阵包括与所述第一稠密矩阵相关联的稀疏元素的所述第一子集和与所述第二稠密矩阵相关联的稀疏元素的所述第二子集。
7.根据权利要求1所述的系统,其中,所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组以二维网状配置来布置。
8.根据权利要求1所述的系统,其中,所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组以二维环面配置来布置。
9.根据权利要求1所述的系统,其中,与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素是多维矩阵,并且所述输出稠密矩阵是向量。
10.一种用于将稀疏元素变换为稠密矩阵的方法,所述方法包括:
接收对于基于稀疏元素的输出稠密矩阵的请求,所述稀疏元素包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素;
获得由第一稀疏元素访问单元群组提取的与所述第一稠密矩阵相关联的稀疏元素;
获得由第二稀疏元素访问单元群组提取的与所述第二稠密矩阵相关联的稀疏元素;以及
对与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素进行变换以生成包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素的所述输出稠密矩阵。
11.根据权利要求10所述的方法,
其中,所述第一稀疏元素访问单元群组包括第一稀疏元素访问单元和第二稀疏元素访问单元,并且其中,所述方法进一步包括:
由所述第一稀疏元素访问单元提取与所述第一稠密矩阵相关联的稀疏元素的第一子集,以及
由所述第二稀疏元素访问单元提取与所述第一稠密矩阵相关联的稀疏元素的不同的第二子集。
12.根据权利要求11所述的方法,进一步包括:
由所述第一稀疏元素访问单元接收对于多个稀疏元素的请求,所述多个稀疏元素包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素;以及
由所述第一稀疏元素访问单元向所述第二稀疏元素访问单元传送所述请求。
13.根据权利要求12所述的方法,其中,提取与所述第一稠密矩阵相关联的稀疏元素的所述第一子集进一步包括:
由所述第一稀疏元素访问单元确定所述多个稀疏元素中的特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份,以及
响应于确定所述多个稀疏元素中的所述特定稀疏元素的身份匹配与所述第一稠密矩阵相关联的稀疏元素的所述第一子集中的一个稀疏元素的身份,提取包括所述特定稀疏元素的、与所述第一稠密矩阵相关联的稀疏元素的所述第一子集。
14.根据权利要求11所述的方法,
其中,提取与所述第一稠密矩阵相关联的稀疏元素的所述第一子集进一步包括:从第一数据片提取与所述第一稠密矩阵相关联的稀疏元素的所述第一子集,以及
其中,提取与所述第一稠密矩阵相关联的稀疏元素的不同的第二子集包括:从不同的第二数据片提取与所述第一稠密矩阵相关联的稀疏元素的不同的所述第二子集。
15.根据权利要求10所述的方法,其中,所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组以二维网状配置来布置。
16.根据权利要求10所述的方法,其中,所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组以二维环面配置来布置。
17.根据权利要求10所述的方法,其中,与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素是多维矩阵,并且所述输出稠密矩阵是向量。
18.一种用于将稀疏元素变换为稠密矩阵的系统,所述系统包括:
一个或多个处理器,所述一个或多个处理器被配置为发送对于输出稠密矩阵的请求,所述输出稠密矩阵基于包括与第一稠密矩阵相关联的稀疏元素和与第二稠密矩阵相关联的稀疏元素的稀疏元素;
稀疏-稠密变换单元,包括:
第一稀疏元素访问单元群组,所述第一稀疏元素访问单元群组被配置为提取与所述第一稠密矩阵相关联的稀疏元素;以及
第二稀疏元素访问单元群组,所述第二稀疏元素访问单元群组被配置为提取与不同于所述第一稠密矩阵的所述第二稠密矩阵相关联的稀疏元素,
其中,所述稀疏-稠密变换单元被配置为:
接收对于所述输出稠密矩阵的所述请求;
获得由所述第一稀疏元素访问单元群组提取的与所述第一稠密矩阵相关联的稀疏元素;
获得由所述第二稀疏元素访问单元群组提取的与所述第二稠密矩阵相关联的稀疏元素;以及
对与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素进行变换以生成包括与所述第一稠密矩阵相关联的稀疏元素和与所述第二稠密矩阵相关联的稀疏元素的所述输出稠密矩阵。
19.根据权利要求18所述的系统,
其中,所述第一稀疏元素访问单元群组包括第一稀疏元素访问单元和第二稀疏元素访问单元;
其中,所述第一稀疏元素访问单元被配置为提取与所述第一稠密矩阵相关联的稀疏元素的第一子集,以及
其中,所述第二稀疏元素访问单元被配置为提取与所述第一稠密矩阵相关联的稀疏元素的不同的第二子集。
20.根据权利要求18所述的系统,其中,所述第一稀疏元素访问单元群组和所述第二稀疏元素访问单元群组以二维环面配置来布置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010713206.4A CN112000919B (zh) | 2016-02-05 | 2017-01-13 | 矩阵处理装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/016,420 | 2016-02-05 | ||
US15/016,420 US9805001B2 (en) | 2016-02-05 | 2016-02-05 | Matrix processing apparatus |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010713206.4A Division CN112000919B (zh) | 2016-02-05 | 2017-01-13 | 矩阵处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107045493A true CN107045493A (zh) | 2017-08-15 |
CN107045493B CN107045493B (zh) | 2020-08-18 |
Family
ID=57708453
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710025742.3A Active CN107045493B (zh) | 2016-02-05 | 2017-01-13 | 矩阵处理装置 |
CN202010713206.4A Active CN112000919B (zh) | 2016-02-05 | 2017-01-13 | 矩阵处理装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010713206.4A Active CN112000919B (zh) | 2016-02-05 | 2017-01-13 | 矩阵处理装置 |
Country Status (8)
Country | Link |
---|---|
US (6) | US9805001B2 (zh) |
EP (2) | EP3203382A1 (zh) |
JP (4) | JP6524052B2 (zh) |
KR (4) | KR101980365B1 (zh) |
CN (2) | CN107045493B (zh) |
BR (1) | BR102016030970A8 (zh) |
SG (2) | SG10201610977QA (zh) |
TW (4) | TWI718604B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804684A (zh) * | 2018-06-13 | 2018-11-13 | 北京搜狗科技发展有限公司 | 一种数据处理方法和装置 |
CN113794709A (zh) * | 2021-09-07 | 2021-12-14 | 北京理工大学 | 一种用于二值稀疏矩阵的混合编码方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9805001B2 (en) | 2016-02-05 | 2017-10-31 | Google Inc. | Matrix processing apparatus |
US10521458B1 (en) * | 2016-08-25 | 2019-12-31 | Cyber Atomics, Inc. | Efficient data clustering |
US10635739B1 (en) | 2016-08-25 | 2020-04-28 | Cyber Atomics, Inc. | Multidimensional connectivity graph-based tensor processing |
US10489481B1 (en) * | 2017-02-24 | 2019-11-26 | Cyber Atomics, Inc. | Efficient matrix property determination with pipelining and parallelism |
JP6912703B2 (ja) * | 2017-02-24 | 2021-08-04 | 富士通株式会社 | 演算方法、演算装置、演算プログラム及び演算システム |
US10936942B2 (en) * | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159489A1 (en) * | 2010-12-20 | 2012-06-21 | Oliver Schabenberger | Systems and Methods for Generating a Cross-Product Matrix In a Single Pass Through Data Using Single Pass Levelization |
US20130339506A1 (en) * | 2012-06-13 | 2013-12-19 | International Business Machines Corporation | Performing synchronized collective operations over multiple process groups |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752067A (en) | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5625836A (en) | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
GB2251320A (en) * | 1990-12-20 | 1992-07-01 | Motorola Ltd | Parallel processor |
JP2557175B2 (ja) * | 1992-05-22 | 1996-11-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システム |
US5446908A (en) | 1992-10-21 | 1995-08-29 | The United States Of America As Represented By The Secretary Of The Navy | Method and apparatus for pre-processing inputs to parallel architecture computers |
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 |
JP3348367B2 (ja) * | 1995-12-06 | 2002-11-20 | 富士通株式会社 | 多重アクセス方法および多重アクセスキャッシュメモリ装置 |
JP3639206B2 (ja) * | 2000-11-24 | 2005-04-20 | 富士通株式会社 | 共有メモリ型スカラ並列計算機における並列行列処理方法、及び記録媒体 |
DE60237433D1 (de) | 2001-02-24 | 2010-10-07 | Ibm | Neuartiger massivparalleler supercomputer |
CN100499446C (zh) | 2001-02-24 | 2009-06-10 | 国际商业机器公司 | 类网络路由方法 |
US6961888B2 (en) | 2002-08-20 | 2005-11-01 | Flarion Technologies, Inc. | Methods and apparatus for encoding LDPC codes |
US8380778B1 (en) * | 2007-10-25 | 2013-02-19 | Nvidia Corporation | System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness |
US8751556B2 (en) | 2010-06-11 | 2014-06-10 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
US8549259B2 (en) | 2010-09-15 | 2013-10-01 | International Business Machines Corporation | Performing a vector collective operation on a parallel computer having a plurality of compute nodes |
CN102141976B (zh) | 2011-01-10 | 2013-08-14 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
US9170836B2 (en) * | 2013-01-09 | 2015-10-27 | Nvidia Corporation | System and method for re-factorizing a square matrix into lower and upper triangular matrices on a parallel processor |
JP6083300B2 (ja) | 2013-03-29 | 2017-02-22 | 富士通株式会社 | プログラム、並列演算方法および情報処理装置 |
US9367519B2 (en) * | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
US9471377B2 (en) | 2013-11-13 | 2016-10-18 | Reservoir Labs, Inc. | Systems and methods for parallelizing and optimizing sparse tensor computations |
CN103984527B (zh) * | 2014-04-01 | 2017-12-15 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
US9715481B2 (en) | 2014-06-27 | 2017-07-25 | Oracle International Corporation | Approach for more efficient use of computing resources while calculating cross product or its approximation for logistic regression on big data sets |
US9805001B2 (en) | 2016-02-05 | 2017-10-31 | Google Inc. | Matrix processing apparatus |
US9898441B2 (en) * | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
-
2016
- 2016-02-05 US US15/016,420 patent/US9805001B2/en active Active
- 2016-12-22 US US15/389,381 patent/US9798701B2/en active Active
- 2016-12-26 JP JP2016251060A patent/JP6524052B2/ja active Active
- 2016-12-29 TW TW108126777A patent/TWI718604B/zh active
- 2016-12-29 TW TW105143869A patent/TWI624763B/zh active
- 2016-12-29 KR KR1020160183047A patent/KR101980365B1/ko active IP Right Grant
- 2016-12-29 EP EP16207251.6A patent/EP3203382A1/en not_active Ceased
- 2016-12-29 EP EP22194202.2A patent/EP4160448A1/en active Pending
- 2016-12-29 TW TW107112523A patent/TWI670613B/zh active
- 2016-12-29 BR BR102016030970A patent/BR102016030970A8/pt not_active Application Discontinuation
- 2016-12-29 TW TW110100489A patent/TWI781509B/zh active
- 2016-12-30 SG SG10201610977QA patent/SG10201610977QA/en unknown
- 2016-12-30 SG SG10201808521PA patent/SG10201808521PA/en unknown
-
2017
- 2017-01-13 CN CN201710025742.3A patent/CN107045493B/zh active Active
- 2017-01-13 CN CN202010713206.4A patent/CN112000919B/zh active Active
- 2017-09-05 US US15/695,144 patent/US10417303B2/en active Active
-
2019
- 2019-04-26 JP JP2019085959A patent/JP6978467B2/ja active Active
- 2019-05-14 KR KR1020190056428A patent/KR102112094B1/ko active IP Right Grant
- 2019-09-16 US US16/571,749 patent/US10719575B2/en active Active
-
2020
- 2020-05-12 KR KR1020200056346A patent/KR102483303B1/ko active IP Right Grant
- 2020-07-14 US US16/928,242 patent/US11366877B2/en active Active
-
2021
- 2021-09-10 JP JP2021147894A patent/JP7187635B2/ja active Active
-
2022
- 2022-06-16 US US17/842,420 patent/US20220391472A1/en active Pending
- 2022-11-30 JP JP2022191957A patent/JP2023021171A/ja active Pending
- 2022-12-26 KR KR1020220184672A patent/KR102635985B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159489A1 (en) * | 2010-12-20 | 2012-06-21 | Oliver Schabenberger | Systems and Methods for Generating a Cross-Product Matrix In a Single Pass Through Data Using Single Pass Levelization |
US20130339506A1 (en) * | 2012-06-13 | 2013-12-19 | International Business Machines Corporation | Performing synchronized collective operations over multiple process groups |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804684A (zh) * | 2018-06-13 | 2018-11-13 | 北京搜狗科技发展有限公司 | 一种数据处理方法和装置 |
CN108804684B (zh) * | 2018-06-13 | 2020-11-03 | 北京搜狗科技发展有限公司 | 一种数据处理方法和装置 |
CN113794709A (zh) * | 2021-09-07 | 2021-12-14 | 北京理工大学 | 一种用于二值稀疏矩阵的混合编码方法 |
CN113794709B (zh) * | 2021-09-07 | 2022-06-24 | 北京理工大学 | 一种用于二值稀疏矩阵的混合编码方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107045493A (zh) | 矩阵处理装置 | |
CN107045492A (zh) | 矩阵处理装置 | |
CN108573304A (zh) | 硬件中转置神经网络矩阵 | |
KR102601034B1 (ko) | 하드웨어에서의 희소 행렬 곱셈 | |
CN116188798A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1242808 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |