JP5782265B2 - 行列計算処理方法、プログラム及びシステム - Google Patents
行列計算処理方法、プログラム及びシステム Download PDFInfo
- Publication number
- JP5782265B2 JP5782265B2 JP2011022311A JP2011022311A JP5782265B2 JP 5782265 B2 JP5782265 B2 JP 5782265B2 JP 2011022311 A JP2011022311 A JP 2011022311A JP 2011022311 A JP2011022311 A JP 2011022311A JP 5782265 B2 JP5782265 B2 JP 5782265B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- cpu
- row
- column
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
FMM全体の処理にO(n3)時間かかる。
(処理X) k=a1,a2,…の順にva[k]+vb[k]の値を計算していき、それまでに見つかった最小値をbestとしたときに、va[k] > best/2となるkで処理をやめる(そのようなkが無ければk = anまで処理したらやめる)
(処理Y) 処理Xと同様の処理をk = b1,b2,…についても行い、vb[k] > best/2の値となるkで処理をやめる(そのようなkが無ければk = bnまで処理したらやめる)
− C[i,j]については、まず、k = a1,a2,…の順にA[i,k] + B[k,j]を計算していく。
− C[i,j'] については、まず、k = a1,a2,… の順にA[i,k] + B[k,j']を計算していく。
この両者の計算では、行列Aについては同じ行にアクセスし、行列Bについては隣同士の値にアクセスしている。
− ループを融合する際、ループの終了条件を調整する必要があるが、これも容易に実現可能
− ループを融合した結果、ループ長が長くなる場合があるが、これによる計算速度の低下は一般にSIMD命令による高速化に比べて小さい。
C[i,j]とC[i,j']の計算にあたっては、次にk = b1, b2, … についても計算をする必要があるが、この両者の計算は融合できない。ただ、i' = i+1とすると、C[i,j]とC[i',j]の計算は k = b1, b2, … についてループの融合ができる。よって、k = a1, a2, … の計算には列方向に隣同士の行列 C の計算を融合し、k = b1, b2, … の計算には行方向に隣同士の行列 C の計算を融合する、という二段階で行う。非特許文献1の手法では、k = a1, a2, … の計算と k = b1, b2, … の計算、というように分解ができないのが問題である。
best = ∞
i = 1
repeat
best = min { best, va[ai] + vb[ai] }
i = i+1
until (i > n or va[ai] > best/2)
j = 1
repeat
best = min { best, va[bj] + vb[bj] }
j = j+1
until (j > n or vb[bj] > best/2)
output best
best = ∞, temp = ∞
i = 1
repeat
best = min { best, va[ai] + vb[ai] }
temp = min { temp, vb[ai] }
i = i+1
until (i > n or va[ai] > best/2)
j = 1
repeat
best = min { best, va[bj] + vb[bj] }
j = j+1
until (j > n or vb[bj] > min { best/2, temp })
output best
best/2 ≧ min { best/2, temp }なので、こうするとループの脱出が早まる。ここでは、2つのループの打ち切り条件が異なることに留意されたい。
best = ∞
i = 1
repeat
best = min { best, va[ai] + vb[ai] }
i = i+1
until (i > n or va[ai] > best/2)
j = 1
repeat
best = min { best, va[bj] + vb[bj] }
j = j+1
until (j > n - 1 or vb[bj] > best/2)
output best
ここでも、2つのループの打ち切り条件が異なっている。
104 CPU
106 主記憶
108 ハードディスク・ドライブ
110 キーボード
112 マウス
114 ディスプレイ
202 メイン・ルーチン
204 入力ルーチン
206 処理データ
208 ソート・ルーチン
210 更新ルーチン
212 出力ルーチン
214 結果データ
Claims (9)
- CPUとメモリとを備えるコンピュータの処理により、2つの行列(以下、それぞれA,Bとする)からFMM(Funny Matrix Multiplication)の結果である1つの行列(以下、Cとする)を計算する方法であって、
前記CPUにより、前記行列Cのi,j成分であるC[i,j]の値を所定の変数(best)とし、想定されるよりも大きい値を初期値として前記メモリに格納するステップと、
前記CPUにより、前記行列Aの最初の行から最後の行までの各々の行について、前記行列Aのi番目の行に対応し、値が昇順になるインデックスの順列{ai}を計算するステップと、
前記CPUにより、前記行列Bの最初の列から最後の列までの各々の列について、前記行列Bのj番目の列に対応し、値が昇順になるインデックスの順列{bj}を計算するステップと、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best= min{best, A[i,ak]+B[ak,j]}を計算し、ここで、akは前記インデックスの順列{ai}のk番目の要素であり、kが前記行列Aの行の数を超えるかA[i,ak]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第一更新ステップと、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best= min{best, A[i,bk]+B[bk,j]}を計算し、ここで、bkは前記インデックスの順列{bj}のk番目の要素であり、kが前記行列Bの列の数を超えるかB[bk,j]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第二更新ステップとを有する
方法。 - 前記行列Aを前記メモリ上に格納する際に、前記行列Aにおいて列方向に隣り合う要素を、前記メモリ上において隣り合うように並べ、
前記行列Bを前記メモリ上に格納する際に、前記行列Bにおいて行方向に隣り合う要素を、前記メモリ上において隣り合うように並べ、
前記第一更新ステップにおいて、A[i,ak]+B[ak,j]の計算が前記CPUのSIMD命令により並列実行され、
前記第二更新ステップにおいて、A[i,bk]+B[bk,j]の計算が前記CPUのSIMD命令により並列実行される
請求項1に記載の方法。 - 前記CPUのSIMD命令がアクセス可能なレジスタに前記行列Aにおいて列方向に隣り合う要素及び前記行列Bにおいて行方向に隣り合う要素が読み込まれる
請求項2に記載の方法。 - 前記SIMD命令は、ベクトル加算命令である
請求項2又は3に記載の方法。 - 前記第一更新ステップにおいて、行列Cの列方向に隣り合う要素の計算が並列化され、
前記第二更新ステップにおいて、行列Cの行方向に隣り合う要素の計算が並列化される
請求項1から4のいずれか1項に記載の方法。 - 前記行列A、B及びCが、n×nの正方行列である
請求項1から4のいずれか1項に記載の方法。 - CPUとメモリとを備えるコンピュータに、2つの行列(以下、それぞれA,Bとする)からFMM(Funny MatrixMultiplication)の結果である1つの行列(以下、Cとする)を計算させるコンピュータ・プログラムであって、
前記コンピュータに、
前記CPUにより、前記行列Cのi,j成分であるC[i,j]の値を所定の変数(best)とし、想定されるよりも大きい値を初期値として前記メモリに格納するステップと、
前記CPUにより、前記行列Aの最初の行から最後の行までの各々の行について、前記行列Aのi番目の行に対応し、値が昇順になるインデックスの順列{ai}を計算するステップと、
前記CPUにより、前記行列Bの最初の列から最後の列までの各々の列について、前記行列Bのj番目の列に対応し、値が昇順になるインデックスの順列{bj}を計算するステップと、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best = min{best, A[i,ak]+B[ak,j]}を計算し、ここで、akは前記インデックスの順列{ai}のk番目の要素であり、kが前記行列Aの行の数を超えるかA[i,ak]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第一更新ステップと、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best = min{best, A[i,bk]+B[bk,j]}を計算し、ここで、bkは前記インデックスの順列{bj}のk番目の要素であり、kが前記行列Bの列の数を超えるかB[bk,j]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第二更新ステップ
とを実行させるコンピュータ・プログラム。 - CPUとメモリとを備え、2つの行列(以下、それぞれA,Bとする)からFMM(Funny Matrix Multiplication)の結果である1つの行列(以下、Cとする)を計算するコンピュータ・システムであって、
前記CPUにより、前記行列Cのi,j成分であるC[i,j]の値を所定の変数(best)とし、想定されるよりも大きい値を初期値として前記メモリに格納する手段と、
前記CPUにより、前記行列Aの最初の行から最後の行までの各々の行について、前記行列Aのi番目の行に対応し、値が昇順になるインデックスの順列{ai}を計算する手段と、
前記CPUにより、前記行列Bの最初の列から最後の列までの各々の列について、前記行列Bのj番目の列に対応し、値が昇順になるインデックスの順列{bj}を計算する手段と、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best = min{best, A[i,ak]+B[ak,j]}を計算し、ここで、akは前記インデックスの順列{ai}のk番目の要素であり、kが前記行列Aの行の数を超えるかA[i,ak]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第一更新手段と、
前記CPUにより、変数kをk = 1から1つずつ増分しながら順次、best = min{best, A[i,bk]+B[bk,j]}を計算し、ここで、bkは前記インデックスの順列{bj}のk番目の要素であり、kが前記行列Bの列の数を超えるかB[bk,j]がbest/2を超えることに応答して、C[i,j] = bestによりC[i,j]を更新する第二更新手段とを有する、
コンピュータ・システム。 - 前記行列Aを前記メモリ上に格納する際に、前記行列Aにおいて列方向に隣り合う要素を、前記メモリ上において隣り合うように並べ、
前記行列Bを前記メモリ上に格納する際に、前記行列Bにおいて行方向に隣り合う要素を、前記メモリ上において隣り合うように並べ、
前記第一更新手段は、A[i,ak]+B[ak,j]の計算を前記CPUのSIMD命令により並列実行し、
前記第二更新手段は、A[i,bk]+B[bk,j]の計算を前記CPUのSIMD命令により並列実行する
請求項8に記載のコンピュータ・システム。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011022311A JP5782265B2 (ja) | 2011-02-04 | 2011-02-04 | 行列計算処理方法、プログラム及びシステム |
| US13/363,421 US20120203815A1 (en) | 2011-02-04 | 2012-02-01 | Matrix calculation method, program, and system |
| US13/591,631 US9098460B2 (en) | 2011-02-04 | 2012-08-22 | Matrix calculation method, program, and system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011022311A JP5782265B2 (ja) | 2011-02-04 | 2011-02-04 | 行列計算処理方法、プログラム及びシステム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2012164039A JP2012164039A (ja) | 2012-08-30 |
| JP5782265B2 true JP5782265B2 (ja) | 2015-09-24 |
Family
ID=46601407
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011022311A Active JP5782265B2 (ja) | 2011-02-04 | 2011-02-04 | 行列計算処理方法、プログラム及びシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US20120203815A1 (ja) |
| JP (1) | JP5782265B2 (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10311154B2 (en) * | 2013-09-21 | 2019-06-04 | Oracle International Corporation | Combined row and columnar storage for in-memory databases for OLTP and analytics workloads |
| JP6786948B2 (ja) * | 2016-08-12 | 2020-11-18 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
| CN118034781A (zh) | 2017-03-20 | 2024-05-14 | 英特尔公司 | 用于矩阵加法、减法和乘法的系统、方法和装置 |
| US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
| US11436011B2 (en) | 2020-02-18 | 2022-09-06 | Samsung Electronics Co., Ltd. | Processing method and processing device with matrix multiplication computation |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009107712A1 (ja) | 2008-02-29 | 2009-09-03 | 日本電気株式会社 | 高性能伝送システム、伝送方法、受信機、及び送信機 |
-
2011
- 2011-02-04 JP JP2011022311A patent/JP5782265B2/ja active Active
-
2012
- 2012-02-01 US US13/363,421 patent/US20120203815A1/en not_active Abandoned
- 2012-08-22 US US13/591,631 patent/US9098460B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2012164039A (ja) | 2012-08-30 |
| US9098460B2 (en) | 2015-08-04 |
| US20120203815A1 (en) | 2012-08-09 |
| US20120317160A1 (en) | 2012-12-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3940606B1 (en) | Device and method for performing backpropagation of artificial neural network | |
| Peng et al. | GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation | |
| US20180203673A1 (en) | Execution of computation graphs | |
| EP3564863A1 (en) | Apparatus for executing lstm neural network operation, and operational method | |
| US9547474B2 (en) | Inclusive or bit matrix to compare multiple corresponding subfields | |
| JP5782265B2 (ja) | 行列計算処理方法、プログラム及びシステム | |
| US8786617B2 (en) | Parallelization of random number generation processing by employing GPU | |
| CN106991077A (zh) | 一种矩阵计算装置 | |
| US20190138922A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data | |
| CN111580866A (zh) | 一种向量运算装置及运算方法 | |
| BR102013032654A2 (pt) | instruções e lógica para vetorizar laços condicionais | |
| US8726252B2 (en) | Management of conditional branches within a data parallel system | |
| Bikov et al. | Parallel fast Walsh transform algorithm and its implementation with CUDA on GPUs | |
| Xiang et al. | Scalable matrix inversion using mapreduce | |
| Izquierdo-Carrasco et al. | A generic vectorization scheme and a GPU kernel for the phylogenetic likelihood library | |
| Langr et al. | Accelerating many-nucleon basis generation for high performance computing enabled ab initio nuclear structure studies | |
| US20220051095A1 (en) | Machine Learning Computer | |
| TWI531966B (zh) | 計算裝置、計算方法及非暫態機器可讀儲存媒體 | |
| Snytsar et al. | Parallel approach to sliding window sums | |
| Baker et al. | Parallelizing the Smith-Waterman algorithm using OpenSHMEM and MPI-3 one-sided interfaces | |
| Ma et al. | Point-block incomplete LU preconditioning with asynchronous iterations on GPU for multiphysics problems | |
| US9600446B2 (en) | Parallel multicolor incomplete LU factorization preconditioning processor and method of use thereof | |
| Garade et al. | Optimization Strategies to Accelerate BLAS Operations with ARM SVE | |
| Neuman et al. | Fast, good, and repeatable: Summations, vectorization, and reproducibility | |
| Phillips et al. | Performance analysis of the high-performance conjugate gradient benchmark on GPUs |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131108 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141215 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150106 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150330 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150501 |
|
| 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: 20150630 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150717 |
|
| R150 | Certificate of patent (=grant) or registration of utility model |
Ref document number: 5782265 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |