JP2019175040A - 情報処理装置、情報処理方法、及びプログラム - Google Patents

情報処理装置、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP2019175040A
JP2019175040A JP2018061309A JP2018061309A JP2019175040A JP 2019175040 A JP2019175040 A JP 2019175040A JP 2018061309 A JP2018061309 A JP 2018061309A JP 2018061309 A JP2018061309 A JP 2018061309A JP 2019175040 A JP2019175040 A JP 2019175040A
Authority
JP
Japan
Prior art keywords
matrix
zero
row
column
submatrix
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
Application number
JP2018061309A
Other languages
English (en)
Other versions
JP7020236B2 (ja
Inventor
隆盛 緒方
Takamori Ogata
隆盛 緒方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018061309A priority Critical patent/JP7020236B2/ja
Publication of JP2019175040A publication Critical patent/JP2019175040A/ja
Application granted granted Critical
Publication of JP7020236B2 publication Critical patent/JP7020236B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】この発明は、疎行列用行列格納形式において、規則性を保持可能な情報処理装置、情報処理方法、及びプログラムを提供する。【解決手段】情報処理装置は、疎行列を取得する疎行列取得部11と、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部12と、部分行列について、非ゼロ要素の列番号の和集合を取得する和集合取得部13と、を備える。情報処理装置は、部分行列の各行において、和集合に対する非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部14と、ゼロ付加行列の各行それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部15と、をさらに備える。【選択図】図2

Description

本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
情報処理装置では、有限要素法プログラム等を実行する際、大規模疎行列を係数行列に持つ行列方程式を直接解法または反復解法で解くことがある。このような処理を行う場合、情報処理装置は、疎行列を疎行列用行列格納形式に変換して格納している。
例えば、特許文献1では、列方向に非ゼロ要素を連続にアクセスできるように、情報処理装置は、疎行列用行列格納形式として、疎行列の非ゼロ要素を各行で左詰めする並べ替えを行うことで、JDS(Jagged Diagonal Storage)形式に変換して記憶部に格納している。
特開平03−262077号公報
ところで、疎行列の中には、非ゼロ要素の位置が局所的に規則性を有するものがある。
他方、特許文献1では、非ゼロ要素を左詰めしてしまうため、情報処理装置は、疎行列用行列格納形式において、規則性を保持できないことがある。
この発明の目的は、上述した課題を鑑みて、疎行列用行列格納形式において、規則性を保持可能な情報処理装置、情報処理方法、及びプログラムを提供することにある。
第1の態様の情報処理装置は、疎行列を取得する疎行列取得部と、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、前記部分行列について、前記非ゼロ要素の列番号の和集合を取得する和集合取得部と、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、を備える。
また、第2の態様の情報処理方法は、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の列番号の和集合を取得するステップと、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を含む。
また、第3の態様のプログラムは、コンピュータに、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素を有する列番号の和集合を取得するステップと、前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を実行させる。
また、第4の態様の情報処理装置は、疎行列を取得する疎行列取得部と、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得する和集合取得部と、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、を備える。
また、第5の態様の情報処理方法は、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を含む。
また、第6の態様のプログラムは、コンピュータに、疎行列を取得するステップと、前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、を実行させる。
本発明によれば、疎行列用行列格納形式において、規則性を保持可能である。
実施形態に係る情報処理装置の機能ブロック図である。 実施形態に係る変換部の機能ブロック図である。 実施形態に係る変換部が取得する疎行列を示す図である。 実施形態に係る変換部が取得する和集合を説明する図である。 実施形態に係る変換部が取得するゼロ付加行列を示す図である。 実施形態に係る変換部が取得するシフト行列を示す図である。 実施形態に係る変換部が取得するソート行列を示す図である(値表示)。 実施形態に係る変換部が取得するソート行列を示す図である(列番号表示)。 参考例が取得するソート行列を示す図である(要素及び列番号表示)。 実施形態に係る変換部が取得するソート行列を示す図である(要素及び列番号表示)。 参考例に係る情報処理装置の動作を説明する図である。 実施形態に係る情報処理装置の動作を説明する図である。 実施形態に係る情報処理方法のフローチャートである。 実施形態に係る情報処理装置のハードウェア構成図である。 実施形態に係る情報処理装置の最小構成の機能ブロック図である。 実施形態に係る情報処理方法の最小構成のフローチャートである。 実施形態の変形例に係る変換部の機能ブロック図である。 実施形態の変形例に係る情報処理装置の動作を説明する図である。
以下、本発明に係る各種実施形態について、図面を用いて説明する。
<実施形態>
本実施形態の情報処理装置1について図1〜図12を参照して説明する。
情報処理装置1は、有限要素法プログラム等を解く際に、疎行列を疎行列用行列格納形式に変換して格納する。
(構成)
図1に示すように、情報処理装置1は、変換部10と、記憶部20と、演算部30と、を備える。
変換部10は、疎行列Aを疎行列用行列格納形式に変換する機能を有する。
また、変換部10は、変換した疎行列用行列格納形式における非ゼロ要素を含む各要素を列方向(垂直方向)に連続に記憶部20に提供する。
記憶部20は、変換部10から、疎行列用行列格納形式における非ゼロ要素を含む各要素を列方向に連続に取得し、格納する。
演算部30は、記憶部20が格納している配列を取得する。演算部30は、取得した配列を使って疎行列ベクトル積を演算する。
(変換部)
図2に示すように、変換部10は、疎行列取得部11と、部分行列検出部12と、和集合取得部13と、パッド部14と、シフト部15、ソート部16と、出力部17と、を機能的に備える。
疎行列取得部11は、情報処理装置1内部で取得された疎行列A、又は情報処理装置1外部から入力された疎行列Aを取得する。疎行列取得部11は、取得した疎行列Aを部分行列検出部12に提供する。
部分行列検出部12は、取得された疎行列Aにおける各非ゼロ要素Exのそれぞれの列番号に基づき、局所的な規則性を有する部分行列Pを検出する。部分行列検出部12は、検出した部分行列Pを和集合取得部13に提供する。
なお、本実施形態において“局所的な規則性”とは、疎行列Aの隣接する行において、非ゼロ要素Ex(を有する位置)の列番号が等しい部分を含む性質と定義する。
和集合取得部13は、部分行列Pについて、非ゼロ要素Exを有する列番号の和集合Sを取得する。本実施形態では、和集合取得部13は、複数の部分行列Pについて、それぞれ和集合Sを取得する。和集合取得部13は、取得した和集合Sをパッド部14に提供する。
パッド部14は、部分行列Pの各行において、和集合Sに対する非ゼロ要素Exの補集合の列番号の列に、付加ゼロ要素Eaを付加して、ゼロ付加行列Bを取得する。パッド部14は、取得したゼロ付加行列Bをシフト部15に提供する。
シフト部15は、ゼロ付加行列Bの各行それぞれにおいて、非ゼロ要素Ex及び付加ゼロ要素Eaをゼロ付加行列Bの各行の片側に詰め、シフト行列Cを取得する。本実施形態では、シフト部15は、ゼロ付加行列Bの各行それぞれにおいて、非ゼロ要素Ex及び付加ゼロ要素Eaを左詰めして、シフト行列Cを取得する。シフト部15は、取得したシフト行列Cをソート部16に提供する。
ソート部16は、疎行列用行列格納形式として、ソート行列Dを取得する。ソート部16は、シフト行列Cの各行の非ゼロ要素Ex及び付加ゼロ要素Eaの総数の順で、シフト行列Cの行を並び替えて、ソート行列Dを取得する。本実施形態では、ソート部16は、1行目から20行目に向かって、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が小さくなる順で各行を並び替える。ソート部16は、取得したソート行列Dを出力部17に提供する。
出力部17は、ソート行列Dの1列目から順に非ゼロ要素Ex及び付加ゼロ要素Eaの各要素を列方向に連続に各要素を記憶部20に提供する。本実施形態では、出力部17は、非ゼロ要素Ex及び付加ゼロ要素Eaの各要素について、各要素の値と疎行列Aにおける各要素の列番号とをそれぞれ関連させて、記憶部20に提供する。
(動作)
情報処理装置1の動作について説明する。
まず、疎行列取得部11は疎行列Aを取得する。
ここでは、疎行列取得部11は例えば図3に示すような非ゼロ要素Ex及び初期ゼロ要素Eoを含む疎行列Aを取得したとする。
続いて、部分行列検出部12は、疎行列Aのうち、部分行列Pを検出する。
そのため、部分行列検出部12は、非ゼロ要素Exの各列番号の局所的な規則性から、図3に示すように、各部分行列P(部分行列P1、P2、P3、P4、P5、及びP6)を検出する。
続いて、和集合取得部13は、和集合Sを取得する。図3に示す疎行列Aの場合、和集合取得部13は、部分行列P1、P2、P3、P4、P5、及びP6について、それぞれ和集合Sを取得する。
図4に示すように、例えば、部分行列P1の場合、和集合取得部13は、1行目の列番号の集合である{1,2,3,6,7,9,12}、2行目の列番号の集合である{2,3,6,7,9,12}、及び3行目の列番号の集合である{3,6,7,9,12}に対し、和集合S1{1,2,3,6,7,9,12}を取得する。
続いて、パッド部14は、ゼロ要素として、疎行列Aに付加ゼロ要素Eaを付加する。
図3に示す疎行列Aの場合、パッド部14は、図5に示すように、付加ゼロ要素Ea付加して、ゼロ付加行列Bを取得する。
図5に示すように、例えば、部分行列P1の2行目(疎行列Aの2行目)の場合、和集合S1{1,2,3,6,7,9,12}に対する非ゼロ要素Exの補集合は、{1}である。このため、パッド部14は、部分行列P1の2行目の1列目に、付加ゼロ要素Eaとして値0を付加する。
同様に、部分行列P1の3行目(疎行列Aの3行目)の場合、和集合S1{1,2,3,6,7,9,12}に対する非ゼロ要素Exの補集合は、{1,2}である。このため、パッド部14は、部分行列P1の3行目の1列目及び2行目に、付加ゼロ要素Eaとして値0をそれぞれ付加する。
なお、部分行列P1の1行目(疎行列Aの1行目)の場合、和集合S1{1,2,3,6,7,9,12}に対する非ゼロ要素Exの補集合はないので、パッド部14は、付加ゼロ要素Eaを付加しない。
パッド部14は、各部分行列Pに付加ゼロ要素Eaを、同様に付加して、図5に示すようなゼロ付加行列Bを取得する。
続いて、シフト部15は、ゼロ付加行列Bの各行それぞれの非ゼロ要素Ex及び付加ゼロ要素Eaを、左詰めする。
図6に示すように、例えば、ゼロ付加行列Bの2行目(部分行列P1の2行目に対応)の場合、シフト部15は、ゼロ付加行列Bの1列目の付加ゼロ要素Eaと、2、3、6、7、9、及び12列目の非ゼロ要素Exとが、1〜7列目に左詰めする。
同様に、ゼロ付加行列Bの3行目(部分行列P1の3行目に対応)の場合、シフト部15は、(ゼロ付加行列Bの)1及び2列目の付加ゼロ要素Eaと、3、6、7、9、及び12列目の非ゼロ要素Exとを、1〜7列目に左詰めする。
なお、ゼロ付加行列Bの1行目(部分行列P1の1行目に対応)の場合、付加ゼロ要素Eaはないので、シフト部15は、1〜3、6、7、9、及び12列目の非ゼロ要素Exを、1列目から7列目に左詰めする。
シフト部15は、ゼロ付加行列Bの各行を、同様に左詰めして、図6に示すようなシフト行列Cを取得する。
続いて、ソート部16は、シフト行列Cの行を1行目から20行目に向かって、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が小さくなる順で各行を並び替える。
図7に示すように、例えば、シフト行列Cの1〜3行目(部分行列P1に対応)の場合、他の行に比べて、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が最も大きいので、1〜3行目のままとなる。
同様に、シフト行列Cの4〜6行目(部分行列P2に対応)の場合、他の行に比べて、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が、シフト行列Cの1〜3行目に続いて大きいので、ソート部16は、4〜6行目のままとする。
シフト行列Cの10〜11行目(部分行列P4に対応)の場合、他の行に比べて、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が、シフト行列Cの1〜6行目に続いて大きいので、ソート部16は、7〜8行目に並べ替える。
シフト行列Cの7〜9行目(部分行列P3に対応)の場合、他の行に比べて、非ゼロ要素Ex及び付加ゼロ要素Eaの総数が、シフト行列Cの1〜6行目及び10〜11行目に続いて大きいので、ソート部16は、9〜11行目に並べ替える。
ソート部16は、シフト行列Cの各行を同様に並び替えて、図7に示すようなソート行列Dを取得する。
続いて、出力部17は、ソート行列Dの非ゼロ要素Ex及び付加ゼロ要素Eaを列方向に連続に記憶部20に提供する。記憶部20は、提供された非ゼロ要素Ex及び付加ゼロ要素Eaを順に格納する。
その際、図8に示すように、非ゼロ要素Exの値の配列だけでなく、ソート行列Dの列番号を格納した配列も同様に、記憶部20に格納する。
ただし、図8“*”で示すゼロを付加した位置の列番号については任意の値で良い。
(作用及び効果)
情報処理装置1は、ゼロ要素を付加しているため、疎行列用行列格納形式において、疎行列Aの局所的な規則性を保持している。
疎行列Aの局所的な規則性が崩れていないことを示すために、ゼロ要素を付加しない比較例と、ゼロ要素を付加する本実施形態との比較を、以下に説明する。
まず比較例として、ゼロ要素を付加せず形成した行列格納形式(JDS形式)を図9に示す。
この場合、図9に示すように、局所的な規則性を有する各部分行列Pに対応する行は、分割される。このように分割されると、局所的な規則性を有する各部分行列Pが、記憶部20上では、連続して配置されないことになる。すなわち、部分行列P内における列番号が等しい規則性が崩れたことを意味する。
これに対し、本実施形態の場合、情報処理装置1は、ゼロ要素を付加しているため、図10に示すように、非ゼロ要素の位置は分割されず、局所的な規則性は崩れていない。
この効果をより具体的に示すために、疎行列ベクトル積を計算する場合について説明する。
比較例として、図11は、図9と同様に、ゼロ要素を付加せず形成した行列格納形式の配列データである。
疎行列ベクトル積を計算するためには、情報処理装置は、まず1列目の要素をレジスタに転送する。
例えば、図11の左側に示す行列の枠FR1の8要素をレジスタに転送した時、この要素と乗算する要素として、情報処理装置は、図11の左側に示すベクトルデータの枠FR1の8要素を、図11の右側に示すレジスタに転送する。この例では、ベクトルデータの1,2,3,4,5,6,10,11番目の8個要素をレジスタに転送する。
次に2列目の疎行列ベクトル積では、1列目で転送したベクトルデータの中では、枠FR2の2,3,5,6,11番目の要素が必要になる。これらの要素は、1列目でレジスタに転送しているが、レジスタ上にある保証はないため、2回目の転送が必要になる。3列目も同様に考えると、1列目の計算で使用したベクトルデータの中では枠FR3の3,6,10番目の要素が必要になる。これら、複数回の転送は冗長な転送を意味する。
これに対し、本実施形態の情報処理装置1を使って格納した場合の疎行列ベクトル積を計算する場合について説明する。
ここで、ゼロ要素を付加した部分に対応する位置の列番号は、上述のとおり、任意の値で良いので、図12に示すように、ゼロ付加行列Bにおいて位置する列番号の値を付与して記憶部20上に格納している。
1列目の8要素について、疎行列ベクトルを計算する場合、図12の左側に示す行列の枠FR1の8個要素をレジスタに転送する。この要素と乗算する要素は、図12の右側のベクトルデータのFR1の3個の要素(1,4,10番目の要素)になる。2列目の計算では、ベクトルデータの2,5,11番目の要素が必要になるが、1列目の計算で使用したベクトルデータは、規則性のある部分行列内では列番号が必ず異なることが保証されるため、重複してデータ転送が必要になることがない。
以上により、本実施形態の情報処理装置1は、ゼロ要素を付加する処理の追加することで、レジスタにデータ転送する回数を削減できる効果がある。なお、本実施形態による、データの転送回数を削減できる効果は、ベクトル型計算機に限ったことではなく、スカラ型計算機でも同じ効果が期待できる。
<情報処理方法>
本実施形態の情報処理方法について、図13に沿って説明する。本情報処理方法では、情報処理装置1を用いて実施する。
最初に、情報処理装置1は、疎行列取得部11によって、疎行列Aを取得する(ST10:疎行列を取得するステップ)。
ST10に続いて、情報処理装置1は、部分行列検出部12によって、疎行列Aにおいて、非ゼロ要素Exの各列番号が局所的な規則性を有する部分行列Pを検出する(ST20:部分行列を検出するステップ)。
ST20に続いて、情報処理装置1は、和集合取得部13によって、部分行列Pについて、非ゼロ要素Exを有する列番号の和集合Sを取得する(ST30:和集合を取得するステップ)。
ST30に続いて、情報処理装置1は、パッド部14によって、部分行列Pの各行において、和集合Sに対する非ゼロ要素Exの補集合の列番号の列に、付加ゼロ要素Eaをそれぞれ付加して、ゼロ付加行列Bを取得する(ST40:ゼロ付加行列を取得するステップ)。
ST40に続いて、情報処理装置1は、シフト部15によって、ゼロ付加行列Bの各行それぞれにおいて、非ゼロ要素Ex及び付加ゼロ要素Eaを片側に詰め、シフト行列Cを取得する(ST50:シフト行列を取得するステップ)。
ST50に続いて、情報処理装置1は、ソート部16によって、シフト行列Cの各行の非ゼロ要素Ex及び付加ゼロ要素Eaの総数の順で、シフト行列Cの行を並び替えて、ソート行列Dを取得する(ST60:ソート行列を取得するステップ)。
本情報処理方法は、情報処理装置1を用いて実施しているが、各ステップの一部又は全部を情報処理装置1以外の装置や操作者によって実施されてもよい。
<ハードウェア構成>
図14には、上述の実施形態において、情報処理装置1を実現するためのハードウェア構成の一例が示されている。この図が示すように情報処理装置1は、プロセッサ105、メモリ106、記憶/再生装置107、HDD(Hard Disk Drive)108、IO I/F(Input Output Interface)109等の各ハードウェアを備えたコンピュータである。
プロセッサ105は、ベクトル計算が可能な演算回路である。
メモリ106は、RAM(Random Access Memory)やROM(Read Only Memory)等の記憶媒体である。
記憶/再生装置107は、CD−ROM、DVD、フラッシュメモリ等の外部メディアへプログラム、データ等を記憶したり、外部メディアのプログラム、データ等を再生したりするための装置である。
HDD108は、各種情報をバックアップできる補助記憶装置である。
IO I/F109は、外部との間で情報等の入出力を行うためのインターフェースである。
<コンピュータプログラム>
上述の実施形態において、情報処理装置1の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記憶媒体に記憶して、この記憶媒体に記憶されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記憶媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記憶媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
<実施形態の最小構成>
図15には、上述の実施形態の情報処理装置1の最小構成が示されている。
最小構成において情報処理装置1は、疎行列を取得する疎行列取得部11と、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部12と、部分行列について、非ゼロ要素を有する列番号の和集合を取得する和集合取得部13と、を備える。
また、最小構成において情報処理装置1は、部分行列の各行において、和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部14と、ゼロ付加行列の各行それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部15と、をさらに備える。
図16には、上述の実施形態の情報処理方法の最小構成が示されている。
最小構成における情報処理方法では、まず、疎行列を取得する(ST10:疎行列を取得するステップ)。
続いて、疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する(ST20:部分行列を検出するステップ)。
続いて、部分行列について、非ゼロ要素の行番号の和集合を取得する(ST30:和集合を取得するステップ)。
続いて、部分行列の各列において、和集合に対する非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップ(ST40:ゼロ付加行列を取得するステップ)。
続いて、ゼロ付加行列の各列それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得する(ST50:シフト行列を取得するステップ)。
<変形例>
上述の実施形態の情報処理装置1は、疎行列Aにゼロ要素を付加して、いわゆるJDS形式に変換しているが、ゼロ要素を付加する効果は、CRS形式(Compressed Row Storage)に対しても有効である。
変形例として、情報処理装置1は、疎行列Aにゼロ要素を付加して、いわゆるCRS形式に変換しても良い。
本変形例の情報処理装置における変換部10’は、ソート部を備えない点と、出力部が出力部17’である点とが、変換部10と異なるが、それ以外は変換部10と同様である。すなわち、図17に示すように、変換部10’は、疎行列取得部11と、部分行列検出部12と、和集合取得部13と、パッド部14と、シフト部15と、出力部17’と、を備える。
本変形例では、ゼロ要素を付加する処理を施して、CRS形式で格納した配列について疎行列ベクトル積を計算している。ゼロ要素を付加したことにより、疎行列の局所的な規則性が崩れない。CRS形式では、行方向に配列データが記憶部上で連続に並んでおり、それを行方向にレジスタへ転送する。
したがって、出力部17’は、シフト部15が取得したシフト行列Cの1行目から順に非ゼロ要素及び付加ゼロ要素を行方向(水平方向)に連続に記憶部20に提供する。
1行目の疎行列ベクトル積の計算では、図18の左側に示す行列の1行目の7個の要素をレジスタに転送し、その列番号に対応するベクトルデータの1,2,3,6,7,8,12行目の要素(図18の左側に示す行列の枠FR1の要素)を、図18の右側に示すレジスタに転送する。規則性のある部分行列内では、列番号が一致するため、レジスタに転送済みのベクトルデータは2,3行目の計算でも再利用できる。もし、ゼロ要素を付加しなければ、非ゼロ要素の位置がずれる。このため、ベクトルデータを再び記憶部20からレジスタに転送するか、もしくはレジスタ間でのデータの再配置が必要になる。なお、本変形例におけるレジスタへの再転送を削減する効果は、上述の実施形態同様、ベクトル型計算機に限ったことではなく、スカラ型計算機でも同じ効果が期待できる。
上述の実施形態では、ゼロ要素を付加したJDS形式に変換しているが、JDS形式を拡張した形式に変換する場合にも適用できる。変形例として、疎行列のうち、一部にゼロ要素を付加したJDS形式を適用し、他の一部にゼロ要素を付加したCRS形式を適用したようなJDS形式とCRS形式とを併用した形式にも適用できる。
上述の実施形態では、疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出して各処理を行っているが、行と列との処理を逆にしても良い。
具体的には、変形例として、部分行列検出部12は、疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出してもよい。この場合、和集合取得部13は、部分行列について、非ゼロ要素の行番号の和集合を取得する。また、パッド部14は、部分行列の各列において、和集合に対する非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得する。さらに、シフト部15は、ゼロ付加行列の各列それぞれにおいて、非ゼロ要素及び付加ゼロ要素を片側に詰め、シフト行列を取得する。加えて、ソート行列を取得する場合、ソート部16は、シフト行列の各列の非ゼロ要素及び付加ゼロ要素の総数の順で、シフト行列の列を並び替えて、ソート行列を取得する。
上述の実施形態で用いた疎行列Aのように、疎行列の部分行列内で非ゼロ要素の位置に局所的な規則性がある例として、疎行列をLU分解で生成される疎行列データがある。一般に、疎行列のLU分解では、スーパーノードと呼ばれる行または列の集合ごとに計算される。スーパーノードは、対角ブロックを除く非ゼロ要素の列(または行)番号が完全に一致する行(または列)の集まりであり、分解後の行列データはスーパーノードごとに格納される。
上述の実施形態の情報処理装置1は、有限要素法プログラムにおいて、大規模疎行列を係数行列に持つ行列方程式を直接解法または反復解法で解く場合に利用できる。特に、疎行列とベクトルの積が主たるコストを占める場合に利用されてもよい。
以上、本発明の実施形態を説明したが、この実施形態は、例として示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
1 情報処理装置
10 変換部
10’ 変換部
11 疎行列取得部
12 部分行列検出部
13 和集合取得部
14 パッド部
15 シフト部
16 ソート部
17 出力部
17’ 出力部
20 記憶部
30 演算部
105 プロセッサ
106 メモリ
107 記憶/再生装置
108 HDD
109 IO I/F
A 疎行列
B ゼロ付加行列
C シフト行列
D ソート行列
Ea 付加ゼロ要素
Eo 初期ゼロ要素
Ex 非ゼロ要素
FR1 枠
FR2 枠
FR3 枠
P 部分行列
P1 部分行列
P2 部分行列
P3 部分行列
P4 部分行列
P5 部分行列
P6 部分行列
S 和集合
S1 和集合

Claims (9)

  1. 疎行列を取得する疎行列取得部と、
    前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、
    前記部分行列について、前記非ゼロ要素の列番号の和集合を取得する和集合取得部と、
    前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、
    前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、
    を備える情報処理装置。
  2. 前記シフト行列の各行の前記非ゼロ要素及び前記付加ゼロ要素の総数の順で、前記シフト行列の行を並び替えて、ソート行列を取得するソート部をさらに備える請求項1に記載の情報処理装置。
  3. 前記非ゼロ要素を、前記ソート行列の列方向に連続に格納する記憶部をさらに備える請求項2に記載の情報処理装置。
  4. 前記非ゼロ要素を、前記シフト行列の行方向に連続に格納する記憶部をさらに備える請求項1に記載の情報処理装置。
  5. 疎行列を取得するステップと、
    前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、
    前記部分行列について、前記非ゼロ要素の列番号の和集合を取得するステップと、
    前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
    前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
    を含む情報処理方法。
  6. コンピュータに、
    疎行列を取得するステップと、
    前記疎行列において、非ゼロ要素の各列番号が局所的な規則性を有する部分行列を検出するステップと、
    前記部分行列について、前記非ゼロ要素を有する列番号の和集合を取得するステップと、
    前記部分行列の各行において、前記和集合に対する前記非ゼロ要素の補集合の列番号の列に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
    前記ゼロ付加行列の各行それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
    を実行させるプログラム。
  7. 疎行列を取得する疎行列取得部と、
    前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出する部分行列検出部と、
    前記部分行列について、前記非ゼロ要素の行番号の和集合を取得する和集合取得部と、
    前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するパッド部と、
    前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するシフト部と、
    を備える情報処理装置。
  8. 疎行列を取得するステップと、
    前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、
    前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、
    前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
    前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
    を含む情報処理方法。
  9. コンピュータに、
    疎行列を取得するステップと、
    前記疎行列において、非ゼロ要素の各行番号が局所的な規則性を有する部分行列を検出するステップと、
    前記部分行列について、前記非ゼロ要素の行番号の和集合を取得するステップと、
    前記部分行列の各列において、前記和集合に対する前記非ゼロ要素の補集合の行番号の行に、付加ゼロ要素をそれぞれ付加して、ゼロ付加行列を取得するステップと、
    前記ゼロ付加行列の各列それぞれにおいて、前記非ゼロ要素及び前記付加ゼロ要素を片側に詰め、シフト行列を取得するステップと、
    を実行させるプログラム。
JP2018061309A 2018-03-28 2018-03-28 情報処理装置、情報処理方法、及びプログラム Active JP7020236B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018061309A JP7020236B2 (ja) 2018-03-28 2018-03-28 情報処理装置、情報処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018061309A JP7020236B2 (ja) 2018-03-28 2018-03-28 情報処理装置、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2019175040A true JP2019175040A (ja) 2019-10-10
JP7020236B2 JP7020236B2 (ja) 2022-02-16

Family

ID=68166979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018061309A Active JP7020236B2 (ja) 2018-03-28 2018-03-28 情報処理装置、情報処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP7020236B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03262077A (ja) * 1990-03-12 1991-11-21 Nippon Denki Gijutsu Joho Syst Kaihatsu Kk ベクトル計算機の記憶装置への大規模不規則疎行列格納法
US20100306300A1 (en) * 2009-05-29 2010-12-02 Microsoft Corporation Sparse Matrix Padding
JP2016066329A (ja) * 2014-09-26 2016-04-28 日本電気株式会社 情報処理装置、情報処理方法、及び、コンピュータ・プログラム
WO2017154946A1 (ja) * 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03262077A (ja) * 1990-03-12 1991-11-21 Nippon Denki Gijutsu Joho Syst Kaihatsu Kk ベクトル計算機の記憶装置への大規模不規則疎行列格納法
US20100306300A1 (en) * 2009-05-29 2010-12-02 Microsoft Corporation Sparse Matrix Padding
JP2016066329A (ja) * 2014-09-26 2016-04-28 日本電気株式会社 情報処理装置、情報処理方法、及び、コンピュータ・プログラム
WO2017154946A1 (ja) * 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
長坂侑亮、額田 彰、松岡 聡: "疎行列ベクトル積計算を対象としたGPU向けメモリアクセス削減手法", 情報処理学会研究報告[ONLINE], vol. Vol,2015-HPC-151, No.8, JPN6021051121, 23 September 2015 (2015-09-23), JP, pages 1 - 7, ISSN: 0004672321 *

Also Published As

Publication number Publication date
JP7020236B2 (ja) 2022-02-16

Similar Documents

Publication Publication Date Title
US9697176B2 (en) Efficient sparse matrix-vector multiplication on parallel processors
JP6950675B2 (ja) 情報処理装置、情報処理方法、データ構造およびプログラム
JPH08235159A (ja) 逆コサイン変換装置
US20180005113A1 (en) Information processing apparatus, non-transitory computer-readable storage medium, and learning-network learning value computing method
US8255401B2 (en) Computer information retrieval using latent semantic structure via sketches
JP7031682B2 (ja) 秘密計算装置、システム、方法、プログラム
US20170199896A1 (en) Systems and methods for processing binary mainframe data files in a big data environment
JP5241475B2 (ja) ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム
WO2016181992A1 (ja) 復号装置、復号方法、およびプログラム
KR100950581B1 (ko) 여분 표현을 사용하는 유한체 비트―병렬 곱셈 장치 및방법
JP7020236B2 (ja) 情報処理装置、情報処理方法、及びプログラム
Taşkin et al. Speeding up curve25519 using Toeplitz matrix-vector multiplication
US9621430B2 (en) Support apparatus, design support method, and recording medium
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
Li Stochastic local operations and classical communication (SLOCC) and local unitary operations (LU) classifications of n qubits via ranks and singular values of the spin-flipping matrices
US8838662B2 (en) Connection information generating apparatus and controlling method
JP5927323B1 (ja) 行列作用装置、行列作用方法、およびプログラム
de Keijzer et al. The H-index can be easily manipulated
JP3907976B2 (ja) F関数内部にspn構造を用いた演算装置および演算方法
JP5325072B2 (ja) 行列分解装置、行列分解方法及びプログラム
KR100976232B1 (ko) 고속 비트-병렬 다항식 곱셈기, 그 곱셈 방법
JP3875183B2 (ja) 演算装置
US8150901B2 (en) Integrated conversion method and apparatus
US20210182061A1 (en) Information processing device, information processing method, and program
Morotti On multisets of hook lengths of partitions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211216

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: 20220104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220117

R151 Written notification of patent or utility model registration

Ref document number: 7020236

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151