IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2023-183182算出プログラム、算出方法および情報処理装置
<>
  • 特開-算出プログラム、算出方法および情報処理装置 図1
  • 特開-算出プログラム、算出方法および情報処理装置 図2
  • 特開-算出プログラム、算出方法および情報処理装置 図3
  • 特開-算出プログラム、算出方法および情報処理装置 図4
  • 特開-算出プログラム、算出方法および情報処理装置 図5
  • 特開-算出プログラム、算出方法および情報処理装置 図6
  • 特開-算出プログラム、算出方法および情報処理装置 図7
  • 特開-算出プログラム、算出方法および情報処理装置 図8
  • 特開-算出プログラム、算出方法および情報処理装置 図9
  • 特開-算出プログラム、算出方法および情報処理装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183182
(43)【公開日】2023-12-27
(54)【発明の名称】算出プログラム、算出方法および情報処理装置
(51)【国際特許分類】
   G06F 17/16 20060101AFI20231220BHJP
【FI】
G06F17/16 Z
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022096671
(22)【出願日】2022-06-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】長坂 侑亮
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB31
(57)【要約】
【課題】問題行列を求解する場合の収束性と並列性とを両方を改善すること。
【解決手段】情報処理装置は、線形方程式に対応する問題行列であって、線形方程式の複数の変数に対応する複数の頂点を有する問題行列を複数の領域に分割する。情報処理装置は、問題行列の一つの領域に対してブロックカラーリングを適用することで、一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、複数の領域について実行する。情報処理装置は、同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、線形方程式の複数の変数の解を算出する。
【選択図】図2
【特許請求の範囲】
【請求項1】
線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理をコンピュータに実行させることを特徴とする算出プログラム。
【請求項2】
前記問題行列に含まれる各頂点には番号が割り当てられ、前記問題行列を複数の領域に分割する処理は、同一の領域に含まれる各頂点の番号が連番となるように、前記問題行列を複数の領域に分割することを特徴とする請求項1に記載の算出プログラム。
【請求項3】
前記算出する処理は、前記同一の色が割り当てられた部分問題行列毎に、ガウスザイデル法を適用することで、前記線形方程式の複数の変数の解を算出することを特徴とする請求項1に記載の算出プログラム。
【請求項4】
前記算出する処理を実行するハードウェアに基づく並列性と、前記問題行列に含まれる各頂点に対応する変数の依存関係と、前記部分問題行列のサイズとを基にして、分割する領域のサイズを特定する処理を更にコンピュータに実行させることを特徴とする請求項1に記載の算出プログラム。
【請求項5】
線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理をコンピュータが実行することを特徴とする算出方法。
【請求項6】
線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理を実行する制御部を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、算出プログラム等に関する。
【背景技術】
【0002】
流体のアプリケーション、HPCG(High Performance Conjugate Gradient)ベンチマーク等を実行する場合、疎な特性を持つ線形方程式Ax=bを求解する処理が実行され、求解には、共役勾配法等の反復法が用いられる。疎な特性を持つ線形方程式Ax=bの求解には、膨大な時間を要することが知られている。線形方程式Ax=bのx、bはベクトルである。
【0003】
ここで、問題行列を生成する一例として、2次元ポアソン方程式を離散化し、線形方程式Ax=bを生成する従来の方法がある。図8は、問題行列を生成する従来の方法を説明するための図である。図8に示す例では、2次元格子10に、複数の格子点x(i=0~8)が含まれる。たとえば、ある1点の格子点に着目した場合、着目した格子点の周りの8点を考慮し、最終的に行当たりの非ゼロ要素数が最大9の問題行列が生成される。
【0004】
対角成分を「8」、対象となる格子点に接する格子点に該当する要素の成分を「-1」とすると、2次元格子10から、問題行列に相当する連立方程式11が生成される。連立方程式11に対応する式であって、複数の格子点x(i=0~8)から生成される式は以下の式(1)~(9)である。
【0005】
たとえば、格子点xに着目すると、式(1)が生成される。格子点xに着目すると、式(2)が生成される。格子点xに着目すると、式(3)が生成される。格子点xに着目すると、式(4)が生成される。格子点xに着目すると、式(5)が生成される。格子点xに着目すると、式(6)が生成される。格子点xに着目すると、式(7)が生成される。格子点xに着目すると、式(8)が生成される。格子点xに着目すると、式(9)が生成される。
【0006】
8x-x-x-x=b・・・(1)
-x+8x-x-x-x-x=b・・・(2)
-x-8x-x-x=b・・・(3)
-x-x-8x-x-x-x=b・・・(4)
-x-x-x-x-8x-x-x-x-x=b・・・(5)
-x-x-x-8x-x=b・・・(6)
-x-x-8x-x=b・・・(7)
-x-x-x-x-8x-x=b・・・(8)
-x-x-x-8x=b・・・(9)
【0007】
連立方程式11に含まれるb、xの初期化を行い、式(10)に示すガウスザイデル法等の反復解法を適用することで、xの値を求解する。ガウスザイデル法の処理内容は、ヤコビ法の処理内容に類似する。ガウスザイデル法では、既に更新された要素を、次の値の更新に使用することで、収束性を改善する。ただし、各式には、依存関係があるため、逐次処理が必要である。たとえば、式(1)と式(2)とは、xにおいて、依存関係がある。
【0008】
【数1】
【0009】
上記のように依存関係があると、並列化が困難であり、求解処理においてボルトネックとなる。なお、式(10)のガウスザイデル法を、連立方程式11に適用する場合、「z」を「x」に置き換え、「r」を「b」に置き換える。「aii」は、線形方程式のAのi行i列の要素に相当する。
【0010】
ここで、カラーリングと呼ばれる従来技術がある。カラーリングは、要素間に直接の依存関係があるか否かを基にして、直接の依存関係がない要素を、並列して処理できる要素として、同じ色を割り当てる。依存関係の確認については、連立方程式の各要素に基づいて判定される。該当する色に割り当てられている要素については、フラグを立てて管理する。
【0011】
図9は、カラーリングを説明するための図である。図8に示した連立方程式11は、図9に示す連立方程式12で表すことができる。すなわち、式(1)~(9)は、下記の式(11)~(19)で表すことができる。式(11)~(19)では、便宜的に、bを、rに置き換える。
【0012】
=(r0++x+x)/8・・・(11)
=(r+x+x+x+x+x)/8・・・(12)
=(r+x+x+x)/8・・・(13)
=(r+x++x+x+x)/8・・・(14)
=(r+x+x+x+x+x+x+x+x+x)/8・・・(15)
=(r+x+x+x+x+x)/8・・・(16)
=(r+x+x+x)/8・・・(17)
=(r+x+x+x+x)/8・・・(18)
=(r+x+x+x)/8・・・(19)
【0013】
式(11)~(19)に基づくと、式(11)、式(13)、式(17)、式(19)には直接の依存関係がない。これにより、式(11)、式(13)、式(17)、式(19)に対応する2次元格子10の格子点x,x,x,xが同色(第1の色)に設定される。
【0014】
式(11)~(19)に基づくと、式(12)、式(18)には直接の依存関係がない。これにより、式(12)、式(18)に対応する2次元格子10の格子点x,xが同色(第2の色)に設定される。
【0015】
式(11)~(19)に基づくと、式(14)、式(16)には直接の依存関係がない。これにより、式(14)、式(16)に対応する2次元格子10の格子点x,xが同色(第3の色)に設定される。
【0016】
残りの式(15)に対応する格子点xには、格子点x~x,x~xとは異なる色(第4の色)が設定される。
【0017】
カラーリングによって、同色に設定された格子点に対応する式については、並列計算が可能である。なお、2次元の格子点では、上下左右斜めの(8要素)に依存し、少なくとも4色割り当てる必要がある。3次元の格子点は、全方向(26要素)に依存し、少なくとも8色割り当てる必要がある。
【0018】
続いて、ブロックカラーリングについて説明する。ブロックカラーリングは、複数の変数をひとつのまとまりの変数として考えて、カラーリングを行うものである。図10は、ブロックカラーリングを説明するための図である。図10に示す例では、2次元格子10に含まれる格子点x,x,xを一つのまとまりとして、ブロック10aを生成する。格子点x,x,xを一つのまとまりとして、ブロック10bを生成する。格子点x,x,xを一つのまとまりとして、ブロック10cを生成する。図10に示す例では、2次元格子10の行をまとめたブロックを生成する例を示すが、2×2等の行をまたぐブロックの作成も可能である。
【0019】
ブロックカラーリングでは、ブロック内の全ての要素について、依存関係を考慮し、ブロック間の依存関係を基にして、ブロック毎に色を設定する。
【0020】
ブロック10aと、ブロック10cとには依存関係がないため、ブロック10aの格子点x~x、および、ブロック10cの格子点x~xに、同一の色(第1の色)を設定する。
【0021】
ブロック10bに含まれる格子点x~xに同一の色(第2の色)を設定する(ただし、ブロック10aの格子点x~xに設定した色とは異なる色に設定する)。
【0022】
図10に示したブロックカラーリングを実行することで、ブロック10a,10cの並列処理を行った後に、ブロック10bの処理を行うことを交互に繰り返し実行する。ブロック内は、逐次処理であるため、収束性が改善される。また、ブロック内でまとまりができるため、ブロック内の格子点に対応する値が、メモリ上の近くに記憶され、局所性が改善される。
【先行技術文献】
【特許文献】
【0023】
【特許文献1】特開2020-13412号公報
【発明の概要】
【発明が解決しようとする課題】
【0024】
上記のカラーリングでは、ガウスザイデル法の計算によって並列性を抽出することが可能であるが、逐次処理と同じではないため、収束性が悪化するという問題がある。
【0025】
一方、ブロックカラーリングを利用することで逐次処理を可能とし、収束性を改善させているものの、ブロックカラーリングは、並列数が小さいCPU向けの手法である。このため、問題行列を求解する場合、ブロックサイズが大きくなる傾向があり、結果として、並列数が低下してしまう。
【0026】
このため、問題行列を求解する場合の収束性と並列性とを両方を改善することが求められている。
【0027】
1つの側面では、本発明は、問題行列を求解する場合の収束性と並列性とを両方を改善することができる算出プログラム、算出方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0028】
第1の案では、コンピュータに、次の処理を実行させる。コンピュータは、線形方程式に対応する問題行列であって、線形方程式の複数の変数に対応する複数の頂点を有する問題行列を複数の領域に分割する。コンピュータは、問題行列の一つの領域に対してブロックカラーリングを適用することで、一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、複数の領域について実行する。コンピュータは、同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、線形方程式の複数の変数の解を算出する。
【発明の効果】
【0029】
問題行列を求解する場合の収束性と並列性とを両方を改善することができる。
【図面の簡単な説明】
【0030】
図1図1は、ガウスザイデル法の計算例を説明するための図である。
図2図2は、本実施例に係る情報処理装置の処理を説明するための図である。
図3図3は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
図4図4は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
図5図5は、ガウスザイデル法による算出処理の処理手順を示すフローチャートである。
図6図6は、2次元格子のその他の例を示す図である。
図7図7は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図8図8は、問題行列を生成する従来の方法を説明するための図である。
図9図9は、カラーリングを説明するための図である。
図10図10は、ブロックカラーリングを説明するための図である。
【発明を実施するための形態】
【0031】
以下に、本願の開示する算出プログラム、算出方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0032】
本実施例の説明を行う前に、式(10)に示したガウスザイデル法の計算例について説明する。図1は、ガウスザイデル法の計算例を説明するための図である。ガウスザイデル法の適用対象を、式(11)~(19)に示す連立方程式12とする。rの初期値を「2」とし、変数xの初期値を「1」とする(i=0~8)。
【0033】
ガウスザイデル法の繰り返し反復計算のうち、1回目の変数xの値は、以下となる。
x0=(2+1+1+1)/8=0.625
【0034】
1回目の変数xの値は、更新後の変数xの値を利用して、以下となる。
x1=(2+0.625+1+1+1+1)/8=0.828125
【0035】
1回目の変数xの値は、更新後の変数xの値を利用して、以下となる。
x2=(2+0.828125+1+1)/8=0.603515625
【0036】
1回目の変数xの値は、更新後の変数x、xの値を利用して、以下となる。
x3=(2+0.625+0.828125+1+1+1)/8=0.806640625
【0037】
1回目の変数xの値は、更新後の変数x、x、x、xを利用して、以下となる。
x4=(2+0.625+0.828125+0.603515625+0.806640625+1+1+1+1)/8=1.10791015625
【0038】
1回目の変数xの値は、更新後の変数x、x、xを利用して、以下となる。
x5=(2+0.828125+0.603515625+1.10791015625+1+1)/8=0.81744384765625
【0039】
1回目の変数xの値は、更新後の変数x、xを利用して、以下となる。
x6=(2+0.806640625+1.10791015625+1)/8=0.61431884765625
【0040】
1回目の変数xの値は、更新後の変数x、x、x、xを利用して、以下となる。
x7=(2+0.806640625+1.10791015625+0.81744384765625+0.61431884765625+1)/8=0.793289184570312
【0041】
1回目の変数xの値は、更新後の変数x、x、x、xを利用して、以下となる。
x8=(2+1.10791015625+0.81744384765625+0.793289184570312)/8=0.58983039855957
【0042】
2回目以降も、更新後の値を用いて、上記処理を繰り返し実行することで、変数xの値を計算するものが、ガウスザイデル法である。たとえば、変数xの値が収束した場合に、計算を終了する。
【0043】
次に、本実施例に係る情報処理装置の処理について説明する。図2は、本実施例に係る情報処理装置の処理を説明するための図である。情報処理装置は、階層型のカラーリングを実行した上で、ガウスザイデル法による求解を行う。
【0044】
図2では、2次元格子20を用いて説明する。2次元格子20には、格子点xが含まれる(i=0~80)。格子点xには、左上の格子点xから順に、識別番号が割り振られているものとする。格子点xに割り振られる識別番号を「i」とする。たとえば、格子点xに割り振られる識別番号は「0」となる。2次元格子20は、上下左右斜めの格子点に依存関係がある。
【0045】
情報処理装置は、2次元格子20に含まれる格子点xに設定された識別番号に基づいて、2次元格子20を複数の領域20a,20b,20cに分割する。たとえば、領域20aには、格子点x~x26が含まれる。領域20bには、格子点x27~x53が含まれる。領域20cには、格子点x54~x80が含まれる。
【0046】
情報処理装置は、2次元格子20を複数の領域20a~20cに分割した後に、領域20a~20cに対して、ブロックカラーリングを実行することで、複数のブロックに分割する。本実施例では、領域をブロックサイズ「3×3」のブロックに分割する場合について説明する。
【0047】
図2に示すように、情報処理装置は「格子点x~x、x~x11、x18~x21」、「格子点x~x、x12~x14、x21~x23」、「格子点x~x、x15~x17、x24~x26」をそれぞれ一つの変数と見なし、領域20aを、ブロックb1,b2,b3に分割する。
【0048】
情報処理装置は、「格子点x~x、x~x11、x18~x21」と、「格子点x~x、x15~x17、x24~x26」とに依存関係がない場合、領域20aを、2色に塗り分ける。たとえば、情報処理装置は、「格子点x~x、x~x11、x18~x21」と、「格子点x~x、x15~x17、x24~x26」とに、第1の色を割り当てる。情報処理装置は、「格子点x~x、x12~x14、x21~x23」に第2の色を割り当てる。
【0049】
情報処理装置は「格子点x27~x29、x36~x38、x45~x47」、「格子点x30~x32、x39~x41、x48~x50」、「格子点x33~x35、x42~x44、x51~x53」をそれぞれ一つの変数と見なし、領域20bを、ブロックb4,b5,b6に分割する。
【0050】
情報処理装置は、「格子点x27~x29、x36~x38、x45~x47」と、「格子点x33~x35、x42~x44、x51~x53」とに依存関係がない場合、領域20bを、2色に塗り分ける。たとえば、情報処理装置は、「格子点x27~x29、x36~x38、x45~x47」と、「格子点x33~x35、x42~x44、x51~x53」とに、第3の色を割り当てる。情報処理装置は「格子点x30~x32、x39~x41、x48~x50」に第4の色を割り当てる。
【0051】
情報処理装置は「格子点x54~x56、x63~x65、x72~x74」、「格子点x57~x59、x66~x68、x75~x77」、「格子点x60~x62、x69~x71、x78~x80」をそれぞれ一つの変数と見なし、領域20bを、ブロックb7,b8,b9に分割する。
【0052】
情報処理装置は、「格子点x54~x56、x63~x65、x72~x74」と、「格子点x60~x62、x69~x71、x78~x80」とに依存関係がない場合、領域20cを2色に塗り分ける。たとえば、情報処理装置は「格子点x54~x56、x63~x65、x72~x74」と、「格子点x60~x62、x69~x71、x78~x80」とに、第5の色を割り当てる。情報処理装置は「格子点x57~x59、x66~x68、x75~x77」に第6の色を割り当てる。
【0053】
上記のように、情報処理装置は、各領域20a~20cに対してブロックカラーリングを実行することで、6色を、2次元格子20に含まれる格子点に割り当てる。以下の説明では、同一のブロックに含まれる各格子点に対応する問題行列を「部分問題行列」と表記する。
【0054】
続いて、情報処理装置は、領域20a~20cそれぞれについて、各ブロックに含まれる各格子点(変数)に対し、ガウスザイデル法の計算を適用し、逐次的に処理する。情報処理装置は、領域20a,20b,20cの順に処理を完了させ、次の領域へよりよい更新結果を伝達することが可能となる。情報処理装置は、領域内について、同じ色に属する要素をもつブロックを並列に処理する。
【0055】
たとえば、情報処理装置が、領域20aに対して処理を行う場合、ブロックb1に含まれる各格子点と、ブロックb3に含まれる各格子点とを並列処理する。情報処理装置は、ブロックb1、b3に対する並列処理を1回行った後に、ブロックb2に対する処理を1回行い、領域20bに対する処理に移行する。
【0056】
情報処理装置が、領域20bに対して処理を行う場合、ブロックb4に含まれる各格子点と、ブロックb6に含まれる各格子点とを並列処理する。情報処理装置は、ブロックb4、b6に対する並列処理を1回行った後に、ブロックb5に対する処理を1回行い、領域20cに対する処理に移行する。
【0057】
情報処理装置が、領域20cに対して処理を行う場合、ブロックb7に含まれる各格子点と、ブロックb9に含まれる各格子点とを並列処理する。情報処理装置は、ブロックb7、b9に対する並列処理を1回行った後に、ブロックb5に対する処理を1回行い、領域20aに対する処理に戻る。
【0058】
情報処理装置は、上記処理を繰り返し実行することで、2次元格子20に含まれる格子点xの値を求解する。
【0059】
上記のように、本実施例に係る情報処理装置は、問題行列を複数の領域に分割し、各領域内でブロックカラーリングを行い、各領域に対して逐次的にガウスザイデル法を適用して解を求める。これによって、問題行列を求解する場合の収束性と並列性とを両方を改善することができる。
【0060】
次に、本実施例に係る情報処理装置の構成例について説明する。図3は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図3に示すように、本実施例に係る情報処理装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0061】
通信部110は、ネットワークを介して、外部装置等に接続され、各種のデータを受信する。たとえば、通信部110は、NIC(Network Interface Card)等によって実現される。
【0062】
入力部120は、各種の情報を、情報処理装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0063】
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、タッチパネル等に対応する。
【0064】
記憶部140は、格子情報141を有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0065】
格子情報141は、d次元格子が含まれる(d=1、2または3)。図2で説明した例では、格子情報141として、2次元格子20を示した。
【0066】
制御部150は、分割部151、算出部152を有する。制御部150は、たとえば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
【0067】
分割部151は、格子情報141を取得し、格子情報141に対応するd次元格子を複数の領域に分割する。図2に示す例では、分割部151が2次元格子20を領域20a~20cに分割する例を示した。
【0068】
分割部151は、分割する際の領域の分割サイズNを、並列性Pに基づいて決定する。領域の分割サイズNは、領域に含まれる格子点の数である。分割部151は、分割対象の2次元格子の格子点が、上下左右斜め(周り8頂点)の依存関係がある場合には、条件1を満たす、分割サイズNを決定する。条件1において、bx×byはブロックサイズであり、予め設定される。並列性Pは、情報処理装置100のハードウェア特性から事前に設定される。上下左右斜め(周り8頂点)の依存関係がある場合には、最低4色の塗分けが求められる。
【0069】
P<(N/(bx×by))/4・・・(条件1)
【0070】
なお、分割部151は、分割対象の2次元格子の格子点が、上下左右(周り4頂点)の依存関係がある場合には、条件2を満たすように、分割サイズNを決定する。上下左右(周り4頂点)の依存関係がある場合には、最低2色の塗分けが求められる。
【0071】
P<(N/(bx×by))/2・・・(条件2)
【0072】
ところで、分割部151は、格子情報141に対応する格子が、3次元格子である場合には、分割する際の領域の分割サイズNを、次のように決定する。分割部151は、分割対象の3次元格子の格子点が、上下左右前後斜め(周り26頂点)の依存関係がある場合には、条件3を満たす、分割サイズNを決定する。条件3において、bx×by×bzはブロックサイズであり、予め設定される。上下左右前後斜め(周り26頂点)の依存関係がある場合には、最低8色の塗分けが求められる。
【0073】
P<(N/(bx×by×bz))/8・・・(条件3)
【0074】
分割部151は、分割対象の3次元格子の格子点が、上下左右前後(周り6頂点)の依存関係がある場合には、条件4を満たすように、分割サイズNを決定する。上下左右前後(周り6頂点)の依存関係がある場合には、最低2色の塗分けが求められる。
【0075】
P<(N/(bx×by×bz))/2・・・(条件4)
【0076】
まとめると、分割部151は、条件5を満たすように、領域の分割サイズNを決定する。条件5において、kは、予め設定される係数である。Cは、塗分けにおける最低色数である。なお、ブロックサイズは、1次元の場合「bx」、2次元の場合「bx×by」、3次元の場合「bx×by×bz」となる。
【0077】
N>k×C×P×(bx×by×bz)・・・(条件5)
【0078】
分割部151は、条件5を満たす範囲内で、分割サイズNを調整してもよい。たとえば、分割部151は、条件5を満たす範囲内で、分割サイズNの最小値を決定してもよいし、ブロックサイズによって割り切れる値を、分割サイズNの値としてもよい。
【0079】
分割部151は、決定した分割サイズNを基にして、格子情報141に対応するd次元格子(d=1、2または3)を分割し、分割したd次元格子を、算出部152に出力する。たとえば、図2で説明した例では、2次元格子20を、領域20a~20cに分割し、分割結果を、算出部152に出力する。
【0080】
分割部151は、分割サイズNによって、d次元格子を分割する場合に、分割サイズNに含まれる格子点の識別番号が、連番になるように設定する。図2で説明した例では、領域20a~20cに含まれる格子点の識別番号が連番となっている。
【0081】
算出部152は、分割された領域それぞれについて、ガウスザイデル法の計算を逐次的に実行する。算出部152は、領域に含まれる各ブロック内の格子点に対応する変数に対し、ガウスザイデル法の計算により、逐次的に処理する。算出部152は、複数の領域の順に処理を完了させ、次の領域へよりよい更新結果を伝達することが可能となる。
【0082】
算出部152が、分割された領域それぞれについて、ガウスザイデル法の計算を逐次的に実行するその他の処理の説明は、図2で行った説明と同様である。
【0083】
算出部152は、ガウスザイデル法の計算を逐次的に実行した結果得られるxの値を、表示部130に出力して表示させる。
【0084】
次に、本実施例に係る情報処理装置100の処理手順の一例について説明する。図4は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。図4に示すように、情報処理装置100の分割部151は、対象格子の次元数、ブロックサイズ、必要並列数、最低色数、係数の入力を受け付ける(ステップS101)。
【0085】
分割部151は、条件5を満たす問題行列の分割サイズNを特定する(ステップS102)。分割部151は、特定した分割サイズNを基にして、問題行列を複数の領域に分割する(ステップS103)。
【0086】
情報処理装置100の算出部152は、全ての部分領域問題について、処理を終えていない場合には(ステップS104,No)、各部分問題行列について、ブロックカラーリングを適用し(ステップS105)、ステップS104に移行する。
【0087】
一方、算出部152は、全ての部分領域問題について、処理を終えた場合には(ステップS104,Yes)、ガウスザイデル法による算出処理を実行する(ステップS106)。算出部152は、算出結果を表示部130に出力する(ステップS107)。
【0088】
次に、図4のステップS106に示したガウスザイデル法による算出処理について説明する。図5は、ガウスザイデル法による算出処理の処理手順を示すフローチャートである。図5に示すように、情報処理装置100の算出部152は、全ての部分問題行列について、処理を終えた場合には(ステップS201,Yes)、処理を終了する。
【0089】
算出部152は、全ての部分問題行列について、処理を終えていない場合には(ステップS201,No)、全ての色について、処理を終えたか否かを判定する(ステップS202)。算出部152は、全ての色について、処理を終えた場合には(ステップS202,Yes)、ステップS201に移行する。
【0090】
算出部152は、全ての色について、処理を終えていない場合には(ステップS202,No)、ステップS203に移行する。算出部152は、処理を終えてない色に属する要素に関して、式(10)の計算を行う。また、算出部152は、同一の色の要素については、並列で処理を実行する(ステップS203)。算出部152は、ステップS203の処理の後、ステップS201に移行する。
【0091】
上記のように、情報処理装置100は、問題行列を複数の領域に分割し、各領域内でブロックカラーリングを行い、各領域に対して逐次的にガウスザイデル法を適用して解を求める。これによって、問題行列を求解する場合の収束性と並列性とを両方を改善することができる。たとえば、収束性が改善することで、ガウスザイデル法による反復回数が減少する。並列性が改善することで、反復処理毎の処理時間が減少する。
【0092】
情報処理装置100は、同一の領域に含まれる各頂点の番号が連番となるように、前記問題行列を複数の領域に分割する。これによって、領域をブロックに分割した場合に、ブロック内の格子点の識別番号が相互に近い識別番号となり、局所性を改善することができる。
【0093】
情報処理装置100は、部分問題行列に含まれる同一の色が割り当てられた部分問題行列毎に、ガウスザイデル法を適用することで、線形方程式の複数の変数の解を算出する。これによって、並列性を向上させることが可能となる。
【0094】
情報処理装置100は、ハードウェアに基づく並列性と、問題行列に含まれる各頂点に対応する変数の依存関係と、部分問題行列のサイズとを基にして、分割する領域のサイズを特定する。これによって、最適な分割サイズによって、問題行列を分割することができる。
【0095】
ここで、本実施例に係る情報処理装置100が実行する処理について補足する。図6は、2次元格子のその他の例を示す図である。2次元格子30には、格子点xが含まれる(i=0~80)。格子点xには、左上の格子点xから、識別番号が割り振られているものとする。ただし、識別番号は、図2に示した2次元格子20と異なる。2次元格子30は、上下左右の格子点に依存関係があり、斜めの格子点には依存関係がない。
【0096】
情報処理装置100の分割部151は、2次元格子30に含まれる格子点xに設定された識別番号に基づいて、2次元格子20を複数の領域30a,30b,30cに分割する。たとえば、領域30aには、格子点x~x20、x24~x26、x30~x32が含まれる。領域30bには、格子点x21~x23、x27~x29、x33~x53が含まれる。領域30cには、格子点x54~x80が含まれる。
【0097】
情報処理装置100の算出部152は、分割された領域30a~30cに対して、ブロックカラーリングを実行することで、複数のブロックに分割する。
【0098】
算出部152は、「格子点x~x、x~x、x12~x14」、「格子点x~x、x~x11、x15~x17」、「格子点x18~x20、x24~x26、x30~x32」をそれぞれ一つの変数と見なし、領域30aを、ブロックb11,b12,b13に分割する。算出部152は、図2と同様にして、依存関係がないブロックの各格子点に同一の色を割り当てる。
【0099】
算出部152は、「格子点x21~x23、x27~x29、x33~x35」、「格子点x36~x38、x39~x41、x42~x44」、「格子点x45~x47、x48~x50、x51~x53」をそれぞれ一つの変数と見なし、領域30bを、ブロックb14,b15,b16に分割する。算出部152は、図2と同様にして、依存関係がないブロックの各格子点に同一の色を割り当てる。
【0100】
算出部152は、「格子点x54~x56、x57~x59、x60~x62」、「格子点x63~x65、x66~x68、x69~x71」、「格子点x72~x74、x75~x77、x78~x80」をそれぞれ一つの変数と見なし、領域30cを、ブロックb17,b18,b19に分割する。算出部152は、図2と同様にして、依存関係がないブロックの各格子点に同一の色を割り当てる。
【0101】
情報処理装置は、領域30a~30cそれぞれについて、各ブロックに含まれる各格子点(変数)に対し、ガウスザイデル法の計算を適用し、逐次的に処理する。
【0102】
次に、上記実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図7は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0103】
図7に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置204と、インタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0104】
ハードディスク装置207は、分割プログラム207a、算出プログラム207bを有する。また、CPU201は、各プログラム207a,207bを読み出してRAM206に展開する。
【0105】
分割プログラム207aは、分割プロセス206aとして機能する。算出プログラム207bは、算出プロセス206bとして機能する。
【0106】
分割プロセス206aの処理は、分割部151の処理に対応する。算出プロセス206bの処理は、算出部152の処理に対応する。
【0107】
なお、各プログラム207a,207bについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a,207bを読み出して実行するようにしてもよい。
【0108】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0109】
(付記1)線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理をコンピュータに実行させることを特徴とする算出プログラム。
【0110】
(付記2)前記問題行列に含まれる各頂点には番号が割り当てられ、前記問題行列を複数の領域に分割する処理は、同一の領域に含まれる各頂点の番号が連番となるように、前記問題行列を複数の領域に分割することを特徴とする付記1に記載の算出プログラム。
【0111】
(付記3)前記算出する処理は、前記同一の色が割り当てられた部分問題行列毎に、ガウスザイデル法を適用することで、前記線形方程式の複数の変数の解を算出することを特徴とする付記1に記載の算出プログラム。
【0112】
(付記4)前記算出する処理を実行するハードウェアに基づく並列性と、前記問題行列に含まれる各頂点に対応する変数の依存関係と、前記部分問題行列のサイズとを基にして、分割する領域のサイズを特定する処理を更にコンピュータに実行させることを特徴とする付記1に記載の算出プログラム。
【0113】
(付記5)線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理をコンピュータが実行することを特徴とする算出方法。
【0114】
(付記6)前記問題行列に含まれる各頂点には番号が割り当てられ、前記問題行列を複数の領域に分割する処理は、同一の領域に含まれる各頂点の番号が連番となるように、前記問題行列を複数の領域に分割することを特徴とする付記5に記載の算出方法。
【0115】
(付記7)前記算出する処理は、前記同一の色が割り当てられた部分問題行列毎に、ガウスザイデル法を適用することで、前記線形方程式の複数の変数の解を算出することを特徴とする付記5に記載の算出方法。
【0116】
(付記8)前記算出する処理を実行するハードウェアに基づく並列性と、前記問題行列に含まれる各頂点に対応する変数の依存関係と、前記部分問題行列のサイズとを基にして、分割する領域のサイズを特定する処理を更にコンピュータが実行することを特徴とする付記5に記載の算出方法。
【0117】
(付記9)線形方程式に対応する問題行列であって、前記線形方程式の複数の変数に対応する複数の頂点を有する前記問題行列を複数の領域に分割し、
前記問題行列の一つの領域に対してブロックカラーリングを適用することで、前記一つの領域を複数の部分問題行列に分割し、各部分問題行列のうち相互に依存関係のない部分問題行列に同一の色を割り当てる処理を、前記複数の領域について実行し、
同一の色が割り当てられた部分問題行列毎に、反復法を実行することで、前記線形方程式の複数の変数の解を算出する
処理を実行する制御部を有する情報処理装置。
【0118】
(付記10)前記問題行列に含まれる各頂点には番号が割り当てられ、前記問題行列を複数の領域に分割する処理は、同一の領域に含まれる各頂点の番号が連番となるように、前記問題行列を複数の領域に分割することを特徴とする付記9に記載の情報処理装置。
【0119】
(付記11)前記算出する処理は、前記同一の色が割り当てられた部分問題行列毎に、ガウスザイデル法を適用することで、前記線形方程式の複数の変数の解を算出することを特徴とする付記9に記載の情報処理装置。
【0120】
(付記12)前記制御部は、前記算出する処理を実行するハードウェアに基づく並列性と、前記問題行列に含まれる各頂点に対応する変数の依存関係と、前記部分問題行列のサイズとを基にして、分割する領域のサイズを特定する処理を更にすることを特徴とする付記9に記載の情報処理装置。
【符号の説明】
【0121】
100 情報処理装置
110 通信部
120 入力部
130 表示部
140 記憶部
141 格子情報
150 制御部
151 分割部
152 算出部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10