JPH06175986A - 行列演算の並列処理方法 - Google Patents
行列演算の並列処理方法Info
- Publication number
- JPH06175986A JPH06175986A JP33014092A JP33014092A JPH06175986A JP H06175986 A JPH06175986 A JP H06175986A JP 33014092 A JP33014092 A JP 33014092A JP 33014092 A JP33014092 A JP 33014092A JP H06175986 A JPH06175986 A JP H06175986A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- vector
- product
- sum
- partial
- 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.)
- Pending
Links
Landscapes
- Multi Processors (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 行列とベクトルの積の繰り返し演算を高速処
理する方法を提供する。 【構成】 複数の処理要素をp行q列の2次元トーラス
状に結合した並列計算機を用いてm行n列より成る行列
とn個の要素より成るベクトルの積を繰り返し演算する
演算処理において、処理要素の各々には行列の行方向お
よび列方向をそれぞれp分割、q分割して形成した行列
の要素とq分割したベクトルの要素を割り付け、割り付
けられた要素に対応する行の部分積和の総和の計算を処
理要素の各々に均等に担当させ、処理要素の各々におい
て割り付けられた行列とベクトルの要素間について部分
積和を計算し、一回の行列とベクトルの積の演算処理を
完了して結果のベクトルを得、次の行列と結果のベクト
ルの積の演算は行列を転置し行と列を入れ換えて上述さ
れた演算処理を実行する行列演算の並列処理方法。
理する方法を提供する。 【構成】 複数の処理要素をp行q列の2次元トーラス
状に結合した並列計算機を用いてm行n列より成る行列
とn個の要素より成るベクトルの積を繰り返し演算する
演算処理において、処理要素の各々には行列の行方向お
よび列方向をそれぞれp分割、q分割して形成した行列
の要素とq分割したベクトルの要素を割り付け、割り付
けられた要素に対応する行の部分積和の総和の計算を処
理要素の各々に均等に担当させ、処理要素の各々におい
て割り付けられた行列とベクトルの要素間について部分
積和を計算し、一回の行列とベクトルの積の演算処理を
完了して結果のベクトルを得、次の行列と結果のベクト
ルの積の演算は行列を転置し行と列を入れ換えて上述さ
れた演算処理を実行する行列演算の並列処理方法。
Description
【0001】
【産業上の利用分野】この発明は、行列演算の並列処理
方法に関し、特に、各種のニューラルネットその他の演
算において必須の行列演算、例えば行列とベクトルの積
の繰り返し演算処理を2次元トーラス結合型並列計算機
により高速処理する行列演算の並列処理方法に関する。
方法に関し、特に、各種のニューラルネットその他の演
算において必須の行列演算、例えば行列とベクトルの積
の繰り返し演算処理を2次元トーラス結合型並列計算機
により高速処理する行列演算の並列処理方法に関する。
【0002】
【従来の技術】2次元トーラス結合型並列計算機により
行列とベクトルの積を繰り返し演算処理する並列処理方
法の従来例を図を参照して説明する。ここで、2次元ト
ーラス結合とは図1に示される如く2次元アレイ状に並
べられた処理要素(以下、PEと称す)間を行方向およ
び列方向の双方共にリング状に結合した形態をいう。演
算処理されるべき行列Aはm行n列、即ちmn個の要素
から成り、ベクトルXはn個の要素から成るものとす
る。そして、並列計算機であるPEアレイはp行q列、
即ちpq個のPEから成るものとする。
行列とベクトルの積を繰り返し演算処理する並列処理方
法の従来例を図を参照して説明する。ここで、2次元ト
ーラス結合とは図1に示される如く2次元アレイ状に並
べられた処理要素(以下、PEと称す)間を行方向およ
び列方向の双方共にリング状に結合した形態をいう。演
算処理されるべき行列Aはm行n列、即ちmn個の要素
から成り、ベクトルXはn個の要素から成るものとす
る。そして、並列計算機であるPEアレイはp行q列、
即ちpq個のPEから成るものとする。
【0003】図2を参照するに、行列Aを行方向、列方
向にそれぞれp分割、q分割する。この様にして得られ
た(m/p)×(n/q)個の要素からなる小行列Aij
(以下、部分行列、と称す)を対応する位置のPEに割
り当てる。即ち、左からj番目で上からi番目の部分行
列は同じく左からj番目で上からi番目のPEに割り当
てる。そして、ベクトルXはq分割し、得られたn/q
個の要素からなる小ベクトルXi (以下、部分ベクト
ル、と称す)を対応する各列のPE全部に割り当てる。
即ち、上からi番目の部分ベクトルは左からi番目の列
の全PEに割り当てる。この様に割り当てられた状態を
図3に示す。
向にそれぞれp分割、q分割する。この様にして得られ
た(m/p)×(n/q)個の要素からなる小行列Aij
(以下、部分行列、と称す)を対応する位置のPEに割
り当てる。即ち、左からj番目で上からi番目の部分行
列は同じく左からj番目で上からi番目のPEに割り当
てる。そして、ベクトルXはq分割し、得られたn/q
個の要素からなる小ベクトルXi (以下、部分ベクト
ル、と称す)を対応する各列のPE全部に割り当てる。
即ち、上からi番目の部分ベクトルは左からi番目の列
の全PEに割り当てる。この様に割り当てられた状態を
図3に示す。
【0004】行列AとベクトルXの積の演算は、上述の
状態を実現して以下の過程により並列的に実行される。 過程i) 全てのPEは割り当てられた部分行列と部分
ベクトルの積を計算する。この結果、m/p個の要素か
らなる小ベクトルが得られる。この要素を部分積和と称
す。
状態を実現して以下の過程により並列的に実行される。 過程i) 全てのPEは割り当てられた部分行列と部分
ベクトルの積を計算する。この結果、m/p個の要素か
らなる小ベクトルが得られる。この要素を部分積和と称
す。
【0005】過程ii) 各PEは過程i)により得られた
部分積和を行方向の隣接PEに転送する。 過程iii) 各PEは、自身の計算結果である部分積和に
隣接PEから転送されてきた部分積和を順次加算し、転
送されてきた部分積和はそのまま隣接PEに転送する。
部分積和を行方向の隣接PEに転送する。 過程iii) 各PEは、自身の計算結果である部分積和に
隣接PEから転送されてきた部分積和を順次加算し、転
送されてきた部分積和はそのまま隣接PEに転送する。
【0006】過程iv) 行方向の各PEにおいて部分積
和の総和が得られるまで過程iii)を繰り返す。 ここで、例えば行列の上からm/p個の行とベクトルの
内積についてみると、これはPEアレイの最初の行の全
PEにおいて同時に得られる。この段階においては、m
行n列の行列とベクトルの積の演算が完了し、その結果
(m個の要素からなるベクトルY;各要素は内積)はP
Eアレイの各行に分散して得られる(各行のPEはm/
p個の要素を持つ)。以上の過程i)ないし過程iv)によ
り、結局、部分積和の総和である行列の各行(行ベクト
ル)とベクトルの内積(m/p個)が、PEアレイの対
応する行の全PEで同時に得られることになる。しか
し、このときPEアレイの行方向の各PEは部分積和の
総和の計算を重複して行っている。
和の総和が得られるまで過程iii)を繰り返す。 ここで、例えば行列の上からm/p個の行とベクトルの
内積についてみると、これはPEアレイの最初の行の全
PEにおいて同時に得られる。この段階においては、m
行n列の行列とベクトルの積の演算が完了し、その結果
(m個の要素からなるベクトルY;各要素は内積)はP
Eアレイの各行に分散して得られる(各行のPEはm/
p個の要素を持つ)。以上の過程i)ないし過程iv)によ
り、結局、部分積和の総和である行列の各行(行ベクト
ル)とベクトルの内積(m/p個)が、PEアレイの対
応する行の全PEで同時に得られることになる。しか
し、このときPEアレイの行方向の各PEは部分積和の
総和の計算を重複して行っている。
【0007】次に、行列B(h行m列)と上述のベクト
ルY(m個の要素)の積の演算について説明するに、先
ず行列Bを転置し(m行h列となる)、その転置行列を
行方向および列方向にそれぞれp分割、q分割し、部分
行列Bijを上述された割り当てと同様にPEに割り当て
る。ベクトルYについては直前の行列とベクトルの積の
結果(過程iv)の後)として自動的に、m/p個の要素
からなる部分ベクトルYi が対応する各行のPE全部に
割り当てられている。この様に割り当てられた状態は図
4に示される通りである。図4の如くに割り当てられて
いる部分行列と部分ベクトルに対して、上述の過程i)な
いし過程iv)の処理を行と列を入れ換えて実行すると
(列方向に部分積和を転送)、この行列とベクトルの積
ZはPEアレイの各列に分散して得られることになる。
更に、次の行列と以上で得られたベクトルの積は最初の
手順により得られることになる。即ち、以上の手順を交
互に繰り返すことにより行列とベクトルの積の繰り返し
演算が実現される。
ルY(m個の要素)の積の演算について説明するに、先
ず行列Bを転置し(m行h列となる)、その転置行列を
行方向および列方向にそれぞれp分割、q分割し、部分
行列Bijを上述された割り当てと同様にPEに割り当て
る。ベクトルYについては直前の行列とベクトルの積の
結果(過程iv)の後)として自動的に、m/p個の要素
からなる部分ベクトルYi が対応する各行のPE全部に
割り当てられている。この様に割り当てられた状態は図
4に示される通りである。図4の如くに割り当てられて
いる部分行列と部分ベクトルに対して、上述の過程i)な
いし過程iv)の処理を行と列を入れ換えて実行すると
(列方向に部分積和を転送)、この行列とベクトルの積
ZはPEアレイの各列に分散して得られることになる。
更に、次の行列と以上で得られたベクトルの積は最初の
手順により得られることになる。即ち、以上の手順を交
互に繰り返すことにより行列とベクトルの積の繰り返し
演算が実現される。
【0008】
【発明が解決しようとする課題】以上のことから、従来
の行列演算の並列処理方法は、行列とベクトルの積の演
算の内の過程i)の部分においてのみ全PEが並列的に
演算処理を実施しているに過ぎず、その他の部分である
過程ii)ないし過程iv)においては行或は列方向のPEの
数の並列性しか得られなかった。即ち、過程ii)ないし
過程iv)においては、行あるいは列方向の全てのPEは
全く同一の重複した演算処理を実行している。具体的に
は行列の各行とベクトルの内積である部分積和を総和す
る演算処理はこれらのPE全てが実行している。等価的
には、pq個のPEの内のp個あるいはq個のPEのみ
しか有効に機能していないことになり、PEの利用効率
は良くない。また、m/p個の部分積和をリング結合上
における距離(q−1)のPEまで送る必要があるの
で、PE間転送回数も(m/p)×(q−1)回という
多数回にも上り、PE数に見合った速度向上が得られて
いなかった。
の行列演算の並列処理方法は、行列とベクトルの積の演
算の内の過程i)の部分においてのみ全PEが並列的に
演算処理を実施しているに過ぎず、その他の部分である
過程ii)ないし過程iv)においては行或は列方向のPEの
数の並列性しか得られなかった。即ち、過程ii)ないし
過程iv)においては、行あるいは列方向の全てのPEは
全く同一の重複した演算処理を実行している。具体的に
は行列の各行とベクトルの内積である部分積和を総和す
る演算処理はこれらのPE全てが実行している。等価的
には、pq個のPEの内のp個あるいはq個のPEのみ
しか有効に機能していないことになり、PEの利用効率
は良くない。また、m/p個の部分積和をリング結合上
における距離(q−1)のPEまで送る必要があるの
で、PE間転送回数も(m/p)×(q−1)回という
多数回にも上り、PE数に見合った速度向上が得られて
いなかった。
【0009】この発明は、PEが重複した演算処理を行
なうことなく全PEが並列に動作してPEの利用効率が
高く、且つ、PE間転送回数を少なく行列とベクトルの
積の繰り返し演算処理を高速に実行する行列演算の並列
処理方法を提供するものである。
なうことなく全PEが並列に動作してPEの利用効率が
高く、且つ、PE間転送回数を少なく行列とベクトルの
積の繰り返し演算処理を高速に実行する行列演算の並列
処理方法を提供するものである。
【0010】
【課題を解決するための手段】複数の処理要素をp行q
列の2次元トーラス状に結合した並列計算機を用いてm
行n列より成る行列とn個の要素より成るベクトルの積
を繰り返し演算する行列演算の並列処理方法において、
処理要素の各々は、行列の行方向および列方向をそれぞ
れp分割、q分割して形成した(m/p)×(n/q)
個の行列の要素とq分割した(n/q)個のベクトルの
要素を割り付け、割り付けられた要素に対応する行の部
分積和の総和の計算を処理要素の各々に均等に担当させ
る第1の過程と、処理要素の各々において割り付けられ
た行列とベクトルの要素間について部分積和を計算する
第2の過程と、行方向のリング状結合処理要素を用いて
左(或は右)の処理要素が総和の計算を担当する行の部
分積和を右(或は左)隣の処理要素に転送する第3の過
程と、転送されてきた部分積和と自処理要素内のそれと
同一の行の部分積和の和を演算してその結果を隣接処理
要素に転送する第4の過程と、第4の過程を各行の部分
積和の総和が得られるまで繰り返す第5の過程と、得ら
れた結果を行方向のリング状結合処理要素を用いて行方
向の全ての処理要素に順次転送する第6の過程とを具備
し、一回の行列とベクトルの積の演算処理を完了して結
果のベクトルを得、次の行列と結果のベクトルの積の演
算は、行列を転置し行と列を入れ換えて上述された第1
の過程ないし第6の過程を実行する、行列演算の並列処
理方法を構成した。
列の2次元トーラス状に結合した並列計算機を用いてm
行n列より成る行列とn個の要素より成るベクトルの積
を繰り返し演算する行列演算の並列処理方法において、
処理要素の各々は、行列の行方向および列方向をそれぞ
れp分割、q分割して形成した(m/p)×(n/q)
個の行列の要素とq分割した(n/q)個のベクトルの
要素を割り付け、割り付けられた要素に対応する行の部
分積和の総和の計算を処理要素の各々に均等に担当させ
る第1の過程と、処理要素の各々において割り付けられ
た行列とベクトルの要素間について部分積和を計算する
第2の過程と、行方向のリング状結合処理要素を用いて
左(或は右)の処理要素が総和の計算を担当する行の部
分積和を右(或は左)隣の処理要素に転送する第3の過
程と、転送されてきた部分積和と自処理要素内のそれと
同一の行の部分積和の和を演算してその結果を隣接処理
要素に転送する第4の過程と、第4の過程を各行の部分
積和の総和が得られるまで繰り返す第5の過程と、得ら
れた結果を行方向のリング状結合処理要素を用いて行方
向の全ての処理要素に順次転送する第6の過程とを具備
し、一回の行列とベクトルの積の演算処理を完了して結
果のベクトルを得、次の行列と結果のベクトルの積の演
算は、行列を転置し行と列を入れ換えて上述された第1
の過程ないし第6の過程を実行する、行列演算の並列処
理方法を構成した。
【0011】この様な行列とベクトルの要素の割りつ
け、総和計算の割りつけ、処理手順を採用することによ
り全ての処理は全PEで重複することなく並列的に行わ
れることになる。即ち、部分積和の総和(行列の行とベ
クトルの内積)は各PEで重複することなく計算され、
必要とされるPE間転送の回数は従来の方法と比較して
大きく減少する。
け、総和計算の割りつけ、処理手順を採用することによ
り全ての処理は全PEで重複することなく並列的に行わ
れることになる。即ち、部分積和の総和(行列の行とベ
クトルの内積)は各PEで重複することなく計算され、
必要とされるPE間転送の回数は従来の方法と比較して
大きく減少する。
【0012】
【実施例】この発明の実施例を図5を参照して説明す
る。説明を簡単化するために、m=n=h=9、p=q
=3とし、3行3列のPEアレイにより先ず9行9列の
行列Aと9個の要素のベクトルXの積を計算し、次い
で、同様に9行9列の行列Bと先の行列AとベクトルX
の積である9個の要素より成るベクトルYの積を計算す
る例について説明する。
る。説明を簡単化するために、m=n=h=9、p=q
=3とし、3行3列のPEアレイにより先ず9行9列の
行列Aと9個の要素のベクトルXの積を計算し、次い
で、同様に9行9列の行列Bと先の行列AとベクトルX
の積である9個の要素より成るベクトルYの積を計算す
る例について説明する。
【0013】先ず、行列AとベクトルXの積の演算処理
について説明する。9行9列の行列Aを行方向および列
方向とも3分割して部分行列Aijを形成し、ベトクルX
を3分割して部分ベクトルXiを形成し、図5の如く各
PEに割りつける。図5において、PEijは第i行、第
j列のPEを表す。割りつけられた要素に対応する第i
行の部分積和の総和(行列の行ベクトルとベクトルの内
積であり、yiで表す)の演算処理は各PEに均等に担
当させる。具体的には、PE11にy1 、PE12にy2 、
PE13にy3 、PE21にy4 、PE22にy5 、PE23に
y6 、PE31にy7 、PE32にy8 、PE33にy9 をそ
れぞれ担当させる。
について説明する。9行9列の行列Aを行方向および列
方向とも3分割して部分行列Aijを形成し、ベトクルX
を3分割して部分ベクトルXiを形成し、図5の如く各
PEに割りつける。図5において、PEijは第i行、第
j列のPEを表す。割りつけられた要素に対応する第i
行の部分積和の総和(行列の行ベクトルとベクトルの内
積であり、yiで表す)の演算処理は各PEに均等に担
当させる。具体的には、PE11にy1 、PE12にy2 、
PE13にy3 、PE21にy4 、PE22にy5 、PE23に
y6 、PE31にy7 、PE32にy8 、PE33にy9 をそ
れぞれ担当させる。
【0014】この様な割り付けにおいて、各PEは、先
ず、割りつけられた行列とベクトルの要素間の部分積和
を計算する。例えば、PE11は、 a11×x1 +a12×x2 +a13×x3 =y11 a21×x1 +a22×x2 +a23×x3 =y21 a31×x1 +a32×x2 +a33×x3 =y31 を計算して部分積和y11を求める(一般に、yijはj列
目のPEが担当する行列のi行目の部分積和を表す)。
同様に、PE12は、 a14×x4 +a15×x5 +a16×x6 =y12 a24×x4 +a25×x5 +a26×x6 =y22 a34×x4 +a35×x5 +a36×x6 =y32 同様に、同じく、PE13は、 a17×x7+a18×x8+a19×x9=y13 a27×x7+a28×x8+a29×x9=y23 a37×x7+a38×x8+a39×x9=y33 を計算する。これらの計算は全PEで同時に並列的に行
われる(従来例の過程i)に対応)。
ず、割りつけられた行列とベクトルの要素間の部分積和
を計算する。例えば、PE11は、 a11×x1 +a12×x2 +a13×x3 =y11 a21×x1 +a22×x2 +a23×x3 =y21 a31×x1 +a32×x2 +a33×x3 =y31 を計算して部分積和y11を求める(一般に、yijはj列
目のPEが担当する行列のi行目の部分積和を表す)。
同様に、PE12は、 a14×x4 +a15×x5 +a16×x6 =y12 a24×x4 +a25×x5 +a26×x6 =y22 a34×x4 +a35×x5 +a36×x6 =y32 同様に、同じく、PE13は、 a17×x7+a18×x8+a19×x9=y13 a27×x7+a28×x8+a29×x9=y23 a37×x7+a38×x8+a39×x9=y33 を計算する。これらの計算は全PEで同時に並列的に行
われる(従来例の過程i)に対応)。
【0015】次に、過程ii)ないし過程iv)の処理を第1
行のPE1jの場合について、図6を参照して説明する。
なお、説明は省略するが他の行のPEについても同様で
ある。PE1jの初期の状態は図6(イ)の状態である。
各PE1jは行方向のリング状結合を用い、左隣のPE1j
が総和の計算を担当する行の部分積和を右隣りのPEに
転送する(逆方向でも可)。図6(イ)および(ロ)を
参照するに、PE11はその左隣のPEであるPE13(リ
ング状結合なので左隣のPEはPE13である)が総和を
担当する3行目の部分積和y31を、右隣りのPEである
PE12に転送する。同様に、PE12、PE13はそれぞれ
y12、y23をそれぞれPE13、PE11に転送する。これ
らの転送は同時に行われる(従来例の過程ii)に対
応)。 次に図6(ハ)を参照するに、各PE1jは転送
されてきた部分積和と自身のPE内のそれと同一行の部
分積和の和をとり、その結果を隣接PEに転送する。即
ち、PE11は、y23が送られてくるのでこれに同一行で
ある2行目の部分積和y21を加算し、その結果を隣接P
EであるPE12へ転送する。同様に、PE12はy31にy
32を加算してPE13に転送し、PE13はy12にy13を加
算してPE11に転送する(従来例の過程iii)に対応)。
これらの処理を各行の部分積和の総和(内積)が得られ
るまで繰り返す。この例の場合、図6(ニ)に示される
如く、PE11、PE12、PE13は、送られてきた加算結
果にそれぞれy11、y22、y33を加算することにより、
部分積和の総和y1 、y2 、y3 をそれぞれのPEに得
ることになる(従来例の過程iv)に対応)。この段階に
おいて、行列AとベクトルXの積の演算が終了し、その
結果(行列の各行とベクトルの内積であり、9個の要
素)は全PEに分散して配置されることになる。そし
て、以上の説明から明かな如く、処理は全PEで重複す
ることなく並列的に行われ、必要なPE間転送回数はこ
の例においては2回である(一般に、(1行のPE数−
1)×(1PEが担当するyiの数)=(q−1)m/
(pq)回)。
行のPE1jの場合について、図6を参照して説明する。
なお、説明は省略するが他の行のPEについても同様で
ある。PE1jの初期の状態は図6(イ)の状態である。
各PE1jは行方向のリング状結合を用い、左隣のPE1j
が総和の計算を担当する行の部分積和を右隣りのPEに
転送する(逆方向でも可)。図6(イ)および(ロ)を
参照するに、PE11はその左隣のPEであるPE13(リ
ング状結合なので左隣のPEはPE13である)が総和を
担当する3行目の部分積和y31を、右隣りのPEである
PE12に転送する。同様に、PE12、PE13はそれぞれ
y12、y23をそれぞれPE13、PE11に転送する。これ
らの転送は同時に行われる(従来例の過程ii)に対
応)。 次に図6(ハ)を参照するに、各PE1jは転送
されてきた部分積和と自身のPE内のそれと同一行の部
分積和の和をとり、その結果を隣接PEに転送する。即
ち、PE11は、y23が送られてくるのでこれに同一行で
ある2行目の部分積和y21を加算し、その結果を隣接P
EであるPE12へ転送する。同様に、PE12はy31にy
32を加算してPE13に転送し、PE13はy12にy13を加
算してPE11に転送する(従来例の過程iii)に対応)。
これらの処理を各行の部分積和の総和(内積)が得られ
るまで繰り返す。この例の場合、図6(ニ)に示される
如く、PE11、PE12、PE13は、送られてきた加算結
果にそれぞれy11、y22、y33を加算することにより、
部分積和の総和y1 、y2 、y3 をそれぞれのPEに得
ることになる(従来例の過程iv)に対応)。この段階に
おいて、行列AとベクトルXの積の演算が終了し、その
結果(行列の各行とベクトルの内積であり、9個の要
素)は全PEに分散して配置されることになる。そし
て、以上の説明から明かな如く、処理は全PEで重複す
ることなく並列的に行われ、必要なPE間転送回数はこ
の例においては2回である(一般に、(1行のPE数−
1)×(1PEが担当するyiの数)=(q−1)m/
(pq)回)。
【0016】次に、分散して配置されている行列とベク
トルの積の演算結果を行方向のリング状結合を用い、行
方向の全PEに順次転送する。具体的には、この例にお
ける第1行目のPEについて説明すると、まずPE11、
PE12、PE13はそれぞれ内積y1 、y2 、y3 を隣接
PEであるPE12、PE13、PE11に転送する。これら
PE11、PE12、PE13は送られてきた内積y3 、
y1 、y2 を再び隣接PEに転送する。一般に、この転
送は行方向の全PEに各PEの有する内積が行き渡るま
で繰り返される。この段階で、第1行目の各PEはすべ
てy1 、y2 、y3を持つことになる。これは他の行に
ついても同様である。即ち、PEアレイの各行のPEは
行方向のリング状結合を用い、自身の持つ内積を行方向
の隣接PEに2回転送すると、同一行のPEは3個づつ
の同じ内積をもつことになる。この転送回数は一般に
は、(1行のPE数−1)×(1PEが担当するyi の
数)=(q−1)m/(pq)回である。即ち、この発
明は行列とベクトルの積の演算に必要となるPE間転送
回数は1演算当たり総計2(q−1)m/(pq)回と
少ない。この段階において、次の行列Bとこの演算結果
であるベクトルYの積の演算のための準備が整ったこと
になる(従来例の過程v)に対応)。
トルの積の演算結果を行方向のリング状結合を用い、行
方向の全PEに順次転送する。具体的には、この例にお
ける第1行目のPEについて説明すると、まずPE11、
PE12、PE13はそれぞれ内積y1 、y2 、y3 を隣接
PEであるPE12、PE13、PE11に転送する。これら
PE11、PE12、PE13は送られてきた内積y3 、
y1 、y2 を再び隣接PEに転送する。一般に、この転
送は行方向の全PEに各PEの有する内積が行き渡るま
で繰り返される。この段階で、第1行目の各PEはすべ
てy1 、y2 、y3を持つことになる。これは他の行に
ついても同様である。即ち、PEアレイの各行のPEは
行方向のリング状結合を用い、自身の持つ内積を行方向
の隣接PEに2回転送すると、同一行のPEは3個づつ
の同じ内積をもつことになる。この転送回数は一般に
は、(1行のPE数−1)×(1PEが担当するyi の
数)=(q−1)m/(pq)回である。即ち、この発
明は行列とベクトルの積の演算に必要となるPE間転送
回数は1演算当たり総計2(q−1)m/(pq)回と
少ない。この段階において、次の行列Bとこの演算結果
であるベクトルYの積の演算のための準備が整ったこと
になる(従来例の過程v)に対応)。
【0017】次に、行列BとベクトルYの積の演算処理
は、行列Bを転置して、上述の処理において行と列を入
れ換えて実行する。図7を参照するに、先ず、9行9列
の行列Bを転置し、行方向および列方向の双方向共に3
分割して部分行列Bijを形成し、各PEに割りつける。
ベクトルYは先の演算処理により自動的に同図のように
配置されている。割りつけられた要素に対応する行の部
分積和の総和(第i行の総和をziで表す)の計算は、
PE11にz1 、PE12にz4 、PE13にz7 、PE21に
z2 、PE22にz5 、PE23にz8 、PE31にz3 、P
E32にz6 、PE33にz9 をそれぞれ担当させる。この
割り付けにおいて、各PEは、先ず割りつけられた行列
とベクトルの要素間の部分積和を計算する。例えば、P
E11は、 b11×y1 +b12×y2 +b13×y3 =z11 b21×y1 +b22×y2 +b23×y3 =z21 b31×y1 +b32×y2 +b33×y3 =z31 を計算し、その結果を部分積和z11(zijはj列目のP
Eが担当する転置する前の行列のi行目の部分積和を表
す)に格納する。同様に、PE21は、 b14×y4 +b15×y5 +b16×y6 =z12 b24×y4 +b25×y5 +b26×y6 =z22 b34×y4 +b35×y5 +b36×y6 =z32 を計算する。
は、行列Bを転置して、上述の処理において行と列を入
れ換えて実行する。図7を参照するに、先ず、9行9列
の行列Bを転置し、行方向および列方向の双方向共に3
分割して部分行列Bijを形成し、各PEに割りつける。
ベクトルYは先の演算処理により自動的に同図のように
配置されている。割りつけられた要素に対応する行の部
分積和の総和(第i行の総和をziで表す)の計算は、
PE11にz1 、PE12にz4 、PE13にz7 、PE21に
z2 、PE22にz5 、PE23にz8 、PE31にz3 、P
E32にz6 、PE33にz9 をそれぞれ担当させる。この
割り付けにおいて、各PEは、先ず割りつけられた行列
とベクトルの要素間の部分積和を計算する。例えば、P
E11は、 b11×y1 +b12×y2 +b13×y3 =z11 b21×y1 +b22×y2 +b23×y3 =z21 b31×y1 +b32×y2 +b33×y3 =z31 を計算し、その結果を部分積和z11(zijはj列目のP
Eが担当する転置する前の行列のi行目の部分積和を表
す)に格納する。同様に、PE21は、 b14×y4 +b15×y5 +b16×y6 =z12 b24×y4 +b25×y5 +b26×y6 =z22 b34×y4 +b35×y5 +b36×y6 =z32 を計算する。
【0018】次に、過程ii)ないし過程iv)の処理を行と
列を入れ換えて図6と同様に実行する。各PEは列方向
のリング状結合を用い、上隣のPEが総和の計算を担当
する行の部分積和を下隣りのPEに転送する(逆方向も
可)。例えば、第1列目のPEについては、PE11は、
その上隣のPEであるPE31(リング状結合なので上隣
のPEはPE31である)が総和を担当する行である3行
目の部分積和z31を下隣りのPEであるPE21に転送す
る。同様に、PE21、PE31はそれぞれz12、z23をそ
れぞれPE31、PE11に転送する。
列を入れ換えて図6と同様に実行する。各PEは列方向
のリング状結合を用い、上隣のPEが総和の計算を担当
する行の部分積和を下隣りのPEに転送する(逆方向も
可)。例えば、第1列目のPEについては、PE11は、
その上隣のPEであるPE31(リング状結合なので上隣
のPEはPE31である)が総和を担当する行である3行
目の部分積和z31を下隣りのPEであるPE21に転送す
る。同様に、PE21、PE31はそれぞれz12、z23をそ
れぞれPE31、PE11に転送する。
【0019】次に、各PEは転送されてきた部分積和と
自身のそれと同一の行の部分積和の和をとり、その結果
を隣接PEに転送する。即ち、PE11は、z23が送られ
てくるので、それと同一の行である2行目の部分積和z
21を加算し、その結果を隣接PEであるPE21へ転送す
る。同様にPE21はz31にz32を加算してPE31に転送
し、PE31はz12にz13を加算してPE11に転送する。
この処理を各行の部分積和の総和(内積)が得られるま
で繰り返す。この例の場合、PE11、PE21、PE
31は、送られてきた加算結果にそれぞれz11、z22、z
33を加算することにより、部分積和の総和z1 、z2 、
z3 をそれぞれのPE内に得ることになる。この段階に
おいて、行列BとベクトルYの積の演算処理は完了し、
その結果は全PEに分散して配置されたこととなる。
自身のそれと同一の行の部分積和の和をとり、その結果
を隣接PEに転送する。即ち、PE11は、z23が送られ
てくるので、それと同一の行である2行目の部分積和z
21を加算し、その結果を隣接PEであるPE21へ転送す
る。同様にPE21はz31にz32を加算してPE31に転送
し、PE31はz12にz13を加算してPE11に転送する。
この処理を各行の部分積和の総和(内積)が得られるま
で繰り返す。この例の場合、PE11、PE21、PE
31は、送られてきた加算結果にそれぞれz11、z22、z
33を加算することにより、部分積和の総和z1 、z2 、
z3 をそれぞれのPE内に得ることになる。この段階に
おいて、行列BとベクトルYの積の演算処理は完了し、
その結果は全PEに分散して配置されたこととなる。
【0020】次に、分散配置されている行列とベクトル
の積の演算結果を列方向のリング状結合を用い、上述と
同様に列方向の全PEに順次転送する。この段階におい
て、次の行列とこの演算結果であるベクトルZの積の演
算処理の準備が整ったことになり、以後同様の演算処理
を繰り返す。即ち、以上の処理を交互に繰り返すことに
より、行列とベクトルの積の繰り返し演算が実行される
こととなる。
の積の演算結果を列方向のリング状結合を用い、上述と
同様に列方向の全PEに順次転送する。この段階におい
て、次の行列とこの演算結果であるベクトルZの積の演
算処理の準備が整ったことになり、以後同様の演算処理
を繰り返す。即ち、以上の処理を交互に繰り返すことに
より、行列とベクトルの積の繰り返し演算が実行される
こととなる。
【0021】説明を簡単化するためにm=n=h=9、
p=q=3の例を採用して説明したのであるが、m、
n、hおよびp、qは互いに異なる数値であっても差し
支えないことは言うまでもない。
p=q=3の例を採用して説明したのであるが、m、
n、hおよびp、qは互いに異なる数値であっても差し
支えないことは言うまでもない。
【0022】
【発明の効果】この発明は、以上の通りのPEに対する
行列とベクトルの要素の割りつけおよび演算処理手順を
採用することにより、部分積和の計算を含めて全ての処
理を重複することなく並列的に実行するものであり、そ
して必要とされるPE間転送回数も従来例と比較して大
幅に削減することができる。従って、PEの使用効率が
高く高速な演算処理を行列とベクトルの積の繰り返し演
算についてが実現することができる。この種の演算はニ
ューラルネットの演算処理の大部分を占めるところか
ら、この発明をニューラルコンピュータに適用して大き
な効果を期待することができる。
行列とベクトルの要素の割りつけおよび演算処理手順を
採用することにより、部分積和の計算を含めて全ての処
理を重複することなく並列的に実行するものであり、そ
して必要とされるPE間転送回数も従来例と比較して大
幅に削減することができる。従って、PEの使用効率が
高く高速な演算処理を行列とベクトルの積の繰り返し演
算についてが実現することができる。この種の演算はニ
ューラルネットの演算処理の大部分を占めるところか
ら、この発明をニューラルコンピュータに適用して大き
な効果を期待することができる。
【図1】並列計算機(PEアレイ)を示す図。
【図2】行列とベクトルの分割の仕方を示す図。
【図3】部分行列と部分ベクトルのPEアレイへの割り
つけの仕方を示す図。
つけの仕方を示す図。
【図4】部分行列と部分ベクトルのPEアレイへの割り
つけを示す図。
つけを示す図。
【図5】最初の行列とベクトルの積の演算の場合の部分
行列と部分ベクトルのPEアレイへの割りつけを示す
図。
行列と部分ベクトルのPEアレイへの割りつけを示す
図。
【図6】部分積和の総和の計算手順を示す図。
【図7】次の行列とベクトルの積の演算の場合の部分行
列と部分ベクトルのPEアレイへの割りつけ示す図。
列と部分ベクトルのPEアレイへの割りつけ示す図。
PE 処理要素 A m行n列より成る行列 X n個の要素より成るベクトル Aij 部分行列 Xj 部分ベクトル
Claims (1)
- 【請求項1】 複数の処理要素をp行q列の2次元トー
ラス状に結合した並列計算機を用いてm行n列より成る
行列とn個の要素より成るベクトルの積を繰り返し演算
する行列演算の並列処理方法において、 処理要素の各々は、 行列の行方向および列方向をそれぞれp分割、q分割し
て形成した(m/p)×(n/q)個の行列の要素とq
分割した(n/q)個のベクトルの要素を割り付け、割
り付けられた要素に対応する行の部分積和の総和の計算
を処理要素の各々に均等に担当させる第1の過程と、 処理要素の各々において割り付けられた行列とベクトル
の要素間について部分積和を計算する第2の過程と、 行方向のリング状結合処理要素を用いて左(或は右)の
処理要素が総和の計算を担当する行の部分積和を右(或
は左)隣の処理要素に転送する第3の過程と、 転送されてきた部分積和と自処理要素内のそれと同一の
行の部分積和の和を演算してその結果を隣接処理要素に
転送する第4の過程と、 第4の過程を各行の部分積和の総和が得られるまで繰り
返す第5の過程と、 得られた結果を行方向のリング状結合処理要素を用いて
行方向の全ての処理要素に順次転送する第6の過程とを
具備し、 一回の行列とベクトルの積の演算処理を完了して結果の
ベクトルを得、 次の行列と結果のベクトルの積の演算は、行列を転置し
行と列を入れ換えて上述された第1の過程ないし第6の
過程を実行する、 ことを特徴とする行列演算の並列処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33014092A JPH06175986A (ja) | 1992-12-10 | 1992-12-10 | 行列演算の並列処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33014092A JPH06175986A (ja) | 1992-12-10 | 1992-12-10 | 行列演算の並列処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06175986A true JPH06175986A (ja) | 1994-06-24 |
Family
ID=18229265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33014092A Pending JPH06175986A (ja) | 1992-12-10 | 1992-12-10 | 行列演算の並列処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06175986A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090769A (ja) * | 2006-10-05 | 2008-04-17 | Nippon Telegr & Teleph Corp <Ntt> | 並列演算方法、演算装置、および演算装置用プログラム |
JP2009199430A (ja) * | 2008-02-22 | 2009-09-03 | Fujitsu Ltd | ベクトル積の並列処理方法 |
KR20140007919A (ko) * | 2011-02-23 | 2014-01-20 | 이카노스 커뮤니케이션스, 인크. | 디 에스 엘 벡터 소거를 파티셔닝하는 시스템 및 방법 |
KR20170103949A (ko) * | 2015-02-06 | 2017-09-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법 |
EP3370162A2 (en) | 2017-02-24 | 2018-09-05 | Fujitsu Limited | Computing method, information processing apparatus, computing program, and information processing system |
JP2021508125A (ja) * | 2017-12-29 | 2021-02-25 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 行列乗算器 |
CN113536220A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器及相关产品 |
-
1992
- 1992-12-10 JP JP33014092A patent/JPH06175986A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090769A (ja) * | 2006-10-05 | 2008-04-17 | Nippon Telegr & Teleph Corp <Ntt> | 並列演算方法、演算装置、および演算装置用プログラム |
JP2009199430A (ja) * | 2008-02-22 | 2009-09-03 | Fujitsu Ltd | ベクトル積の並列処理方法 |
KR20140007919A (ko) * | 2011-02-23 | 2014-01-20 | 이카노스 커뮤니케이션스, 인크. | 디 에스 엘 벡터 소거를 파티셔닝하는 시스템 및 방법 |
JP2014508474A (ja) * | 2011-02-23 | 2014-04-03 | イカノス・コミュニケーションズ・インコーポレイテッド | Dslベクトル・キャンセルを分割するためのシステムおよび方法 |
US10567494B2 (en) | 2015-02-06 | 2020-02-18 | Huawei Technologies Co., Ltd. | Data processing system, computing node, and data processing method |
JP2018508887A (ja) * | 2015-02-06 | 2018-03-29 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ処理システム、計算ノードおよびデータ処理方法 |
KR20170103949A (ko) * | 2015-02-06 | 2017-09-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법 |
EP3370162A2 (en) | 2017-02-24 | 2018-09-05 | Fujitsu Limited | Computing method, information processing apparatus, computing program, and information processing system |
EP3370162A3 (en) * | 2017-02-24 | 2018-09-12 | Fujitsu Limited | Computing method, information processing apparatus, computing program, and information processing system |
US10558730B2 (en) | 2017-02-24 | 2020-02-11 | Fujitsu Limited | Computing method, information processing apparatus, computing program, and information processing system |
JP2021508125A (ja) * | 2017-12-29 | 2021-02-25 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 行列乗算器 |
US11334648B2 (en) | 2017-12-29 | 2022-05-17 | Huawei Technologies Co., Ltd. | Matrix multiplier |
US11934481B2 (en) | 2017-12-29 | 2024-03-19 | Huawei Technologies Co., Ltd. | Matrix multiplier |
CN113536220A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器及相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6405185B1 (en) | Massively parallel array processor | |
EP0479102A2 (en) | Multidimensional systolic array processing apparatus and method | |
Hendrickson et al. | An efficient parallel algorithm for matrix-vector multiplication | |
Lin et al. | Algorithmic mapping of neural network models onto parallel SIMD machines | |
US4701876A (en) | Digital data processor for multiplying data by a coefficient set | |
Das et al. | A new network topology with multiple meshes | |
JPH06175986A (ja) | 行列演算の並列処理方法 | |
JPH04232562A (ja) | コンピユータ装置 | |
Galkowski | Elementary operation approach to state-space realizations of 2-D systems | |
JPH05346914A (ja) | ニューロプロセッサ | |
US6718465B1 (en) | Reconfigurable inner product processor architecture implementing square recursive decomposition of partial product matrices | |
US5530953A (en) | Apparatus for relocating spatial information for use in data exchange in a parallel processing environment | |
JPH05265996A (ja) | ニューロコンピュータ | |
JPS6373472A (ja) | 積和演算方法 | |
JPH02266458A (ja) | ニューラルネットワークシミュレーション装置 | |
Amin et al. | Two-ring systolic array network for artificial neural networks | |
Merry et al. | A constant time sorting algorithm for a three dimensional reconfigurable mesh and reconfigurable network | |
Utku et al. | Parallel solution of closely coupled systems | |
Nunez et al. | A block algorithm for the algebraic path problem and its execution on a systolic array | |
Kumar et al. | Algorithmic mapping of neural network models onto parallel SIMD machines | |
JPH05242053A (ja) | 並列データ処理装置 | |
JPH06110864A (ja) | 学習処理装置 | |
Siegel et al. | Parallel Image Correlation | |
JPS61235974A (ja) | プロセシングエレメントのデ−タ転送方法 | |
JPH03262076A (ja) | 並列データ処理装置 |