(57)【要約】【課題】この発明は、疎行列用行列格納形式において、規則性を保持可能な情報処理装置、情報処理方法、及びプログラムを提供する。【解決手段】情報処理装置は、疎行列を取得する疎行列取得部１１と、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部１２と、部分行列について、非ゼロ要素の列番号の和集合を取得する和集合取得部１３と、を備える。情報処理装置は、部分行列の各行において、和集合に対する非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部１４と、ゼロ付加行列の各行それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部１５と、をさらに備える。【選択図】図２
2019175040.tif 000002
【特許請求の範囲】
【請求項１】
疎行列を取得する疎行列取得部と、
前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、
前記部分行列について、前記非ゼロ要素の列番号の和集合を取得する和集合取得部と、
前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、
前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、
を備える情報処理装置。
【請求項２】
前記シフト行列の各行の前記非ゼロ要素及び前記付加ゼロ要素の総数の順で、前記シフト行列の行を並び替えて、ソート行列を取得するソート部をさらに備える請求項１に記載の情報処理装置。
【請求項３】
前記非ゼロ要素を、前記ソート行列の列方向に連続に格納する記憶部をさらに備える請求項２に記載の情報処理装置。
【請求項４】
前記非ゼロ要素を、前記シフト行列の行方向に連続に格納する記憶部をさらに備える請求項１に記載の情報処理装置。
【請求項５】
疎行列を取得するステップと、
前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、
前記部分行列について、前記非ゼロ要素の列番号の和集合を取得するステップと、
前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
を含む情報処理方法。
【請求項６】
コンピュータに、
疎行列を取得するステップと、
前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、
前記部分行列について、前記非ゼロ要素を有する列番号の和集合を取得するステップと、
前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
を実行させるプログラム。
【請求項７】
疎行列を取得する疎行列取得部と、
前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、
前記部分行列について、前記非ゼロ要素の行番号の和集合を取得する和集合取得部と、
前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、
前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、
を備える情報処理装置。
【請求項８】
疎行列を取得するステップと、
前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、
前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、
前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
を含む情報処理方法。
【請求項９】
コンピュータに、
疎行列を取得するステップと、
前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、
前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、
前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置では、有限要素法プログラム等を実行する際、大規模疎行列を係数行列に持つ行列方程式を直接解法または反復解法で解くことがある。このような処理を行う場合、情報処理装置は、疎行列を疎行列用行列格納形式に変換して格納している。
例えば、特許文献１では、列方向に非ゼロ要素を連続にアクセスできるように、情報処理装置は、疎行列用行列格納形式として、疎行列の非ゼロ要素を各行で左詰めする並べ替えを行うことで、ＪＤＳ（Ｊａｇｇｅｄ  Ｄｉａｇｏｎａｌ  Ｓｔｏｒａｇｅ）形式に変換して記憶部に格納している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０３−２６２０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、疎行列の中には、非ゼロ要素の位置が局所的に規則性を有するものがある。
他方、特許文献１では、非ゼロ要素を左詰めしてしまうため、情報処理装置は、疎行列用行列格納形式において、規則性を保持できないことがある。
【０００５】
この発明の目的は、上述した課題を鑑みて、疎行列用行列格納形式において、規則性を保持可能な情報処理装置、情報処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
第１の態様の情報処理装置は、疎行列を取得する疎行列取得部と、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、前記部分行列について、前記非ゼロ要素の列番号の和集合を取得する和集合取得部と、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、を備える。
【０００７】
また、第２の態様の情報処理方法は、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の列番号の和集合を取得するステップと、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を含む。
【０００８】
また、第３の態様のプログラムは、コンピュータに、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素を有する列番号の和集合を取得するステップと、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を実行させる。
【０００９】
また、第４の態様の情報処理装置は、疎行列を取得する疎行列取得部と、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得する和集合取得部と、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、を備える。
【００１０】
また、第５の態様の情報処理方法は、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を含む。
【００１１】
また、第６の態様のプログラムは、コンピュータに、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を実行させる。
【発明の効果】
【００１２】
本発明によれば、疎行列用行列格納形式において、規則性を保持可能である。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る情報処理装置の機能ブロック図である。
【図２】実施形態に係る変換部の機能ブロック図である。
【図３】実施形態に係る変換部が取得する疎行列を示す図である。
【図４】実施形態に係る変換部が取得する和集合を説明する図である。
【図５】実施形態に係る変換部が取得するゼロ付加行列を示す図である。
【図６】実施形態に係る変換部が取得するシフト行列を示す図である。
【図７】実施形態に係る変換部が取得するソート行列を示す図である（値表示）。
【図８】実施形態に係る変換部が取得するソート行列を示す図である（列番号表示）。
【図９】参考例が取得するソート行列を示す図である（要素及び列番号表示）。
【図１０】実施形態に係る変換部が取得するソート行列を示す図である（要素及び列番号表示）。
【図１１】参考例に係る情報処理装置の動作を説明する図である。
【図１２】実施形態に係る情報処理装置の動作を説明する図である。
【図１３】実施形態に係る情報処理方法のフローチャートである。
【図１４】実施形態に係る情報処理装置のハードウェア構成図である。
【図１５】実施形態に係る情報処理装置の最小構成の機能ブロック図である。
【図１６】実施形態に係る情報処理方法の最小構成のフローチャートである。
【図１７】実施形態の変形例に係る変換部の機能ブロック図である。
【図１８】実施形態の変形例に係る情報処理装置の動作を説明する図である。
【発明を実施するための形態】
【００１４】
以下、本発明に係る各種実施形態について、図面を用いて説明する。
【００１５】
＜実施形態＞
本実施形態の情報処理装置１について図１〜図１２を参照して説明する。
情報処理装置１は、有限要素法プログラム等を解く際に、疎行列を疎行列用行列格納形式に変換して格納する。
【００１６】
（構成）
図１に示すように、情報処理装置１は、変換部１０と、記憶部２０と、演算部３０と、を備える。
【００１７】
変換部１０は、疎行列Ａを疎行列用行列格納形式に変換する機能を有する。
また、変換部１０は、変換した疎行列用行列格納形式における非ゼロ要素を含む各要素を列方向（垂直方向）に連続に記憶部２０に提供する。
【００１８】
記憶部２０は、変換部１０から、疎行列用行列格納形式における非ゼロ要素を含む各要素を列方向に連続に取得し、格納する。
【００１９】
演算部３０は、記憶部２０が格納している配列を取得する。演算部３０は、取得した配列を使って疎行列ベクトル積を演算する。
【００２０】
（変換部）
図２に示すように、変換部１０は、疎行列取得部１１と、部分行列検出部１２と、和集合取得部１３と、パッド部１４と、シフト部１５、ソート部１６と、出力部１７と、を機能的に備える。
【００２１】
疎行列取得部１１は、情報処理装置１内部で取得された疎行列Ａ、又は情報処理装置１外部から入力された疎行列Ａを取得する。疎行列取得部１１は、取得した疎行列Ａを部分行列検出部１２に提供する。
【００２２】
部分行列検出部１２は、取得された疎行列Ａにおける各非ゼロ要素Ｅｘのそれぞれの列番号に基づき、局所的な規則性を有する部分行列Ｐを検出する。部分行列検出部１２は、検出した部分行列Ｐを和集合取得部１３に提供する。
なお、本実施形態において“局所的な規則性”とは、疎行列Ａの隣接する行において、非ゼロ要素Ｅｘ（を有する位置）の列番号が等しい部分を含む性質と定義する。
【００２３】
和集合取得部１３は、部分行列Ｐについて、非ゼロ要素Ｅｘを有する列番号の和集合Ｓを取得する。本実施形態では、和集合取得部１３は、複数の部分行列Ｐについて、それぞれ和集合Ｓを取得する。和集合取得部１３は、取得した和集合Ｓをパッド部１４に提供する。
【００２４】
パッド部１４は、部分行列Ｐの各行において、和集合Ｓに対する非ゼロ要素Ｅｘの補集合の列番号の列に、付加ゼロ要素Ｅａを付加して、ゼロ付加行列Ｂを取得する。パッド部１４は、取得したゼロ付加行列Ｂをシフト部１５に提供する。
【００２５】
シフト部１５は、ゼロ付加行列Ｂの各行それぞれにおいて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａをゼロ付加行列Ｂの各行の片側に詰め、シフト行列Ｃを取得する。本実施形態では、シフト部１５は、ゼロ付加行列Ｂの各行それぞれにおいて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａを左詰めして、シフト行列Ｃを取得する。シフト部１５は、取得したシフト行列Ｃをソート部１６に提供する。
【００２６】
ソート部１６は、疎行列用行列格納形式として、ソート行列Ｄを取得する。ソート部１６は、シフト行列Ｃの各行の非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数の順で、シフト行列Ｃの行を並び替えて、ソート行列Ｄを取得する。本実施形態では、ソート部１６は、１行目から２０行目に向かって、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が小さくなる順で各行を並び替える。ソート部１６は、取得したソート行列Ｄを出力部１７に提供する。
【００２７】
出力部１７は、ソート行列Ｄの１列目から順に非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの各要素を列方向に連続に各要素を記憶部２０に提供する。本実施形態では、出力部１７は、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの各要素について、各要素の値と疎行列Ａにおける各要素の列番号とをそれぞれ関連させて、記憶部２０に提供する。
【００２８】
（動作）
情報処理装置１の動作について説明する。
【００２９】
まず、疎行列取得部１１は疎行列Ａを取得する。
ここでは、疎行列取得部１１は例えば図３に示すような非ゼロ要素Ｅｘ及び初期ゼロ要素Ｅｏを含む疎行列Ａを取得したとする。
【００３０】
続いて、部分行列検出部１２は、疎行列Ａのうち、部分行列Ｐを検出する。
そのため、部分行列検出部１２は、非ゼロ要素Ｅｘの各列番号の局所的な規則性から、図３に示すように、各部分行列Ｐ（部分行列Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、及びＰ６）を検出する。
【００３１】
続いて、和集合取得部１３は、和集合Ｓを取得する。図３に示す疎行列Ａの場合、和集合取得部１３は、部分行列Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、及びＰ６について、それぞれ和集合Ｓを取得する。
図４に示すように、例えば、部分行列Ｐ１の場合、和集合取得部１３は、１行目の列番号の集合である｛１，２，３，６，７，９，１２｝、２行目の列番号の集合である｛２，３，６，７，９，１２｝、及び３行目の列番号の集合である｛３，６，７，９，１２｝に対し、和集合Ｓ１｛１，２，３，６，７，９，１２｝を取得する。
【００３２】
続いて、パッド部１４は、ゼロ要素として、疎行列Ａに付加ゼロ要素Ｅａを付加する。
図３に示す疎行列Ａの場合、パッド部１４は、図５に示すように、付加ゼロ要素Ｅａ付加して、ゼロ付加行列Ｂを取得する。
図５に示すように、例えば、部分行列Ｐ１の２行目（疎行列Ａの２行目）の場合、和集合Ｓ１｛１，２，３，６，７，９，１２｝に対する非ゼロ要素Ｅｘの補集合は、｛１｝である。このため、パッド部１４は、部分行列Ｐ１の２行目の１列目に、付加ゼロ要素Ｅａとして値０を付加する。
同様に、部分行列Ｐ１の３行目（疎行列Ａの３行目）の場合、和集合Ｓ１｛１，２，３，６，７，９，１２｝に対する非ゼロ要素Ｅｘの補集合は、｛１，２｝である。このため、パッド部１４は、部分行列Ｐ１の３行目の１列目及び２行目に、付加ゼロ要素Ｅａとして値０をそれぞれ付加する。
なお、部分行列Ｐ１の１行目（疎行列Ａの１行目）の場合、和集合Ｓ１｛１，２，３，６，７，９，１２｝に対する非ゼロ要素Ｅｘの補集合はないので、パッド部１４は、付加ゼロ要素Ｅａを付加しない。
【００３３】
パッド部１４は、各部分行列Ｐに付加ゼロ要素Ｅａを、同様に付加して、図５に示すようなゼロ付加行列Ｂを取得する。
【００３４】
続いて、シフト部１５は、ゼロ付加行列Ｂの各行それぞれの非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａを、左詰めする。
図６に示すように、例えば、ゼロ付加行列Ｂの２行目（部分行列Ｐ１の２行目に対応）の場合、シフト部１５は、ゼロ付加行列Ｂの１列目の付加ゼロ要素Ｅａと、２、３、６、７、９、及び１２列目の非ゼロ要素Ｅｘとが、１〜７列目に左詰めする。
同様に、ゼロ付加行列Ｂの３行目（部分行列Ｐ１の３行目に対応）の場合、シフト部１５は、（ゼロ付加行列Ｂの）１及び２列目の付加ゼロ要素Ｅａと、３、６、７、９、及び１２列目の非ゼロ要素Ｅｘとを、１〜７列目に左詰めする。
なお、ゼロ付加行列Ｂの１行目（部分行列Ｐ１の１行目に対応）の場合、付加ゼロ要素Ｅａはないので、シフト部１５は、１〜３、６、７、９、及び１２列目の非ゼロ要素Ｅｘを、１列目から７列目に左詰めする。
シフト部１５は、ゼロ付加行列Ｂの各行を、同様に左詰めして、図６に示すようなシフト行列Ｃを取得する。
【００３５】
続いて、ソート部１６は、シフト行列Ｃの行を１行目から２０行目に向かって、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が小さくなる順で各行を並び替える。
図７に示すように、例えば、シフト行列Ｃの１〜３行目（部分行列Ｐ１に対応）の場合、他の行に比べて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が最も大きいので、１〜３行目のままとなる。
同様に、シフト行列Ｃの４〜６行目（部分行列Ｐ２に対応）の場合、他の行に比べて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が、シフト行列Ｃの１〜３行目に続いて大きいので、ソート部１６は、４〜６行目のままとする。
シフト行列Ｃの１０〜１１行目（部分行列Ｐ４に対応）の場合、他の行に比べて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が、シフト行列Ｃの１〜６行目に続いて大きいので、ソート部１６は、７〜８行目に並べ替える。
シフト行列Ｃの７〜９行目（部分行列Ｐ３に対応）の場合、他の行に比べて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数が、シフト行列Ｃの１〜６行目及び１０〜１１行目に続いて大きいので、ソート部１６は、９〜１１行目に並べ替える。
ソート部１６は、シフト行列Ｃの各行を同様に並び替えて、図７に示すようなソート行列Ｄを取得する。
【００３６】
続いて、出力部１７は、ソート行列Ｄの非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａを列方向に連続に記憶部２０に提供する。記憶部２０は、提供された非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａを順に格納する。
その際、図８に示すように、非ゼロ要素Ｅｘの値の配列だけでなく、ソート行列Ｄの列番号を格納した配列も同様に、記憶部２０に格納する。
ただし、図８“＊”で示すゼロを付加した位置の列番号については任意の値で良い。
【００３７】
（作用及び効果）
情報処理装置１は、ゼロ要素を付加しているため、疎行列用行列格納形式において、疎行列Ａの局所的な規則性を保持している。
疎行列Ａの局所的な規則性が崩れていないことを示すために、ゼロ要素を付加しない比較例と、ゼロ要素を付加する本実施形態との比較を、以下に説明する。
【００３８】
まず比較例として、ゼロ要素を付加せず形成した行列格納形式（ＪＤＳ形式）を図９に示す。
この場合、図９に示すように、局所的な規則性を有する各部分行列Ｐに対応する行は、分割される。このように分割されると、局所的な規則性を有する各部分行列Ｐが、記憶部２０上では、連続して配置されないことになる。すなわち、部分行列Ｐ内における列番号が等しい規則性が崩れたことを意味する。
【００３９】
これに対し、本実施形態の場合、情報処理装置１は、ゼロ要素を付加しているため、図１０に示すように、非ゼロ要素の位置は分割されず、局所的な規則性は崩れていない。
【００４０】
この効果をより具体的に示すために、疎行列ベクトル積を計算する場合について説明する。
比較例として、図１１は、図９と同様に、ゼロ要素を付加せず形成した行列格納形式の配列データである。
疎行列ベクトル積を計算するためには、情報処理装置は、まず１列目の要素をレジスタに転送する。
例えば、図１１の左側に示す行列の枠ＦＲ１の８要素をレジスタに転送した時、この要素と乗算する要素として、情報処理装置は、図１１の左側に示すベクトルデータの枠ＦＲ１の８要素を、図１１の右側に示すレジスタに転送する。この例では、ベクトルデータの１，２，３，４，５，６，１０，１１番目の８個要素をレジスタに転送する。
次に２列目の疎行列ベクトル積では、１列目で転送したベクトルデータの中では、枠ＦＲ２の２，３，５，６，１１番目の要素が必要になる。これらの要素は、１列目でレジスタに転送しているが、レジスタ上にある保証はないため、２回目の転送が必要になる。３列目も同様に考えると、１列目の計算で使用したベクトルデータの中では枠ＦＲ３の３，６，１０番目の要素が必要になる。これら、複数回の転送は冗長な転送を意味する。
【００４１】
これに対し、本実施形態の情報処理装置１を使って格納した場合の疎行列ベクトル積を計算する場合について説明する。
ここで、ゼロ要素を付加した部分に対応する位置の列番号は、上述のとおり、任意の値で良いので、図１２に示すように、ゼロ付加行列Ｂにおいて位置する列番号の値を付与して記憶部２０上に格納している。
１列目の８要素について、疎行列ベクトルを計算する場合、図１２の左側に示す行列の枠ＦＲ１の８個要素をレジスタに転送する。この要素と乗算する要素は、図１２の右側のベクトルデータのＦＲ１の３個の要素(１，４，１０番目の要素)になる。２列目の計算では、ベクトルデータの２，５，１１番目の要素が必要になるが、１列目の計算で使用したベクトルデータは、規則性のある部分行列内では列番号が必ず異なることが保証されるため、重複してデータ転送が必要になることがない。
以上により、本実施形態の情報処理装置１は、ゼロ要素を付加する処理の追加することで、レジスタにデータ転送する回数を削減できる効果がある。なお、本実施形態による、データの転送回数を削減できる効果は、ベクトル型計算機に限ったことではなく、スカラ型計算機でも同じ効果が期待できる。
【００４２】
＜情報処理方法＞
本実施形態の情報処理方法について、図１３に沿って説明する。本情報処理方法では、情報処理装置１を用いて実施する。
最初に、情報処理装置１は、疎行列取得部１１によって、疎行列Ａを取得する（ＳＴ１０：疎行列を取得するステップ）。
ＳＴ１０に続いて、情報処理装置１は、部分行列検出部１２によって、疎行列Ａにおいて、非ゼロ要素Ｅｘの各列番号が局所的な規則性を有する部分行列Ｐを検出する（ＳＴ２０：部分行列を検出するステップ）。
ＳＴ２０に続いて、情報処理装置１は、和集合取得部１３によって、部分行列Ｐについて、非ゼロ要素Ｅｘを有する列番号の和集合Ｓを取得する（ＳＴ３０：和集合を取得するステップ）。
ＳＴ３０に続いて、情報処理装置１は、パッド部１４によって、部分行列Ｐの各行において、和集合Ｓに対する非ゼロ要素Ｅｘの補集合の列番号の列に、付加ゼロ要素Ｅａをそれぞれ付加して、ゼロ付加行列Ｂを取得する（ＳＴ４０：ゼロ付加行列を取得するステップ）。
ＳＴ４０に続いて、情報処理装置１は、シフト部１５によって、ゼロ付加行列Ｂの各行それぞれにおいて、非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａを片側に詰め、シフト行列Ｃを取得する（ＳＴ５０：シフト行列を取得するステップ）。
ＳＴ５０に続いて、情報処理装置１は、ソート部１６によって、シフト行列Ｃの各行の非ゼロ要素Ｅｘ及び付加ゼロ要素Ｅａの総数の順で、シフト行列Ｃの行を並び替えて、ソート行列Ｄを取得する（ＳＴ６０：ソート行列を取得するステップ）。
【００４３】
本情報処理方法は、情報処理装置１を用いて実施しているが、各ステップの一部又は全部を情報処理装置１以外の装置や操作者によって実施されてもよい。
【００４４】
＜ハードウェア構成＞
図１４には、上述の実施形態において、情報処理装置１を実現するためのハードウェア構成の一例が示されている。この図が示すように情報処理装置１は、プロセッサ１０５、メモリ１０６、記憶／再生装置１０７、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０８、ＩＯ  Ｉ／Ｆ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｉｎｔｅｒｆａｃｅ）１０９等の各ハードウェアを備えたコンピュータである。
【００４５】
プロセッサ１０５は、ベクトル計算が可能な演算回路である。
メモリ１０６は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶媒体である。
記憶／再生装置１０７は、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ等の外部メディアへプログラム、データ等を記憶したり、外部メディアのプログラム、データ等を再生したりするための装置である。
ＨＤＤ１０８は、各種情報をバックアップできる補助記憶装置である。
ＩＯ  Ｉ／Ｆ１０９は、外部との間で情報等の入出力を行うためのインターフェースである。
【００４６】
＜コンピュータプログラム＞
上述の実施形態において、情報処理装置１の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記憶媒体に記憶して、この記憶媒体に記憶されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記憶媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記憶媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
【００４７】
＜実施形態の最小構成＞
図１５には、上述の実施形態の情報処理装置１の最小構成が示されている。
最小構成において情報処理装置１は、疎行列を取得する疎行列取得部１１と、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部１２と、部分行列について、非ゼロ要素を有する列番号の和集合を取得する和集合取得部１３と、を備える。
また、最小構成において情報処理装置１は、部分行列の各行において、和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部１４と、ゼロ付加行列の各行それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部１５と、をさらに備える。
【００４８】
図１６には、上述の実施形態の情報処理方法の最小構成が示されている。
最小構成における情報処理方法では、まず、疎行列を取得する（ＳＴ１０：疎行列を取得するステップ）。
続いて、疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する（ＳＴ２０：部分行列を検出するステップ）。
続いて、部分行列について、非ゼロ要素の行番号の和集合を取得する（ＳＴ３０：和集合を取得するステップ）。
続いて、部分行列の各列において、和集合に対する非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップ（ＳＴ４０：ゼロ付加行列を取得するステップ）。
続いて、ゼロ付加行列の各列それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得する（ＳＴ５０：シフト行列を取得するステップ）。
【００４９】
＜変形例＞
上述の実施形態の情報処理装置１は、疎行列Ａにゼロ要素を付加して、いわゆるＪＤＳ形式に変換しているが、ゼロ要素を付加する効果は、ＣＲＳ形式（Ｃｏｍｐｒｅｓｓｅｄ  Ｒｏｗ  Ｓｔｏｒａｇｅ）に対しても有効である。
変形例として、情報処理装置１は、疎行列Ａにゼロ要素を付加して、いわゆるＣＲＳ形式に変換しても良い。
本変形例の情報処理装置における変換部１０’は、ソート部を備えない点と、出力部が出力部１７’である点とが、変換部１０と異なるが、それ以外は変換部１０と同様である。すなわち、図１７に示すように、変換部１０’は、疎行列取得部１１と、部分行列検出部１２と、和集合取得部１３と、パッド部１４と、シフト部１５と、出力部１７’と、を備える。
本変形例では、ゼロ要素を付加する処理を施して、ＣＲＳ形式で格納した配列について疎行列ベクトル積を計算している。ゼロ要素を付加したことにより、疎行列の局所的な規則性が崩れない。ＣＲＳ形式では、行方向に配列データが記憶部上で連続に並んでおり、それを行方向にレジスタへ転送する。
したがって、出力部１７’は、シフト部１５が取得したシフト行列Ｃの１行目から順に非ゼロ要素及び付加ゼロ要素を行方向（水平方向）に連続に記憶部２０に提供する。
１行目の疎行列ベクトル積の計算では、図１８の左側に示す行列の１行目の７個の要素をレジスタに転送し、その列番号に対応するベクトルデータの１，２，３，６，７，８，１２行目の要素（図１８の左側に示す行列の枠ＦＲ１の要素）を、図１８の右側に示すレジスタに転送する。規則性のある部分行列内では、列番号が一致するため、レジスタに転送済みのベクトルデータは２，３行目の計算でも再利用できる。もし、ゼロ要素を付加しなければ、非ゼロ要素の位置がずれる。このため、ベクトルデータを再び記憶部２０からレジスタに転送するか、もしくはレジスタ間でのデータの再配置が必要になる。なお、本変形例におけるレジスタへの再転送を削減する効果は、上述の実施形態同様、ベクトル型計算機に限ったことではなく、スカラ型計算機でも同じ効果が期待できる。
【００５０】
上述の実施形態では、ゼロ要素を付加したＪＤＳ形式に変換しているが、ＪＤＳ形式を拡張した形式に変換する場合にも適用できる。変形例として、疎行列のうち、一部にゼロ要素を付加したＪＤＳ形式を適用し、他の一部にゼロ要素を付加したＣＲＳ形式を適用したようなＪＤＳ形式とＣＲＳ形式とを併用した形式にも適用できる。
【００５１】
上述の実施形態では、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出して各処理を行っているが、行と列との処理を逆にしても良い。
具体的には、変形例として、部分行列検出部１２は、疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出してもよい。この場合、和集合取得部１３は、部分行列について、非ゼロ要素の行番号の和集合を取得する。また、パッド部１４は、部分行列の各列において、和集合に対する非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得する。さらに、シフト部１５は、ゼロ付加行列の各列それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得する。加えて、ソート行列を取得する場合、ソート部１６は、シフト行列の各列の非ゼロ要素及び付加ゼロ要素の総数の順で、シフト行列の列を並び替えて、ソート行列を取得する。
【００５２】
上述の実施形態で用いた疎行列Ａのように、疎行列の部分行列内で非ゼロ要素の位置に局所的な規則性がある例として、疎行列をＬＵ分解で生成される疎行列データがある。一般に、疎行列のＬＵ分解では、スーパーノードと呼ばれる行または列の集合ごとに計算される。スーパーノードは、対角ブロックを除く非ゼロ要素の列（または行）番号が完全に一致する行（または列）の集まりであり、分解後の行列データはスーパーノードごとに格納される。
【００５３】
上述の実施形態の情報処理装置１は、有限要素法プログラムにおいて、大規模疎行列を係数行列に持つ行列方程式を直接解法または反復解法で解く場合に利用できる。特に、疎行列とベクトルの積が主たるコストを占める場合に利用されてもよい。
【００５４】
以上、本発明の実施形態を説明したが、この実施形態は、例として示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【００５５】
１  情報処理装置
１０  変換部
１０’  変換部
１１  疎行列取得部
１２  部分行列検出部
１３  和集合取得部
１４  パッド部
１５  シフト部
１６  ソート部
１７  出力部
１７’  出力部
２０  記憶部
３０  演算部
１０５  プロセッサ
１０６  メモリ
１０７  記憶／再生装置
１０８  ＨＤＤ
１０９  ＩＯ  Ｉ／Ｆ
Ａ  疎行列
Ｂ  ゼロ付加行列
Ｃ  シフト行列
Ｄ  ソート行列
Ｅａ  付加ゼロ要素
Ｅｏ  初期ゼロ要素
Ｅｘ  非ゼロ要素
ＦＲ１  枠
ＦＲ２  枠
ＦＲ３  枠
Ｐ  部分行列
Ｐ１  部分行列
Ｐ２  部分行列
Ｐ３  部分行列
Ｐ４  部分行列
Ｐ５  部分行列
Ｐ６  部分行列
Ｓ  和集合
Ｓ１  和集合
【図１】
2019175040.tif 000003
【図２】
2019175040.tif 000004
【図３】
2019175040.tif 000005
【図４】
2019175040.tif 000006
【図５】
2019175040.tif 000007
【図６】
2019175040.tif 000008
【図７】
2019175040.tif 000009
【図８】
2019175040.tif 000010
【図９】
2019175040.tif 000011
【図１０】
2019175040.tif 000012
【図１１】
2019175040.tif 000013
【図１２】
2019175040.tif 000014
【図１３】
2019175040.tif 000015
【図１４】
2019175040.tif 000016
【図１５】
2019175040.tif 000017
【図１６】
2019175040.tif 000018
【図１７】
2019175040.tif 000019
【図１８】
2019175040.tif 000020