(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムであって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換する変換手段と、前記変換手段で変換された前記ＪＡＤ形式の行列を記憶する記憶手段と、前記記憶手段に記憶した前記ＪＡＤ形式の行列とベクトルとの積を前記複数のプロセッサ各々に演算させるよう制御する制御手段とを有し、
前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記記憶手段に記憶するようにし、
前記変換手段は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換することを特徴とする行列ベクトル積演算システム。
【請求項２】
前記小行列各々のサイズが一定である時に当該小行列を前記変換手段で前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記記憶手段に記憶させるようにしたことを特徴とする請求項１記載の行列ベクトル積演算システム。
【請求項３】
前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記変換手段で前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする請求項１記載の行列ベクトル積演算システム。
【請求項４】
前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記変換手段で前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする請求項１記載の行列ベクトル積演算システム。
【請求項５】
複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて前記行列を格納する行列格納システムであって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換された後に格納する格納手段を有し、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記格納手段に格納するようにし、
前記ＪＡＤ形式の行列への変換は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換することを特徴とする行列格納システム。
【請求項６】
前記小行列各々のサイズが一定である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記格納手段に格納するようにしたことを特徴とする請求項５記載の行列格納システム。
【請求項７】
前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記格納手段に格納するようにしたことを特徴とする請求項５記載の行列格納システム。
【請求項８】
前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記格納手段に格納するようにしたことを特徴とする請求項５記載の行列格納システム。
【請求項９】
複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算するための行列ベクトル積演算方法であって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換するステップと、その変換された前記ＪＡＤ形式の行列を記憶手段に記憶させるステップと、前記記憶手段に記憶された前記ＪＡＤ形式の行列とベクトルとの積を前記複数のプロセッサ各々に演算させるよう制御するステップとを有し、
前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記記憶手段に記憶するようにし、
前記ＪＡＤ形式の行列に変換させるステップは、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換することを特徴とする行列ベクトル積演算方法。
【請求項１０】
前記小行列各々のサイズが一定である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記記憶手段に記憶させるようにしたことを特徴とする請求項９記載の行列ベクトル積演算方法。
【請求項１１】
前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする請求項９記載の行列ベクトル積演算方法。
【請求項１２】
前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする請求項９記載の行列ベクトル積演算方法。
【請求項１３】
複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて前記行列を格納するための行列格納方法であって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換された後に格納手段に格納するステップを有し、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記格納手段に格納するようにし、
前記ＪＡＤ形式の行列への変換は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換することを特徴とする行列格納方法。
【請求項１４】
前記小行列各々のサイズが一定である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記格納手段に格納するようにしたことを特徴とする請求項１３記載の行列格納方法。
【請求項１５】
前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記格納手段に格納するようにしたことを特徴とする請求項１３記載の行列格納方法。
【請求項１６】
前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換し、その変換した前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記格納手段に格納するようにしたことを特徴とする請求項１３記載の行列格納方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は行列ベクトル積演算システム及びそれに用いる行列格納システム並びにそれらの方法に関し、特に２台以上のプロセッサを持つ共有メモリベクトル並列計算機上でランダムスパースな行列とベクトルとの積の計算を高速に実行するためのシステムに関する。
【０００２】
【従来の技術】
一般に、有限要素法による構造解析、流体解析のシミュレーションにおいては、まず、解を求める領域を三角形等の有限要素と呼ばれる小領域に分割する。その分割された小領域上に配置される点は格子点と呼ばれ、その格子上で支配方程式である偏微分方程式が離散化され、連立一次方程式が生成される。この連立一次方程式の解を求め、その解を微分方程式の近似解とする。
【０００３】
有限要素法によって離散化されて生成された行列は、一般的にランダムスパース行列になる。近年、そのような係数行列をもつ連立一次方程式は反復法を適用することによって、求解されることが多く、実用問題では大型の共有メモリ並列ベクトル計算機が使われることが多い。また、その行列はＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式と呼ばれるデータ構造で格納されることが多い。
【０００４】
図１８はこのＣＲＳ形式と呼ばれるデータ構造の記憶順序を示す図である。図１８において、ＣＲＳ形式と呼ばれるデータ構造ではデータが行毎に、矢印の向きの順序（図では左から右の順序）で配列に記憶されるようになっている。また、ＣＲＳ形式と呼ばれるデータ構造では行の区切りを示す配列と非ゼロ小行列の行番号を記憶する配列と非ゼロ小行列の行列の成分を記憶する配列とを必要とする。
【０００５】
実際の問題では１格子点上に複数の未知数が与えられていることが多い。例えば、構造解析では１格子点上に３方向の変位が未知数として与えられている。通常、それらをまとめて１つの小行列として処理し、全体の行列を小行列からなる行列として処理することで、高速で安定した連立一次の解法を構成することができる。
【０００６】
また、反復法として共役勾配法系統の反復法がよく使われ、その反復法の主要な計算時間は行列ベクトル積の計算時間であることが知られている。それゆえ、行列ベクトル積の計算時間を短くすることで、連立一次方程式の求解に必要な計算時間を短くすることができる。
【０００７】
１台のプロセッサだけで構成されるベクトル計算機で高速に行列ベクトル積を計算するための手法として、受取った行列のデータ構造をＣＲＳ形式からＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式に変換し、ベクトル長を長くした後に演算を行う方法が知られている。
【０００８】
図１９はこのＪＡＤ形式と呼ばれるデータ構造の記憶順序を示す図である。図１９において、ＪＡＤ形式と呼ばれるデータ構造ではデータが非ゼロ行列の個数の大きい順に並べ替えた後、列毎に、矢印の向きの順序（図では上から下の順序）で配列に記憶されるようになっている。また、ＪＡＤ形式と呼ばれるデータ構造では列の区切りを示す配列と非ゼロ小行列の列番号を記憶する配列と非ゼロ小行列の行列の各成分を記憶する配列とを必要とする。
【０００９】
複数台のプロセッサから構成される共有メモリベクトル計算機では、高速に行列ベクトル積を実行する方法として、図２０に示すように、行列のデータ構造をＪＡＤ形式に変換してベクトル長を長くした後に、それを各プロセッサに均等の長さできり分けて処理を行う方法が取られている。
【００１０】
すなわち、ＣＲＳ形式の行列が入力されると（図２０ステップＳ５１）、ＣＲＳ形式からＪＡＤ形式への変換が行われ（図２０ステップＳ５２）、ＪＡＤ形式の行列が出力される（図２０ステップＳ５３）。
【００１１】
このＪＡＤ形式の行列とベクトルとが入力されると（図２０ステップＳ５４）、ＪＡＤ形式の行列を使った行列ベクトル積の演算が行われ（図２０ステップＳ５５）、行列ベクトル積を実行した結果のベクトルが出力される（図２０ステップＳ５６）。
【００１２】
図２１に従来の変換法の詳細なフローを示し、図２２に行列ベクトル積の処理の詳細なフローを示す。図２２に示すように、従来の方法は１回の行列ベクトル積の演算に対し、行あたりの最大非ゼロ行列個数回の同期を必要としており、演算の処理量に対して同期のオーバヘッドが表面化し、行列ベクトル積の演算速度が低下してしまう。
【００１３】
従来の変換法では、ＣＲＳ形式の行列が入力されると（図２１ステップＳ６１）、あるサイズの小行列のみの小行列が各行集められ（図２１ステップＳ６２）、各行の非ゼロ行列の個数が数えられ、各行、その個数が記憶される（図２１ステップＳ６３）。
【００１４】
その後、記憶された個数の多い順で各行が入替えられ（図２１ステップＳ６４）、行毎に連続して記憶されているＣＲＳ形式が列毎に連続して記憶される（図２１ステップＳ６５）。上記の処理はすべてのサイズが処理されるまで繰返し行われ（図２１ステップＳ６２〜Ｓ６６）、すべてのサイズが処理されると、ＪＡＤ形式の行列が出力される（図２１ステップＳ６７）。
【００１５】
一方、行列ベクトル積の処理では、ＪＡＤ形式の行列及びベクトルが入力されると（図２２ステップＳ７１）、あるサイズの小行列のみＪＡＤ形式の行列で、ある１列に関して、その１列に含まれる非ゼロ小行列の個数をプロセッサ数で割った個数分だけ、各プロセッサが小行列とベクトルとの積を計算し、その結果を格納する（図２２ステップＳ７２）。その後に、各プロセッサが同期をとる（図２２ステップＳ７３）。
【００１６】
上記の処理はすべての列に関して処理が完了するまで行われ（図２２ステップＳ７２〜Ｓ７４）、すべての列に関して処理が完了すると、さらに全体の行列を構成するすべてのサイズを処理するまで繰返し行われる（図２２ステップＳ７２〜Ｓ７５）。すべてのサイズが処理されると、行列ベクトル積を実行した結果のベクトルＹが出力される（図２２ステップＳ７６）。
【００１７】
【発明が解決しようとする課題】
共有メモリベクトル並列計算機上での行列ベクトル積の計算時間は、行列ベクトル積の演算時間と同期にかかる時間とからなる。共有メモリベクトル並列計算機上でランダムスパース行列とベクトルとの積を高速に実行する方法として、行列をＪＡＤ形式と呼ばれる構造に変換した後、行列ベクトル積を実行する方法が知られている。
【００１８】
ところが、その方法では１列の計算毎にプロセッサ同士が同期をとる必要がある。つまり、行列ベクトル積だけで１行あたりの非ゼロ行列の最大個数回同期をとる必要がある。それゆえ、行列ベクトル積の全体の計算時間が長くなってしまい、行列ベクトル積の並列実行効率が低下してしまう。
【００１９】
そこで、本発明の目的は上記の問題点を解消し、同期回数を減らし、共有メモリベクトル並列計算機上でランダムスパース行列とベクトルとの積を高速に実行することができる行列ベクトル積演算システム及びそれに用いる行列格納システム並びにそれらの方法を提供することにある。
【００２０】
【課題を解決するための手段】
本発明による行列ベクトル積演算システムは、複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムであって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換する変換手段と、前記変換手段で変換された前記ＪＡＤ形式の行列を記憶する記憶手段と、前記記憶手段に記憶した前記ＪＡＤ形式の行列とベクトルとの積を前記複数のプロセッサ各々に演算させるよう制御する制御手段とを備え、
前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記記憶手段に記憶するようにし、
前記変換手段は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換している。
【００２１】
本発明による行列格納システムは、複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて前記行列を格納する行列格納システムであって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換された後に格納する格納手段を有し、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記格納手段に格納するようにし、
前記ＪＡＤ形式の行列への変換は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換している。
【００２２】
本発明による行列ベクトル積演算方法は、複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算するための行列ベクトル積演算方法であって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換するステップと、その変換された前記ＪＡＤ形式の行列を記憶手段に記憶させるステップと、前記記憶手段に記憶された前記ＪＡＤ形式の行列とベクトルとの積を前記複数のプロセッサ各々に演算させるよう制御するステップとを備え、
前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記記憶手段に記憶するようにし、
前記ＪＡＤ形式の行列に変換させるステップは、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換している。
【００２３】
本発明による行列格納方法は、複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて前記行列を格納するための行列格納方法であって、
全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換された後に格納手段に格納するステップを有し、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記格納手段に格納するようにし、
前記ＪＡＤ形式の行列への変換は、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記行を並べ替え、並べ替えた前記行を一番目から順に前記複数のプロセッサ各々に割り振られた領域に循環式に割り当て、前記行を列単位で記憶することで前記ＪＡＤ形式のデータに変換している。
【００２４】
すなわち、本発明の行列ベクトル積演算システムは、演算処理を割当てるプロセッサ毎にＪＡＤ形式を構成し、同期の回数を低減することで、２台以上のプロセッサを持つ共有メモリベクトル並列計算機上で高速に行列ベクトル積を演算している。
【００２５】
より具体的に、本発明の行列ベクトル積計算システムは、２台以上の処理装置と、それらの処理装置が共有する１台の記憶装置と、装置全体を制御するための制御部とから構成し、行列ベクトル積の実行前に係数行列のデータ構造を、計算を割当てる各プロセッサ毎にＪＡＤ形式に変換している。
【００２６】
これによって、同期回数を減らすことが可能となり、係数行列の実行時間を従来のものよりも短くすることが可能となる。よって、共有メモリベクトル並列計算機上で動作する従来の行列ベクトル積計算システムよりも少ない同期回数で行列ベクトル積の演算を実行することが可能となる。
【００２７】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例による行列ベクトル積演算システムの構成を示すブロック図である。図１において、本発明の一実施例による行列ベクトル積演算システムは記憶装置１と、システム全体の制御部２と、複数（２台以上）のベクトル処理装置３−１〜３−ｎからなるベクトル演算処理装置群３とから構成されている。
【００２８】
記憶装置１は列の区切りの記憶部１１と、非ゼロ小行列の列番号の記憶部１２と、非ゼロ小行列の各成分の記憶部１３とから構成されており、そこに整数や実数や複素数を記憶することができる。
【００２９】
図２は図１の記憶装置１の詳細な構成例を示す図である。図２においては列の区切りの記憶部１１、非ゼロ小行列の列番号の記憶部１２、非ゼロ小行列の各成分の記憶部１３の詳細な構成を示している。すなわち、列の区切りの記憶部１１、非ゼロ小行列の列番号の記憶部１２、非ゼロ小行列の各成分の記憶部１３はそれぞれ１から順番に番号付けされており、それらはＮ次元の配列と１対１の対応付けがなされている。
【００３０】
例えば、４次元の配列の場合、第１成分を順番に増やし、次に第２成分を増やし、次に第３成分を増やし、次に第４成分を増やすというように、１から順番に番号付けがなされている。
【００３１】
本実施例においては、第１成分（Ｘ１）は小行列の番号（ＢＬＯＣＫ）に対応付けされており、第２成分（Ｘ２）は小行列の列番号（ＢＣＯＬ）に対応付けされており、第３成分（Ｘ３）は小行列の行番号（ＢＲＯＷ）に対応付けされており、第４成分（Ｘ４）はプロセッサ番号（ＰＥ：プロセッサエレメント）に対応付けされている。
【００３２】
つまり、Ｎ次元の配列を（Ｘ１，Ｘ２，Ｘ３，Ｘ４）［１≦Ｘ１≦Ｎ１，１≦Ｘ２≦Ｎ２，１≦Ｘ３≦Ｎ３，１≦Ｘ４≦Ｎ４］とすると、記憶部の「１」に対応して（１，１，１，１）が、「２」に（２，１，１，１）が、・・・、「Ｎ１」に（Ｎ１，１，１，１）が、「Ｎ１＋１」に（１，２，１，１）が、「Ｎ１＋２」に（２，２，１，１）が、・・・、「２＊Ｎ１」に（Ｎ１，２，１，１）が、・・・、「Ｎ１＊Ｎ２」に（Ｎ１，Ｎ２，１，１）が、「Ｎ１＊Ｎ２＋１」に（１，１，２，１）が、・・・、「Ｎ１＊Ｎ２＊Ｎ３」に（Ｎ１，Ｎ２，Ｎ３，１）が、「Ｎ１＊Ｎ２＊Ｎ３＋１」に（１，１，１，２）が、・・・、「Ｎ１＊Ｎ２＊Ｎ３＊Ｎ４」に（Ｎ１，Ｎ２，Ｎ３，Ｎ４）がそれぞれ記憶されている。
【００３３】
図３は図１の制御部２の制御方法を示すフローチャートである。この図３を参照して制御部２の制御方法の概要について説明する。尚、図３に示す処理動作は図示せぬ制御メモリのプログラムを制御部２が実行することで実現され、制御メモリとしてはＲＯＭ（リードオンリメモリ）やＩＣ（集積回路）メモリ等が使用可能である。
【００３４】
制御部２の制御は２つの部分から構成されている。まず、入力をＣＲＳ形式で与えられた行列とし、本システムで提案する計算を割当てる各プロセッサ（ベクトル処理装置３−１〜３−ｎ）毎にＪＡＤ形式を構成する形式に変換し、その変換を行った後の行列を出力とする。
【００３５】
次に、入力として、その変換を行った後の行列とベクトルとを受取り、各プロセッサが行列ベクトル積を演算し、演算結果を出力とする。尚、ＣＲＳ形式及びＪＡＤ形式は上述したように、図１８及び図１９に示すような順序で記憶する形式である。
【００３６】
すなわち、制御部２はＣＲＳ形式の行列が入力されると（図３ステップＳ１）、各プロセッサ（ベクトル処理装置３−１〜３−ｎ）毎にＣＲＳ形式から並列処理に向いた形式（ＪＡＤ形式）への変換を行い（図３ステップＳ２）、その変換された並列処理に向いた形式の行列を記憶装置１に出力する（図３ステップＳ３）。記憶装置１はその行列を記憶する。
【００３７】
次に、制御部２は各プロセッサ（ベクトル処理装置３−１〜３−ｎ）を制御して以下の処理を行わせる。ベクトル処理装置３−１〜３−ｎは並列処理に向いた形式の行列及びベクトルが入力されると（図３ステップＳ４）、並列処理に向いた形式の行列を使った行列ベクトル積の演算を行い（図３ステップＳ５）、行列ベクトル積の演算を実行した結果のベクトルを出力する（図３ステップＳ６）。
【００３８】
図４は本発明の一実施例によるデータ形式の変換の詳細な制御方法を示すフローチャートである。この図４を参照して本発明の一実施例によるデータ形式の変換の詳細な制御方法について説明する。尚、この図４に示す処理も制御部２が制御メモリのプログラムを実行することで実現される。
【００３９】
まず、制御部２では受取ったＣＲＳ形式の行列の中からあるサイズの小行列のみを抽出する（図４ステップＳ１１，Ｓ１２）。その後に、制御部２は計算を割当てる各プロセッサ（ベクトル処理装置３−１〜３−ｎ）毎に連続した領域を記憶装置１の中に確保する（図４ステップＳ１３）。
【００４０】
続いて、制御部２はあるサイズだけを抽出したＣＲＳ形式の行列の各行に各行の非ゼロ小行列の個数を数え、各行、その個数を記憶し（図４ステップＳ１４）、記憶した個数の多い順でサイクリックに、プロセッサに割当てられた記憶領域に割当て、割当てられた順に行を入替えて記憶する（図４ステップＳ１５）。
【００４１】
次に、制御部２は各プロセッサの領域に割当てられた行毎に連続して記憶しているＣＲＳ形式を列毎に連続して記憶することで各プロセッサ毎のＪＡＤ形式を構成することができる（図４ステップＳ１６）。制御部２は上記の処理をすべての種類の小行列サイズが終了するまで繰返し行い（図４ステップＳ１２〜Ｓ１７）、ＪＡＤ形式を構成する行列を並列処理に向いた形式の行列として出力する（図４ステップＳ１８）。
【００４２】
図５は本発明の一実施例による行列ベクトル積の演算の詳細な制御方法を示すフローチャートである。この図５を参照して本発明の一実施例による行列ベクトル積の演算の詳細な制御方法について説明する。尚、この図５に示す処理も制御部２が制御メモリのプログラムを実行することで実現される。
【００４３】
制御部２はベクトル処理演算装置群３のそれぞれのベクトル処理装置３−１〜３−ｎに対し、小行列のサイズがある特定のものだけを取出し、各プロセッサに割当てられたＪＡＤ形式の行列のすべての列に関して小行列とベクトルとの積を計算し、その計算結果を記憶装置１（結果ベクトル）に記憶する（図５ステップＳ２１，Ｓ２２）。
【００４４】
その後に、制御部２はベクトル処理演算装置群３の同期を取る（図５ステップＳ２３）。制御部２はそれらの操作をあらゆる大きさの小行列サイズのものの処理が完了するまで反復して実行し（図５ステップＳ２４）、行列ベクトル積の演算を実行した結果のベクトルＹを出力する（図５ステップＳ２５）。
【００４５】
ある特定のシミュレーションの場合、小行列の大きさが予め一定なものとして与えられることもある。その時の制御部２による詳細な制御方法を図６及び図７に示す。
【００４６】
図６は本発明の一実施例によるデータ形式の変換の詳細な制御方法を示すフローチャートである。この図６を参照して小行列の大きさが予め一定なものとして与えられた場合の本発明の一実施例によるデータ形式の変換の詳細な制御方法について説明する。尚、この図６に示す処理も制御部２が制御メモリのプログラムを実行することで実現される。
【００４７】
まず、制御部２では計算を割当てる各プロセッサ（ベクトル処理装置３−１〜３−ｎ）毎に連続した領域を記憶装置１の中に確保する（図６ステップＳ３１，Ｓ３２）。制御部２はＣＲＳ形式の行列の各行に各行の非ゼロ小行列の個数を数え、各行その個数を記憶する（図６ステップＳ３３）。
【００４８】
制御部２は記憶した個数の多い順でサイクリックに、プロセッサに割当てられた記憶領域に割当て、割当てられた順に行を入替えて記憶する（図６ステップＳ３４）。
【００４９】
制御部２は各プロセッサの領域に割当てられた行毎に連続して記憶しているＣＲＳ形式を列毎に連続して記憶することで、各プロセッサ毎のＪＡＤ形式を構成することができる（図６ステップＳ３５）。制御部２はＪＡＤ形式を構成する行列を並列処理に向いた形式の行列として出力する（図６ステップＳ３６）。
【００５０】
図７は本発明の一実施例による行列ベクトル積の演算の詳細な制御方法を示すフローチャートである。この図７を参照して本発明の一実施例による行列ベクトル積の演算の詳細な制御方法について説明する。尚、この図７に示す処理も制御部２が制御メモリのプログラムを実行することで実現される。
【００５１】
制御部２はベクトル処理演算装置群３のそれぞれのベクトル処理装置３−１〜３−ｎに対し、各プロセッサに割当てられたＪＡＤ形式の行列のすべての列に関して小行列とベクトルとの積を計算し、その結果を記憶装置１（結果ベクトル）に記憶する（図７ステップＳ４１，Ｓ４２）。その後に、制御部２はベクトル処理演算装置群３の同期をとり（図７ステップＳ４３）、行列ベクトル積の演算を実行した結果のベクトルＹを出力する（図７ステップＳ４４）。
【００５２】
図８は本発明の一実施例による行列ベクトル積演算システムの他の構成を示すブロック図である。図８において、行列ベクトル積演算システムの他の構成では図１に示す本発明の一実施例による行列ベクトル積演算システムと同様な構成の高速行列ベクトル積演算システム４ａ，４ｂをネットワーク５によって結合している。この構成では各々の制御部２ａ，２ｂにおいて本発明の一実施例と同様の動作を行うので、その詳細な動作については省略する。
【００５３】
図９は図１の記憶装置１における各記憶部の対応関係を示す図である。記憶装置１における各記憶部では、図２に示すように、第１成分が小行列の番号に対応付けされ、第２成分が小行列の列番号に対応付けされ、第３成分が小行列の行番号に対応付けされ、第４成分がプロセッサ番号に対応付けされているが、これらのような対応付けである必要はなく、図９に示すように、それらの対応を入替えたものであってもよい。
【００５４】
具体的には第１成分、第２成分、第３成分、第４成分が以下のものであってもよい。つまり、
（小行列の列番号、小行列の番号、小行列の行番号、プロセッサ番号）
［（ＢＣＯＬ，ＢＬＯＣＫ，ＢＲＯＷ，ＰＥ）］
（小行列の行番号、小行列の番号、小行列の列番号、プロセッサ番号）
［（ＢＲＯＷ，ＢＬＯＣＫ，ＢＣＯＬ，ＰＥ）］
（小行列の番号、小行列の行番号、小行列の列番号、プロセッサ番号）
［（ＢＬＯＣＫ，ＢＲＯＷ，ＢＣＯＬ，ＰＥ）］
（小行列の行番号、小行列の列番号、小行列の番号、プロセッサ番号）
［（ＢＲＯＷ，ＢＣＯＬ，ＢＬＯＣＫ，ＰＥ）］
（小行列の列番号、小行列の行番号、小行列の番号、プロセッサ番号）
［（ＢＣＯＬ，ＢＲＯＷ，ＢＬＯＣＫ，ＰＥ）］
（小行列の列番号、小行列の番号、プロセッサ番号、小行列の行番号）
［（ＢＣＯＬ，ＢＬＯＣＫ，ＰＥ，ＢＲＯＷ）］
（小行列の番号、小行列の列番号、プロセッサ番号、小行列の行番号）
［（ＢＬＯＣＫ，ＢＣＯＬ，ＰＥ，ＢＲＯＷ）］
（小行列の番号、小行列の行番号、プロセッサ番号、小行列の列番号）
［（ＢＬＯＣＫ，ＢＲＯＷ，ＰＥ，ＢＣＯＬ）］
（小行列の行番号、小行列の番号、プロセッサ番号、小行列の列番号）
［（ＢＲＯＷ，ＢＬＯＣＫ，ＰＥ，ＢＣＯＬ）］
（小行列の行番号、小行列の列番号、プロセッサ番号、小行列の番号）
［（ＢＲＯＷ，ＢＣＯＬ，ＰＥ，ＢＬＯＣＫ）］
（小行列の列番号、小行列の行番号、プロセッサ番号、小行列の番号）
［（ＢＣＯＬ，ＢＲＯＷ，ＰＥ，ＢＬＯＣＫ）］
（小行列の行番号、プロセッサ番号、小行列の列番号、小行列の番号）
［（ＢＲＯＷ，ＰＥ，ＢＣＯＬ，ＢＬＯＣＫ）］
（小行列の行番号、プロセッサ番号、小行列の番号、小行列の列番号）
［（ＢＲＯＷ，ＰＥ，ＢＬＯＣＫ，ＢＣＯＬ）］
（小行列の列番号、プロセッサ番号、小行列の行番号、小行列の番号）
［（ＢＣＯＬ，ＰＥ，ＢＲＯＷ，ＢＬＯＣＫ）］
（小行列の列番号、プロセッサ番号、小行列の番号、小行列の行番号）
［（ＢＣＯＬ，ＰＥ，ＢＬＯＣＫ，ＢＲＯＷ）］
（小行列の番号、プロセッサ番号、小行列の行番号、小行列の列番号）
［（ＢＬＯＣＫ，ＰＥ，ＢＲＯＷ，ＢＣＯＬ）］
（小行列の番号、プロセッサ番号、小行列の列番号、小行列の行番号）
［（ＢＬＯＣＫ，ＰＥ，ＢＣＯＬ，ＢＲＯＷ）］
（プロセッサ番号、小行列の番号、小行列の列番号、小行列の行番号）
［（ＰＥ，ＢＬＯＣＫ，ＢＣＯＬ，ＢＲＯＷ）］
（プロセッサ番号、小行列の番号、小行列の行番号、小行列の列番号）
［（ＰＥ，ＢＬＯＣＫ，ＢＲＯＷ，ＢＣＯＬ）］
（プロセッサ番号、小行列の列番号、小行列の番号、小行列の行番号）
［（ＰＥ，ＢＣＯＬ，ＢＬＯＣＫ，ＢＲＯＷ）］
（プロセッサ番号、小行列の列番号、小行列の行番号、小行列の番号）
［（ＰＥ，ＢＣＯＬ，ＢＲＯＷ，ＢＬＯＣＫ）］
（プロセッサ番号、小行列の行番号、小行列の番号、小行列の列番号）
［（ＰＥ，ＢＲＯＷ，ＢＬＯＣＫ，ＢＣＯＬ）］
（プロセッサ番号、小行列の行番号、小行列の列番号、小行列の番号）
［（ＰＥ，ＢＲＯＷ，ＢＣＯＬ，ＢＬＯＣＫ）］
というような対応付けであってもよい。
【００５５】
図１０は図１の記憶装置１における各記憶部の他の対応関係を示す図である。図１０においては各小行列のサイズが一定でかつ行数が１の場合の対応関係を示している。この場合、小行列の行番号に相当する成分（ＢＲＯＷ）を省略することもできる。
【００５６】
すなわち、
（小行列の番号、小行列の列番号、プロセッサ番号）
［（ＢＬＯＣＫ，ＢＣＯＬ，ＰＥ）］
（小行列の列番号、プロセッサ番号、小行列の番号）
［（ＢＣＯＬ，ＰＥ，ＢＬＯＣＫ）］
（小行列の列番号、小行列の番号、プロセッサ番号）
［（ＢＣＯＬ，ＢＬＯＣＫ，ＰＥ）］
（プロセッサ番号、小行列の番号、小行列の列番号）
［（ＰＥ，ＢＬＯＣＫ，ＢＣＯＬ）］
（プロセッサ番号、小行列の列番号、小行列の番号）
［（ＰＥ，ＢＣＯＬ，ＢＬＯＣＫ）］
というような対応付けが考えられる。
【００５７】
図１１は図１の記憶装置１における各記憶部の別の対応関係を示す図である。図１１においては各小行列のサイズが一定でかつ列数が１の場合の対応関係を示している。この場合、小行列の列番号に相当する成分（ＢＣＯＬ）を省略することもできる。
【００５８】
すなわち、
（小行列の番号、小行列の行番号、プロセッサ番号）
［（ＢＬＯＣＫ，ＢＲＯＷ，ＰＥ）］
（小行列の行番号、プロセッサ番号、小行列の番号）
［（ＢＲＯＷ，ＰＥ，ＢＬＯＣＫ）］
（小行列の行番号、小行列の番号、プロセッサ番号）
［（ＢＲＯＷ，ＢＬＯＣＫ，ＰＥ）］
（プロセッサ番号、小行列の番号、小行列の行番号）
［（ＰＥ，ＢＬＯＣＫ，ＢＲＯＷ）］
（プロセッサ番号、小行列の行番号、小行列の番号）
［（ＰＥ，ＢＲＯＷ，ＢＬＯＣＫ）］
というような対応付けが考えられる。
【００５９】
図１２は本発明の他の実施例による行列ベクトル積演算システムの構成を示すブロック図である。図１２において、本発明の他の実施例による行列ベクトル積演算システムは記憶装置１と、制御部２と、４台のベクトル処理装置３−１〜３−４からなるベクトル演算処理装置群３と、連立一次解法装置７とから構成されている。
【００６０】
本発明の他の実施例による行列ベクトル積演算システムでは制御部２が連立一次解法装置７に付属しており、連立一次解法装置７の前処理実行部と行列ベクトル積実行部とにつながっている。連立一次解法装置７としてはマルチカラー（ＭＣ）オーダリング機能を搭載した装置を使用しており、前処理実行部及び行列ベクトル積実行部以外に、内積実行部とベクトル和実行部とを備えている。
【００６１】
本発明の他の実施例においては、１格子点上に一様に３つの未知数が与えられている構造問題を離散化した結果から得られた連立一次方程式を解くようにした装置を示している。
【００６２】
図１３は本発明の他の実施例によるシステム評価結果を示す図であり、図１４は本発明の他の実施例と同様の構成における従来のシステム評価結果を示す図である。これら図１３及び図１４においては、縦軸にプロセッサ台数（ＰＥ１〜ＰＥ４）をとり、横軸には連立一次方程式の次元数（３０００，２４０００，８１０００，１９２０００）をとっており、その交差するところには連立一次方程式を求解するまでの時間を示している。
【００６３】
これら図１３及び図１４からわかるように、本発明の他の実施例による連立一次求解装置は従来の装置と比較し、次元数が「１９２０００」の時に約１．５８倍の速度向上を得ていることがわかる。その理由は従来の装置に比べて本発明の他の実施例による連立一次求解装置において同期の回数が低減しているために他ならない。
【００６４】
図１５は本発明の別の実施例による行列ベクトル積演算システムの構成を示すブロック図である。図１５において、本発明の別の実施例による行列ベクトル積演算システムは記憶装置１と、制御部２と、４台のベクトル処理装置３−１〜３−４からなるベクトル演算処理装置群３と、連立一次解法装置８とから構成されている。
【００６５】
本発明の他の実施例による行列ベクトル積演算システムでは制御部２が連立一次解法装置８に付属しており、連立一次解法装置８の前処理実行部と行列ベクトル積実行部とにつながっている。連立一次解法装置８としてはリバースカットヒルマッキー（ＲＣＭ）オーダリング機能を搭載した装置を使用しており、前処理実行部及び行列ベクトル積実行部以外に、内積実行部とベクトル和実行部とを備えている。
【００６６】
本発明の別の実施例においては、１格子点上に一様に３つの未知数が与えられている構造問題を離散化した結果から得られた連立一次方程式を解くようにした装置を示している。
【００６７】
図１６は本発明の別の実施例によるシステム評価結果を示す図であり、図１７は本発明の別の実施例と同様の構成における従来のシステム評価結果を示す図である。これら図１６及び図１７においては、縦軸にプロセッサ台数（ＰＥ１〜ＰＥ４）をとり、横軸には連立一次方程式の次元数（３０００，２４０００，８１０００，１９２０００）をとっており、その交差するところには連立一次方程式を求解するまでの時間を示している。
【００６８】
これら図１６及び図１７からわかるように、本発明の別の実施例による連立一次求解装置は従来の装置と比較し、次元数が「１９２０００」の時に、約１８．８倍の速度向上を得ていることがわかる。この理由は従来の装置に比べて本発明の別の実施例による連立一次求解装置において同期回数が低減しているために他ならない。
【００６９】
上述したように、従来の装置を搭載した連立一次解法装置に比べ、本発明のシステムを塔載した連立一次解法装置は、同期回数を大幅に減らしている。その結果、１９２０００の未知数を持つ連立一次方程式を、マルチカラーオーダリング機能を搭載したものでは約１．５８倍、リバースカットヒルマッキー（ＲＣＭ）オーダリング機能を搭載したものでは約１８．８倍の速度向上を獲得することができる。
【００７０】
尚、請求項の記載に関連して本発明はさらに次の態様をとりうる。
【００７１】
（１）複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算するための行列ベクトル積演算制御プログラムを記録した記録媒体であって、前記行列ベクトル積演算制御プログラムは制御部に、全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を記憶手段に記憶させ、前記記憶手段に記憶された前記ＪＡＤ形式の行列とベクトルとの積を前記複数のプロセッサ各々に演算させるよう制御させ、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記記憶手段に記憶させるようにしたことを特徴とする行列ベクトル積演算制御プログラムを記録した記録媒体。
【００７２】
（２）前記行列ベクトル積演算制御プログラムは前記制御部に、前記小行列各々のサイズが一定である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記記憶手段に記憶させるようにしたことを特徴とする（１）記載の行列ベクトル積演算制御プログラムを記録した記録媒体。
【００７３】
（３）前記行列ベクトル積演算制御プログラムは前記制御部に、前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする（１）記載の行列ベクトル積演算制御プログラムを記録した記録媒体。
【００７４】
（４）前記行列ベクトル積演算制御プログラムは前記制御部に、前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換された前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記記憶手段に記憶させるようにしたことを特徴とする（１）記載の行列ベクトル積演算制御プログラムを記録した記録媒体。
【００７５】
（５）前記行列ベクトル積演算制御プログラムは前記制御部に、前記ＪＡＤ形式の行列に変換させる際に、行方向に連続記憶されて構成されるＣＲＳ（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記複数のプロセッサ各々に割当てる領域に列単位で記憶することで前記ＪＡＤ形式のデータに変換するようにしたことを特徴とする（１）から（４）のいずれか記載の行列ベクトル積演算制御プログラムを記録した記録媒体。
【００７６】
（６）複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて前記行列を格納するための行列格納制御プログラムを記録した記録媒体であって、前記行列格納制御プログラムは制御部に、全体の行列からあるサイズの小行列のみに着目して当該小行列に対して前記複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  ｆｏｒｍａｔ）形式の行列に変換された後に格納手段に格納させ、前記全体の行列を構成するすべてのサイズの行列を前記ＪＡＤ形式の行列に変換して前記格納手段に格納させるようにしたことを特徴とする行列格納制御プログラムを記録した記録媒体。
【００７７】
（７）前記行列格納制御プログラムは前記制御部に、前記小行列各々のサイズが一定である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換させた前記ＪＡＤ形式の行列を前記格納手段に格納させるようにしたことを特徴とする（６）記載の行列格納制御プログラムを記録した記録媒体。
【００７８】
（８）前記行列格納制御プログラムは前記制御部に、前記小行列各々のサイズが一定でかつ当該小行列の行数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換させた前記ＪＡＤ形式の行列を前記小行列の行数の情報なしに前記格納手段に格納させるようにしたことを特徴とする（６）記載の行列格納制御プログラムを記録した記録媒体。
【００７９】
（９）前記行列格納制御プログラムは前記制御部に、前記小行列各々のサイズが一定でかつ当該小行列の列数が１である時に当該小行列を前記複数のプロセッサ毎に前記ＪＡＤ形式の行列に変換させ、その変換させた前記ＪＡＤ形式の行列を前記小行列の列数の情報なしに前記格納手段に格納させるようにしたことを特徴とする（６）記載の行列格納制御プログラムを記録した記録媒体。
【００８０】
（１０）前記行列格納制御プログラムは前記制御部に、前記ＪＡＤ形式の行列への変換を、行方向に連続記憶されて構成されるＣＲＳ（ＣｏｍｐｒｅｓｓｅｄＲｏｗ  Ｓｐａｒｓｅ  ｆｏｒｍａｔ）形式のデータが入力された時に前記ＣＲＳ形式のデータの各行の非ゼロ小行列の個数を数え、その個数の大きなものから順に前記複数のプロセッサ各々に割当てる領域に列単位で記憶させることで行うようにしたことを特徴とする（６）から（９）のいずれか記載の行列格納制御プログラムを記録した記録媒体。
【００８１】
【発明の効果】
以上説明したように本発明によれば、複数のプロセッサを持つ共有メモリベクトル並列計算機上で行列とベクトルとの積を演算する行列ベクトル積演算システムにおいて、全体の行列からあるサイズの小行列のみに着目して当該小行列に対して複数のプロセッサ毎に列方向に連続記憶されて構成されるＪＡＤ形式の行列に変換し、その変換したＪＡＤ形式の行列を記憶手段に記憶し、記憶手段に記憶したＪＡＤ形式の行列とベクトルとの積を複数のプロセッサ各々に演算させるよう制御するとともに、全体の行列を構成するすべてのサイズの行列をＪＡＤ形式の行列に変換して記憶手段に記憶することによって、同期回数を減らし、共有メモリベクトル並列計算機上でランダムスパース行列とベクトルとの積を高速に実行することができるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例による行列ベクトル積演算システムの構成を示すブロック図である。
【図２】図１の記憶装置の詳細な構成例を示す図である。
【図３】図１の制御部の制御方法を示すフローチャートである。
【図４】本発明の一実施例によるデータ形式の変換の詳細な制御方法を示すフローチャートである。
【図５】本発明の一実施例による行列ベクトル積の演算の詳細な制御方法を示すフローチャートである。
【図６】本発明の一実施例によるデータ形式の変換の詳細な制御方法を示すフローチャートである。
【図７】本発明の一実施例による行列ベクトル積の演算の詳細な制御方法を示すフローチャートである。
【図８】本発明の一実施例による行列ベクトル積演算システムの他の構成を示すブロック図である。
【図９】図１の記憶装置における各記憶部の対応関係を示す図である。
【図１０】図１の記憶装置における各記憶部の他の対応関係を示す図である。
【図１１】図１の記憶装置における各記憶部の別の対応関係を示す図である。
【図１２】本発明の他の実施例による行列ベクトル積演算システムの構成を示すブロック図である。
【図１３】本発明の他の実施例によるシステム評価結果を示す図である。
【図１４】本発明の他の実施例と同様の構成における従来のシステム評価結果を示す図である。
【図１５】本発明の別の実施例による行列ベクトル積演算システムの構成を示すブロック図である。
【図１６】本発明の別の実施例によるシステム評価結果を示す図である。
【図１７】本発明の別の実施例と同様の構成における従来のシステム評価結果を示す図である。
【図１８】ＣＲＳ形式と呼ばれるデータ構造の記憶順序を示す図である。
【図１９】ＪＡＤ形式と呼ばれるデータ構造の記憶順序を示す図である。
【図２０】従来例による行列ベクトル積演算システムの制御動作を示すフローチャートである。
【図２１】従来例による行列ベクトル積演算システムのデータ構造変換の制御動作を示すフローチャートである。
【図２２】従来例による行列ベクトル積演算システムの行列ベクトル積の制御動作を示すフローチャートである。
【符号の説明】
１，１ａ，１ｂ  記憶装置
２，２ａ，２ｂ  制御部
３−１〜３−ｎ，
３ａ−１〜３ａ−ｎ，
３ｂ−１〜３ｂ−ｎ  ベクトル処理装置
４ａ，４ｂ  高速行列ベクトル積演算システム
５  ネットワーク
１１  列の区切りの記憶部
１２  非ゼロ小行列の列番号の記憶部
１３  非ゼロ小行列の各成分の記憶部
【図１】
0003697992.tif 000002
【図２】
0003697992.tif 000003
【図３】
0003697992.tif 000004
【図４】
0003697992.tif 000005
【図５】
0003697992.tif 000006
【図６】
0003697992.tif 000007
【図７】
0003697992.tif 000008
【図８】
0003697992.tif 000009
【図９】
0003697992.tif 000010
【図１０】
0003697992.tif 000011
【図１１】
0003697992.tif 000012
【図１２】
0003697992.tif 000013
【図１３】
0003697992.tif 000014
【図１４】
0003697992.tif 000015
【図１５】
0003697992.tif 000016
【図１６】
0003697992.tif 000017
【図１７】
0003697992.tif 000018
【図１８】
0003697992.tif 000019
【図１９】
0003697992.tif 000020
【図２０】
0003697992.tif 000021
【図２１】
0003697992.tif 000022
【図２２】
0003697992.tif 000023