TWI781509B - System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device - Google Patents
System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device Download PDFInfo
- Publication number
- TWI781509B TWI781509B TW110100489A TW110100489A TWI781509B TW I781509 B TWI781509 B TW I781509B TW 110100489 A TW110100489 A TW 110100489A TW 110100489 A TW110100489 A TW 110100489A TW I781509 B TWI781509 B TW I781509B
- Authority
- TW
- Taiwan
- Prior art keywords
- sparse
- unit
- dense
- elements
- element access
- Prior art date
Links
Images
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)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Multi Processors (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
Abstract
Description
本說明書一般而言係關於使用電路來處理一矩陣。This description generally relates to the use of circuits to process a matrix.
根據本說明書中所闡述之標的物之一項新穎態樣,一矩陣處理器可用於執行一稀疏至密集或一密集至稀疏矩陣變換。一般而言,高效能計算系統可使用線性代數常式來處理一矩陣。在某些例項中,矩陣之大小可太大而不能裝配在一個資料儲存器中,且矩陣之不同部分可稀疏地儲存於一分散式資料儲存系統之不同位置中。為載入矩陣,一計算系統之中央處理單元可指令一單獨電路存取矩陣之不同部分。該電路可包含根據一網路拓撲配置之多個記憶體控制器,其中可基於一預定規則集合而分割且儲存稀疏資料。每一記憶體控制器可基於該預定規則集合而聚集稀疏資料,以對稀疏資料執行同作計算,且產生可串連在一起以供中央處理單元執行進一步處理之一密集矩陣。 一般而言,本說明書中所闡述之標的物之一項新穎態樣可體現在用於將稀疏元素變換為一密集矩陣之一系統中。該系統包含:一第一稀疏元素存取單元群組,其經組態以提取與一第一密集矩陣相關聯之稀疏元素;及一第二稀疏元素存取單元群組,其經組態以提取與不同於該第一密集矩 陣之一第二密集矩陣相關聯之稀疏元素。該系統經組態以:接收對基於稀疏元素之一輸出矩陣之一請求,該等稀疏元素包含與一第一密集矩陣相關聯之稀疏元素及與一第二密集矩陣相關聯之稀疏元素;獲得由該第一稀疏元素存取單元群組提取之與該第一密集矩陣相關聯之該等稀疏元素;獲得由該第二稀疏元素存取單元群組提取之與該第二密集矩陣相關聯之該等稀疏元素;且變換與該第一密集矩陣相關聯之該等稀疏元素及與該第二密集矩陣相關聯之該等稀疏元素以產生包含與該第一密集矩陣相關聯之該等稀疏元素及與該第二密集矩陣相關聯之該等稀疏元素之該輸出密集矩陣。 此等及其他實施方案可各自視情況包含以下特徵中之一或多者。舉例而言,該第一稀疏元素存取單元群組可包含一第一稀疏元素存取單元及一第二稀疏元素存取單元。該第一稀疏元素存取單元可經組態以提取與該第一密集矩陣相關聯之該等稀疏元素之一第一子集。該第二稀疏元素存取單元可經組態以提取與該第一密集矩陣相關聯之該等稀疏元素之一第二不同子集。 該第一稀疏元素存取單元經組態以接收對包含與該第一密集矩陣相關聯之該等稀疏元素及與該第二密集矩陣相關聯之該等稀疏元素之複數個稀疏元素之一請求;且將該請求傳輸至該第二稀疏元素存取單元。該第一稀疏元素存取單元可經組態以判定該複數個稀疏元素中之一特定稀疏元素之一身份和與該第一密集矩陣相關聯之該等稀疏元素之該第一子集中之一個稀疏元素之一身份匹配。該第一稀疏元素存取單元可經組態以回應於判定該複數個稀疏元素中之該特定稀疏元素之該身份和與該第一密集矩陣相關聯之該等稀疏元素之該第一子集中之一個稀疏元素之該身份匹配而提取包含該特定稀疏元素之與該第一密集矩陣相關聯之該等稀疏元素之該第一子集。 該第一稀疏元素存取單元可經組態以自一第一資料分區提取與該第一密集矩陣相關聯之該等稀疏元素之該第一子集,且該第二稀疏元素存取單元可經組態以自一第二不同資料分區提取與該第一密集矩陣相關聯之該等稀疏元素之該第二不同子集。該第一稀疏元素存取單元可經組態以變換與該第一密集矩陣相關聯之該等稀疏元素之該第一子集以產生一第三密集矩陣,且該第二稀疏元素存取單元可經組態以接收該第三密集矩陣;變換與該第二密集矩陣相關聯之該等稀疏元素之該第二子集以產生一第四密集矩陣;及變換該第三密集矩陣與該第四密集矩陣以產生包含與該第一密集矩陣相關聯之該等稀疏元素之該第一子集及與該第一密集矩陣相關聯之該等稀疏元素之該第二子集之一第五密集矩陣。 該第一稀疏元素存取單元群組及該第二稀疏元素存取單元群組可配置成一個二維網狀組態。該第一稀疏元素存取單元群組及該第二稀疏元素存取單元群組可配置成一個二維環面組態。與第一密集矩陣相關聯之該等稀疏元素及與第二密集矩陣相關聯之該等稀疏元素可係多維矩陣,且該輸出密集矩陣可係一向量。 本說明書中闡述之標的物可在特定實施例中經實施以便實現以下優點中之一或多者。根據一網路拓撲連接記憶體控制器單元允許遵循一預定規則集合而分割稀疏資料之儲存。將稀疏至密集資料載入任務自中央處理單元轉移至一單獨電路增加中央處理單元之計算頻寬且降低系統之處理成本。藉由使用專用電路,可避免使用專用於密集線性代數之處理器來提取稀疏資料。藉由在分散式系統中同時使用多個記憶體,分散式系統中可用之總和彙總頻寬高於需要串列化且關於彙總頻寬具有一單記憶體容量之一單個記憶體組之頻寬。 此態樣及其他態樣之其他實施方案包含對應系統、裝置及編碼於電腦儲存器件上之經組態以執行方法之動作之電腦程式。一或多個電腦之一系統可藉助於安裝於系統上之在操作中致使系統執行動作之軟體、韌體、硬體或其一組合而如此組態。一或多個電腦程式可藉助於具有在由資料處理裝置執行時致使該裝置執行動作之指令而如此組態。 附圖及下文的說明中陳述本說明書中所闡述之標的物之一或多個實施方案之細節。根據說明、圖式及申請專利範圍將明瞭標的物之其他可能特徵、態樣及優點。According to one novel aspect of the subject matter set forth in this specification, a matrix processor can be used to perform a sparse-to-dense or a dense-to-sparse matrix transformation. In general, a HPC system can use linear algebra formulas to process a matrix. In some instances, the size of the matrix may be too large to fit in one data store, and different parts of the matrix may be stored sparsely in different locations in a distributed data storage system. To load the matrix, the central processing unit of a computing system can instruct a separate circuit to access different parts of the matrix. The circuitry may include memory controllers configured according to a network topology, wherein sparse data may be partitioned and stored based on a predetermined set of rules. Each memory controller can aggregate sparse data based on the predetermined set of rules to perform concurrent computations on the sparse data and generate a dense matrix that can be chained together for further processing by the central processing unit. In general, a novel aspect of the subject matter set forth in this specification can be embodied in a system for transforming sparse elements into a dense matrix. The system includes: a first group of sparse element access units configured to retrieve sparse elements associated with a first dense matrix; and a second group of sparse element access units configured to Extract the first dense moment with The sparse elements associated with a second dense matrix of arrays. The system is configured to: receive a request for an output matrix based on sparse elements including sparse elements associated with a first dense matrix and sparse elements associated with a second dense matrix; obtain the sparse elements associated with the first dense matrix extracted from the first sparse element access unit group; obtaining the sparse elements associated with the second dense matrix extracted from the second sparse element access unit group the sparse elements; and transforming the sparse elements associated with the first dense matrix and the sparse elements associated with the second dense matrix to generate the sparse elements associated with the first dense matrix and the output dense matrix of the sparse elements associated with the second dense matrix. These and other implementations can each optionally include one or more of the following features. For example, the first sparse element access unit group may include a first sparse element access unit and a second sparse element access unit. The first sparse element access unit can be configured to retrieve a first subset of the sparse elements associated with the first dense matrix. The second sparse element access unit can be configured to retrieve a second different subset of the sparse elements associated with the first dense matrix. The first sparse element access unit is configured to receive a request for a plurality of sparse elements including the sparse elements associated with the first dense matrix and the sparse elements associated with the second dense matrix ; and transmitting the request to the second sparse element access unit. The first sparse element access unit may be configured to determine an identity of a particular sparse element of the plurality of sparse elements and one of the first subset of the sparse elements associated with the first dense matrix One of the sparse elements identity matches. The first sparse element access unit may be configured in response to determining the identity of the particular sparse element of the plurality of sparse elements and the first subset of the sparse elements associated with the first dense matrix The identity of a sparse element is matched to extract the first subset of the sparse elements associated with the first dense matrix including the particular sparse element. The first sparse element access unit can be configured to retrieve the first subset of the sparse elements associated with the first dense matrix from a first data partition, and the second sparse element access unit can configured to extract the second different subset of the sparse elements associated with the first dense matrix from a second different data partition. The first sparse element access unit may be configured to transform the first subset of the sparse elements associated with the first dense matrix to produce a third dense matrix, and the second sparse element access unit can be configured to receive the third dense matrix; transform the second subset of the sparse elements associated with the second dense matrix to produce a fourth dense matrix; and transform the third dense matrix with the first Quad dense matrix to produce a fifth dense comprising the first subset of the sparse elements associated with the first dense matrix and the second subset of the sparse elements associated with the first dense matrix matrix. The first sparse element access unit group and the second sparse element access unit group may be configured in a two-dimensional mesh configuration. The first sparse element access unit group and the second sparse element access unit group may be configured in a two-dimensional torus configuration. The sparse elements associated with the first dense matrix and the sparse elements associated with the second dense matrix may be multidimensional matrices, and the output dense matrix may be a vector. The subject matter set forth in this specification can be implemented in particular embodiments so as to realize one or more of the following advantages. Connecting the memory controller units according to a network topology allows partitioning the storage of sparse data following a predetermined set of rules. Offloading the sparse to dense data loading task from the central processing unit to a separate circuit increases the computational bandwidth of the central processing unit and reduces the processing cost of the system. By using dedicated circuitry, the use of processors dedicated to dense linear algebra to extract sparse data can be avoided. By using multiple memories simultaneously in a distributed system, the aggregate aggregate bandwidth available in a distributed system is higher than that required for a single memory bank that needs to be serialized and has a single memory capacity with respect to the aggregate bandwidth . Other implementations of this and other aspects include corresponding systems, apparatus, and computer programs encoded on computer storage devices configured to perform the actions of the methods. A system of one or more computers may be so configured by means of software, firmware, hardware or a combination thereof installed on the system which in operation causes the system to perform actions. One or more computer programs may be so configured by having instructions that when executed by a data processing device cause the device to perform actions. Details of one or more implementations of the subject matter set forth in this specification are set forth in the accompanying drawings and the description below. Other possible features, aspects and advantages of the subject matter will be clarified according to the description, drawings and scope of patent application.
一般而言,資料可以一矩陣之形式來表示且一計算系統可使用線性代數演算法操縱該資料。一矩陣可係一個一維向量或一個多維矩陣。一矩陣可由諸如一資料庫表格或一變數之一資料結構表示。然而,當一矩陣之大小太大時,將整個矩陣儲存於一個資料儲存器中可係不可能的。一密集矩陣可變換成多個稀疏元素,其中每一稀疏元素可儲存於一不同資料儲存器中。一密集矩陣之一稀疏元素可係一矩陣,其中該矩陣之僅一小子矩陣(例如,一單值元素、一列、一行或一子矩陣)具有非零值。當一計算系統需要存取該密集矩陣時,中央處理單元(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中之每一者變換成一向量且將n
個向量串連成一單個向量而產生目標密集矩陣112。
在某些實施方案中,處理單元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至圖2D更詳細地闡述。
圖2A展示一實例性稀疏-密集變換單元200。稀疏-密集變換單元200可對應於稀疏-密集變換單元104。稀疏-密集變換單元200包含實體地或邏輯地配置成M
列及N
行之M
×N
個稀疏元素存取單元X 1,1
至X M,N
,其中M
及N
係等於或大於1之整數。在某些實施方案中,稀疏-密集變換單元200可包含經組態以處理資料之額外電路。一般而言,稀疏-密集變換單元200經組態以接收對一密集矩陣之一請求,且基於可由稀疏元素存取單元X 1,1
至X M,N
存取之對應稀疏元素而判定一密集矩陣。一般而言,每一稀疏元素存取單元經組態以存取一指定稀疏元素集合,且在下文參考圖3A至圖3B更詳細地闡述。在某些實施方案中,一稀疏元素存取單元可係一單指令多資料(SIMD)處理器件。
在某些實施方案中,稀疏元素存取單元X 1,1
至X M,N
可實體地或邏輯地配置成一個二維網狀組態。舉例而言,稀疏元素存取單元X 1,1
直接耦合至稀疏元素存取單元X 1,2
及X2,1
。作為另一實例,稀疏元素存取單元X 2,2
直接耦合至稀疏元素存取單元X 2,1
、X 3,1
、X 2,3
及X1,2
。兩個稀疏元素存取單元之間的耦合可係一電連接、一光學連接、一無線連接或任一其他適合連接。
在某些其他實施方案中,稀疏元素存取單元X 1,1
至X M,N
可實體地或邏輯地配置成一個二維環面組態。舉例而言,稀疏元素存取單元X 1,1
直接耦合至稀疏元素存取單元X 1,2
、X 2,1
、X 1,N
及XM,1
。作為另一實例,稀疏元素存取單元X M,N
直接耦合至稀疏元素存取單元X M,N-1
、X M-1,N
、X M,1
及X1,N
。
在某些實施方案中,稀疏-密集變換單元200可經組態以根據一預定條件集合分割自密集矩陣變換之稀疏元素。稀疏元素存取單元X 1,1
至X M,N
之每一列可經分割以存取自特定密集矩陣變換之稀疏元素。舉例而言,稀疏-密集變換單元200可經組態以存取自對應於一電腦模型之1,000個不同資料庫表格之密集矩陣變換之稀疏元素。該等資料庫表格中之一或多者可具有不同大小。稀疏元素存取單元之第一列202可經組態以存取自1號資料庫表格至100號資料庫表格變換之稀疏元素,稀疏元素存取單元之第二列204可經組態以存取自101號資料庫表格至300號資料庫表格變換之稀疏元素,且稀疏元素存取單元之第M列206可經組態以存取自751號資料庫表格至1,000號資料庫表格變換之稀疏元素。在某些實施方案中,可在一處理器使用稀疏-密集變換單元200存取稀疏元素之前藉由硬體指令組態分割。
稀疏元素存取單元X 1,1
至X M,N
之每一行可經分割以存取自特定密集矩陣變換之稀疏元素之一子集。舉例而言,對應於1號資料庫表格之密集矩陣可變換成1,000個稀疏元素,其中該1,000個稀疏元素可由第一列202存取,如上文所闡述。稀疏元素存取單元X 1,1
可經組態以存取1號資料庫表格之1號至200號稀疏元素,且稀疏元素存取單元X 1,2
可經組態以存取1號資料庫表格之201號至500號稀疏元素。作為另一實例,對應於2號資料庫表格之密集矩陣可變換成500個稀疏元素,其中該500稀疏元素可由第一列202存取,如上文所闡述。稀疏元素存取單元X 1,1
可經組態以存取2號資料庫表格之1號至50號稀疏元素,且稀疏元素存取單元X 1,2
可經組態以存取2號資料庫表格之51號至200號稀疏元素。作為另一實例,對應於1,000號資料庫表格之密集矩陣可變換成10,000個稀疏元素,其中該10,000個稀疏元素可由第M列206存取,如上文所闡述。稀疏元素存取單元X M,1
可經組態以存取1,000號資料庫表格之1號至2,000號稀疏元素,且稀疏元素存取單元X M,N
可經組態以存取1,000號資料庫表格之9,000號至10,000號稀疏元素。
圖2B展示稀疏-密集變換單元200可如何使用稀疏元素存取單元之一個二維網狀網路請求稀疏元素之一實例。作為一實例,一處理單元可執行向稀疏-密集變換單元200請求如下內容之一指令:使用1號資料庫表格之1號至50號稀疏元素、2號資料庫表格之100號至200號稀疏元素及1,000號資料庫表格之9,050號至9,060號稀疏元素產生之一密集一維向量。在稀疏-密集變換單元200接收來自處理單元之請求之後,稀疏-密集變換單元200可指令稀疏元素存取單元X 1,1
將對稀疏元素之一請求廣播至網狀網路中之其他稀疏元素存取單元。稀疏元素存取單元X 1,1
可將一請求222廣播至稀疏元素存取單元X 1,2
且將一請求224廣播至稀疏元素存取單元X 2,1
。在接收請求222之後,稀疏元素存取單元X 1,2
可將一請求226廣播至稀疏元素存取單元X 1,3
。在某些實施方案中,一稀疏元素存取單元可經組態以基於一路由方案而將一請求廣播至另一稀疏元素存取單元。舉例而言,稀疏元素存取單元X 1,2
可不經組態以將一請求廣播至稀疏元素存取單元X 2,2
,此乃因稀疏元素存取單元X 2,2
經組態以接收來自稀疏元素存取單元X 2,1
之一廣播。該路由方案可係靜態的或動態產生的。舉例而言,該路由方案可係一查找表。在某些實施方案中,一稀疏元素存取單元可經組態以基於請求224而將請求224廣播至另一稀疏元素存取單元。舉例而言,請求224可包含所請求稀疏元素(例如,1號資料庫表格,1號至50號稀疏元素)之識別,且稀疏元素存取單元X 1,2
可基於該等識別而判定是否將請求224廣播至稀疏元素存取單元X 2,2
及/或稀疏元素存取單元X 1,3
。廣播程序透過網狀網路傳播,其中稀疏元素存取單元X M,N
自稀疏元素存取單元X M,N-1
接收一請求230。
圖2C展示稀疏-密集變換單元200可如何使用稀疏元素存取單元之二維網狀網路產生所請求密集矩陣之一實例。在某些實施方案中,在一稀疏元素存取單元接收所廣播請求之後,稀疏元素存取單元經組態以判定其是否經組態以存取所請求稀疏元素中之任一者。舉例而言,稀疏元素存取單元X 1,1
可判定其經組態以存取1號資料庫表格之1號至50號稀疏元素,但其不經組態以存取2號資料庫表格之100號至200號稀疏元素或1,000號資料庫表格之9,050號至9,060號稀疏元素。回應於判定其經組態以存取1號資料庫表格之1號至50號稀疏元素,稀疏元素存取單元X 1,1
可自此等稀疏元素儲存於其中之資料分區提取1號資料庫表格之1號至50號稀疏元素,且基於此等稀疏元素而產生一密集矩陣242。
作為另一實例,稀疏元素存取單元X 2,1
可判定其不經組態以存取1號資料庫表格之1號至50號稀疏元素、2號資料庫表格之100號至200號稀疏元素或1,000號資料庫表格之9,050號至9,060號稀疏元素中之任一者。回應於判定其不經組態以存取所請求稀疏元素中之任一者,稀疏元素存取單元X 2,1
可不執行任何進一步動作。
作為另一實例,稀疏元素存取單元X 1,2
可判定其經組態以存取2號資料庫表格之100號至200號稀疏元素,但其不經組態以存取1號資料庫表格之1號至50號稀疏元素或1,000號資料庫表格之9,050號至9,060號稀疏元素。回應於判定其經組態以存取2號資料庫表格之100號至200號稀疏元素,稀疏元素存取單元X 1,2
可自此等稀疏元素儲存於其中之資料分區提取此等稀疏元素,且基於此等稀疏元素而產生一密集矩陣244。在某些實施方案中,在一稀疏元素存取單元產生一密集矩陣之後,該稀疏元素存取單元可經組態以將該密集矩陣轉發至廣播請求之發送者。在此處,稀疏元素存取單元X 1,2
將密集矩陣244轉發至稀疏元素存取單元X 1,1
。
作為另一實例,稀疏元素存取單元X M,N
可判定其經組態以存取1,000號資料庫表格之9,050號至9,060號稀疏元素,但其不經組態以存取1號資料庫表格之1號至50號稀疏元素或2號資料庫表格之100號至200號稀疏元素。回應於判定其經組態以存取1,000號資料庫表格之9,050號至9,060號稀疏元素,稀疏元素存取單元X M,N
可自此等稀疏元素儲存於其中之資料分區提取此等稀疏元素,且基於此等稀疏元素而產生一密集矩陣246。在某些實施方案中,在一稀疏元素存取單元產生一密集矩陣之後,該稀疏元素存取單元可經組態以將該密集矩陣轉發至廣播請求之發送者。在此處,稀疏元素存取單元X M,N
將密集矩陣246轉發至稀疏元素存取單元X M,N-1
。在下一循環中,稀疏元素存取單元X M,N-1
經組態以將密集矩陣246轉發至稀疏元素存取單元XM,N-2
。此程序繼續直至稀疏元素存取單元X 2,1
已將密集矩陣246轉發至稀疏元素存取單元X 1,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使用一密集一維向量更新所儲存稀疏元素之一指令,該密集一維向量使用1號資料庫表格之1號至50號稀疏元素及1,000號資料庫表格之9,050號至9,060號稀疏元素來產生。在稀疏-密集變換單元200自處理單元接收請求之後,稀疏-密集變換單元200可指令稀疏元素存取單元X 1,1
將一稀疏元素更新請求廣播至網狀網路中之其他稀疏元素存取單元,其中該稀疏元素更新請求可包含由處理單元提供之密集一維向量。在某些實施方案中,稀疏元素存取單元X 1,1
可判定其是否經指派以存取包含於密集一維向量中之稀疏元素。回應於判定其經指派以存取包含於密集一維向量中之稀疏元素,稀疏元素存取單元X 1,1
可更新儲存於資料分區中之稀疏元素。在此處,稀疏元素存取單元X 1,1
判定其經指派以存取1號資料庫表格之1號至50號稀疏元素,且稀疏元素存取單元X 1,1
執行更新資料分區中之此等稀疏元素之一指令。
稀疏元素存取單元X 1,1
可將一稀疏元素更新請求252廣播至稀疏元素存取單元X 1,2
且將一稀疏元素更新請求254廣播至稀疏元素存取單元X 2,1
。在接收稀疏元素更新請求252之後,稀疏元素存取單元X 1,2
可判定其未經指派以存取包含於密集一維向量中之稀疏元素。稀疏元素存取單元X 1,2
將一請求256廣播至稀疏元素存取單元X 1,3
。廣播程序透過網狀網路傳播,其中稀疏元素存取單元X M,N
自稀疏元素存取單元X M,N-1
接收一請求260。在此處,稀疏元素存取單元X M,N
判定其經指派以存取1,000號資料庫表格之9,050號至9,060號稀疏元素,且稀疏元素存取單元X M,N
執行用以更新資料分區中之此等稀疏元素之一指令。
圖3A展示一實例性稀疏元素存取單元300。稀疏元素存取單元300可係稀疏元素存取單元X 1,1
至X M,N
中之任一者。一般而言,稀疏元素存取單元300經組態以自節點網路320接收提取儲存於一或多個資料分區中之稀疏元素且將所提取稀疏元素變換成一密集矩陣之一請求342。在某些實施方案中,一處理單元316將對使用稀疏元素產生之一密集矩陣之一請求發送至節點網路320中之一稀疏元素存取單元。該稀疏元素存取單元可將請求342廣播至稀疏元素存取單元300。廣播請求342之路由可類似於圖2B中之說明。稀疏元素存取單元300包含一請求識別單元302、一資料提取單元304、一稀疏縮減單元306、一串連單元308、一壓縮/解壓縮單元310及一分裂單元312。節點網路320可係一個二維網狀網路。處理單元316可類似於處理單元102。
一般而言,請求識別單元302經組態以接收提取儲存於一或多個資料分區330中之稀疏元素之請求342,且判定稀疏元素存取單元300是否經指派以存取由請求342指示之稀疏元素。在某些實施方案中,請求識別單元302可藉由使用一查找表而判定稀疏元素存取單元300是否經指派以存取由請求342指示之稀疏元素。舉例而言,若一特定所請求稀疏元素(例如,1號資料庫表格之1號)之一識別包含於查找表中,則請求識別單元302可將提取該特定所請求稀疏元素之一信號344發送至資料提取單元304。若一特定所請求稀疏元素(例如,1號資料庫表格之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經組態以將經稀疏縮減元素348輸出至串連單元308。
串連單元308經組態以重新配置且串連經稀疏縮減元素348以產生經串連元素350。舉例而言,稀疏元素存取單元X 1,1
可經組態以存取1號資料庫表格之1號至200號稀疏元素。處理器322a可比經組態之處理器322b傳回所提取5號稀疏元素快速地將所提取10號稀疏元素傳回至稀疏縮減單元306。串連單元308經組態以將較晚接收之5號稀疏元素重新配置為被安排在較早接收之10號稀疏元素前面,且將1號至200號稀疏元素串連為經串連元素350。
壓縮/解壓縮單元310經組態以壓縮經串連元素350以產生用於節點網路320之一密集矩陣352。舉例而言,壓縮/解壓縮單元310可經組態以壓縮經串連元素350中之零值以改良節點網路320之頻寬。在某些實施方案中,壓縮/解壓縮單元310可解壓縮一所接收密集矩陣。舉例而言,稀疏元素存取單元300可經由節點網路320自一鄰近稀疏元素存取單元接收一密集矩陣。稀疏元素存取單元300可解壓縮所接收密集矩陣,且可串連經解壓縮密集矩陣與經串連元素350以形成可經壓縮且然後輸出至節點網路320之經更新經串連元素。
圖3B展示稀疏元素存取單元300可如何基於自節點網路320接收之一密集矩陣而更新稀疏元素之一實例。作為一實例,一處理單元可執行請求稀疏-密集變換單元使用一密集一維向量更新所儲存稀疏元素之一指令,該密集一維向量使用1號資料庫表格之1號至50號稀疏元素及1,000號資料庫表格之9,050號至9,060號稀疏元素來產生。在稀疏-密集變換單元自處理單元接收請求之後,稀疏-密集變換單元可發送如下之一請求362:指令稀疏元素存取單元300判定其是否經指派以存取包含於密集一維向量中之稀疏元素。請求識別單元302經組態以判定稀疏元素存取單元300是否經指派以存取包含於密集一維向量中之稀疏元素。回應於判定稀疏元素存取單元300經指派以存取包含於密集一維向量中之稀疏元素,請求識別單元302可將更新儲存於資料分區中之稀疏元素之一指示364發送至分裂單元312。
分裂單元312經組態以將一所接收密集矩陣變換成可由資料提取單元304在資料分區330中更新之稀疏元素。舉例而言,分裂單元312可經組態以將密集一維向量變換成多個稀疏元素,且指令資料提取單元304更新稀疏元素存取單元300經指派提取的儲存於資料分區330中之稀疏元素。
圖4係圖解說明用於產生一密集矩陣之一程序400之一實例之一流程圖。程序400可由諸如稀疏-密集變換單元104或稀疏-密集變換單元200之一系統執行。該系統可包含一第一稀疏元素存取單元群組及一第二稀疏元素存取單元群組。舉例而言,參考圖2A,稀疏-密集變換單元200可包含實體地或邏輯地配置成M
列及N
行之M
×N
個稀疏元素存取單元X 1,1
至X M,N
。稀疏元素存取單元X 1,1
至X M,N
之每一列可經分割以存取自特定密集矩陣變換之稀疏元素。在某些實施方案中,該第一稀疏元素存取單元群組可包含一第一稀疏元素存取單元及一第二稀疏元素存取單元。舉例而言,稀疏-密集變換單元200之第一列可包含稀疏元素存取單元X 1,1
及X 1,2
。在某些實施方案中,該第一稀疏元素存取單元群組及該第二稀疏元素存取單元群組可配置成一個二維網狀組態。在某些實施方案中,該第一稀疏元素存取單元群組及該第二稀疏元素存取單元群組可配置成一個二維環面組態。
系統接收對基於稀疏元素之一輸出矩陣之一請求,該等稀疏元素包含與一第一密集矩陣相關聯之稀疏元素及與一第二密集矩陣相關聯之稀疏元素(402)。舉例而言,參考圖2B,一處理單元可執行向稀疏-密集變換單元200請求一密集一維向量之一指令,該密集一維向量使用1號資料庫表格之1號至50號稀疏元素、2號資料庫表格之100號至200號稀疏元素及1,000號資料庫表格之9,050號至9,060號稀疏元素來產生。
在某些實施方案中,第一稀疏元素存取單元可接收對包含與第一密集矩陣相關聯之稀疏元素及與第二密集矩陣相關聯之稀疏元素之複數個稀疏元素之一請求。第一稀疏元素存取單元可將該請求傳輸至第二稀疏元素存取單元。舉例而言,參考圖2B,在稀疏-密集變換單元200自處理單元接收該請求之後,稀疏-密集變換單元200可指令稀疏元素存取單元X 1,1
將對稀疏元素之一請求廣播至網狀網路中之其他稀疏元素存取單元。稀疏元素存取單元X 1,1
可將一請求222廣播至稀疏元素存取單元X 1,2
。
系統獲得由一第一稀疏元素存取單元群組提取之與第一密集矩陣相關聯之稀疏元素(404)。在某些實施方案中,第一稀疏元素存取單元可判定該複數個稀疏元素中之一特定稀疏元素之一身份和與第一密集矩陣相關聯之稀疏元素之第一子集中之一個稀疏元素之一身份匹配。舉例而言,參考圖2C,稀疏元素存取單元X 1,1
可經組態以存取1號資料庫表格之1號至200號稀疏元素。稀疏元素存取單元X 1,1
可判定其經組態以存取1號資料庫表格之1號至50號稀疏元素,但其不經組態以存取2號資料庫表格之100號至200號稀疏元素或1,000號資料庫表格之9,050號至9,060號稀疏元素。回應於判定該複數個稀疏元素中之特定稀疏元素之身份和與第一密集矩陣相關聯之稀疏元素之第一子集中之一個稀疏元素之身份匹配,第一稀疏元素存取單元可提取包含特定稀疏元素之與第一密集矩陣相關聯之稀疏元素之第一子集。舉例而言,回應於判定其經組態以存取1號資料庫表格之1號至50號稀疏元素,稀疏元素存取單元X 1,1
可自此等稀疏元素儲存於其中之資料分區提取1號資料庫表格之1號至50號稀疏元素。
第二稀疏元素存取單元可提取與第一密集矩陣相關聯之稀疏元素之一第二不同子集。舉例而言,參考圖2C,稀疏元素存取單元X 1,2
可經組態以存取2號資料庫表格之51號至200號稀疏元素。回應於判定其經組態以存取2號資料庫表格之100號至200號稀疏元素,稀疏元素存取單元X 1,2
可自此等稀疏元素儲存於其中之資料分區提取此等稀疏元素。
系統獲得由一第二稀疏元素存取單元群組提取之與第二密集矩陣相關聯之稀疏元素(406)。舉例而言,參考圖2C,第二稀疏元素存取單元群組可係M
×N
個稀疏元素存取單元之第M
列,其中稀疏元素存取單元X M,N
可經組態以存取1,000號資料庫表格之9,000號至10,000號稀疏元素。回應於判定其經組態以存取1,000號資料庫表格之9,050號至9,060號稀疏元素,稀疏元素存取單元X M,N
可自此等稀疏元素儲存於其中之資料分區提取此等稀疏元素,且基於此等稀疏元素而產生一密集矩陣246。
在某些實施方案中,第一稀疏元素存取單元可自一第一資料分區提取與第一密集矩陣相關聯的稀疏元素之第一子集,且第二稀疏元素存取單元可自一第二不同資料分區提取與第一密集矩陣相關聯的稀疏元素之第二不同子集。舉例而言,參考圖1,第一稀疏元素存取單元可自資料分區106a提取與第一密集矩陣相關聯的稀疏元素之第一子集,且第二稀疏元素存取單元可自資料分區106b提取與第一密集矩陣相關聯的稀疏元素之第二不同子集。
系統變換與第一密集矩陣相關聯之稀疏元素及與第二密集矩陣相關聯之稀疏元素以產生包含與第一密集矩陣相關聯之稀疏元素及與第二密集矩陣相關聯之稀疏元素的一輸出密集矩陣(408)。舉例而言,參考圖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可經組態以接收用於自資料分區330提取一或多個所請求稀疏元素之一信號344。在某些實施方案中,可經由一節點網路接收對儲存於一或多個資料分區中之特定稀疏元素之一請求。舉例而言,參考圖3A,請求識別單元302可經組態以經由一節點網路320接收提取儲存於資料分區330中之稀疏元素之一請求342。系統可判定資料提取單元經指派以處置特定稀疏元素之一子集。舉例而言,請求識別單元302可經組態以判定稀疏元素存取單元300是否經指派以存取由請求342指示之稀疏元素。回應於判定資料提取單元經指派以處置特定稀疏元素之一子集,可產生用於存取特定稀疏元素之子集之指示。舉例而言,若一特定所請求稀疏元素(例如,1號資料庫表格之1號)之一識別包含於一查找表中,則請求識別單元302可將提取該特定所請求稀疏元素之一信號344發送至資料提取單元304。
系統基於特定稀疏元素之子集之識別而判定用於提取特定稀疏元素之子集之一處理器指定(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可比經配置之處理器322b傳回所提取5號稀疏元素快速地將所提取10號稀疏元素傳回至稀疏縮減單元306。串連單元308經組態以將較晚接收之5號稀疏元素重新配置為被安排在較早接收之10號稀疏元素前面,且將1號至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(液晶顯示器)監視器)以及該使用者可藉以向電腦提供輸入之一鍵盤及一指向器件(例如,一滑鼠或一軌跡球)之一電腦上。亦可使用其他種類之器件來提供與一使用者之互動;舉例而言,提供給該使用者之回饋可為任何形式之傳感回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自該使用者之輸入可以任何形式來接收,包含聲音、語音或觸覺輸入。另外,一電腦可藉由以下方式與一使用者互動:將文檔發送至該使用者所使用之一器件及自該器件接收文檔;舉例而言,回應於自網頁瀏覽器接收之請求而將網頁頁面發送至一使用者之用戶端器件上之一網頁瀏覽器。
本說明書中所闡述之標的物之實施例可實施於一計算系統中,該計算系統包含一後端組件(例如,作為一資料伺服器),或包含一中間軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一圖形使用者介面之一用戶端電腦或一使用者可透過其與本說明書中所闡述之標的物之一實施方案互動之一網頁瀏覽器)或者一或多個此類後端、中間軟體或前端組件之任何組合。該系統之該等組件可藉由任何數位資料通信形式或媒體(例如,一通信網路)來互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如網際網路。
該計算系統可包含用戶端及伺服器。一用戶端與伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係藉助於在各別電腦上運行且彼此之間具有一用戶端-伺服器關係之電腦程式而產生。
儘管本說明書含有諸多具體實施細節,但此等具體實施細節不應被解釋為對任何發明或可請求之內容之範疇之限制,而是解釋為對特定發明之特定實施例可特有之特徵之說明。亦可將在本說明書中在單獨實施例之上下文中闡述之特定特徵以組合形式實施於一單個實施例中。相反地,在一單個實施例之上下文中闡述之各種特徵亦可單獨地或以任何適合子組合實施於多個實施例中。此外,儘管上文可將特徵闡述為以特定組合形式起作用且甚至最初係如此主張,但在某些情形中,可自一所主張組合去除來自該組合之一或多個特徵,且所主張之組合可係針對於一子組合或一子組合之變化形式。
類似地,儘管在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以循序次序執行此類操作,或執行所有所圖解說明之操作以實現合意結果。在特定情況下,多任務及並行處理可係有利的。此外,不應將上文所闡述之實施例中之各種系統模組及組件之分離理解為在所有實施例中需要此分離,且應理解,一般可將所闡述之程式組件及系統共同整合於一單個軟體產品中或封裝至多個軟體產品中。
已闡述標的物之特定實施例。其他實施例亦在以下申請專利範圍之範疇內。舉例而言,申請專利範圍中所敘述之動作可以一不同次序執行且仍達成合意結果。作為一項實例,附圖中所繪示之程序未必需要所展示之特定次序或順序次序來達成合意結果。在特定實施方案中,多任務及並行處理可係有利的。Generally, data can be represented in the form of a matrix and a computing system can manipulate the data using linear algebra algorithms. A matrix can be a one-dimensional vector or a multidimensional matrix. A matrix can be represented by a data structure such as a database table or a variable. However, when the size of a matrix is too large, it may not be possible to store the entire matrix in a data store. A dense matrix can be transformed into a plurality of sparse elements, where each sparse element can be stored in a different data store. A sparse element of a dense matrix may be a matrix in which only a small submatrix (eg, a single-valued element, column, row, or submatrix) of the matrix has nonzero values. When a computing system needs to access the dense matrix, the central processing unit (CPU) can start going to each of the data stores to fetch a thread of stored sparse elements, and apply a sparse-dense transformation to restore the dense matrix. However, the amount of time it takes to fetch all sparse elements can be significant, and it turns out that the computational bandwidth of the CPU can be underutilized. In some cases, a computing system may need to access sparse elements of several dense matrices, where the dense matrices may not be of equal size, to form a new dense matrix. The CPU idle time associated with a thread reaching each of the data stores to fetch the sparse elements of the different dense matrices may suffer from different latencies and may further affect the performance of the computing device in an undesirable manner. In some cases, a computing system may need to access sparse elements of several dense matrices, where the sparse elements may not be of equal size, to form a new dense matrix. The CPU idle time associated with a thread reaching each of the data stores to fetch the sparse elements of the different dense matrices may suffer from different latencies and may further affect the performance of the computing device in an undesirable manner. A hardware sparse-to-dense transformation unit separate from a CPU can increase the computational bandwidth of the processor by collecting sparse elements and transforming the sparse elements into a dense matrix operating independently of the CPU. 1 shows a block diagram of an
100:計算系統
102:處理單元
104:稀疏-密集變換單元
106a-106k:資料分區
108a-108n:稀疏元素
110:指令
112:目標密集矩陣
200:稀疏-密集變換單元
202:第一列
204:第二列
206:第M列
222:請求
224:請求
226:請求
230:請求
242:密集矩陣
244:密集矩陣
246:密集矩陣
252:稀疏元素更新請求
254:稀疏元素更新請求
256:請求
260:請求
300:稀疏元素存取單元
302:請求識別單元
304:資料提取單元
306:稀疏縮減單元
308:串連單元
310:壓縮/解壓縮單元
312:分裂單元
320:節點網路
322a-322k:處理器
330:資料分區
342:請求/廣播請求
344:信號
346:所提取稀疏元素
348:經稀疏縮減元素
350:經串連元素
352:密集矩陣
362:請求
364:指示
X1,1
-XM,N
:稀疏元素存取單元100: computing system 102: processing unit 104: sparse-
圖1係一實例性計算系統之一方塊圖。 圖2A至圖2D圖解說明一實例性稀疏-密集變換單元。 圖3A至圖3B圖解說明一實例性稀疏元素存取單元。 圖4係圖解說明用於產生一密集矩陣之一程序之一實例之一流程圖。 圖5係圖解說明用於將稀疏元素變換成一密集矩陣之一程序之一實例之一流程圖。 在各個圖式中,相似元件符號及名稱指示相似元件。FIG. 1 is a block diagram of an exemplary computing system. 2A-2D illustrate an example sparse-dense transform unit. 3A-3B illustrate an example sparse element access unit. Figure 4 is a flowchart illustrating an example of a procedure for generating a dense matrix. Figure 5 is a flowchart illustrating an example of a procedure for transforming sparse elements into a dense matrix. In the various drawings, like element symbols and names indicate like elements.
100:計算系統 100: Computing Systems
102:處理單元 102: Processing unit
104:稀疏-密集變換單元 104:Sparse-dense transformation unit
106a-106k:資料分區 106a-106k: data partition
108a-108n:稀疏元素 108a-108n: sparse elements
110:指令 110: instruction
112:目標密集矩陣 112: Target Dense Matrix
Claims (15)
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202131172A TW202131172A (en) | 2021-08-16 |
TWI781509B true TWI781509B (en) | 2022-10-21 |
Family
ID=57708453
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107112523A TWI670613B (en) | 2016-02-05 | 2016-12-29 | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device |
TW108126777A TWI718604B (en) | 2016-02-05 | 2016-12-29 | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device |
TW110100489A TWI781509B (en) | 2016-02-05 | 2016-12-29 | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device |
TW105143869A TWI624763B (en) | 2016-02-05 | 2016-12-29 | Matrix processing apparatus |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107112523A TWI670613B (en) | 2016-02-05 | 2016-12-29 | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device |
TW108126777A TWI718604B (en) | 2016-02-05 | 2016-12-29 | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105143869A TWI624763B (en) | 2016-02-05 | 2016-12-29 | Matrix processing apparatus |
Country Status (8)
Country | Link |
---|---|
US (6) | US9805001B2 (en) |
EP (2) | EP3203382A1 (en) |
JP (4) | JP6524052B2 (en) |
KR (4) | KR101980365B1 (en) |
CN (2) | CN107045493B (en) |
BR (1) | BR102016030970A8 (en) |
SG (2) | SG10201610977QA (en) |
TW (4) | TWI670613B (en) |
Families Citing this family (9)
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 |
JP6912703B2 (en) * | 2017-02-24 | 2021-08-04 | 富士通株式会社 | Arithmetic method, arithmetic unit, arithmetic program and arithmetic system |
US10489481B1 (en) | 2017-02-24 | 2019-11-26 | Cyber Atomics, Inc. | Efficient matrix property determination with pipelining and parallelism |
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 |
CN108804684B (en) * | 2018-06-13 | 2020-11-03 | 北京搜狗科技发展有限公司 | Data processing method and device |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
CN113794709B (en) * | 2021-09-07 | 2022-06-24 | 北京理工大学 | Hybrid coding method for binary sparse matrix |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141976A (en) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | Method for storing diagonal data of sparse matrix and SpMV (Sparse Matrix Vector) realization method based on method |
CN103262068A (en) * | 2010-12-20 | 2013-08-21 | 萨思学会有限公司 | Systems and methods for generating a cross-roduct 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 |
CN103984527A (en) * | 2014-04-01 | 2014-08-13 | 杭州电子科技大学 | Method optimizing sparse matrix vector multiplication to improve incompressible pipe flow simulation efficiency |
Family Cites Families (22)
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 (en) * | 1992-05-22 | 1996-11-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Computer system |
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 (en) * | 1995-12-06 | 2002-11-20 | 富士通株式会社 | Multiple access method and multiple access cache memory device |
JP3639206B2 (en) * | 2000-11-24 | 2005-04-20 | 富士通株式会社 | Parallel matrix processing method and recording medium in shared memory type scalar parallel computer |
US7587516B2 (en) | 2001-02-24 | 2009-09-08 | International Business Machines Corporation | Class network routing |
ATE479147T1 (en) | 2001-02-24 | 2010-09-15 | Ibm | NEW MASSIVE PARALLEL SUPERCOMPUTER |
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 |
WO2011156247A2 (en) | 2010-06-11 | 2011-12-15 | 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 |
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 (en) * | 2013-03-29 | 2017-02-22 | 富士通株式会社 | Program, parallel operation method, and information processing apparatus |
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 |
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 |
US9898441B2 (en) * | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
US9805001B2 (en) | 2016-02-05 | 2017-10-31 | Google Inc. | 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/en active Active
- 2016-12-29 EP EP16207251.6A patent/EP3203382A1/en not_active Ceased
- 2016-12-29 TW TW107112523A patent/TWI670613B/en active
- 2016-12-29 TW TW108126777A patent/TWI718604B/en active
- 2016-12-29 TW TW110100489A patent/TWI781509B/en active
- 2016-12-29 KR KR1020160183047A patent/KR101980365B1/en active IP Right Grant
- 2016-12-29 TW TW105143869A patent/TWI624763B/en active
- 2016-12-29 EP EP22194202.2A patent/EP4160448A1/en active Pending
- 2016-12-29 BR BR102016030970A patent/BR102016030970A8/en not_active Application Discontinuation
- 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/en active Active
- 2017-01-13 CN CN202010713206.4A patent/CN112000919B/en active Active
- 2017-09-05 US US15/695,144 patent/US10417303B2/en active Active
-
2019
- 2019-04-26 JP JP2019085959A patent/JP6978467B2/en active Active
- 2019-05-14 KR KR1020190056428A patent/KR102112094B1/en active IP Right Grant
- 2019-09-16 US US16/571,749 patent/US10719575B2/en active Active
-
2020
- 2020-05-12 KR KR1020200056346A patent/KR102483303B1/en active IP Right Grant
- 2020-07-14 US US16/928,242 patent/US11366877B2/en active Active
-
2021
- 2021-09-10 JP JP2021147894A patent/JP7187635B2/en active Active
-
2022
- 2022-06-16 US US17/842,420 patent/US20220391472A1/en active Pending
- 2022-11-30 JP JP2022191957A patent/JP2023021171A/en active Pending
- 2022-12-26 KR KR1020220184672A patent/KR102635985B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103262068A (en) * | 2010-12-20 | 2013-08-21 | 萨思学会有限公司 | Systems and methods for generating a cross-roduct matrix in a single pass through data using single pass levelization |
CN102141976A (en) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | Method for storing diagonal data of sparse matrix and SpMV (Sparse Matrix Vector) realization method based on method |
US20130339506A1 (en) * | 2012-06-13 | 2013-12-19 | International Business Machines Corporation | Performing synchronized collective operations over multiple process groups |
CN103984527A (en) * | 2014-04-01 | 2014-08-13 | 杭州电子科技大学 | Method optimizing sparse matrix vector multiplication to improve incompressible pipe flow simulation efficiency |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI781509B (en) | System and method for transforming sparse elements into a dense matrix, and non-transitory machine-readable storage device | |
JP7023917B2 (en) | Systems and methods for converting sparse elements to dense matrices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |