JP2016066329A - Information processing device, information processing method, and computer program - Google Patents
Information processing device, information processing method, and computer program Download PDFInfo
- Publication number
- JP2016066329A JP2016066329A JP2014196174A JP2014196174A JP2016066329A JP 2016066329 A JP2016066329 A JP 2016066329A JP 2014196174 A JP2014196174 A JP 2014196174A JP 2014196174 A JP2014196174 A JP 2014196174A JP 2016066329 A JP2016066329 A JP 2016066329A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- block
- column
- information processing
- row
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 70
- 238000004590 computer program Methods 0.000 title claims description 8
- 238000003672 processing method Methods 0.000 title claims description 6
- 239000011159 matrix material Substances 0.000 claims abstract description 272
- 238000003860 storage Methods 0.000 claims abstract description 209
- 238000012545 processing Methods 0.000 claims description 37
- 230000004931 aggregating effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 139
- 238000004364 calculation method Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 23
- 239000013598 vector Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 10
- 230000010354 integration Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 241000251468 Actinopterygii Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000002939 conjugate gradient method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
Description
本発明は、情報処理装置及び情報処理方法等に関する。本発明は、特に、行列に含まれる要素が表すデータを記憶装置に効率的に配置可能な情報処理装置等に関する。 The present invention relates to an information processing apparatus, an information processing method, and the like. In particular, the present invention relates to an information processing apparatus and the like that can efficiently arrange data represented by elements included in a matrix in a storage device.
近年、大規模行列の要素情報(行列に含まれる要素が表すデータ)を配列として記憶装置に配置(格納)する方法が、各種数値計算等の分野において用いられている。以下において、特定の行列を表すデータ(特定の行列に含まれる全要素が表すデータ)を、単に「行列データ」と称する場合がある。 In recent years, a method of arranging (storing) element information (data represented by elements included in a matrix) of a large-scale matrix as an array in a storage device has been used in the fields of various numerical calculations. Hereinafter, data representing a specific matrix (data represented by all elements included in the specific matrix) may be simply referred to as “matrix data”.
このような技術として、例えば、JDS(Jagged Diagonal Storage)格納法(下記特許文献1参照)や、CRS(Compressed Row Storage)格納法等が知られている。
As such a technique, for example, a JDS (Jagged Diagonal Storage) storage method (see
ここで、JDS格納法について図1を参照して説明する。図1は、JDS格納法を用いて、疎行列(図1における符号100a)の行列データを記憶装置に格納する手順を例示する。図1においては、疎行列100aの鉛直方向(行方向)に行番号(1乃至8)が割り当てられる。また、疎行列100aの水平方向(列方向)に列番号(1乃至8)が割り当てられる。
Here, the JDS storage method will be described with reference to FIG. FIG. 1 illustrates a procedure for storing matrix data of a sparse matrix (
図1(a)に例示した疎行列100aにおいて「*」が配置されている箇所には、非零(ゼロ)要素が配置される。また、図1(a)に例示した疎行列100aにおいて、空白が設定されている箇所は、零(ゼロ)要素が配置される。
In the
まず、JDS格納法は、図1(b)に例示するように、疎行列100aにおける非零要素のみを左方向(列方向左端側)に詰める。係る左詰めにされた疎行列を100bとする。
First, in the JDS storage method, as illustrated in FIG. 1B, only non-zero elements in the
次に、JDS格納法は、図1(c)に例示するように、上記左詰めにされた疎行列100bにおける各行の行番号を、当該行に含まれる非零要素の個数の降順で並び変える。並び替えた疎行列を、100cとする。
Next, in the JDS storage method, as illustrated in FIG. 1C, the row numbers of the respective rows in the left-justified
JDS格納法は、図1(d)に例示するように、元の疎行列100aに含まれる各非零要素の列番号を、別の配列(2次元配列)100dに格納する。即ち、配列100dの各要素に格納された列番号を参照することにより、特定の行番号が割り振られた行に含まれる各要素が、元の疎行列100aにおいてどの列に存在したかを特定可能である。
In the JDS storage method, as illustrated in FIG. 1D, the column number of each non-zero element included in the original
例えば、具体例として、疎行列100cの行番号「3」の行について説明する。元の疎行列100aにおいて、行番号「3」に該当する行には、第1列目、第2列目、第3列目、第5列目、第7列目、及び、第8列目に非零要素が配置されている。このため、配列100dにおいて行番号「3」に該当する行には、上記列番号を表すデータとして、「1、2、3、5、7、8」が設定されている。
For example, as a specific example, the row with the row number “3” of the
JDS格納法は、行列100cの行列データと、配列100dとを、それぞれ図1(e)に例示する矢印DA1(行方向の上から下に向かう方向)の方向に沿って1列目から順に(即ち、1列目から8列目に向かって順番に)、記憶装置に対して一次元的に格納する。
In the JDS storage method, the matrix data of the
また、JDS格納法により格納した行列とベクトルとの積を計算する場合、行列100cの行列データと、列番号101dを格納した配列とは、図1(e)に示す矢印DA1の順序で参照され、係る積の計算に用いられる。
When calculating the product of the matrix and the vector stored by the JDS storage method, the matrix data of the
このような行列演算に関連する技術として、以下のような特許文献が開示されている。 The following patent documents are disclosed as techniques related to such matrix operations.
特許文献1は、上記したように、計算機を構成する記憶装置に対して、JDS格納法を用いて規模不規則疎行列の格納する方法を開示する。
As described above,
特許文献2(特開2008−070928号公報)は、連立一次方程式の解を数値計算により求める際、係数行列を記憶する領域がページアウトされずにメインメモリ内に保持するように制御する計算方法を開示する。特許文献2に開示された技術は、修正コレスキー分解法に基づく係数行列の三角分解演算において、メインメモリの空き容量を超えない範囲で、分解済み係数値の一部をメインメモリに保持する。特許文献2に開示された技術は、分解済み係数値の残りを2次記憶に保持する。なお、特許文献2に開示された技術は、係数行列を記憶するメモリ領域を削減するために、スカイライン法を用いて、係数行列を圧縮する。
Patent Document 2 (Japanese Patent Application Laid-Open No. 2008-070928) discloses a calculation method for controlling so that an area for storing a coefficient matrix is held in a main memory without being paged out when a solution of simultaneous linear equations is obtained by numerical calculation. Is disclosed. The technique disclosed in
特許文献3(特開2002−157237号公報)は、反復法を用いて連立一次方程式の解を求める計算方法について開示する。特許文献3に開示された技術は、反復法を用いて連立一次方程式の近似解を計算する際、当該計算の収束を早めるように、M行列ではない係数行列に対してマルチレベル不完全ブロック分解を用いた前処理を行う。なお、特許文献3に開示された技術は、連立一次方程式の係数行列を、エルパック(Ellpack)形式により圧縮して格納する。
Japanese Patent Application Laid-Open No. 2002-157237 discloses a calculation method for obtaining a solution of simultaneous linear equations using an iterative method. In the technique disclosed in
各種数値計算においては、1以上のブロックに区分可能な行列が演算の対象となる場合がある。以下「1以上のブロックに区分可能な行列」を「1以上のブロックを有する行列」と表す場合がある。また、係るブロックを「小行列」と表す場合がある。 In various numerical calculations, a matrix that can be divided into one or more blocks may be a target of calculation. Hereinafter, the “matrix that can be divided into one or more blocks” may be expressed as “matrix having one or more blocks”. In addition, such a block may be expressed as a “small matrix”.
1以上のブロックを有する疎行列(以下「ブロック疎行列」と称する場合がある)が各種計算の対象となる場合、係るブロック疎行列の行列データを記憶装置に効率よく配置(格納)する必要がある。より具体的には、係るブロック疎行列に含まれる要素(要素が表すデータ)を、記憶装置に効率よく配置(格納)する必要がある。 When a sparse matrix having one or more blocks (hereinafter sometimes referred to as “block sparse matrix”) is a target of various calculations, it is necessary to efficiently arrange (store) the matrix data of the block sparse matrix in a storage device. is there. More specifically, it is necessary to efficiently arrange (store) the elements (data represented by the elements) included in the block sparse matrix in the storage device.
また、ブロック疎行列に含まれるブロックの単位で各種演算処理が繰り返し実行される場合、係るブロックの単位で、記憶装置に対するアクセス(参照)が発生する。例えば、大規模疎行列とベクトルとの積算が主たる計算コストを占めるような数値計算においては、ブロック疎行列に含まれるブロックの単位で各種演算処理が繰り返し実行される場合がある。 In addition, when various arithmetic processes are repeatedly executed in units of blocks included in the block sparse matrix, access (reference) to the storage device occurs in units of such blocks. For example, in a numerical calculation in which the integration of a large-scale sparse matrix and a vector occupies the main calculation cost, various arithmetic processes may be repeatedly executed in units of blocks included in the block sparse matrix.
各種数値計算にける演算処理の効率(処理速度等)を向上するためには、係る記憶装置に格納されたブロック疎行列の行列データに対して、効率的にアクセス可能であることが望ましい。即ち、記憶装置に格納されたブロック疎行列の行列データに対して効率的なアクセスを可能とする、ブロック疎行列の格納技術が求められる。 In order to improve the efficiency (processing speed, etc.) of arithmetic processing in various numerical calculations, it is desirable that the block sparse matrix data stored in the storage device can be efficiently accessed. That is, a block sparse matrix storage technique that enables efficient access to block sparse matrix data stored in a storage device is required.
以上より、ブロック疎行列を記憶する格納技術には、高い容量効率と演算効率とが求められる。 As described above, the storage technology for storing the block sparse matrix requires high capacity efficiency and calculation efficiency.
上記特許文献2、及び、特許文献3に開示された技術は、いずれも特定の連立方程式の解法に特化した技術を開示するにすぎず、ブロック疎行列に関する演算の効率化(高速化)と直接関係する技術ではない。それぞれの文献において開示された係数行列の記憶方法についても同様である。
The techniques disclosed in
本発明は、上記のような事情を鑑みてなされたものである。 The present invention has been made in view of the above circumstances.
本発明は、1以上のブロックを有する行列に含まれる要素を、記憶装置において効率よく配置(格納)可能な情報処理装置等を提供することを主たる目的とする。より具体的には、本発明は、1以上のブロックを有する行列に含まれる要素を、容量効率及び演算効率がよい行列格納方法を用いて記憶装置に配置可能な情報処理装置等を提供することを主たる目的とする。 An object of the present invention is to provide an information processing apparatus and the like that can efficiently arrange (store) elements included in a matrix having one or more blocks in a storage device. More specifically, the present invention provides an information processing apparatus and the like that can arrange elements included in a matrix having one or more blocks in a storage device using a matrix storage method with high capacity efficiency and calculation efficiency. Is the main purpose.
上記の目的を達成すべく、本発明の一態様に係る情報処理装置は、以下の構成を備える。即ち、本発明の一態様に係る情報処理装置は、少なくともデータを記憶可能な記憶部と、第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの上記第2の行列において同じ位置に配置された要素を表すデータを、上記記憶部における連続した領域に配置する配置部と、を備える。 In order to achieve the above object, an information processing apparatus according to an aspect of the present invention includes the following arrangement. That is, the information processing device according to one embodiment of the present invention includes each of the second matrix with respect to at least a storage unit capable of storing data and a second matrix that is a block included in the first matrix. And an arrangement unit that arranges data representing elements arranged at the same position in a continuous area in the storage unit.
また、本発明の一態様に係る情報処理方法は、以下の構成を備える。即ち、本発明の一態様に係る情報処理方法は、データを記憶可能な記憶部を備える情報処理装置が、第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの上記第2の行列において同じ位置に配置された要素を表すデータを、上記記憶部における連続した領域に配置する。 An information processing method according to one embodiment of the present invention includes the following configuration. That is, in an information processing method according to one embodiment of the present invention, an information processing device including a storage unit capable of storing data is used for each of the above-described second matrices, which are blocks included in the first matrix. Data representing elements arranged at the same position in the second matrix is arranged in a continuous area in the storage unit.
また、同目的は、上記構成を有する情報処理装置、並びに対応する情報処理方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体等によっても達成される。 In addition, the same object is achieved by an information processing apparatus having the above-described configuration and a corresponding information processing method by a computer program realized by a computer, a computer-readable storage medium storing the computer program, and the like. Is also achieved.
本発明によれば、1以上のブロックを有する行列に含まれる要素を、記憶装置に対して効率よく配置(格納)可能である。より具体的には、本発明によれば、1以上のブロックを有する行列に含まれる要素を、容量効率及び演算効率がよい行列格納方法を用いて記憶装置に配置可能な情報処理装置等を提供可能である。 According to the present invention, elements included in a matrix having one or more blocks can be efficiently arranged (stored) in a storage device. More specifically, according to the present invention, there is provided an information processing apparatus and the like that can arrange elements included in a matrix having one or more blocks in a storage device using a matrix storage method with high capacity efficiency and calculation efficiency. Is possible.
次に、本発明を実施する形態について図面を参照して詳細に説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。 Next, embodiments of the present invention will be described in detail with reference to the drawings. The configurations described in the following embodiments are merely examples, and the technical scope of the present invention is not limited thereto.
なお、各実施形態において説明する情報処理装置は、当該情報処理装置の1以上の構成要素が複数の物理的あるいは論理的に離間した装置(物理的なコンピュータや、仮想的なコンピュータ等)を用いて実現されたシステムとして構成されてもよい。 The information processing apparatus described in each embodiment uses an apparatus (a physical computer, a virtual computer, or the like) in which one or more components of the information processing apparatus are physically or logically separated. It may be configured as a realized system.
また、各実施形態において説明する情報処理装置は、当該情報処理装置の全ての構成要素が1つの装置(物理的なコンピュータや、仮想的なコンピュータ等)を用いて実現されたシステムとして構成されてもよい。 In addition, the information processing apparatus described in each embodiment is configured as a system in which all the components of the information processing apparatus are realized by using a single device (such as a physical computer or a virtual computer). Also good.
本発明の各実施形態に関する説明に先立って、本発明に関する技術的背景について説明する。 Prior to the description of each embodiment of the present invention, a technical background related to the present invention will be described.
まず、上記JDS格納法を、ブロック疎行列に対応するように単純に拡張する構成について図2乃至図4を参照して説明する。拡張したJDS格納法は、疎行列に含まれる全ての非零要素の行番号と列番号を参照テーブルとして持つのではなく、疎行列に含まれるブロックの位置の行番号あるいは列番号のみを参照テーブルとして保持する。 First, a configuration in which the JDS storage method is simply extended to correspond to a block sparse matrix will be described with reference to FIGS. The extended JDS storage method does not have the row numbers and column numbers of all the non-zero elements included in the sparse matrix as a reference table, but only the row numbers or column numbers of the block positions included in the sparse matrix. Hold as.
図2は、JDS格納法の各非零要素(図1における「*」印)がブロック(小行列)である場合の、疎行列を表す図である。即ち、図2に例示する行列200は、(2行2列)型のブロック(2行2列の小行列)を有する、疎行列を例示する。図2に例示するように、行列200は、(16行16列)の正方行列である。
FIG. 2 is a diagram showing a sparse matrix when each non-zero element (“*” in FIG. 1) of the JDS storage method is a block (small matrix). That is, the
図2においては、疎行列200の鉛直方向(行方向)に、ブロック単位で行番号(ブロック行番号)が割り当てられる。また、疎行列100の水平方向(列方向)にブロック単位で列番号(ブロック列番号)が割り当てられる。なお、図2に例示する疎行列200においては、ブロック行番号として1乃至8、ブロック列番号として1乃至8が割り当てられている。
In FIG. 2, row numbers (block row numbers) are assigned in units of blocks in the vertical direction (row direction) of the
なお、(2行2列)型のブロックの各要素については、「*1」、「*2」、「*3」、「*4」の符号を用いて表す。係る符号は、単に(2行2列)型のブロックにおける要素の配置位置を表すものであり、特定のデータ(値)を表すものではない。(2行2列)型のブロックの各要素には、任意のデータ(値)が設定され得る。上記図1と同様、疎行列200における空白要素は零要素である。
In addition, each element of the (2 rows × 2 columns) type block is represented by using symbols “* 1”, “* 2”, “* 3”, and “* 4”. Such a code simply represents an arrangement position of an element in a (2 × 2) block, and does not represent specific data (value). Arbitrary data (value) can be set in each element of the (2 rows × 2 columns) type block. As in FIG. 1, the blank element in the
上記図1(b)と同様に、当該疎行列200に含まれる各ブロックを左方向(列方向の左端側の領域)に詰めることにより、図3に例示する行列300が得られる。なお、行列300は、行列200を変形したものとしてもよい。
Similar to FIG. 1B, the
上記図1(c)と同様に、図3に例示する行列300について、各ブロック行に含まれる非零ブロックの個数の降順でブロック行番号を並び変えることにより、図4に例示する行列400が得られる。なお、行列400は、行列300(あるいは行列200)を変形したものとしてよい。なお、非零ブロックは、少なくとも零行列ではない小行列である。
Similar to FIG. 1C, the
図1に例示するJDS格納法を単純に拡張する場合、行列400に含まれる各ブロック内の要素は、図5に例示するような配置により、記憶装置に格納される。即ち、各ブロック内の要素は、記憶装置において連続したアドレス領域に格納される。
When the JDS storage method illustrated in FIG. 1 is simply expanded, the elements in each block included in the
具体例として、(ブロック行番号:3、ブロック行番号:1)のブロックに含まれる要素は、「*1」「*2」「*3」「*4」の順で、記憶装置において連続したアドレス領域に格納される。(ブロック行番号:3、ブロック行番号:1)のブロックが格納されたアドレス領域に連続する次のアドレス領域には、(ブロック行番号:1、ブロック行番号:1)のブロックに含まれる各要素が上記と同様に連続したアドレス領域に格納される。 As a specific example, the elements included in the block (block row number: 3, block row number: 1) are consecutive in the storage device in the order of “* 1” “* 2” “* 3” “* 4”. Stored in the address area. Each address included in the block of (block row number: 1, block row number: 1) is in the next address region continuous to the address region in which the block of (block row number: 3, block row number: 1) is stored. Elements are stored in consecutive address areas as described above.
例えば、ブロック疎行列とベクトルとの積を計算する際には、ブロック疎行列に含まれるブロックの単位で演算ループを実行する必要がある。JDS格納法を単純に拡張した場合、あるブロックに対する演算処理から次のブロックに対する演算処理を実行する際、ブロックのサイズ分だけ離れた要素が参照される。即ち、記憶装置において連続した領域に配置されていない要素が参照される。このため、記憶装置において連続した領域にアクセスする場合と比べ、計算速度性能(演算効率)にロス(損失)が発生する。以下、図6に例示する具体的な実装例を用いて説明する。 For example, when calculating the product of a block sparse matrix and a vector, it is necessary to execute an operation loop in units of blocks included in the block sparse matrix. When the JDS storage method is simply extended, when an arithmetic process for a next block is executed from an arithmetic process for a certain block, elements separated by the size of the block are referred to. That is, elements that are not arranged in a continuous area in the storage device are referred to. For this reason, a loss (loss) occurs in calculation speed performance (computation efficiency) as compared with the case of accessing a continuous area in the storage device. Hereinafter, description will be made using a specific mounting example illustrated in FIG.
図6は、ブロック行列のサイズが2の場合(即ち、(2行2列)型のブロックである場合)に、上記説明したJDS格納法を単純に拡張した方法により格納した疎行列と、任意のベクトルとの積を計算する、Fortranプログラム(コンピュータ・プログラム)のソースコードの一部を例示する。なお、Fortranは周知のプログラミング言語である。 FIG. 6 shows a sparse matrix stored by a method simply expanded from the above-described JDS storage method when the block matrix size is 2 (that is, a (2 × 2) type block), and an arbitrary A part of the source code of a Fortran program (computer program) that calculates a product of a vector with Fortran is a well-known programming language.
図6に例示するソースコードにおいて、各変数と配列が表す内容は、以下の通りである。即ち、
・変数「N」は、元の行列(例えば、図2における行列200))の行又は列方向のブロックの個数を表す。
In the source code illustrated in FIG. 6, the contents represented by each variable and array are as follows. That is,
The variable “N” represents the number of blocks in the row or column direction of the original matrix (for example, the
・変数「NZ」は、元の行列に含まる、全ての非零ブロックの個数を表す。 The variable “NZ” represents the number of all non-zero blocks included in the original matrix.
・配列「A」は、元の行列における非零要素の値を格納する配列を表す。配列「A」の添字は、例えば、元の行列を図5に例示する行列500のように変形し、1列目から順番に行方向上端から下端に向けて一次元化して番号(インデックス)を付けたときの、当該番号を表す。
The array “A” represents an array that stores the values of non-zero elements in the original matrix. For the subscript of the array “A”, for example, the original matrix is transformed into a
・配列「X」は、演算対象となるベクトル(X)を表す。 The array “X” represents a vector (X) to be calculated.
・配列「Y」は、上記配列「A」と上記配列「X」との積の計算結果を格納する配列を表す。 The array “Y” represents an array that stores the calculation result of the product of the array “A” and the array “X”.
・配列「IA」は、元の行列Aを図5に例示する行列500のように変形した場合の、各ブロック列の先頭の番号を格納する。
The array “IA” stores the top number of each block column when the original matrix A is transformed as the
・配列「JA」は、元の行列に含まれる、非零ブロックのブロック列番号を格納する。K番目のブロックのブロック列番号はJA(K)となる。 The array “JA” stores block column numbers of non-zero blocks included in the original matrix. The block row number of the Kth block is JA (K).
・変数「MJAD」は、元の行列の各行に含まれる非零ブロックの個数の最大値を表す。 The variable “MJAD” represents the maximum value of the number of non-zero blocks included in each row of the original matrix.
・配列「W」は、上記配列「A」と配列「X」との積の結果を一時的に格納する作業配列を表す。 The array “W” represents a work array that temporarily stores the product of the array “A” and the array “X”.
・配列IORDは、元の行列を、例えば、図4に例示するように並べ替えた場合のブロック行番号を格納した配列を表す。即ち、元の配列におけるブロック行番号が「I」のとき、並び替え後のブロック行番号はIORD(I)となる。 The array IORD represents an array storing block row numbers when the original matrix is rearranged as exemplified in FIG. That is, when the block row number in the original array is “I”, the rearranged block row number is IORD (I).
図6に例示するコードにおいて、最内の演算ループである20番のDOループの添字Kが1増加すると、元の行列の非零要素を格納した配列Aの添字KIは4(=2×2、「×」は乗算記号を表す、以下において同様。)増加する。したがって、ブロックのサイズがMの場合((M行M列)の場合)は、ブロックごとに処理される演算ループにおいては、M×M個の要素だけずれた(離れた)配列のアドレスが繰り返し参照される。この場合、記憶装置における非連続のアドレスが参照(アクセス)されることから、連続したアドレスにアクセスする場合と比べ、計算速度性能(演算効率)にロス(損失)が発生する。 In the code illustrated in FIG. 6, when the subscript K of the 20th DO loop which is the innermost operation loop is increased by 1, the subscript KI of the array A storing the non-zero elements of the original matrix is 4 (= 2 × 2 , “X” represents a multiplication symbol, and so on. Therefore, when the block size is M (in the case of (M rows and M columns)), in the operation loop processed for each block, the addresses of the array shifted (distant) by M × M elements are repeated. Referenced. In this case, since non-consecutive addresses in the storage device are referred to (accessed), a loss (loss) occurs in calculation speed performance (calculation efficiency) compared to the case of accessing consecutive addresses.
以下に説明する各実施形態における情報処理装置は、演算対象の行列に含まれるそれぞれのブロック内において配置される位置が同じ要素を、記憶装置において連続した領域(アドレス)に格納する。これにより、ブロックを有する疎行列とベクトルとの積の計算を演算する際、ブロックごとに実行される演算ループにおいて参照されるデータ(疎行列の非零要素を格納した配列データ)は、記憶装置において連続した領域(アドレス)に配置される。 The information processing apparatus in each embodiment described below stores, in a storage device, continuous areas (addresses) of elements having the same position arranged in each block included in a matrix to be calculated. Thereby, when calculating a product of a sparse matrix having a block and a vector, data (array data storing non-zero elements of the sparse matrix) referred to in an operation loop executed for each block is stored in a storage device. Are arranged in a continuous area (address).
なお、以下において、演算対象の行列に含まれるブロック内における配置位置が同じ要素を、「ブロック内における相対位置が同じ要素」と表す場合がある。 In the following, elements having the same arrangement position in a block included in a matrix to be calculated may be expressed as “elements having the same relative position in a block”.
以下、本発明の各実施形態について説明する。 Hereinafter, each embodiment of the present invention will be described.
<第1の実施形態>
本発明の第1の実施形態について説明する。以下においては、1以上のブロック(小行列)を有する不規則疎行列(スパース行列)を配列に格納する行列格納法について説明する。また、係る行列格納法を用いて格納された行列と、任意のベクトルとの積を計算する処理手順等について説明する。
<First Embodiment>
A first embodiment of the present invention will be described. In the following, a matrix storage method for storing an irregular sparse matrix (sparse matrix) having one or more blocks (small matrix) in an array will be described. A processing procedure for calculating the product of a matrix stored using the matrix storage method and an arbitrary vector will be described.
まず本実施形態における情報処理装置700の構成について図7を参照して説明する。図7は、本実施形態における情報処理装置700の機能的な構成を例示するブロック図である。
First, the configuration of the
本実施形態における情報処理措置700は、記憶部701と、配置部702とを有する。また、本実施形態における情報処理装置700は、演算処理部703と、入力部704とを有してもよい。情報処理装置700を構成するこれらの構成要素の間は、任意の通信手段により通信可能に接続されていてもよい。また、情報処理装置700は、物理的なコンピュータ等により構成されてもよく、周知の仮想化技術を用いて提供された仮想的なコンピュータ等により構成されてもよい。
The
記憶部701は、各種情報(データ)やプログラム(コンピュータ・プログラム)を記憶(格納)可能な記憶領域を提供する。記憶部701が提供する記憶領域における位置を特定可能な識別情報(例えば、アドレスやインデックス(索引)等)を用いることにより、当該記憶領域における任意の領域にアクセス可能であってもよい。
係る記憶部701は、例えば、物理的な半導体メモリ等(例えば、DIMM(Dual Inline Memory Module)の形態で提供されるSDRAM(Synchronous Dynamic Random Access Memory)等)の記憶デバイスであってもよい。また、記憶部701は、仮想環境において提供される仮想的な記憶デバイスであってもよい。
The
The
記憶部701は、後述する配置部701によって配置される行列の行列データを保持(格納)する。また、記憶部701は、当該格納された行列データを、後述する演算処理部703に対して提供する。
The
配置部701は、演算対象の行列(以下、「演算対象行列」と称する場合がある)の行列データを、適切なデータ構造に格納して、記憶部701に配置(格納)する。配置部701は、後述する入力部704と通信可能に接続され、入力部704を介して演算対象行列を受け付けてもよい。
演算処理部703は、記憶部701に格納された行列データを用いて、各種演算処理を実行する。後述する具体例においては、演算処理部703は、上記演算対象行列と、任意のベクトルとの間の積算を実行する。なお、演算処理部703は、後述する入力部704から、各種演算に必要なデータ(例えば、演算対象のベクトルを表すデータ等)を受け付けてもよい。
The
入力部704は、情報処理装置700に対する各種データの入力を受け付ける。入力部704は、例えば、各種入出力装置(キーボード、マウス、ディスプレイ)等を介して、上記各種データの入力を受け付けてもよい。また、入力部704は、任意の通信ネットワークを介して、上記各種データの入力を受け付けてもよい。
The
次に、上記のように構成された情報処理装置700の動作について説明する。
Next, the operation of the
まず、情報処理装置700における、記憶部701に対する演算対象行列の格納手順について、図8乃至図12を参照して説明する。以下に説明する具体例においては、演算対象行列は、1以上のブロックを有する疎行列であることを仮定する。なお、係る演算対象行列は、不規則疎行列であってもよい。
First, the procedure for storing the calculation target matrix in the
図8乃至図11は、本実施形態において説明する行列格納法を用いて、演算対象行列の行列データを、記憶部701に格納するデータに変更する過程について例示する図である。また、図12は、情報処理装置700の具体的な動作を例示するフローチャートである。
8 to 11 are diagrams illustrating a process of changing the matrix data of the calculation target matrix to data stored in the
まず図8に例示する1以上のブロックを有する演算対象行列800が、演算処理の対象として情報処理装置に入力される。この場合、入力部704が、演算対象行列800の各要素を表すデータの入力を受け付けてもよい(ステップS1201)。
First, a
本具体例において、演算対象行列に含まれるブロックは(2行2列)型の小行列である。各ブロックに含まれる要素は、図2と同様に、「*1」、「*2」、「*3」、「*4」の符号を用いて表す。係る符号は、単に(2行2列)型のブロックにおける要素の配置位置を表すものであり、特定のデータ(値)を表すものではない。(2行2列)型のブロックの各要素には、任意のデータ(値)が設定され得る。上記図2と同様、行列800における空白要素は零要素である。なお、本具体例においては、ブロックを(2行2列)型の小行列としているが、本実施形態はこれには限定されない。即ち、ブロックのサイズは任意としてよい。また、演算対象行列のサイズも任意としてよい。
In this specific example, the blocks included in the calculation target matrix are (2 rows × 2 columns) type small matrices. Elements included in each block are represented by using symbols “* 1”, “* 2”, “* 3”, and “* 4”, as in FIG. Such a code simply represents an arrangement position of an element in a (2 × 2) block, and does not represent specific data (value). Arbitrary data (value) can be set in each element of the (2 rows × 2 columns) type block. As in FIG. 2, the blank element in the
入力部704は、入力された演算対象行列800の各要素を表すデータを、配置部702に受け渡す。
The
係るデータを受け付けた配置部702は、図9に例示するように、演算対象行列800に含まれる各ブロックを、列方向の左端側の領域に詰める(集約する)(ステップS1202)。
The
配置部702は、図10に例示するように、上記ステップS1202において特定の領域に集約された行列について、各ブロック行に含まれる非零ブロックの個数の降順でブロック行番号を並び変える(ステップS1203)。
As illustrated in FIG. 10, the
上記ステップS1202乃至S1203の処理は、上記説明したJDS法と同様の方法を用いて実現してもよい。 The processes in steps S1202 to S1203 may be realized using a method similar to the JDS method described above.
次に、配置部702は、演算対象行列に含まれるブロックについて、それぞれのブロック内で同じ位置に配置される要素(相対位置が同じ要素)を、ステップS1203において並び替えた行列における行方向の下方に向かって、ブロック列番号の1列目から順に選択(抽出)する。そして、配置部702は、係る選択した要素(より具体的には、要素を表すデータ)を、記憶部701における連続した領域(記憶領域)に順番に配置(格納)する(ステップS1204)。ここで、記憶部701における連続した領域は、記憶部701が提供する記憶領域において論理的に連続した領域(アドレス)であってもよい。また、係る連続した領域は、例えば、記憶部701を構成する物理的な記憶デバイスにおける連続した領域(アドレス)であってもよい。
Next, with respect to the blocks included in the calculation target matrix, the
より具体的には、配置部702は、図11の(a)乃至(d)に例示するように、ブロック列番号の1列目から順に、ブロック列番号が同じ要素を、図11に例示する矢印DA2の方向(行方向の上端側から下端側に向かう方向)に選択する。そして、配置部702は、選択した要素を記憶装置701における連続した領域に配置する。これにより、各ブロックにおいて配置位置が同じ要素は、記憶装置701における連続した領域に配置される。
More specifically, as illustrated in FIGS. 11A to 11D, the
具体的には、配置部702は、例えば、図11の(a)に例示するように、ブロックにおける配置位置が”*1”((1、1)の位置)の要素をそれぞれのブロックから選択する。そして、配置部702は、係る選択した要素を、順番に記憶部701における連続した領域に配置する。同様に、各ブロックにおける配置位置が”*2”((1、2)の位置)、”*3”((2、1)の位置)、”*4”((2、2)の位置)に存在する要素を、それぞれ記憶部701における連続した領域に配置する。
Specifically, for example, as illustrated in FIG. 11A, the
換言すると、配置部702は、各ブロックを表す小行列の各行において、列方向の左端側の列から列方向の右端側に向けて順次、それぞれの列に配置された要素を表すデータを選択し、同じ列から選択されたデータを、記憶部701における連続した領域に配置する。
In other words, the
図8乃至図10に例示する具体例を用いて説明する。配置部702は、例えば、各ブロックから、各ブロックの1行目に配置された各要素を列方向の左端側の列(1列目)から右端側(2列目)に向けて順次選択し、同じ列に配置された要素を表すデータを記憶部701における連続した領域に配置する。各ブロックの2行目に配置された要素についても同様である。
This will be described with reference to specific examples illustrated in FIGS. For example, the
この場合、配置部702は、例えば、図11に例示するように、ブロックにおける相対位置が同じ要素ごとに、格納する配列を分けてもよい(例えば、図11に例示する1101、1102、1103、1104をそれぞれ格納する配列を設けてもよい)。
In this case, for example, as illustrated in FIG. 11, the
なお、各ブロックにおける特定の位置の要素を表すデータが配置される記憶部701おける領域と、各ブロックにおける他の位置の要素を表すデータが配置される記憶部701における領域とは、連続した領域であってもよい。また、各ブロックにおける特定の位置の要素を表すデータが配置される記憶部701における領域と、各ブロックにおける他の位置の要素を表すデータが配置される記憶部701における領域との間には、任意のデータ等が配置されてもよい。
An area in the
上記ステップS1204の処理により、ブロックを有する演算対象行列と、任意のベクトルとの間の積を計算する演算ループにおいて、参照されるデータ(各ブロックの要素を格納した配列データ)は、記憶部701において連続した領域(アドレス)に配置される。なお、係る演算処理の具体例については、後述する。
In the operation loop for calculating the product between the operation target matrix having a block and an arbitrary vector by the processing in step S1204, data to be referred to (array data storing elements of each block) is stored in the
演算対象行列(図8における符号800)の列番号を格納する配列は、上記説明したJDS法と同様としてよい。即ち、配置部702は、上記説明した図1(d)に例示した配列と同様、行列800におけるブロック列番号を格納する配列を別途設ける。配置部702は、係る配列を、記憶部701に配置してもよい。
The array for storing the column numbers of the calculation target matrix (
なお、上記ステップS1203において、配置部702は、演算対象行列に含まれるブロックの要素を記憶部701に直接配置してもよく、又は、記憶部701に配置可能な配置データを生成してもよい。
In step S1203, the
次に、上記のように記憶部702に配置された演算対象行列と、任意のベクトルとの間の積算を具体例として、本実施形態における行列格納法による演算処理の効率化について説明する。
Next, the efficiency of the arithmetic processing by the matrix storage method in the present embodiment will be described by taking the integration between the calculation target matrix arranged in the
図13は、上記説明した行列格納方法を用いて格納した、(2行2列)型のブロックを有する演算対象行列と、任意のベクトルとの積を計算するFortranコードの一部である。各変数と配列は以下の意味を表す。 FIG. 13 is a part of a Fortran code for calculating a product of an arithmetic target matrix having a (2 × 2) type block stored using the matrix storage method described above and an arbitrary vector. Each variable and array has the following meaning.
・変数「N」は、元の行列(例えば、図8における演算対象行列800))の行又は列方向のブロックの個数を表す。
The variable “N” represents the number of blocks in the row or column direction of the original matrix (for example, the
・変数「NZ」は、元の行列に含まる、全ての非零ブロックの個数を表す。 The variable “NZ” represents the number of all non-zero blocks included in the original matrix.
・配列「A」は、元の行列に含まれる各ブロック(の要素)の値を格納する2次元の配列を表す。配列「A」の第1次元目の添字は、図11に例示する行列の1列目から順番に矢印DA2の方向に一次元化して番号(インデックス)を付けたときの、当該番号を表す。第2次元目の添え字は、各ブロックにおける相対位置の違いを表す番号である。 The array “A” represents a two-dimensional array that stores the value of each block (element) included in the original matrix. The subscript of the first dimension of the array “A” represents the number when it is made one-dimensionally and numbered (indexed) in the direction of the arrow DA2 in order from the first column of the matrix illustrated in FIG. The subscript in the second dimension is a number representing a difference in relative position in each block.
・配列「X」は、演算対象となる入力ベクトル(X)を表す。 The array “X” represents an input vector (X) to be calculated.
・配列「Y」は、上記配列「A」と上記配列「X」との積の計算結果を格納する配列を表す。 The array “Y” represents an array that stores the calculation result of the product of the array “A” and the array “X”.
・配列「IA」は、元の行列Aに含まれる各ブロックの要素を、図11に例示するような順番で一次元化し、番号を付けて並べた際の、各ブロック列の先頭の番号を格納する。即ち、ブロック列番号がIのブロックの番号はIA(I)番目となる。また、ブロック列番号がIのブロック行列の個数はIA(I+1)−IA(I)となる。 The array “IA” indicates the number of the head of each block string when the elements of each block included in the original matrix A are one-dimensionally arranged in the order illustrated in FIG. Store. That is, the number of the block having the block string number I is IA (I). In addition, the number of block matrices having the block column number I is IA (I + 1) −IA (I).
・配列「JA」は、元の行列に含まる非零ブロックのブロック列番号を格納する。K番目のブロックのブロック列番号はJA(K)となる。 The array “JA” stores block column numbers of non-zero blocks included in the original matrix. The block row number of the Kth block is JA (K).
・変数「MJAD」は、元の行列の各行に含まれる非零ブロックの個数の最大値を表す。 The variable “MJAD” represents the maximum value of the number of non-zero blocks included in each row of the original matrix.
・配列「W」は、上記配列「A」と配列「X」との積の結果を一時的に格納する作業配列を表す。 The array “W” represents a work array that temporarily stores the product of the array “A” and the array “X”.
・配列IORDは、元の行列を、例えば、図10に例示するように並べ替えた場合のブロック行番号を格納した配列を表す。即ち、元の配列におけるブロック行番号が「I」のとき、並び替え後のブロック行番号はIORD(I)となる。 The array IORD represents an array that stores the block row numbers when the original matrix is rearranged as exemplified in FIG. That is, when the block row number in the original array is “I”, the rearranged block row number is IORD (I).
図13に例示するソースコードにおいては、最内の演算ループである20番のDOループの添字Kが1増加すると、演算対象行列の非零要素を格納した配列Aの添字が1増加する。 In the source code illustrated in FIG. 13, when the subscript K of the 20th DO loop which is the innermost operation loop is increased by 1, the subscript of the array A storing the non-zero elements of the operation target matrix is increased by 1.
図14は、図13に例示するFortranコードにおける、20番のDOループ処理について、配列Aに着目した処理をフローチャートとして表した図である。図14に例示するフローチャートに係る処理は、演算処理部703により実行されてもよい。
FIG. 14 is a diagram illustrating, as a flowchart, processing focusing on the array A for the 20th DO loop processing in the Fortran code illustrated in FIG. 13. The processing according to the flowchart illustrated in FIG. 14 may be executed by the
図13における20番のDOループ処理は、図14におけるステップ1402の分岐処理と、ステップS1411のKをインクリメントする処理との間で実行される、繰り返し処理に相当する。 The DO loop process of No. 20 in FIG. 13 corresponds to an iterative process executed between the branch process in step 1402 in FIG. 14 and the process of incrementing K in step S1411.
上記繰り返し処理において、ステップS1403乃至ステップS1410の間で、記憶装置701に配置された配列Aの読み込みと、配列Xの要素との積の計算とが、交互に繰り返される。当該繰り返し処理音回数は、演算対象魚列に含まれるブロックが(M行M列)型の小行列である場合、M×M回である。
In the above iterative processing, reading of the array A arranged in the
しかしながら、例えば、情報処理装置700の実行環境や、図13に例示するFortranコードを翻訳するコンパイラの最適化によって、実際の処理順序が変更される場合がある。
However, the actual processing order may be changed depending on, for example, the execution environment of the
特に、一つの命令で複数のデータを処理するSIMD(Single Instruction Multi Data)命令を有する計算機アーキテクチャを対象に最適化されたコンパイラは、記憶装置からの読み込み処理や演算処理を複数まとめて処理するよう、最適化した実行コードを生成する。 In particular, a compiler optimized for a computer architecture having a SIMD (Single Instruction Multi Data) instruction that processes a plurality of data with one instruction seems to process a plurality of reading processes and arithmetic processes from a storage device. , Generate optimized execution code.
図15は、図13に例示するソースコードがコンパイルされた実行コードが、SIMD命令を持つ計算機アーキテクチャ向けに最適化された場合の処理順序を例示するフローチャートである。なお、図15に例示するフローチャートに係る処理は、演算処理部703により実行されてもよい。
FIG. 15 is a flowchart illustrating the processing sequence when the execution code obtained by compiling the source code illustrated in FIG. 13 is optimized for a computer architecture having SIMD instructions. Note that the processing according to the flowchart illustrated in FIG. 15 may be executed by the
ステップS1503における記号”L”は、SIMD命令で同時に処理する命令の個数を表す。ステップS1504乃至ステップS1506においては、上記配列Aの値の読み込み処理が繰り返される。 The symbol “L” in step S1503 represents the number of instructions simultaneously processed by the SIMD instruction. In steps S1504 to S1506, the reading process of the value of the array A is repeated.
また、ステップS1508乃至ステップS1510においては、上記ステップS1504乃至ステップS1506において読み込んだ配列Aの値と、配列Xとの積の計算が繰り返される。 In steps S1508 to S1510, the calculation of the product of the array A value read in steps S1504 to S1506 and the array X is repeated.
ステップS1504乃至ステップS1506、及び、ステップS1508乃至ステップS1510は、いずれも長さL以下の繰り返し処理になっている。SIMD命令を持つ計算機アーキテクチャ向けに最適化された場合、ステップS1504乃至ステップS1506、及び、ステップS1508乃至ステップS1510における繰り返しは、それぞれ1つの命令で処理される。 Steps S1504 to S1506 and steps S1508 to S1510 are all repeated processes of length L or less. When optimized for a computer architecture having SIMD instructions, the iterations in steps S1504 to S1506 and S1508 to S1510 are each processed with one instruction.
この際、ステップS1504乃至ステップS1506における配列Aのデータの読み込み処理は、配列Aの添字Kが1だけインクリメントされる。これより、係る処理においては、記憶装置(例えば記憶部701)において連続した領域(アドレス)に配置されたデータが読み込まれる。 At this time, in the process of reading data of the array A in steps S1504 to S1506, the subscript K of the array A is incremented by 1. Thus, in such processing, data arranged in a continuous area (address) in the storage device (for example, the storage unit 701) is read.
上記説明したJDS格納法を用いる場合、ブロックを有する演算対象行列を表すデータ記憶装置(例えば記憶部701)に格納する際、同一ブロック内の要素が、記憶装置において連続した領域(アドレス)に格納される。演算対象行列を表すデータを読み込む処理が、ブロック単位で繰り返される場合、記憶装置において不連続な領域(アドレス)がアクセスされることになる。 When the above-described JDS storage method is used, when data is stored in a data storage device (for example, the storage unit 701) that represents a calculation target matrix having blocks, elements in the same block are stored in a continuous area (address) in the storage device. Is done. When the process of reading data representing the calculation target matrix is repeated in units of blocks, a discontinuous area (address) is accessed in the storage device.
一方、上記説明した本実施形態における行列格納法によれば、ブロック単位で繰り返される処理を実行する際、記憶装置において連続した領域(アドレス)がアクセスされる。よって、本実施形態における行列格納法によれば、上記JDS格納法に比して、記憶装置に対するアクセス性能が向上することが期待される。これに伴い、演算処理の性能も向上することが期待される。 On the other hand, according to the matrix storage method in the present embodiment described above, continuous areas (addresses) are accessed in the storage device when the process repeated in units of blocks is executed. Therefore, according to the matrix storage method in the present embodiment, it is expected that the access performance to the storage device is improved as compared with the JDS storage method. Along with this, it is expected that the performance of the arithmetic processing is also improved.
以上より、本実施形態における情報処理装置700によれば、配置部702は、1以上の非零ブロックを有する演算対象行列の要素を記憶装置701に対して効率よく配置可能である。なぜならば、配置部702は、JDS格納法と同様に演算対象行列における零要素を圧縮することが可能であり、容量効率を向上可能であるからである。
As described above, according to the
また、配置部702は、各非零ブロック内における相対位置が同じ要素を記憶部701における連続した領域に格納する。これより、ブロック単位で繰り返される演算処理において記憶部701における連続した領域がアクセスされることから、配置部702は、演算効率を向上可能である。即ち、本実施形態によれば、1以上のブロックを有する行列に含まれる要素を、容量効率及び演算効率がよい方法により記憶部701に配置である。
The
<第1の実施形態の変形例>
上記第1の実施形態において説明した行列格納法は、周知の行列格納法であるCRS格納法、あるいは、ELL(Ellpack)格納法等に対して適用することで、これらの格納法を拡張可能である。以下、上記第1の実施形態において説明した行列格納法を用いて、これらの格納法を拡張する方法について説明する。なお、本変形例における情報処理装置700は、上記第1の実施形態における情報処理装置700と同様としてよいので、説明を省略する。また、CRS格納法及びELL格納法は、周知の技術であることから、それぞれの格納法自体に関する詳細な説明は省略する。
<Modification of First Embodiment>
The matrix storage method described in the first embodiment can be expanded by applying to the CRS storage method, which is a well-known matrix storage method, or the ELL (Ellpack) storage method. is there. Hereinafter, a method for extending these storage methods using the matrix storage method described in the first embodiment will be described. Note that the
まず、上記第1の実施形態において説明した行列格納法を用いた、CRS格納法の拡張について説明する。 First, an extension of the CRS storage method using the matrix storage method described in the first embodiment will be described.
図16は、図8に例示する演算対象行列を列方向の左端側に詰めた行列(図9)について、それぞれのブロックに含まれる要素を列方向の右側に向けて順番に並べた行列(図16の符号1600)を表す。 FIG. 16 is a matrix (FIG. 9) in which elements included in each block are arranged in order toward the right side in the column direction with respect to the matrix (FIG. 9) in which the calculation target matrix illustrated in FIG. 8 is packed on the left end side in the column direction. 16 represents 1600).
周知のCRS格納法は、図16に例示する行列1600の1行目から順に、図16に示す矢印DA3の方向(列方向の右側)に向けて、行列1600の要素(要素が表すデータ)を記憶装置(例えば記憶部701)に連続して格納する。このため、各ブロック内の要素(「*1」乃至「*4」)は、記憶装置において連続した領域(アドレス)に配置される。この場合、上記説明した周知のJDS格納法と同様、演算対象行列(例えば、行列1600)を表すデータを読み込む処理がブロック単位で繰り返されると、記憶装置において不連続な領域(アドレス)がアクセスされることになる。
In the known CRS storage method, the elements of the matrix 1600 (data represented by the elements) are sequentially directed from the first row of the
これに対して、本変形例における配置部701は、各ブロックにおいて相対位置が同じ要素を、記憶部701における連続した領域(アドレス)に配置する。より具体的には、本変形例における配置部702は、ブロック列番号の1列目から順に、図17に例示する矢印DA4の方向(列方向右側)に、同じブロック行に含まれる要素を選択する。そして、配置部702は、選択した要素を記憶装置701における連続した領域に配置する。これにより、(2行2列)型のブロックにおける配置位置が同じ要素は、記憶部701における連続した領域(アドレス)に配置(格納)される。
On the other hand, the
この場合、配置部702は、図17に例示するように、各ブロックにおける相対位置が同じ要素ごとに、当該要素を一次元的に格納する配列を分けてもよい(例えば、図17における1701、1702、1703、1704)。
In this case, as illustrated in FIG. 17, the
次に、上記第1の実施形態において説明した行列格納法を用いた、ELL格納法の拡張について説明する。 Next, an extension of the ELL storage method using the matrix storage method described in the first embodiment will be described.
図18は、図8に例示する演算対象行列を列方向の左端側に詰めた行列(図9)について、それぞれのブロックに含まれる要素を行方向の下側に向けて順番に並べた行列(図18の符号1800)を表す。なお、図18における「*0」は、零要素が格納されていることを表す。 18 illustrates a matrix (FIG. 9) in which the calculation target matrix illustrated in FIG. 8 is packed on the left end side in the column direction (FIG. 9), in which elements included in each block are arranged in order in the row direction downward ( Reference numeral 1800 in FIG. Note that “* 0” in FIG. 18 indicates that zero elements are stored.
周知のELL格納法は、図18に例示する行列1800の1列目から順に、図18に示す矢印DA5の方向(行方向の下側)に向けて、行列1800の要素(要素が表すデータ)を記憶装置(例えば記憶部701)に連続して格納する。各ブロック内の要素(「*1」乃至「*4」)は、記憶装置において連続した領域(アドレス)に配置される。この場合、上記説明した周知のJDS格納法と同様、演算対象行列(例えば、行列1800)を表すデータを読み込む処理がブロック単位で繰り返されると、記憶装置において不連続な領域(アドレス)がアクセスされることになる。
The well-known ELL storage method is such that the elements of the matrix 1800 (data represented by the elements) are sequentially directed from the first column of the
これに対して、本変形例における配置部701は、各ブロックにおいて相対位置が同じ要素を、記憶部701における連続した領域(アドレス)に配置する。より具体的には、本変形例における配置部702は、ブロック行番号の1行目から順に、図19に例示する矢印DA6の方向(行方向の下側)に(2行2列)型のブロックにおける配置位置が同じ要素を、記憶部701における連続した領域(アドレス)に配置(格納)する。
On the other hand, the
この場合、配置部702は、図19に例示するように、各ブロックにおける相対位置が同じ要素ごとに、当該要素を一次元的に格納する配列を分けてもよい(例えば、図19における1901、1902、1903、1904)。
In this case, as illustrated in FIG. 19, the
以上より、本実施形態によれば、CRS格納法やELL格納法を拡張することにより、1以上のブロックを有する行列に含まれる要素を、容量効率及び演算効率がよい方法で記憶装置に配置可能な情報処理装置700を提供可能である。
As described above, according to the present embodiment, by expanding the CRS storage method and the ELL storage method, elements included in a matrix having one or more blocks can be arranged in the storage device in a method with high capacity efficiency and calculation efficiency. A simple
<第2の実施形態>
以下、本願発明の第2の実施形態について、図20を参照して説明する。図20は、本実施形態における情報処理装置2000の機能的な構成を例示するブロック図である。
<Second Embodiment>
Hereinafter, a second embodiment of the present invention will be described with reference to FIG. FIG. 20 is a block diagram illustrating a functional configuration of the
図20に例示するように本実施形態における情報処理装置2000は、記憶部2001と、配置部2002とを有する。情報処理装置2000を構成するこれらの構成要素の間は、任意の通信手段により通信可能に接続されていてもよい。また、情報処理装置2000は、物理的なコンピュータ等により構成されてもよく、周知の仮想化技術を用いて提供された仮想的なコンピュータ等により構成されてもよい。
As illustrated in FIG. 20, the
記憶部2001は、少なくともデータを記憶可能である。係る記憶部2001は、例えば、物理的な半導体メモリ等の記憶デバイスであってもよい。また、記憶部2001は、仮想環境において提供される仮想的な記憶デバイスであってもよい。なお、記憶部2001は、上記第1の実施形態における記憶部701と同様としてもよい。
The
配置部2002は、第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの前記第2の行列において同じ位置に配置された要素を表すデータを、記憶部2001における連続した領域に配置する。なお、配置部2002は、上記第1の実施形態における記憶部702と同様としてもよい。
The
上記のように構成された、本実施形態における情報処理装置2000によれば、配置部2002は、1以上のブロック(第2の行列)を有する第1行列の要素を記憶装置2001に対して効率よく配置可能である。
According to the
また、配置部2002は、第2の行列内における相対位置が同じ要素を記憶装置2002における連続した領域に格納する。これより、ブロック単位で繰り返される演算処理において、記憶装置における連続した領域がアクセスされることから、配置部2002は、演算効率を向上可能である。即ち、本実施形態によれば、1以上の第2の行列を有する第1の行列に含まれる要素を、容量効率及び演算効率がよい方法により記憶部2001に配置可能である。
In addition, the arranging
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
<Configuration of hardware and software program (computer program)>
Hereinafter, a hardware configuration capable of realizing each of the above-described embodiments will be described.
以下の説明において、上記各実施形態において説明した情報処理装置(700、2000)をまとめて、単に「情報処理装置」と称する場合がある。また、当該情報処理装置の各構成要素(例えば、記憶部(701、2001)、配置部(702、2002)、演算処理部703、入力部704)をまとめて、単に「情報処理装置の構成要素」と称する場合がある。
In the following description, the information processing apparatuses (700, 2000) described in the above embodiments may be collectively referred to simply as “information processing apparatus”. In addition, each component of the information processing apparatus (for example, the storage unit (701, 2001), the arrangement unit (702, 2002), the
上記各実施形態において説明した情報処理装置は、専用のハードウェア装置により構成してもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現してもよい。 The information processing apparatus described in each of the above embodiments may be configured by a dedicated hardware device. In that case, each component shown in each of the above drawings may be realized as hardware (an integrated circuit or the like on which processing logic is mounted) that is partially or fully integrated.
例えば、各構成要素をハードウェアにより実現する場合、各構成要素は、それぞれの機能を提供可能な集積回路をSoC(System−on−a−chip)等により実装されてもよい。この場合、例えば、各構成要素が保持するデータは、SoCとして統合されたRAM領域やフラッシュメモリ領域に記憶されてもよい。 For example, when each component is realized by hardware, an integrated circuit capable of providing each function may be implemented by SoC (System-on-a-chip) or the like. In this case, for example, data held by each component may be stored in a RAM area or a flash memory area integrated as SoC.
また、この場合、各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。 In this case, a well-known communication bus may be adopted as a communication line for connecting each component. Further, the communication line connecting each component is not limited to bus connection, and each component may be connected by peer-to-peer.
また、上述した情報処理装置、あるいは、当情報処理装置の構成要素は、図21に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。 Further, the information processing apparatus described above or the components of the information processing apparatus are configured by hardware as illustrated in FIG. 21 and various software programs (computer programs) executed by the hardware. May be.
図21における演算装置2101は、汎用のCPUやマイクロプロセッサ等の演算処理装置である。演算装置2101は、例えば後述する不揮発性記憶装置2103に記憶された各種ソフトウェア・プログラムを記憶装置2102に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。なお、上記第1の実施形態における演算処理部703は、演算装置2101を用いて、各種演算処理を実行してもよい。
An
記憶装置2102は、演算装置2101から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置2102は、揮発性のメモリ装置であってもよい。なお、上記各実施形態における記憶部(701、2001)は、記憶装置2102を用いて実現されてもよい。
The
不揮発性記憶装置2103は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置2103は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
The
ネットワークインタフェース2106は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。なお、上記第1の実施形態における入力部704は、ネットワークインタフェース2106を介して、各種入力を受け付けてもよい。
The
ドライブ装置2104は、例えば、後述する外部記憶媒体2105に対するデータの読み込みや書き込みを処理する装置である。
The
外部記録媒体2105は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
The
入出力インタフェース2107は、外部装置との間の入出力を制御する装置である。例えば、情報処理装置のユーザあるいは管理者等は、当該入出力インタフェースを介して接続された各種入出力装置(例えば、キーボード、マウス、ディスプレイ装置、プリンタ等)を用いて、情報処理装置に対して各種操作の指示等を入力してもよい。なお、上記第1の実施形態における入力部704は、入出力インタフェース2107を介して、各種入力を受け付けてもよい。
The input /
上述した各実施形態を例に説明した本発明は、例えば、図21に例示したハードウェア装置により情報処理装置を構成し、係るハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより実現されてもよい。この場合、係る装置に対して供給したソフトウェア・プログラムを、演算装置2101が実行することによって、本願発明が実現されてもよい。
The present invention described by taking each embodiment described above as an example configures an information processing device by the hardware device illustrated in FIG. 21, for example, and realizes the function described in each of the above embodiments for the hardware device. It may be realized by supplying possible software programs. In this case, the present invention may be realized by the
上述した各実施形態において、上記各図(例えば、図7、図20等)に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。 In each of the above-described embodiments, each unit shown in each of the above-described drawings (for example, FIG. 7, FIG. 20, etc.) is realized as a software module, which is a function (processing) unit of a software program executed by the above-described hardware. can do. However, the division of each software module shown in these drawings is a configuration for convenience of explanation, and various configurations can be assumed for implementation.
例えば、図7、及び、図20に例示した各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールを不揮発性記憶装置2103に記憶しておき、演算装置2101がそれぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置2102に読み出すよう構成してもよい。
For example, when each unit illustrated in FIG. 7 and FIG. 20 is realized as a software module, these software modules are stored in the
また、これらのソフトウェアモジュール間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェアモジュール間は、相互に通信可能に接続可能である。 In addition, these software modules may be configured to transmit various data to each other by an appropriate method such as shared memory or interprocess communication. With such a configuration, these software modules can be connected so as to communicate with each other.
更に、上記各ソフトウェア・プログラムを外部記憶媒体2105に記録しておき、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置2104を通じて当該ソフトウェア・プログラムを不揮発性メモリ2103に格納するよう構成してもよい。
Further, each software program is recorded in the
なお、上記の場合において、上記情報処理装置への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。 In the above case, the method of supplying various software programs to the information processing apparatus is installed in the apparatus using an appropriate jig at the manufacturing stage before shipment or the maintenance stage after shipment. You may adopt the method of doing. As a method for supplying various software programs, a general procedure may be adopted at present, such as a method of downloading from the outside via a communication line such as the Internet.
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。 In such a case, the present invention can be understood to be constituted by a code constituting the software program or a computer-readable storage medium in which the code is recorded.
また、上述した情報処理装置、あるいは、当情報処理装置の構成要素は、図21に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図21に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図21に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。 In addition, the information processing apparatus described above or the components of the information processing apparatus include a virtual environment in which the hardware device illustrated in FIG. 21 is virtualized, and various software programs (computers) that are executed in the virtual environment. -A program). In this case, the components of the hardware device illustrated in FIG. 21 are provided as virtual devices in the virtual environment. In this case as well, the present invention can be realized with the same configuration as the case where the hardware device illustrated in FIG. 21 is configured as a physical device.
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。 In the above, this invention was demonstrated as an example applied to exemplary embodiment mentioned above. However, the technical scope of the present invention is not limited to the scope described in the above embodiments. It will be apparent to those skilled in the art that various modifications and improvements can be made to such embodiments. In such a case, new embodiments to which such changes or improvements are added can also be included in the technical scope of the present invention. This is clear from the matters described in the claims.
本発明は、例えば、有限要素法による数値解析処理において、大規模疎行列を係数行列とする行列方程式を、反復解法(例えばCG(Conjugate Gradient)法(共役勾配法))を用いて解く場合に適用可能である。本発明は、特に、大規模疎行列とベクトルとの積算が主たる計算コストを占める数値計算処理等に適用可能である。 The present invention is, for example, in the case of solving a matrix equation having a large-scale sparse matrix as a coefficient matrix using an iterative solving method (for example, a CG (Conjugate Gradient) method (conjugate gradient method)) in numerical analysis processing by a finite element method. Applicable. The present invention is particularly applicable to numerical calculation processing in which the integration of large-scale sparse matrices and vectors occupies the main calculation cost.
700 情報処理装置
701 記憶部
702 配置部
703 演算処理部
704 入力部
2000 情報処理装置
2001 記憶部
2002 配置部
2101 演算装置
2102 記憶装置
2103 不揮発性記憶装置
2104 ドライブ装置
2105 外部記憶媒体
2106 ネットワークインタフェース
2107 入出力インタフェース
700
Claims (10)
第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する配置手段と、を備える
情報処理装置。 Storage means for storing at least data;
An arrangement in which data representing elements arranged at the same position in each of the second matrices is arranged in a continuous area in the storage unit with respect to a second matrix which is a block included in at least one of the first matrix. And an information processing apparatus.
前記第2の行列を、前記第1の行列における特定の領域に集約し、
集約された各前記第2の行列の各行において、列方向の左端側の列から列方向の右端側に向けて順次、特定の列に配置された要素を表すデータを選択し、
各前記第2の行列の各行における同じ前記特定の列から選択されたデータを前記記憶手段における連続した領域に配置する
請求項1に記載の情報処理装置。 The arrangement means includes
Aggregating the second matrix into a specific region in the first matrix;
In each row of the aggregated second matrix, sequentially select data representing elements arranged in a specific column from the column on the left end side in the column direction toward the right end side in the column direction;
The information processing apparatus according to claim 1, wherein data selected from the same specific column in each row of each second matrix is arranged in a continuous area in the storage unit.
前記第1の行列に含まれる列を前記ブロックの列数ごとにまとめてブロック列とし、
前記第1の行列に含まれる行を前記ブロックの行数ごとにまとめてブロック行とし、
前記ブロック列ごとに、前記第1の行列における行方向の上端に配置された前記ブロック行から、前記第1の行列における行方向の下端に配置された前記ブロック行に向かって同じ前記ブロック列に含まれる前記第2の行列を順次選択し、
当該選択した前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する
請求項1又は請求億2に記載の情報処理装置。 The arrangement means includes
The columns included in the first matrix are grouped for each number of columns of the block into a block column,
The rows included in the first matrix are grouped for each number of rows of the block into block rows,
For each block column, the same block column is arranged from the block row arranged at the upper end in the row direction in the first matrix toward the block row arranged at the lower end in the row direction in the first matrix. Sequentially selecting the second matrix included;
The information processing apparatus according to claim 1, wherein data representing elements arranged at the same position in the selected second matrix is arranged in a continuous area in the storage unit.
前記第1の行列に含まれる列を前記ブロックの列数ごとにまとめてブロック列とし、
前記第1の行列に含まれる行を前記ブロックの行数ごとにまとめてブロック行とし、
前記ブロック行ごとに、前記第1の行列における列方向の左端に配置された前記ブロック列から、前記第1の行列における列方向の右端に配置された前記ブロック列に向かって、同じ前記ブロック行に含まれる前記第2の行列を順次選択し、
当該選択した前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する
請求項1又は請求億2に記載の情報処理装置。 The arrangement means includes
The columns included in the first matrix are grouped for each number of columns of the block into a block column,
The rows included in the first matrix are grouped for each number of rows of the block into block rows,
For each block row, the same block row from the block column arranged at the left end in the column direction in the first matrix toward the block column arranged at the right end in the column direction in the first matrix Sequentially selecting the second matrix included in
The information processing apparatus according to claim 1, wherein data representing elements arranged at the same position in the selected second matrix is arranged in a continuous area in the storage unit.
前記第1の行列に含まれる列を前記ブロックの列数ごとにまとめてブロック列とし、
前記第1の行列に含まれる行を前記ブロックの行数ごとにまとめてブロック行とし、
前記ブロック列ごとに、前記ブロック行に含まれる前記第2の行列の数が多い順に、当該ブロック列に含まれる前記第2の行列を順次選択し、当該選択された前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する
請求項1又は請求億2に記載の情報処理装置。 The arrangement means includes
The columns included in the first matrix are grouped for each number of columns of the block into a block column,
The rows included in the first matrix are grouped for each number of rows of the block into block rows,
For each block column, sequentially select the second matrix included in the block column in descending order of the number of the second matrices included in the block row, and the same in the selected second matrix The information processing apparatus according to claim 1, wherein data representing elements arranged at positions is arranged in a continuous area in the storage unit.
前記第1の行列において、前記ブロック行を当該ブロック行に含まれる前記第2の行列の数が多い順に並べ替え、
前記ブロック列ごとに、並べ替えた前記第1の行列における行方向の上端に配置された前記ブロック行から、行方向の下端に配置された前記ブロック行に向かって、前記ブロック列に含まれる前記第2の行列を順次選択し、
当該選択した前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する
請求項3に記載の情報処理装置。 The arrangement means includes
In the first matrix, the block rows are rearranged in the descending order of the number of the second matrix included in the block row,
For each block column, from the block row arranged at the upper end in the row direction in the rearranged first matrix toward the block row arranged at the lower end in the row direction, the block column includes Select the second matrix sequentially,
The information processing apparatus according to claim 3, wherein data representing elements arranged at the same position in the selected second matrix is arranged in a continuous area in the storage unit.
請求項1乃至請求項6のいずれかに記載の情報処理装置。 The information processing apparatus according to claim 1, wherein the second matrix is a square matrix.
情報処理装置。 From the second matrix, which is an included block that is at least one block included in the first matrix, data representing elements arranged at the same position in each of the second matrices is selected, and the selected An information processing apparatus that generates arrangement data arranged so that data representing elements is arranged in a continuous area in a storage unit capable of storing data.
第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する
情報処理方法。 An information processing apparatus comprising a storage means for storing data,
Information for arranging data representing elements arranged at the same position in each of the second matrices in a continuous area in the storage means for the second matrix, which is a block included in at least one of the first matrix. Processing method.
第1の行列に少なくとも1以上含まれるブロックである第2の行列について、それぞれの前記第2の行列において同じ位置に配置された要素を表すデータを、前記記憶手段における連続した領域に配置する処理を実行させる
コンピュータ・プログラム。 In a computer having storage means for storing data,
Processing for arranging data representing elements arranged at the same position in each of the second matrices in a continuous area in the storage means for the second matrix that is at least one block included in the first matrix A computer program that runs
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014196174A JP5954385B2 (en) | 2014-09-26 | 2014-09-26 | Information processing apparatus, information processing method, and computer program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014196174A JP5954385B2 (en) | 2014-09-26 | 2014-09-26 | Information processing apparatus, information processing method, and computer program |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2016066329A true JP2016066329A (en) | 2016-04-28 |
| JP5954385B2 JP5954385B2 (en) | 2016-07-20 |
Family
ID=55804223
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014196174A Active JP5954385B2 (en) | 2014-09-26 | 2014-09-26 | Information processing apparatus, information processing method, and computer program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5954385B2 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019175040A (en) * | 2018-03-28 | 2019-10-10 | 日本電気株式会社 | Information processing device, information processing method, and program |
| WO2021024300A1 (en) * | 2019-08-02 | 2021-02-11 | 日本電気株式会社 | Information processing device |
| JP2022540550A (en) * | 2019-07-11 | 2022-09-16 | メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー | Systems and methods for reading and writing sparse data in neural network accelerators |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004240860A (en) * | 2003-02-07 | 2004-08-26 | Mitsubishi Electric Corp | Data arithmetic unit |
-
2014
- 2014-09-26 JP JP2014196174A patent/JP5954385B2/en active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004240860A (en) * | 2003-02-07 | 2004-08-26 | Mitsubishi Electric Corp | Data arithmetic unit |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019175040A (en) * | 2018-03-28 | 2019-10-10 | 日本電気株式会社 | Information processing device, information processing method, and program |
| JP7020236B2 (en) | 2018-03-28 | 2022-02-16 | 日本電気株式会社 | Information processing equipment, information processing methods, and programs |
| JP2022540550A (en) * | 2019-07-11 | 2022-09-16 | メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー | Systems and methods for reading and writing sparse data in neural network accelerators |
| WO2021024300A1 (en) * | 2019-08-02 | 2021-02-11 | 日本電気株式会社 | Information processing device |
| JPWO2021024300A1 (en) * | 2019-08-02 | 2021-02-11 | ||
| JP7310892B2 (en) | 2019-08-02 | 2023-07-19 | 日本電気株式会社 | Information processing equipment |
Also Published As
| Publication number | Publication date |
|---|---|
| JP5954385B2 (en) | 2016-07-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102492477B1 (en) | Matrix multiplier | |
| US8762655B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
| US8676874B2 (en) | Data structure for tiling and packetizing a sparse matrix | |
| US12189710B2 (en) | Sparse matrix multiplication in hardware | |
| US20190163717A1 (en) | Method and apparatus for performing convolution operation on folded feature data | |
| JP2021507335A (en) | Systems and methods for converting matrix inputs to vectorized inputs for matrix processors | |
| JP2009116854A (en) | System, method, and computer program product for performing scan operation | |
| US20170206089A1 (en) | Information processing apparatus and computational method | |
| KR20210097118A (en) | Integrated Circuits and Methods to Accelerate Data Queries | |
| Klie et al. | Exploiting capabilities of many core platforms in reservoir simulation | |
| Vannieuwenhoven et al. | Computing the gradient in optimization algorithms for the CP decomposition in constant memory through tensor blocking | |
| Chen et al. | Convstencil: Transform stencil computation to matrix multiplication on tensor cores | |
| JP5954385B2 (en) | Information processing apparatus, information processing method, and computer program | |
| Zubair et al. | An optimized multicolor point-implicit solver for unstructured grid applications on graphics processing units | |
| CN110609804A (en) | Semiconductor device and method of controlling semiconductor device | |
| Zhang et al. | Lorastencil: Low-rank adaptation of stencil computation on tensor cores | |
| KR20220038579A (en) | data processing | |
| Zhou et al. | Multi-GPU parallelization of nested factorization for solving large linear systems | |
| JPWO2014104093A1 (en) | Apparatus and method for calculating solution of simultaneous linear equations and program applied to the same | |
| CN103530132A (en) | Method for transplanting CPU (central processing unit) serial programs to MIC (microphone) platform | |
| Valero-Lara et al. | Multi-domain grid refinement for lattice-Boltzmann simulations on heterogeneous platforms | |
| CN103729180A (en) | Method for quickly developing CUDA (compute unified device architecture) parallel programs | |
| Einkemmer et al. | Exponential integrators on graphic processing units | |
| Bisseling et al. | Two-dimensional approaches to sparse matrix partitioning | |
| Brown | Exploring the acceleration of the Met Office NERC cloud model using FPGAs |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160301 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160517 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160530 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5954385 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |