JP2008269329A - 連立一次方程式の解を反復的に決定する方法 - Google Patents

連立一次方程式の解を反復的に決定する方法 Download PDF

Info

Publication number
JP2008269329A
JP2008269329A JP2007112019A JP2007112019A JP2008269329A JP 2008269329 A JP2008269329 A JP 2008269329A JP 2007112019 A JP2007112019 A JP 2007112019A JP 2007112019 A JP2007112019 A JP 2007112019A JP 2008269329 A JP2008269329 A JP 2008269329A
Authority
JP
Japan
Prior art keywords
vector
processing unit
matrix
arithmetic
arithmetic processing
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.)
Withdrawn
Application number
JP2007112019A
Other languages
English (en)
Inventor
Kuniaki Yosui
邦明 用水
Hidekazu Kobayashi
英一 小林
Michiya Mori
倫也 森
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.)
Murata Manufacturing Co Ltd
Original Assignee
Murata Manufacturing Co Ltd
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 Murata Manufacturing Co Ltd filed Critical Murata Manufacturing Co Ltd
Priority to JP2007112019A priority Critical patent/JP2008269329A/ja
Publication of JP2008269329A publication Critical patent/JP2008269329A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】複素対称行列の係数行列を有する連立一次方程式をより高速に解くための方法を提供する。
【解決手段】連立一次方程式の解を反復的に決定する方法は、一種の非定常反復法を用いる。ここで、対象とする連立一次方程式は、N行×N列の係数行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表すことができる。特に、係数行列Aが複素対称行列であるものを対象とする。反復解を初期値から残差ベクトルに基づき修正し、収束するまで反復処理する。
【選択図】図4

Description

この発明は、大規模な連立一次方程式の解を反復的に決定する方法に関し、特に擬似残差に基づいて探索方向ベクトルを逐次生成することで、解を決定する非定常的な解法に関する。
近年、高周波商品の開発や設計が盛んに行なわれており、高周波商品の電磁界解析を行なうのに電磁界解析ソフトが広く使用されるようになってきている。一般に、電磁界解析の解析手法としては、有限差分時間領域法(FDTD法:Finite Difference Time Domain Method)を代表とする時間領域での解法、モーメント法、および有限要素法の3種類に大きく分類できる。なお、モーメント法および有限要素法は、いずれも周波数領域での解法である。これらの解析手法の中で、有限要素法は、複雑なモデル形状に対して対応しやすいという特徴があり、電磁解解析の解析手法として採用されることが多い。
この有限要素法を用いた電磁界解析においては、大規模な連立一次方程式を解く必要がある。従来、電磁界解析には、ガウスの消去法と呼ばれる直接法しか適用できないため、計算時間が長くなるという問題が知られていた。
このような状況において、Multigridという解法が電磁界解析でも使えることが証明され、直接法ではなく、反復法を用いて、大規模な連立一次方程式を解くことが可能となった。このMultigrid法は、解析対象を細かな要素と粗い要素との2種類に分割し、粗い要素の解を利用して細かな要素の解を求めるものである。
さらに、国際公開第2005/057434号パンフレット(特許文献1)には、Non−nested Meshを使用したMultigrid法を用いて電磁界解析をより高速に実行する方法が開示されている。この方法によれば、反復法を用いて大規模な連立一次方程式を解くことができるので、直接法を用いて電磁界解析を実行する場合に比較して、計算時間を大幅に短縮できる。
国際公開第2005/057434号パンフレット Roland W.Freund et al., "QMR:a Quasi-Minimal Residual Method for Non-Hermitian Linear Systems",Numer.Math.60, 1991, pp.315-339. Roland W.Freund et al., "A NEW KRYLOV-SUBSPACE METHOD FOR SYMMETRIC INDEFINITE LINEAR SYSTEMS", Proceedings of the 14th IMACS World Congress on Computational and Applied Mathematics, pp.1253-1256, 1994.
しかしながら、国際公開第2005/057434号パンフレット(特許文献1)に開示される方法を用いた場合であっても、大規模な連立一次方程式を解く必要は依然として存在している。また、上記の方法では、解析対象を近似モデル化して扱うが、昨今の高周波分野の開発においては、解析対象をより実物に近い状態で電磁界解析することが要求されている。そこで、解析対象をより正確に3次元モデル化すると、モデルが複雑化し、解くべき連立一次方程式の規模はさらに大きくなる。すなわち、電磁界解析をより短時間で完了するためには、大規模な連立一次方程式をより高速に解く必要がある。
上述のような反復法の代表的な解法として、非特許文献1に開示されるようなQMR法(擬似的最小残差法:Quasi-Minimal Residual Method)が知られている。このQMR法は、正方行列である任意の係数行列をもつ連立一次方程式に対して適用可能である。すなわち、QMR法が解くことのできる連立一次方程式は、その係数行列が正方行列であればいずれであってもよく、適用対象がエルミート行列や複素対称行列などに制限されることはない。
これに対して、非特許文献2には、係数行列がエルミート行列である連立一次方程式をより短時間に解く方法として、SQMR法(対称擬似的最小残差法:Quasi-Minimal Residual Method)が開示されている。このSQMR法によれば、エルミート行列の係数行列をもつ連立一次方程式を、QMR法に比較して高速に解くことが可能である。
しかしながら、国際公開第2005/057434号パンフレット(特許文献1)に開示されるようなメッシュ化の手法を用いて電磁界解析を行なおうとする場合には、生成される連立一次方程式の係数行列は、複素対称行列となるため、SQMR法を採用することができない。その結果、このような電磁界解析には、QMR法を使用せざるを得ず、処理時間を十分に短縮することができなかった。
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、複素対称行列の係数行列を有する連立一次方程式をより高速に解くための方法を提供することである。
この発明のある局面に従えば、演算装置を用いて連立一次方程式の解を反復的に決定する方法であって、演算装置は、演算処理部と、記憶部と、出力部とを含み、連立一次方程式は、N行×N列の複素対称行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表わせる。そして、方法は、演算処理部が、複素対称行列Aと、係数行列bと、第1前処理行列および第2前処理行列とを記憶部に格納するステップと、演算処理部が、連立一次方程式の反復解を予め定められた初期値に設定するステップと、演算処理部が、連立一次方程式についての初期値に設定した反復解における残差ベクトルを算出するステップと、演算処理部が、算出された反復解における残差ベクトルに基づいて、反復解を修正するステップと、演算処理部が、連立一次方程式についての修正後の反復解における残差ベクトルを算出するステップと、演算処理部が、算出された修正後の反復解における残差ベクトルの大きさに基づいて、反復処理が収束しているか否かを判断するステップと、反復処理が収束していないと判断すると、演算処理部が、反復解を修正するステップと、修正後の反復解における残差ベクトルを算出するステップと、反復処理が収束しているか否かを判断するステップとを繰返すステップと、反復処理が収束していると判断すると、演算処理部が、当該時点の反復解を連立一次方程式の解として出力部から出力するステップとを備える。反復解を予め定められた初期値に設定するステップは、演算処理部が、第1前処理行列の逆行列と初期値に設定した反復解における残差ベクトルとの積を第1ベクトル(μ,μ,・・・,μ)として算出するステップと、演算処理部が、第2前処理行列の逆行列と第1ベクトルとの積を第2ベクトル(ν,ν,・・・,ν)として算出するステップと、残差ベクトルを(δ,δ,・・・,δ)として、演算処理部が、第1修正係数としてΣδμ(k=1,2,・・・,N)を算出するステップとを含む。反復解を修正するステップは、演算処理部が、第1ベクトルを複素対称部分行列Aと第2ベクトルとの積に更新するステップと、演算処理部が、第2修正係数としてΣμν(k=1,2,・・・,N)を算出するステップと、演算処理部が、第1ベクトルと第1修正係数と第2修正係数とにより残差ベクトルを更新するステップと、演算処理部が、第1ベクトルを第1前処理部分行列の逆行列と更新後の残差ベクトルとの積に更新するステップとを含む。繰返すステップは、演算処理部が、第2前処理行列の逆行列と第1ベクトルとの積を第3ベクトル(ξ,ξ,・・・,ξ)として算出するステップと、演算処理部が、第1修正係数をΣδξ(k=1,2,・・・,N)に更新するステップと、演算処理部が、第3ベクトル、ならびに更新前の第1修正係数および更新後の第1修正係数により第2ベクトルを更新するステップとを含む。
この発明の別の局面に従えば、相互に通信可能に構成された複数の演算装置を用いて連立一次方程式の解を反復的に決定する方法であって、複数の演算装置の各々は、演算処理部と、記憶部とを含み、連立一次方程式は、N行×N列の複素対称行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表わせる。方法は、複数の演算装置のうちの第1の演算装置の演算処理部が、外部入力される、複素対称行列Aおよび係数行列bを対応の記憶部に格納するステップと、第1の演算装置の演算処理部が、外部入力される、第1前処理行列および第2前処理行列を対応の記憶部に格納するステップと、第1の演算装置の演算処理部が、複素対称行列の非零要素が対角位置に配置されるように、連立一次方程式Ax=bの行順序を並び替えるステップと、第1の演算装置の演算処理部が、行順序の並び替え後の複素対称行列および係数行列を、複数の演算装置の残りの演算装置の各々に対応付けてそれぞれ複数の複素部分行列および係数部分行列に分割するステップと、第1の演算装置の演算処理部が、複数の複素部分行列および係数部分行列に対応付けて、第1前処理行列および第2前処理行列を、それぞれ複数の第1前処理部分行列および第2前処理部分行列に分割するステップと、第1の演算装置の演算処理部が、複数の複素部分行列および係数部分行列、ならびに第1および2前処理行列を、それぞれ対応する残りの演算装置に送信するステップと、残りの演算装置の各演算処理部が、第1の演算装置から送信される、複数の複素部分行列および係数部分行列、ならびに第1および第2前処理行列を、対応の記憶部に格納するステップと、残りの演算装置の各演算処理部が、対応の複素部分行列と、対応の係数部分行列とによって規定される部分連立一次方程式の反復解を予め定められた初期値に設定するステップと、残りの演算装置の各演算処理部が、部分連立一次方程式についての反復解における残差ベクトルを算出するステップと、残りの演算装置の各演算処理部が、算出された反復解における残差ベクトルに基づいて、反復解を修正するステップと、残りの演算装置の各演算処理部が、部分連立一次方程式についての修正後の反復解における残差ベクトルを算出するステップと、残りの演算装置の各演算処理部が、算出された修正後の反復解における残差ベクトルの大きさに基づいて、反復処理が収束しているか否かを判断するステップと、反復処理が収束していないと判断すると、残りの演算装置の各演算処理部が、反復解を修正するステップと、修正後の反復解における残差ベクトルを算出するステップと、反復処理が収束しているか否かを判断するステップとを繰返すステップと、反復処理が収束していると判断すると、残りの演算装置の各演算処理部が、当該時点の反復解を、第1の演算装置に送信するステップと、第1の演算装置の演算処理部が、残りの演算装置の各々から送信された複数の反復解を結合するステップと、第1の演算装置の演算処理部が、結合した複数の反復解を連立一次方程式の解として出力するステップとを備える。前記反復解を予め定められた初期値に設定するステップは、前記演算処理部が、前記第1前処理行列の逆行列と前記初期値に設定した前記反復解における残差ベクトルとの積を第1ベクトル(μ,μ,・・・,μ)として算出するステップと、前記演算処理部が、前記第2前処理行列の逆行列と第1ベクトルとの積を第2ベクトル(ν,ν,・・・,ν)として算出するステップと、前記残差ベクトルを(δ,δ,・・・,δ)として、前記演算処理部が、第1修正係数としてΣδμ(k=1,2,・・・,N)を算出するステップとを含む。前記反復解を修正するステップは、前記演算処理部が、前記第1ベクトルを前記複素対称行列Aと前記第2ベクトルとの積に更新するステップと、前記演算処理部が、第2修正係数としてΣμν(k=1,2,・・・,N)を算出するステップと、前記演算処理部が、前記第1ベクトルと前記第1修正係数と前記第2修正係数とにより前記残差ベクトルを更新するステップと、前記演算処理部が、前記第1ベクトルを前記第1前処理行列の逆行列と更新後の前記残差ベクトルとの積に更新するステップとを含む。繰返すステップは、演算処理部が、第2前処理部分行列の逆行列と第1ベクトルとの積を第3ベクトルとして算出するステップと、演算処理部が、残差ベクトルと第3ベクトルとの内積により第1修正係数を更新するステップと、演算処理部が、第3ベクトル、ならびに更新前の第1修正係数および更新後の第1修正係数により第2ベクトルを更新するステップとを含む。
好ましくは、複数の複素部分行列および係数部分行列に分割するステップは、複素対称行列および係数行列の所定の行要素が隣接する2つの演算装置で共有されるように、複数の複素部分行列および係数部分行列を決定するステップを含み、反復解を修正するステップは、残りの演算装置の各演算処理部が、対応の複素部分行列および係数部分行列に隣接する行列が割当てられた演算装置との間でデータの交換を行なうステップを含む。
この発明によれば、複素対称行列の係数行列を有する連立一次方程式をより高速に解くことができる。
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[実施の形態1]
(ハードウェア構成)
本発明の実施の形態1に従う連立一次方程式の解を反復的に決定する方法は、代表的に、パーソナルコンピュータやワークステーションといったコンピュータ上で実行されるソフトウェアによって実現される。
図1は、この発明の実施の形態1に従う連立一次方程式の解を反復的に決定する方法を実現するための代表的なハードウェア構成であるコンピュータ1を示す斜視図である。
図1を参照して、コンピュータ1は、FD(Flexible Disk)駆動装置111およびCD−ROM(Compact Disk-Read Only Memory)駆動装置113を備えたコンピュータ本体101と、モニタ102と、キーボード103と、マウス104とを含む。
図2は、コンピュータ1のハードウェア構成を示す概略構成図である。
図2を参照して、コンピュータ本体101は、図1に示すFD駆動装置111およびCD−ROM駆動装置113に加えて、相互にバスで接続された、CPU(Central Processing Unit)105と、メモリ106と、固定ディスク107と、通信インターフェース109とを含む。
FD駆動装置111にはFD112が装着され、CD−ROM駆動装置113にはCD−ROM114が装着される。上述したように、本実施形態に従う方法は、CPU105がメモリ106などのコンピュータハードウェアを用いて、ソフトウェアを実行することで実現される。一般的に、このようなソフトウェアは、FD112やCD−ROM114などの記録媒体に格納されて、またはネットワークなどを介して流通する。そして、このようなソフトウェアは、FD駆動装置111やCD−ROM駆動装置113などにより記録媒体から読取られて、または通信インターフェース109にて受信されて、固定ディスク107に格納される。さらに、固定ディスク107からメモリ106に読出されて、CPU105により実行される。
モニタ102は、CPU105が出力する情報を表示するための表示部であって、一例としてLCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などから構成される。マウス104は、クリックやスライドなどの動作に応じたユーザから指令を受付ける。キーボード103は、入力されるキーに応じたユーザから指令を受付ける。CPU105は、プログラムされた命令を順次実行することで、各種の演算を実施する演算処理部である。メモリ106は、CPU105のプログラム実行に応じて、各種の情報を記憶する。通信インターフェース109は、コンピュータ1と他の装置との間の通信を確立するための装置であり、CPU105が出力した情報をたとえば電気信号に変換して他の装置へ送出するとともに、他の装置から電気信号を受信してCPU105が利用できる情報に変換する。固定ディスク107は、CPU105が実行するプログラムや予め定められたデータなどを記憶する不揮発性の記憶装置である。また、コンピュータ1には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
(処理の概略)
本実施の形態1に従う連立一次方程式の解を反復的に決定する方法は、一種の非定常反復法を用いる。ここで、対象とする連立一次方程式は、N行×N列の係数行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表わすことができる。そして、本実施の形態1に従う方法は、この連立一次方程式を満足する変数行列xを反復的に決定する。特に、本実施の形態1に従う方法は、係数行列Aが複素対称行列であるものを対象とする。
なお、反復法とは、変数行列xを予め定められた初期値に設定し、その時の残差ベクトル(Ax−b)に基づいて、変数行列xを順次修正しながら、残差ベクトル(Ax−b)の各要素が略ゼロとなるまで繰返し計算を行なう方法である。そして、残差ベクトル(Ax−b)の各要素が略ゼロとなったときの変数行列xの値を解として決定する。
図3は、この発明の実施の形態1に従う方法を実現するための機能ブロック図である。図3に示す各機能ブロックは、CPU105でプログラムが実行されることで、実現される。
図3を参照して、本実施の形態1に従うCPU105では、入力部20と、記憶部21と、初期値設定部22と、初期残差ベクトル算出部23と、ベクトル修正部24と、残差ベクトル算出部25と、判定部26との機能が実現される。
入力部20は、図示しないモデル化装置などから係数行列Aと、係数行列bと、前処理行列M,Mとを受入れ、それらを記憶部21に格納する。また、記憶部21は、メモリ106または固定ディスク107に配置される。
代表的なモデル化装置としては、電磁界解析を行なうために、解析対象を立体的もしくは平面的な複数の要素に分割(メッシュ化)した上で、隣接する要素間の境界条件に基づいて、複数の要素間にわたる連立一次方程式を生成する。入力部20は、このように生成された連立一次方程式についての係数行列Aおよび係数行列bを受入れる。このような電磁界解析を行なう際のメッシュ化については、国際公開第2005/057434号パンフレット(特許文献1)に詳述されているように、Non−nested Meshを使用したMultigrid法を用いることが好ましい。このようにMultigrid法を用いたメッシュ化によれば、係数行列Aは複素対称行列となる。
また、前処理行列MおよびMは、解の収束性を高めるために、対象とする連立一次方程式に応じて予め設定される。より具体的には、変数行列Aに近似した前処理行列M(=M×M)を所定の方法で決定した上で、この前処理行列の逆行列M−1を連立一次方程式Ax=bの両辺に乗じることにより、連立一次方程式M−1Ax=M−1bを得る。このように得られた係数行列M−1Aでは、そのスペクトル特性を改善できるため、より解の収束性を高めることができる。このような一例の処理は「前処理」とも称される。
初期値設定部22は、変数行列xの各要素値を予め設定された初期値に設定する。なお、以下では、計算過程における変数行列xを反復解ベクトルとも称す。初期残差ベクトル算出部23は、初期値設定部22において初期値に設定された反復解ベクトルの残差ベクトルを算出し、ベクトル修正部24へ出力する。ベクトル修正部24は、初期残差ベクトル算出部23もしくは後述する残差ベクトル算出部25から与えられる残差ベクトルに基づいて、各時点の反復解ベクトルを修正、すなわち反復解ベクトルに残差ベクトルに依存して算出される補正ベクトルを加算または減算し、新たな反復解ベクトルを算出する。残差ベクトル算出部25は、ベクトル修正部24が修正した反復解ベクトルについての残差ベクトルを算出する。判定部26は、残差ベクトル算出部25が算出した残差ベクトルの大きさに基づいて、反復処理が収束しているか否か、すなわち連立一次方程式の解が得られたか否かを判断する。ここで、反復処理が収束していると判断すると、判定部26は、当該時点の反復解ベクトルを連立一次方程式の解として出力する。
一方、反復処理が収束していないと判断すると、判定部26は、ベクトル修正部24に残差ベクトルを与え、反復解ベクトルを再度修正する。
次に、図4を用いて、CPU105が上述の各機能ブロックに相当する処理を実行する手順について説明する。
図4は、この発明の実施の形態1に従う方法に係る処理手順を示すフローチャートである。
図4を参照して、まず、CPU105は、FD112やCD−ROM114などの記録媒体、または通信インターフェース109を介して、係数行列Aと、係数行列bと、前処理行列M,Mとを受入れ、それらを固定ディスク107またはメモリ106へ格納する(ステップS2)。続いて、CPU105は、メモリ106に格納される反復解ベクトルの各要素値を予め設定された初期値に設定する(ステップS4)。そして、CPU105は、係数行列Aおよび係数行列bと、初期値に設定された反復解ベクトルとに基づいて、初期残差ベクトルを算出する(ステップS6)。さらに、CPU105は、算出した初期残差ベクトルに基づいて、各時点の反復解ベクトルを修正する(ステップS8)。CPU105は、この修正した反復解ベクトルについての残差ベクトルを算出する(ステップS10)。
CPU105は、算出した残差ベクトルの大きさに基づいて、反復処理が収束しているか否か、すなわち連立一次方程式の解が得られたか否かを判断する(ステップS12)。なお、反復処理の収束とは、代表的に、残差ベクトルの大きさが予め定められた判定値より小さくなっていることを意味する。
反復処理が収束していないと判断すると(ステップS12においてNO)、CPU105は、算出した残差ベクトルに基づいて、各時点の反復解ベクトルを再度修正し(ステップS8)、ステップS10およびステップS12の処理を繰返す。すなわち、CPU105は、残差ベクトルに基づいて、反復解ベクトルを随時修正していき、連立一次方程式の解を探索する。
一方、反復処理が収束していると判断すると(ステップS12においてYES)、CPU105は、当該時点の反復解ベクトルを連立一次方程式の解として出力する(ステップS14)。そして、処理を終了する。なお、ここでいう出力とは、反復解ベクトルを示す値の固定ディスク107への格納、FD112やCD−ROM114などの記録媒体への格納、およびモニタ102への表示、通信インターフェース109を介した図示しない外部装置への送信などを含む。
(処理の詳細)
以下、図4に示す処理の詳細について、図5を用いて説明する。
図5は、図4に示すステップS4〜ステップS12における詳細な処理手順を示すフローチャートである。
図5を参照して、ステップS4において、CPU105は、反復解ベクトルxを初期値ベクトルxに設定する。ここで、初期値ベクトルxは、N次元の複素数空間から任意に設定され得る。すなわち、x∈Cの関係が成立する。
ステップS6において、CPU105は、ステップS601〜ステップS607の処理を実行する。ステップS601において、CPU105は、r=b−Axのベクトル演算式に従って、初期残差ベクトルrを算出する。ステップS602において、CPU105は、t=M −1のベクトル演算式に従って、ベクトルtを算出する。但し、式中の<M −1>は、前処理行列Mの逆行列を示す。ステップS603において、CPU105は、τ=‖t‖=(Σ|t1/2の演算式に従って、ユークリッドノルムであるノルムτを算出する。但し、式中の<t>は、ベクトルtの各要素を示す。ステップS604において、CPU105は、q=M −1tのベクトル演算式に従って、ベクトルqを算出する。但し、式中の<M −1>は、前処理行列Mの逆行列を示す。ステップS605において、CPU105は、変数θを「0」に設定する。ステップS606において、CPU105は、ρ=r のベクトル演算式に従って、変数ρを算出する。ここで、ベクトルr,ベクトルqは複素ベクトルである。一般に、要素が複素数である複素ベクトルの内積計算の場合、一方のベクトルの要素はその要素と複素共役な要素を用いて計算することとされているが、この計算においてはどちらの要素についても複素共役はとらないこととする。なお、式中の<r >は、ベクトルrの転置行列を示す。ステップS607において、CPU105は、ループ変数nを初期値である「1」に設定する。
ステップS8において、CPU105は、ステップS801〜ステップS811の処理を実行する。ステップS801において、CPU105は、t=Aqn−1のベクトル演算式に従って、ベクトルtを算出(更新)する。ステップS802において、CPU105は、σn−1=qn−1 tのベクトル演算式に従って、変数σn−1を算出する。ここで、ベクトルqn−1,ベクトルtは複素ベクトルである。一般に、要素が複素数である複素ベクトルの内積計算の場合、一方のベクトルの要素はその要素と複素共役な要素を用いて計算することとされているが、この計算においてはどちらの要素についても複素共役はとらないこととする。なお、式中の<qn−1 >は、ベクトルqn−1の転置行列を示す。ステップS803において、CPU105は、変数σn−1が「0」であるか否かを判断する。変数σn−1が「0」であれば(ステップS803においてYES)、CPU105は、後続の処理でいわゆるゼロ割が発生するため、以後の処理を中止する。このように処理が中止された場合には、反復解ベクトルなどの初期値を変更した上で、再度処理が実行されるようにしてもよい。変数σn−1が「0」でなければ(ステップS803においてNO)、CPU105は、以後の処理を継続する。ステップS804において、CPU105は、αn−1=ρn−1/σn−1の演算式に従って、変数αn−1を算出する。ステップS805において、CPU105は、r=rn−1−αn−1tのベクトル演算式に従って、ベクトルrを算出する。このベクトルrが「擬似的な」残差ベクトルに相当する。ステップS806において、CPU105は、t=M −1のベクトル演算式に従って、ベクトルtを算出する。ステップS807において、CPU105は、θ=‖t‖/τn−1の演算式に従って、変数θを算出する。ステップS808において、c=1/(1+θ 1/2の演算式に従って、変数cを算出する。ステップS809において、CPU105は、τ=τn−1θの演算式に従って、ベクトルrを算出(更新)する。ステップS810において、CPU105は、d=c θn−1 n−1+c αn−1 n−1のベクトル演算式に従って、修正ベクトルdを算出する。ステップS811において、CPU105は、x=xn−1+dのベクトル演算式に従って、反復解ベクトルxを修正する。
ステップS10において、CPU105は、r=b−Axのベクトル演算式に従って、残差ベクトルrを算出する。
ステップS12において、CPU105は、ステップS1201〜ステップS1206の処理を実行する。ステップS1201において、CPU105は、残差ベクトルrのノルムが予め定められたしきい値以下であるか否かを判断する。残差ベクトルrのノルムがしきい値以下であれば(ステップS1201においてYES)、CPU105は、反復処理が収束していると判断する(ステップS1202)。一方、残差ベクトルrのノルムがしきい値以下でなければ(ステップS1201においてNO)、CPU105は、CPU105は、反復処理が収束していないと判断する(ステップS1203)。そして、ステップS1204において、CPU105は、変数ρn−1が「0」であるか否かを判断する。変数ρn−1が「0」であれば(ステップS1204においてYES)、CPU105は、後続の処理でいわゆるゼロ割が発生するため、以後の処理を中止する。変数ρn−1が「0」でなければ(ステップS1204においてNO)、CPU105は、以後の処理を継続する。ステップS1205において、CPU105は、u=M −1tのベクトル演算式に従って、ベクトルuを算出する。ステップS1206において、CPU105は、ρ=r のベクトル演算式に従って、変数ρを算出する。ここで、ベクトルr,ベクトルuは複素ベクトルである。一般に、要素が複素数である複素ベクトルの内積計算の場合、一方のベクトルの要素はその要素と複素共役な要素を用いて計算することとされているが、この計算においてはどちらの要素についても複素共役はとらないこととする。なお、式中の<r >は、ベクトルrの転置行列を示す。ステップS1207において、CPU105は、β=ρ/ρn−1の演算式に従って、変数βを算出する。ステップS1208において、CPU105は、q=u+βn−1のベクトル演算式(内積演算)に従って、ベクトルqを算出する。ステップS1209において、CPU105は、ループ変数nに「1」をインクリメントする。そして、処理は、ステップS801に戻される。
この発明の実施の形態1と本願発明との対応関係については、ベクトルtが「第1ベクトル」に相当し、ベクトルqが「第2ベクトル」に相当し、ベクトルuが「第3ベクトル」に相当し、変数ρが「第1修正係数」に相当し、変数σn−1が「第2修正係数」に相当する。
この発明の実施の形態1によれば、Non−nested Meshを使用したMultigrid法を用いて電磁界解析を行う場合などのように、複素対称行列を変数行列を有する連立一次方程式をより高速に解くことができる。
[実施の形態2]
上述のこの発明の実施の形態1においては、主として、単一のコンピュータを用いて本発明に係る方法を実行する構成について説明したが、大規模な(係数行列Aの次元が相対的に大きい)連立一次方程式をより高速に解くために、複数のコンピュータを用いて分散処理することが望ましい。そこで、この発明の実施の形態2においては、この発明に従う方法を実現する分散コンピューティング環境について説明する。
(ハードウェア構成)
図6は、この発明の実施の形態2に従う連立一次方程式の解を反復的に決定する方法を実行するためのコンピュータシステム210の概略構成図である。
図6を参照して、本実施の形態2に従うコンピュータシステム210は、プリポストコンピュータ200と、ファイルサーバ202と、クラスタコンピュータ204a〜204eとを含む。なお、図6には、5台のクラスタコンピュータ204a〜204eを図示するが、クラスタコンピュータの数はいずれであってもよい。以下では、各々のクラスタコンピュータをクラスタコンピュータ204とも総称する。また、少なくともプリポストコンピュータ200およびファイルサーバ202は、第1ネットワーク208を介して相互に通信可能(データ授受可能)に構成されるとともに、この第1ネットワーク208を介して、図示しないモデル化装置などとも通信可能に構成される。さらに、プリポストコンピュータ200と、ファイルサーバ202と、クラスタコンピュータ204a〜204eとは、第2ネットワーク206を介して相互に通信可能に構成される。後述するように、この第2ネットワーク206を介して、分割された連立一次方程式のデータや、各クラスタコンピュータ204が決定した解が伝送される。さらに、クラスタコンピュータ204a〜204eは、第3ネットワーク212を介して相互に通信可能に構成される。後述するように、この第3ネットワーク212を介して、各クラスタコンピュータ204が相互にデータを参照しながら、連立一次方程式の解を決定する。
プリポストコンピュータ200は、図示しないモデル化装置などから入力される連立一次方程式を、各クラスタコンピュータ204で分散処理できるように分割し、各クラスタコンピュータ204に送信する。また、プリポストコンピュータ200は、各クラスタコンピュータ204における算出結果(対象の連立一次方程式の部分解)を結合し、対象の連立一次方程式の解として出力する。また、各クラスタコンピュータ204は、プリポストコンピュータ200から送信されたデータ(対象の連立一次方程式の一部)に基づいて、上述の本実施の形態1と同様の処理を実行し、解を決定する。そして、各クラスタコンピュータ204は、決定した解をプリポストコンピュータ200へ戻す。ファイルサーバ202は、係数行列AおよびN行×1列の係数行列b、ならびに決定された解を格納する。なお、ファイルサーバ202に相当する機能をプリポストコンピュータ200に取り込んでもよい。
プリポストコンピュータ200、ファイルサーバ202、およびクラスタコンピュータ204の各々のハードウェア構成については、図2と同様であるので、詳細な説明は繰返さない。
(処理の概略)
図7は、この発明の実施の形態2に従う方法を実現するための機能ブロック図である。図7に示す各機能ブロックは、CPU105でプログラムが実行されることで、実現される。
図7を参照して、プリポストコンピュータ200は、入力部30と、記憶部31と、並替部32と、分割部33と、送信部34と、受信部35と、結合部36と、出力部37との機能を実現する。代表的に、これらの機能(記憶部31を除く)はプリポストコンピュータ200のCPUがプログラムを実行することで実現され、記憶部31は、プリポストコンピュータ200のメモリまたは固定ディスクに配置される。代替的に、記憶部31を、ファイルサーバ202の固定ディスクに配置してよい。
一方、クラスタコンピュータ204の各々は、受信部40と、記憶部41と、初期値設定部42と、初期残差ベクトル算出部43と、ベクトル修正部44と、残差ベクトル算出部45と、判定部46との機能を実現する。代表的に、これらの機能は各クラスタコンピュータ204のCPUがプログラムを実行することで実現される。代表的に、これらの機能(記憶部41を除く)はクラスタコンピュータ204のCPUがプログラムを実行することで実現され、記憶部41は、クラスタコンピュータ204のメモリまたは固定ディスクに配置される。代替的に、記憶部41を、ファイルサーバ202の固定ディスクに配置してよい。なお、図7には、説明の便宜上、2台のクラスタコンピュータ204の機能のみを示すが、上述したように、クラスタコンピュータ204の台数は制限されるものではない。
まず、プリポストコンピュータ200の「プリ処理」機能について説明する。
入力部30は、図3に示す入力部20と同様の機能を発揮し、図示しないモデル化装置などから係数行列Aと、係数行列bと、前処理行列M,Mとを受入れ、それらを記憶部31に格納する。並替部32は、係数行列Aの非零要素が対角位置に配置されるように、連立一次方程式Ax=bの行順序を並び替える。この並替処理は、係数行列Aのバンド幅を縮小することで、より処理を高速化するためのものである。この並替処理について図8を用いて説明する。
図8は、並替処理の概略を説明するための図である。
図8(a)は、モデル化装置から入力される連立一次方程式の係数行列Aの状態を示す図である。図8(b)は、行を並び替えた後の係数行列Aの状態を示す図である。なお、図8(a)および図8(b)では、非零要素が存在する位置(その値がゼロではない要素)が着色されている。
図8(a)を参照して、国際公開第2005/057434号パンフレット(特許文献1)に記載されるようなNon−nested Meshを使用したMultigrid法を用いると、生成される係数行列Aは(複素)対称行列となる。そのため、係数行列Aの対角線を中心として対称的に着色されていることが分かる。この係数行列Aに対して、並替部32は、対角位置に非零要素(着色された要素)が配置されるように、連立一次方程式全体の行の順序を逐次的に入れ替える。このような並替処理によって、並替後の係数行列Aは、図8(b)のようになる。なお、図示しないが、係数行列Aの並替処理に伴って、対応する係数行列bについても並替処理が行なわれる。
なお、このような行の並替処理は、「オーダリング処理」とも称され、代表的には「RCM(Reverse Chuthill-Mckee)オーダリング」などの手法を採用することができる。この「RCMオーダリング」の詳細については、文献(J.A.George. Computer implementation of the finite element method. Tech Rep. STAN-CS, 1971)などを参照されたい。
再度、図7を参照して、分割部33は、並替部32によって並び替えられた係数行列Aおよび対応する係数行列bを、各クラスタコンピュータ204の各々に対応付けてそれぞれ複数の部分行列に分割する。この分割処理について、図8(b)を参照して説明する。
図8(b)を参照して、分割部33は、並び替えられた係数行列Aから、クラスタコンピュータ204の数(この場合には、一例として2台)に応じた数の部分行列A1およびA2を決定する。ここで、部分行列A1およびA2は、それぞれ、n(1)行×n(1)列およびn(2)行×n(2)列(0<n(1),n(2)<N)の正方行列である。このように部分行列A1およびA2を決定することで、部分行列A1およびA2は、係数行列Aの「複素対称行列」という特性を維持する。また、係数行列Aの各要素のうち部分行列A1およびA2に含まれない要素は、いずれもゼロとなるように最適化される。
なお、係数行列Aの行要素のうち、所定の隣接する行要素が部分行列A1およびA2で共有されるように、部分行列A1およびA2が決定される。すなわち、部分行列A1およびA2は互いの重複要素を含むように決定される。これは、後述するように、各クラスタコンピュータ204が演算過程の結果を相互に参照しながら処理を行なう必要があるためである。
再度、図7を参照して、上述のような手順に従って決定された部分行列A1およびA2、ならびに対応する係数行列bの部分行列は、送信部34によって、それぞれ目的のクラスタコンピュータ204へ送信される。これに加えて、前処理行列M,Mの対応する要素(部分行列)についてもクラスタコンピュータ204へ送信される。
以上のように、入力部30、並替部32、分割部33、および送信部34で実行される処理は「プリ処理」とも称される。
次に、このプリ処理によって生成された部分行列を受信した各クラスタコンピュータ204では、上述した本発明の実施の形態1と同様の方法の処理が実行され、分担する連立一次方程式の解が決定される。具体的には、各クラスタコンピュータ204は、受信部40と、記憶部41と、初期値設定部42と、初期残差ベクトル算出部43と、ベクトル修正部44と、残差ベクトル算出部45と、判定部46との機能を実現する。代表的に、これらの機能(記憶部41を除く)は各クラスタコンピュータ204のCPUがプログラムを実行することで実現され、記憶部41は、各クラスタコンピュータ204のメモリまたは固定ディスクに配置される。代替的に、記憶部41を、ファイルサーバ202の固定ディスクに配置してよい。
受信部40は、プリポストコンピュータ200から送信される係数行列Aの部分行列および係数行列bの部分行列を受信し、それらを記憶部41に格納する。初期値設定部42と、初期残差ベクトル算出部43と、ベクトル修正部44と、残差ベクトル算出部45と、判定部46とについては、それぞれ図3に示す初期値設定部22と、初期残差ベクトル算出部23と、ベクトル修正部24と、残差ベクトル算出部25と、判定部26と、以下の2つの相違点を除いて同様である。
第1の相違点としては、ベクトル修正部44が係数行列Aおよび係数行列bを共有する他のクラスコンピュータのベクトル修正部44との間でデータを相互参照する点である。すなわち、一つのクラスタコンピュータ204は、割当てられた部分行列(たとえば、図8(b)に示す部分行列A1)に隣接する部分行列(たとえば、図8(b)に示す部分行列A2)が割当てられた他のクラスタコンピュータ204との間で、相互にデータを参照する。
第2の相違点としては、判定部46では、反復処理が収束していると判断すると、決定した解ベクトルをプリポストコンピュータ200へ送信する。すなわち、各クラスタコンピュータ204が、対象となる連立一次方程式の解を分散して決定するとともに、それぞれが決定した解がプリポストコンピュータ200に集められる。
その他の構成については、図3と同様であるので、詳細な説明は繰返さない。
最後に、図7を参照して、プリポストコンピュータ200の「ポスト処理」機能について説明する。
受信部35は、各クラスタコンピュータ204から送信される連立一次方程式の解をそれぞれ受信し、結合部36へ出力する。結合部36は、クラスタコンピュータ204からそれぞれ送信される解を、部分行列を割当てた順に結合する。出力部37は、結合された対象とする連立一次方程式の解をファイルサーバ202などへ出力する。
なお、上述の説明では、「プリ処理」と「ポスト処理」とを同一のコンピュータで実行する構成について説明したが、それぞれの処理を実行するためのコンピュータを別々に設けてもよい。
(処理フロー)
図9は、この発明の実施の形態2に従う方法に係るプリポストコンピュータ200における処理手順を示すフローチャートである。
図9を参照して、まず、プリポストコンピュータ200のCPUは、通信インターフェースなどを介して、係数行列Aと、係数行列bと、前処理行列M,Mとを受入れ、それらを固定ディスクまたはメモリ、もしくはファイルサーバ202へ格納する(ステップS52)。続いて、プリポストコンピュータ200のCPUは、係数行列Aの非零要素が対角位置に配置されるように、連立一次方程式Ax=bの行順序を並び替える(ステップS54)。さらに、プリポストコンピュータ200のCPUは、行順序の並び替え後の係数行列Aおよび係数行列bを、各クラスタコンピュータ204に対応付けてそれぞれ部分行列に分割する(ステップS56)。その後、プリポストコンピュータ200のCPUは、ステップS56で分割した部分行列をそれぞれ対応するクラスタコンピュータ204に送信する(ステップS58)。
その後、各クラスタコンピュータ204での連立一次方程式の解の探索処理が完了すするまで待つ。具体的には、プリポストコンピュータ200のCPUは、いずれかクラスタコンピュータ204から解データを受信するか否かを判断する(ステップS60)。クラスタコンピュータ204から解データを受信していなければ(ステップS60においてNO)、プリポストコンピュータ200のCPUは、解データを受信するまで待つ。一方、クラスタコンピュータ204から解データを受信していれば(ステップS60においてYES)、プリポストコンピュータ200のCPUは、受信した解データを固定ディスクまたはメモリ、もしくはファイルサーバ202へ格納する(ステップS62)。そして、プリポストコンピュータ200のCPUは、すべてのクラスタコンピュータ204からのデータ受信が完了したか否かを判断する(ステップS64)。データ受信の完了していないクラスタコンピュータ204があれば(ステップS64においてNO)、処理はステップS60に戻る。
これに対して、すべてのクラスタコンピュータ204からのデータ受信が完了していれば(ステップS64においてYES)、プリポストコンピュータ200のCPUは、各クラスタコンピュータ204から受信した複数の解データを結合する(ステップS66)。そして、プリポストコンピュータ200のCPUは、結合した解データを連立一次方程式の解として出力する(ステップS68)。
図10は、この発明の実施の形態2に従う方法に係る各クラスタコンピュータ204における処理手順を示すフローチャートである。なお、図10は、1つのクラスタコンピュータ204における処理について示したものであり、実際には、複数のクラスタコンピュータ204が図10に記載の処理をそれぞれ実行する。
図10を参照して、クラスタコンピュータ204のCPUは、プリポストコンピュータ200から割当てられた部分行列のデータを受信したか否かを判断する(ステップS80)。すなわち、クラスタコンピュータ204のCPUは、図9に示すステップS58において、プリポストコンピュータ200から送信される分割された部分行列を受信したか否かを判断する。
割当てられた部分行列のデータを受信していなければ(ステップS80においてNO)、クラスタコンピュータ204のCPUは、当該データを受信するまで待つ。これに対して、割当てられた部分行列のデータを受信していれば(ステップS80においてYES)、クラスタコンピュータ204のCPUは、受信した部分行列を固定ディスクまたはメモリへ格納する(ステップS82)。続いて、クラスタコンピュータ204のCPUは、メモリに格納される反復解ベクトルの各要素値を予め設定された初期値に設定する(ステップS84)。そして、クラスタコンピュータ204のCPUは、割当てられた係数行列Aの部分行列および係数行列bの部分行列と、初期値に設定された反復解ベクトルとに基づいて、残差ベクトルを算出する(ステップS86)。さらに、クラスタコンピュータ204のCPUは、算出した残差ベクトルに基づいて、各時点の反復解ベクトルを修正する(ステップS88)。クラスタコンピュータ204のCPUは、この修正した反復解ベクトルについての残差ベクトルを算出する(ステップS90)。さらに、クラスタコンピュータ204のCPUは、算出した残差ベクトルの大きさに基づいて、反復処理が収束しているか否か、すなわち連立一次方程式の解が得られたか否かを判断する(ステップS92)。
反復処理が収束していないと判断すると(ステップS92においてNO)、クラスタコンピュータ204のCPUは、算出した残差ベクトルに基づいて、各時点の反復解ベクトルを再度修正し(ステップS88)、ステップS90およびステップS92の処理を繰返す。
一方、反復処理が収束していると判断すると(ステップS92においてYES)、クラスタコンピュータ204のCPUは、当該時点の反復解ベクトルを解データとしてプリポストコンピュータ200へ送信する(ステップS94)。そして、処理を終了する。
なお、クラスタコンピュータ204で実行される連立一次方程式の解の探索処理の詳細は、図4と同様であるので、詳細な説明は繰返さない。
この発明の実施の形態2によれば、クラスタコンピュータの数を比較的自由に増加させることができるので、解析対象をより正確に3次元モデル化して電磁界解析を行うような場合において、解くべき連立一次方程式の規模が大きくなったとしても、電磁界解析に要する時間の増加を抑制できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
この発明の実施の形態1に従う連立一次方程式の解を反復的に決定する方法を実現するための代表的なハードウェア構成であるコンピュータを示す斜視図である。 コンピュータのハードウェア構成を示す概略構成図である。 この発明の実施の形態1に従う方法を実現するための機能ブロック図である。 この発明の実施の形態1に従う方法に係る処理手順を示すフローチャートである。 図4に示すステップS4〜ステップS12における詳細な処理手順を示すフローチャートである。 この発明の実施の形態2に従う連立一次方程式の解を反復的に決定する方法を実行するためのコンピュータシステムの概略構成図である。 この発明の実施の形態2に従う方法を実現するための機能ブロック図である。 並替処理の概略を説明するための図である。 この発明の実施の形態2に従う方法に係るプリポストコンピュータにおける処理手順を示すフローチャートである。 この発明の実施の形態2に従う方法に係る各クラスタコンピュータにおける処理手順を示すフローチャートである。
符号の説明
1 コンピュータ、20,30 入力部、21,31 記憶部、22 初期値設定部、23,43 初期残差ベクトル算出部、24,44 ベクトル修正部、25,45 残差ベクトル算出部、26,46 判定部、32 並替部、33 分割部、34 送信部、35 受信部、36 結合部、37 出力部、40 受信部、41 記憶部、42 初期値設定部、101 コンピュータ本体、102 モニタ、103 キーボード、104 マウス、106 メモリ、107 固定ディスク、109 通信インターフェース、111 駆動装置、113 駆動装置、200 プリポストコンピュータ、202 ファイルサーバ、204,204a〜204e クラスタコンピュータ、206 第2ネットワーク、208 第1ネットワーク、210 コンピュータシステム、212 第3ネットワーク。

Claims (3)

  1. 演算装置を用いて連立一次方程式の解を反復的に決定する方法であって、
    前記演算装置は、演算処理部と、記憶部と、出力部とを含み、
    前記連立一次方程式は、N行×N列の複素対称行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表わせ、
    前記方法は、
    前記演算処理部が、前記複素対称行列Aと、前記係数行列bと、第1前処理行列および第2前処理行列とを前記記憶部に格納するステップと、
    前記演算処理部が、前記連立一次方程式の反復解を予め定められた初期値に設定するステップと、
    前記演算処理部が、前記連立一次方程式についての初期値に設定した前記反復解における残差ベクトルを算出するステップと、
    前記演算処理部が、算出された前記反復解における残差ベクトルに基づいて、前記反復解を修正するステップと、
    前記演算処理部が、前記連立一次方程式についての修正後の反復解における残差ベクトルを算出するステップと、
    前記演算処理部が、算出された前記修正後の反復解における残差ベクトルの大きさに基づいて、反復処理が収束しているか否かを判断するステップと、
    反復処理が収束していないと判断すると、前記演算処理部が、前記反復解を修正するステップと、前記修正後の反復解における残差ベクトルを算出するステップと、前記反復処理が収束しているか否かを判断するステップとを繰返すステップと、
    反復処理が収束していると判断すると、前記演算処理部が、当該時点の反復解を前記連立一次方程式の解として前記出力部から出力するステップとを備え、
    前記反復解を予め定められた初期値に設定するステップは、
    前記演算処理部が、前記第1前処理行列の逆行列と前記初期値に設定した前記反復解における残差ベクトルとの積を第1ベクトル(μ,μ,・・・,μ)として算出するステップと、
    前記演算処理部が、前記第2前処理行列の逆行列と第1ベクトルとの積を第2ベクトル(ν,ν,・・・,ν)として算出するステップと、
    前記残差ベクトルを(δ,δ,・・・,δ)として、前記演算処理部が、第1修正係数としてΣδμ(k=1,2,・・・,N)を算出するステップとを含み、
    前記反復解を修正するステップは、
    前記演算処理部が、前記第1ベクトルを前記複素対称行列Aと前記第2ベクトルとの積に更新するステップと、
    前記演算処理部が、第2修正係数としてΣμν(k=1,2,・・・,N)を算出するステップと、
    前記演算処理部が、前記第1ベクトルと前記第1修正係数と前記第2修正係数とにより前記残差ベクトルを更新するステップと、
    前記演算処理部が、前記第1ベクトルを前記第1前処理行列の逆行列と更新後の前記残差ベクトルとの積に更新するステップとを含み、
    前記繰返すステップは、
    前記演算処理部が、前記第2前処理行列の逆行列と前記第1ベクトルとの積を第3ベクトル(ξ,ξ,・・・,ξ)として算出するステップと、
    前記演算処理部が、前記第1修正係数をΣδξ(k=1,2,・・・,N)に更新するステップと、
    前記演算処理部が、前記第3ベクトル、ならびに更新前の前記第1修正係数および更新後の前記第1修正係数により前記第2ベクトルを更新するステップとを含む、連立一次方程式の解を反復的に決定する方法。
  2. 相互に通信可能に構成された複数の演算装置を用いて連立一次方程式の解を反復的に決定する方法であって、
    前記複数の演算装置の各々は、演算処理部と、記憶部とを含み、
    前記連立一次方程式は、N行×N列の複素対称行列Aと、N行×1列の係数行列bとを用いて、N行×1列の変数行列xについて、Ax=bと表わせ、
    前記方法は、
    前記複数の演算装置のうちの第1の演算装置の演算処理部が、外部入力される、前記複素対称行列Aおよび前記係数行列bを対応の前記記憶部に格納するステップと、
    前記第1の演算装置の演算処理部が、外部入力される、第1前処理行列および第2前処理行列を対応の前記記憶部に格納するステップと、
    前記第1の演算装置の演算処理部が、複素対称行列の非零要素が対角位置に配置されるように、連立一次方程式Ax=bの行順序を並び替えるステップと、
    前記第1の演算装置の演算処理部が、行順序の並び替え後の複素対称行列および係数行列を、前記複数の演算装置の残りの前記演算装置の各々に対応付けてそれぞれ複数の複素部分行列および係数部分行列に分割するステップと、
    前記第1の演算装置の演算処理部が、前記複数の複素部分行列および係数部分行列に対応付けて、前記第1前処理行列および第2前処理行列を、それぞれ複数の第1前処理部分行列および第2前処理部分行列に分割するステップと、
    前記第1の演算装置の演算処理部が、前記複数の複素部分行列および係数部分行列、ならびに前記第1および前記2前処理行列を、それぞれ対応する前記残りの前記演算装置に送信するステップと、
    前記残りの前記演算装置の各演算処理部が、前記第1の演算装置から送信される、前記複数の複素部分行列および係数部分行列、ならびに前記第1および前記第2前処理行列を、対応の前記記憶部に格納するステップと、
    前記残りの前記演算装置の各演算処理部が、対応の前記複素部分行列と、対応の前記係数部分行列とによって規定される部分連立一次方程式の反復解を予め定められた初期値に設定するステップと、
    前記残りの前記演算装置の各演算処理部が、前記部分連立一次方程式についての前記反復解における残差ベクトルを算出するステップと、
    前記残りの前記演算装置の各演算処理部が、算出された前記反復解における残差ベクトルに基づいて、前記反復解を修正するステップと、
    前記残りの前記演算装置の各演算処理部が、前記部分連立一次方程式についての修正後の反復解における残差ベクトルを算出するステップと、
    前記残りの前記演算装置の各演算処理部が、算出された前記修正後の反復解における残差ベクトルの大きさに基づいて、反復処理が収束しているか否かを判断するステップと、
    反復処理が収束していないと判断すると、前記残りの前記演算装置の各演算処理部が、前記反復解を修正するステップと、前記修正後の反復解における残差ベクトルを算出するステップと、前記反復処理が収束しているか否かを判断するステップとを繰返すステップと、
    反復処理が収束していると判断すると、前記残りの前記演算装置の各演算処理部が、当該時点の反復解を、前記第1の演算装置に送信するステップと、
    前記第1の演算装置の演算処理部が、前記残りの前記演算装置の各々から送信された複数の前記反復解を結合するステップと、
    前記第1の演算装置の演算処理部が、結合した前記複数の反復解を前記連立一次方程式の解として出力するステップとを備え、
    前記反復解を予め定められた初期値に設定するステップは、
    前記演算処理部が、前記第1前処理行列の逆行列と前記初期値に設定した前記反復解における残差ベクトルとの積を第1ベクトル(μ,μ,・・・,μ)として算出するステップと、
    前記演算処理部が、前記第2前処理行列の逆行列と第1ベクトルとの積を第2ベクトル(ν,ν,・・・,ν)として算出するステップと、
    前記残差ベクトルを(δ,δ,・・・,δ)として、前記演算処理部が、第1修正係数としてΣδμ(k=1,2,・・・,N)を算出するステップとを含み、
    前記反復解を修正するステップは、
    前記演算処理部が、前記第1ベクトルを前記複素対称部分行列Aと前記第2ベクトルとの積に更新するステップと、
    前記演算処理部が、第2修正係数としてΣμν(k=1,2,・・・,N)を算出するステップと、
    前記演算処理部が、前記第1ベクトルと前記第1修正係数と前記第2修正係数とにより前記残差ベクトルを更新するステップと、
    前記演算処理部が、前記第1ベクトルを前記第1前処理部分行列の逆行列と更新後の前記残差ベクトルとの積に更新するステップとを含み、
    前記繰返すステップは、
    前記演算処理部が、前記第2前処理行列の逆行列と前記第1ベクトルとの積を第3ベクトル(ξ,ξ,・・・,ξ)として算出するステップと、
    前記演算処理部が、前記第1修正係数をΣδξ(k=1,2,・・・,N)に更新するステップと、
    前記演算処理部が、前記第3ベクトル、ならびに更新前の前記第1修正係数および更新後の前記第1修正係数により前記第2ベクトルを更新するステップとを含む、連立一次方程式の解を反復的に決定する方法。
  3. 前記複数の複素部分行列および係数部分行列に分割するステップは、前記複素対称行列および前記係数行列の所定の行要素が隣接する2つの前記演算装置で共有されるように、前記複数の複素部分行列および係数部分行列を決定するステップを含み、
    前記反復解を修正するステップは、前記残りの前記演算装置の各演算処理部が、対応の前記複素部分行列および係数部分行列に隣接する行列が割当てられた前記演算装置との間でデータの交換を行なうステップを含む、連立一次方程式の解を反復的に決定する方法。
JP2007112019A 2007-04-20 2007-04-20 連立一次方程式の解を反復的に決定する方法 Withdrawn JP2008269329A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007112019A JP2008269329A (ja) 2007-04-20 2007-04-20 連立一次方程式の解を反復的に決定する方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007112019A JP2008269329A (ja) 2007-04-20 2007-04-20 連立一次方程式の解を反復的に決定する方法

Publications (1)

Publication Number Publication Date
JP2008269329A true JP2008269329A (ja) 2008-11-06

Family

ID=40048737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007112019A Withdrawn JP2008269329A (ja) 2007-04-20 2007-04-20 連立一次方程式の解を反復的に決定する方法

Country Status (1)

Country Link
JP (1) JP2008269329A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017191039A (ja) * 2016-04-14 2017-10-19 セイコーエプソン株式会社 磁場計測装置及び磁場計測装置の校正方法
JP2019124595A (ja) * 2018-01-17 2019-07-25 公立大学法人首都大学東京 物体内への物流入量算出方法
CN110647716A (zh) * 2019-09-02 2020-01-03 四川腾盾科技有限公司 一种基于残差排序的隐式解法
CN113924610A (zh) * 2019-06-07 2022-01-11 日本电信电话株式会社 秘密共轭梯度法计算系统、秘密计算装置、共轭梯度法计算装置、秘密共轭梯度法计算方法、共轭梯度法计算方法、以及程序

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017191039A (ja) * 2016-04-14 2017-10-19 セイコーエプソン株式会社 磁場計測装置及び磁場計測装置の校正方法
JP2019124595A (ja) * 2018-01-17 2019-07-25 公立大学法人首都大学東京 物体内への物流入量算出方法
CN113924610A (zh) * 2019-06-07 2022-01-11 日本电信电话株式会社 秘密共轭梯度法计算系统、秘密计算装置、共轭梯度法计算装置、秘密共轭梯度法计算方法、共轭梯度法计算方法、以及程序
CN113924610B (zh) * 2019-06-07 2024-02-20 日本电信电话株式会社 秘密共轭梯度法计算系统及方法、秘密计算装置、共轭梯度法计算装置及方法、以及记录介质
CN110647716A (zh) * 2019-09-02 2020-01-03 四川腾盾科技有限公司 一种基于残差排序的隐式解法
CN110647716B (zh) * 2019-09-02 2022-10-25 四川腾盾科技有限公司 一种基于残差排序的隐式解法

Similar Documents

Publication Publication Date Title
KR102127524B1 (ko) 신경망 프로세서의 벡터 컴퓨테이션 유닛
Tang et al. Robust principal component analysis based on low-rank and block-sparse matrix decomposition
JP2020506454A (ja) ハードウェアにおける平均プーリングの実行
Lampe et al. Large-scale Tikhonov regularization via reduction by orthogonal projection
CN112534448A (zh) 多量子位控制
WO2020106955A1 (en) Hybrid quantum-classical computer for packing bits into qubits for quantum optimization algorithms
US11726825B2 (en) Measurement sequence determination for quantum computing device
JP2017130036A (ja) 情報処理装置、演算方法、および演算プログラム
KR20220054861A (ko) 신경망 모델의 트레이닝 방법 및 관련 제품
JP2019159997A (ja) 最適化装置及び最適化装置の制御方法
JP2008269329A (ja) 連立一次方程式の解を反復的に決定する方法
Carson The adaptive s-step conjugate gradient method
Bharadwaj et al. Distributed-memory sparse kernels for machine learning
WO2022187503A1 (en) Classically-boosted variational quantum eigensolver
Arroyo et al. An enhanced Gibbs sampler algorithm for non-conditional simulation of Gaussian random vectors
KR100950581B1 (ko) 여분 표현을 사용하는 유한체 비트―병렬 곱셈 장치 및방법
Cheng et al. New Jacobi-like algorithms for non-orthogonal joint diagonalization of Hermitian matrices
US20170371838A1 (en) Information processing apparatus and image processing method
US20180349321A1 (en) Parallel processing apparatus, parallel operation method, and parallel operation program
EP4095719A1 (en) Sparse matrix multiplication in hardware
CN111788584A (zh) 一种神经网络计算方法和装置
Coulaud et al. Parallelization of semi-Lagrangian Vlasov codes
JP7416362B2 (ja) 適応ビーム形成の共分散行列
CN108776994B (zh) 基于真三维显示系统的Roesser模型及其实现方法
KR20220158768A (ko) 기계 학습 가속을 위한 전력 감소

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100706