説明

行列方程式計算装置および行列方程式計算方法

【課題】電磁界解析などの数値シミュレーションにおいて最終的に解くべき方程式として現れる大型疎行列方程式の計算を高速に行うことができ、しかもこの大型疎行列方程式の大型疎行列が対称行列である場合および非対称行列である場合の双方に適用することができる行列方程式計算装置および行列方程式計算方法を提供する。
【解決手段】大型疎行列方程式を反復解法により解く行列方程式計算装置1は、その大型疎行列方程式の大型疎行列の成分のうち、非ゼロの成分のみを1列ごとに格納する所定の個数のメモリを有するメモリ部と、反復解法の演算の少なくとも一部をデータフロー形式で実行する1つまたは複数の演算部とを有する。メモリ部から1行ごとの反復解法の演算に必要なデータを演算部に一度にロードするように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、行列方程式計算装置および行列方程式計算方法に関し、例えば、電磁界解析、流体解析、構造解析などの数値シミュレーションにおいて最終的に解くべき方程式として現れる大型(大規模)疎行列方程式の計算に適用して好適なものである。
【背景技術】
【0002】
電磁界解析、流体解析、構造解析などにおける離散化された偏微分方程式を解くための科学技術計算は、多くの場合、最終的には、求めるべき未知数に関し行列方程式を解く問題に帰着する。また、これらの科学技術計算においては、多くの場合、解くべき行列方程式の行列は、次数が数千〜数千万と大規模で、かつ、その成分(要素)がほとんどゼロとなる疎行列、すなわち大型疎行列となる。実際、例えば、電磁界解析では、図10に示すように、静電場・静磁場、準静的場、高周波の場などの電磁場の種類ごとに解くべき行列方程式は異なり、一方、偏微分方程式の解法には、大別して、差分法(FDM)、有限要素法(FEM)、境界要素法(BEM)などの数値解析法があるため、これらの組合せにより非常に多くの計算方法が存在するものの、そのほとんどの計算方法は大型疎行列方程式を解く問題に帰着する。
【0003】
これらの科学技術計算では、その計算規模が大きくなればなるほど全体の計算時間に対する行列方程式の計算時間の占める割合は大きくなり、しばしば95%以上にもなる。近年のスーパーコンピュータの性能向上、および、パーソナルコンピュータ(PC)レベルにおける高性能化に助長され、科学技術計算に対する要求もますます強くなり、取り扱うべき問題も大規模化している。とりわけ、短期間での製品開発が要求される産業応用の場では、ハイパフォーマンスコンピューティング(HPC)技術が非常に大きな解決課題となっている。このような背景から、科学技術計算の大部分を占める行列方程式の計算の高速化が、科学技術計算全体の最大の課題の1つとなっているといって過言でない。
【0004】
一般に、行列方程式の解法は、原理的には未知数を1つずつ消去しながら解を求めていくLU分解法に代表されるような直接解法と、初期値を設定してそこから真の解に向かって繰返し近似解を更新し収束値を求めていく反復解法とに大別される。このうち反復解法は、共役傾斜法(CG法)などのように線形連立方程式を等価なN次元2次形式(Nは行列の次数)の極小値を求める問題に置き換える方法と、そのような問題の置き換えは行わず行列を対角成分と非対角成分とに分離し直接対角成分のみから近似解の更新を行う単純反復法とに分類される。さらに、線形連立方程式を等価なN次元2次形式の極小値を求める問題に置き換える方法には、対称行列を適用対象とするCG法をベースに、それを非対称行列に拡張した双共役傾斜法(BiCG法)や、反復計算を行う前に行列を前処理したり、各反復過程で最適な探索方向ベクトルを構成するなどして反復計算を安定化したり高速化したりする、ICCG法、CGS法、BiCG−Stab法、BiCG−Stab2法などの派生的な方法が多数提案されている。
【0005】
従来、これらの方法のうち大型疎行列方程式の解法としては、上記の反復解法が有効であると考えられており、電磁界解析、流体解析、構造解析などの各種の数値シミュレーションに現れる大型疎行列方程式の計算にしばしば用いられている。
【0006】
CG法などの行列方程式の反復解法においては、解くべき行列形式の線形(1次)連立方程式の近似解を次の手順で求める。まず、Nを未知数の数あるいは行列の次数として、解くべき線形連立方程式を、それと等価なN次元2次形式の極小値を求める問題に置き換える。そして、初期値として適当なN次元解ベクトルを設定し、この初期値(k=0)を出発点にして、CG法などのそれぞれの反復解法の方法にしたがって次の近似解(k=1)を求め、さらに、この近似解(k=1)からその次の近似解(k=2)を求めていき、このk番目の近似解から(k+1)番目の近似解を求める手続きを繰返す。そして、この繰返し計算を(k+1)番目の近似解があらかじめ設定された精度以内になるまで行い、この精度以内になったところ、すなわち解が収束したところで上記の反復計算を終了し、この収束した値を数値計算としての最終的な近似解とする。
【0007】
上記の行列方程式の反復解法の高速化技術としては、PCクラスタ、あるいはさらに大規模なスーパーコンピュータなどの並列処理かつ高速なCPU上での走行が最も一般的に利用されているが、これらの計算機は比較的限られた研究機関でのみ利用が可能であったり、共同利用型であったりと、製品開発での使用などのだれもが手軽に利用できる一般の環境とはなっていない。
【0008】
これに対し、近年のFPGA、CPLDなどの書換え可能なLSIの出現およびその手軽な設計・利用環境、さらに、プリント回路基板設計・開発環境の充実化を背景に、科学技術計算のHPC技術の選択肢の一つとして、ターゲットをしぼり、計算方法に特化したアーキテクチャのハードウェアを構成することにより、安価に、かつ、身近なPCの環境で実現することができる専用計算機が新たに注目されつつある。
【0009】
現在、線形行列計算を行うための専用計算機(以下、行列計算専用計算機ともいう)には、密行列をターゲットとしたものとして、LU分解法を高速に処理すべく複雑なLU分解処理はホスト計算機に行わせ前進代入処理などの部分的な単純な処理を専用のハードウェアで行うタイプ、疎行列をターゲットとしたものとして、ハードウェア構成が比較的簡単な単純反復法の反復処理と収束判定処理とを直接ハードウェア化したタイプ、および、疎行列用のLU分解法あるいはCG法の演算のうち、ベクトルの内積演算あるいは行列とベクトルとの乗算の部分をハードウェア化したタイプなどがある(非特許文献1〜13参照。)。
【0010】
【非特許文献1】浅井秀樹,浅井光男,田中 衛,大規模スパース行列のLU分解専用並列計算機,信学論,Vol.J69-D, No.7, pp.1044-1053 (1986)
【非特許文献2】田辺 昇,土肥康孝,連想スイッチによる疎行列計算機の構成,信学論,Vol.J70-D, No.12, pp.2393-2401 (1987)
【非特許文献3】田辺 昇,石坂健一,村越英機,泉谷昭二,土肥康孝,並列パイプライン式疎行列専用計算機RAMPの構成,信学論,Vol.J71-D, No.10, pp.1939-1948 (1988)
【非特許文献4】清木 泰,福重俊幸,泰地真弘人,牧野淳一郎,小河正基,戒崎俊一,密行列専用計算機GENERAL−1の開発,計算機アーキテクチャ,111-9, pp.65-72 (1995)
【非特許文献5】泰地真弘人,藤田 実,科学技術計算に適した準並列CPUの開発に関する研究,NEDO 平成12年度提案公募事業成果報告会 予稿集,提案公募:99S29-019-1 (2000)
【非特許文献6】大野洋介,戒崎俊一,泰地真弘人,小長谷明彦,行列専用計算機MACE(M Atrix Computation Engine)の実効性能
【非特許文献7】長谷川大,回路シミュレーション用行列演算専用計算機の開発,信学技報(TECHNICAL REPORT OF IEICE ),CA2002-116, pp.51-56 (2003)
【非特許文献8】瀧口 善貴, 松岡 俊佑, 川口 秀樹, ラプラス/ ポアソン方程式差分法ソルバー専用計算機の開発に関する研究,平成17年電気・情報関係学会北海道支部連合大会 (2005), No.121.
【非特許文献9】G.R.Morris, V.K.Prasanna, R.D.Anderson, A Hybrid Approach for Mapping Conjugate Gradient onto an FPGA-Augmented Reconfigurable Supercomputer, Proc. of the 14th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'06), Napa, California (2006)
【非特許文献10】R. Strzodka, D. Goeddeke, Pipelined Mixed Precision Algorithms on FPGAs for Fast and Accurate PDE Solvers from Low Precision Components, Extended technical report of IEEE Proc. on Field-Programmable Custom Computing Machines (FCCM'06), Napa, California (2006)
【非特許文献11】O. Maslennikow, V. Lepekha, A. Sergyienko, FPGA Implementation of the Conjugate Gradient Method, LNCS 3911, pp.526-533 (2006)
【非特許文献12】田原一平, 川口 秀樹, 松岡俊祐,線形計算専用計算機・共役傾斜法マシンの開発に関する研究,平成19年電気・情報関係学会北海道支部連合大会 (2007), p.147.
【非特許文献13】D. DuBois, A. DuBois, Sparse Matrix-Vector Multiplicationand Conjugate Gradient Algorithm on Hybrid Computing Platforms, LALP-07-041 (2007)
【発明の開示】
【発明が解決しようとする課題】
【0011】
行列方程式計算用の専用計算機においては、ソフトウェアプログラムベースの計算機で行う処理と全く同じことをハードウェア化することは困難である。このため、従来は、全体の処理の中でハードウェア化に適し、かつ、ハードウェア化により有効に高速化が図れる処理を適切に選び出してそれらを専用計算機で実行させ、ホスト計算機と連動しながら全体として処理を高速化する方法が採られてきた。
【0012】
非特許文献4では、密行列をターゲットとしガウスの消去法のための専用計算機を提案している。とりわけ、ガウスの消去法の中で演算量のほとんどを占める前進消去の内積演算の部分をハードウェア化する方式について検討し、計算機のシステム構成を提案している。しかしながら、メモリ容量の制約から、1000次元以下の行列を対象としており、大規模な計算を行うにはさらなる検討が必要である。
【0013】
非特許文献5では、同じく密行列をターゲットとしたLU分解法の専用計算機について、LU分解法の計算ではデータ量(行列の次元)Nに対して、演算量がN2 、N1.5 とメモリアクセスがボトルネックになりづらい性質に着目して、LU分解法に現れる内積演算に特化し並列に高速処理することができる専用計算機の方式検討を行い、計算機のシステム構成を提案している。
【0014】
また、非特許文献6では、同じく密行列をターゲットとしたLU分解法の専用計算機について、LU分解法の演算のうち行列のLU分解のための行列成分の四則演算処理のみをハードウェア化し、ピボット選択や前進代入・後退代入などの処理はホスト計算機で処理する方式について検討し、計算機のシステム構成を提案している。
【0015】
このとき、上記の密行列を対象とした専用計算機による行列計算の高速化の試みにおいては、必然的に大容量のメモリが必要となり、また、より高速計算を実現するためにはハードウェアが大規模となるため、高々、数千次元程度の行列サイズを取り扱うのが限界であり、科学技術計算にしばしば現れるより大規模な計算への適用は困難であるという問題があった。
【0016】
一方、非特許文献1〜3では、疎行列をターゲットとし疎行列用LU分解法のための専用計算機を提案している。疎行列性を利用し、行列の次元Nに比してはるかに少ない数の非ゼロ行列成分の分だけのローカルメモリを有する演算ユニットを用意し、1行分の加減算・乗除算を並列に行える構成とし、LU分解法の全ての処理を実行する方式について検討し、計算機のシステム構成を提案している。
【0017】
また、非特許文献7では、同じく疎行列をターゲットとしたLU分解法の専用計算機について、汎用の算術演算器を2つ用意し、かつ、メモリアクセスを2チャネルとした上でパイプライン処理が可能なハードウェアを小規模ながら実際のPCIインターフェース機能を有するFPGA評価キットに実装し、その動作確認まで行っている。
【0018】
しかしながら、上記のLU分解法をハードウェア化する試みにおいては、ピボット選択も含めた複雑な行列のLU分解、そして、それに続く前進および後退代入の複数の処理が必要であり、CG法やBiCG法などの反復解法に比べて演算量の多い計算を余儀なくされるという問題があった。
【0019】
非特許文献8では、ラプラス・ポアソン方程式に特化した専用計算機を提案している。この専用計算機では、ラプラス・ポアソン方程式の差分式に現れる大型疎行列の1行ごとの非ゼロ成分の数が高々5であり、かつ、同じ行に現れる行列成分が隣り合うグリッドのアドレスとなることを利用し、この構造に特化した単純反復法のハードウェア化が提案されている。しかし、全体のシステムとしてシンプルなアーキテクチャで実現することができることが判明したものの、やはり、単純反復法は解の収束が悪く、行列解法のHPC化としては必ずしも適切なものとはなっていなかった。
【0020】
非特許文献9では、大型疎行列をターゲットとしCG法のための専用計算機を提案している。とりわけ、CG法の中で行列と探索方向のベクトルとの乗算演算の部分のみをハードウェア化し、他の処理はホスト計算機で実行させ、ホスト計算機と専用計算機とを連動させながらCG法の計算を高速化する方式について検討し、計算機のシステム構成を提案している。
【0021】
非特許文献10では、大型疎行列をターゲットとしたCG法の専用計算機について、FPGAへの実装を想定した場合の精度とハードウェアサイズ・計算速度のトレードオフについて検討し、パイプライン処理を併用した適切な演算方法を提案している。
【0022】
非特許文献11では、大型疎行列をターゲットとしたCG法の専用計算機について、CG法の演算に現れる除算の効率的な計算方法について検討し、演算部分について、実際にFPGAに実装しながらその有効性を示している。
【0023】
非特許文献12では、大型疎行列をターゲットとしたCG法の専用計算機について、CG法の1回の反復計算のハードウェア化について検討し、小規模ながら実際にFPGAに実装しながらその実現可能性を示している。
【0024】
非特許文献13では、大型疎行列をターゲットとしたCG法の専用計算機について、商用のリコンフィギュレーション可能な計算機を用いて行列方程式計算のHPC化について検討し、CG法に特化したシステムを提案している。
【0025】
以上のように、従来の行列計算専用計算機は、必ずしも科学技術計算にしばしば現れる大型疎行列には適していないLU分解法をハードウェア化するものや、あるいは大型疎行列に適したCG法のハードウェア化である場合も、CG法の演算に除算などの複雑な処理が含まれるために、演算方法を部分的にハードウェア化し、ホスト計算機と連動して動作させる構成のものである。これらの行列計算専用計算機は、いずれも、完全な専用計算機という形態ではなく、ホスト計算機とのデータのやり取りを生じるなど動作速度、大規模計算化などの点で必ずしも十分なものではなかった。また、CG法は基本的に対称行列が対象であるが、科学技術計算では非対称行列もよく現れるため、対称行列に特化した専用計算機では適用範囲が限られてしまうという問題もあった。
【0026】
そこで、この発明が解決しようとする課題は、電磁界解析、流体解析、構造解析などの各種の数値シミュレーションにおいて最終的に解くべき方程式として現れる大型疎行列方程式の計算を高速に行うことができ、しかもこの大型疎行列方程式の大型疎行列が対称行列である場合および非対称行列である場合の双方に適用することができる行列方程式計算装置および行列方程式計算方法を提供することである。
【課題を解決するための手段】
【0027】
上記課題を解決するために、第1の発明は、
対象となる大型疎行列方程式を反復解法により解く行列方程式計算装置であって、
上記大型疎行列方程式の大型疎行列の成分のうち、非ゼロの成分のみを1列ごとに格納する所定の個数のメモリを有するメモリ部と、
上記反復解法の演算の少なくとも一部をデータフロー形式で実行する1つまたは複数の演算部とを有し、
上記メモリ部から1行ごとの反復解法の演算に必要なデータを上記演算部に一度にロードするように構成されていることを特徴とするものである。
この行列方程式計算装置は、典型的には、パーソナルコンピュータなどからなるホスト計算機と接続され、このホスト計算機から必要なデータを取得するが、これに限定されるものではなく、必要に応じて、ホスト計算機の機能を持たせてもよい。
【0028】
第2の発明は、
対象となる大型疎行列方程式を反復解法により解く行列方程式計算方法であって、
上記大型疎行列方程式の大型疎行列の成分のうち、非ゼロの成分のみを1列ごとにメモリ部の所定の個数のメモリに格納するステップと、
上記メモリ部から1行ごとの反復解法の演算に必要なデータを1つまたは複数の演算部に一度にロードするステップと、
上記反復解法の演算の少なくとも一部を上記演算部でデータフロー形式で実行するステップとを有することを特徴とするものである。
【0029】
第1および第2の発明において、大型疎行列とは、電磁界解析、流体解析、構造解析などの数値シミュレーションにおいて最終的に解くべき行列方程式に現れる数千〜数百万あるいはそれ以上の次元であるがその成分のほとんどはゼロであり、非ゼロ成分は、1行あたり数個〜十数個であるような行列を意味する。大型疎行列は対称行列であっても非対象行列であってもよい。反復解法には、例えば、CG法、BiCG法、ICCG法、BiCG−Stab法、CGS法、BiCG−Stab2法などを用いることができる。
【0030】
第1および第2の発明においては、大型疎行列の成分のうち、非ゼロの成分のみを1列ごとに格納する所定の個数(複数)(必要に応じて選ばれるが、例えば8あるいは16)のメモリを用いるが、これは次のような理由による。図1は大型疎行列方程式の1例を示す。図1に示すように、行列Aおよび非同次ベクトルbからなる大型疎行列方程式
【数1】

から未知数ベクトルxを求める問題において、これをCG法の計算方法
【数2】

を用いて解く場合を考える。(2−2)式の反復部分の計算には、
【数3】

なる行列とベクトルとの乗算がある。このベクトルqのi番目の成分qi の計算には行列Aのi行目の1行分の成分の値が必要であるが、行列の成分の値を1つのメモリに格納しては、必要な値を1度にこれらのメモリから取得することはできない。このため、第1および第2の発明では、メモリ部が、行列の非ゼロ成分のみを1列ごとに格納する複数のメモリを有する構成とし、1行ごとの計算に必要なデータをメモリ部から演算部に並列に一度にロードすることとしている。また、後述の複数の演算部による並列処理の場合は、これらの列ごとにそれぞれ設けられたメモリをさらに並列数分設け、それぞれの並列処理が分担する行の成分の値を格納する。
【0031】
好適には、行列方程式計算装置は、同じハードウェア回路の複数の演算部を有する。そして、これらの演算部の数だけ、行列の行数Nを分割し、それぞれの演算部が連動動作しながら並列処理を行う。こうすることで、行列方程式の計算を演算部の数だけスケーラブルに並列処理により高速化することができる。
好適には、反復解法の演算を可能な限りデータフロー形式で実行する。
【0032】
さらに、好適には、対称行列を対象としたCG法専用計算機の場合は、偶数かつ複数の同じハードウェア回路の演算部を有する。そして、これらの演算部の2つをペアに連動させることにより、1つの非対称行列を対象としたBiCG法専用計算機としても機能させる。また、この演算部のペアの数だけ行列の行数を分割し、それぞれの演算部が連動動作しながら並列処理を行うようにしてもよい。こうすることで、1つの専用計算機を対称行列および非対称行列両方に適用することができ、対称行列モードの場合は非対称行列モードの場合の2倍の速度で動作する計算装置を実現することができる。
【発明の効果】
【0033】
この発明によれば、行列方程式計算装置にOSなどのソフトウェア的な制約なしに、ハードウェア的に許される限り大容量のメモリを搭載可能となるため、大規模な計算を実行することができる。また、演算部におけるCG法などの反復解法のデータフローアーキテクチャ回路構成とメモリ部における行列の1列の非ゼロ成分ごとのメモリ構成とにより、スループットとしても、例えば、CG法やBiCG法では1回の反復計算を3N+2クロック(Nは行列の次数)で、BiCG−Stab法やCGS法では5Nクロックで処理することができ、計算方法の限界まで動作時間を最小化した高速な動作を実現することができる。
また、複数の演算部を有する構成とし並列動作させることにより、スケーラブルな並列処理で高速化を図ることができる。
さらに、CG法の演算部を2つ連動させることでBiCG法の演算部を実現することができるため、用途に適した効率的な計算を行うことができる。
さらに、複数の反復解法の演算部を用意し、これらの演算部に同じ行列計算を同時に行わせ、最も早く計算が完了した演算部の解をホスト計算機がアップロードすることにより、自動的に問題に最適な反復解法の方法を選択して行列方程式の計算を実行することができる。
【発明を実施するための最良の形態】
【0034】
以下、この発明の実施の形態について図面を参照しながら説明する。
まず、この発明の第1の実施の形態による行列方程式計算装置について説明する。
この行列方程式計算装置はCG法専用計算機により構成される。この行列方程式計算装置は、(1)式の行列方程式を(2−1)式、(2−2)式および(3)式に示すCG法により計算するものである。
【0035】
図2はこの行列方程式計算装置1の全体構成、図3はこの行列方程式計算装置1の各部の構成の詳細を示す。図2および図3に示すように、この行列方程式計算装置1は、大型疎行列Aの全成分の値を格納するメモリモジュール11と、(2−2)式のCG法の1回分の反復計算をデータフロー形式で3Nクロックで実行する演算モジュール12と、メモリモジュール11と演算モジュール12との間で、(3)式の大型疎行列Aとベクトルpk との乗算をクロック遅延のない組合せ回路で実行し、この結果の値Apk を演算モジュール12に提供する行列−ベクトル乗算回路13と、演算モジュール12で得られたk+1番目の反復解が収束しており最終的な解となっているかどうかを判定する収束判定部14とを有する。メモリモジュール11、行列−ベクトル乗算回路13、演算モジュール12および収束判定部14における一連のデータの流れの動作はマスターコントローラ15により制御される。
【0036】
メモリモジュール11は、大型疎行列Aを非ゼロ成分のみに圧縮したN×mのサイズの行列A’の成分を列ごとに格納するm個のメモリM1−1〜M1−mを有する。この大型疎行列Aの圧縮は具体的には次のように行う。例えば、各行ごとの非ゼロ成分の数のうち全N行の中で最大のものをmとしてN×mのサイズの行列を用意し、これに各行ごとに非ゼロ成分を左詰めで格納する。同時に、これらのメモリM1−1〜M1−mと全く同じサイズのメモリをもう1つずつ用意する(メモリM2−1〜M2−m)。これらのメモリM2−1〜M2−mには、対応するメモリM1−1〜M1−mの非ゼロ成分がもともとの大型疎行列Aのどの列に位置していたかを示すインデックスを格納する。これにより、通常、大型疎行列ではNが数千〜数千万に対しmは高々十数個であるため、大型疎行列Aの情報を失うことなく大幅にメモリ容量を節約することができる。メモリモジュール11をこのように構成することで、メモリ容量を大幅に節約することができ、かつ、一度に1行分の行列の非ゼロ成分全てに並列アクセスすることができるためスループットとしての計算性能に大きく影響する行列の成分が格納されたメモリM1−1〜M1−mへのアクセスは、最小限の1回にまで減らすことができる。
【0037】
メモリモジュール11はさらに、CG法の反復計算実行時に一時的に値を格納しておくために、同じベクトルpk の値をm個別々に格納するためのメモリM3−0〜M3−m、ベクトルpk の更新値pk+1 を格納するためのメモリM3−0’、ベクトルxk を格納するためのメモリM4、ベクトルxk の更新値xk+1 を格納するためのメモリM4’、ベクトルrk を格納するためのメモリM5、ベクトルrk の更新値rk+1 を格納するためのメモリM5’、ベクトルqk を格納するためのメモリM6、ベクトルrk のノルムの2乗‖rk 2 =(rk ,rk )を格納するためのメモリM7、ノルムの2乗‖rk 2 の更新値‖rk+1 2 =(rk+1 ,rk+1 )を格納するためのメモリM7’、行列の次数N、行ごとの非ゼロ成分の最大数m、非同次項ベクトルbのノルムの2乗‖b‖2 =(b,b)、相対残差の収束判定基準値ε、最大反復回数Km、各反復ステップの残差Rsなどの反復の収束条件を格納するためのメモリM8を有する。
【0038】
上述のメモリM1−1〜M1−m、M2−1〜M2−m、M3−0〜M3−m、M3−0’、M4、M4’、M5、M5’、M6、M7、M7’、M8としては、それぞれ独立した個別のメモリを用いてもよいし、それらのうちの1つまたは2つ以上のメモリとして、独立した1つのメモリのメモリ領域を所定個数に分割したものを用い、これらのメモリ領域をメモリM1−1〜M1−m、M2−1〜M2−m、M3−0〜M3−m、M3−0’、M4、M4’、M5、M5’、M6、M7、M7’、M8のうちのいずれかに用いてもよい。これらのメモリM1−1〜M1−m、M2−1〜M2−m、M3−0〜M3−m、M3−0’、M4、M4’、M5、M5’、M6、M7、M7’、M8としては、例えば、SRAMまたはDRAMを用いることができる。
【0039】
行列−ベクトル乗算回路13は、上述のように列ごとにメモリM1−1〜M1−mに分割格納された大型疎行列Aの成分を、メモリM2−1〜M2−mを参照しつつ1行ごとに1行の全ての成分に並列に同時アクセスし、また、ベクトルpk を格納するメモリM3−1〜M3−mからそれぞれ(3)式の計算に必要な値のアドレスに同時アクセスし、データフロー形式で(3)式の計算を実行し、ベクトルqk を1クロックで1成分ずつ計算し、その結果を演算モジュール12に引き渡す。
【0040】
演算モジュール12は、行列−ベクトル乗算回路13からのベクトルqk 、メモリM3−0のベクトルpk 、メモリM4のベクトルxk 、メモリM5のベクトルrk 、メモリM6のベクトルqk およびメモリM7の(rk ,rk )を用いて、(2−2)式(i)中のベクトルpk とベクトルqk (=Apk )との内積(pk ,qk )の計算を実行するための演算回路31、(2−2)式(i)中の除算(rk ,rk )/(pk ,qk )の計算を実行するための演算回路32、(2−2)式(ii)のベクトルxk+1 の計算を実行するための演算回路33、(2−2)式(iii)のベクトルrk+1 の計算を実行するための演算回路34、(2−2)式(v)中のベクトルrk+1 の2乗(rk+1 ,rk+1 )の計算を実行するための演算回路35、(2−2)式(iv)中の除算(rk+1 ,rk+1 )/(rk ,rk )の計算を実行するための演算回路36、(2−2)式(v)のベクトルpk+1 の計算を実行するための演算回路37を有する。
【0041】
(2−2)式からわかるように、演算回路31、33、34、35、37の計算はそれぞれNクロックで、演算回路32、36の計算は1クロックで実行することができるが、演算モジュール12は全体として可能な限りこれらの計算を並列に実行することができるように構成されている。具体的には、演算回路31、32のN+1クロックの計算が完了した後は、演算回路33、34、35の計算は、演算回路34、35のデータフロー性を利用するとまとめてNクロックで実行することができるため、残りの演算回路36、37のN+1クロックの計算を合わせて全体で3N+2クロックで実行することができるように構成されている。
【0042】
収束判別部14は、CG法の演算を実行する行列−ベクトル乗算回路13から演算モジュール12での1回分の反復計算で得られたk+1回目の残差ベクトルrk+1 から相対誤差を計算し、あらかじめ設定されたメモリM8内の相対残差の収束判定基準値ε内に収まり反復計算が収束しているかどうかを判別する。
【0043】
マスターコントローラ15は、計算が収束していればxk+1 を最終的な近似解として計算を終了し、ホスト計算機(図示せず)に正常に収束値を得た旨を通知する。計算が収束していなければ、あらかじめ設定されたメモリM8内の最大反復回数Kmを超えた場合は、ホスト計算機に反復計算が収束しなかった旨を通知し、最大反復回数Kmを超えていない場合は、反復計算で得られたベクトルpk+1 、xk+1 、rk+1 および(rk+1 ,rk+1 )を次の反復計算に送り、再度、行列−ベクトル乗算回路13から演算モジュール12での反復計算の実行を指示する。
【0044】
図4は行列方程式計算装置1の使用形態を示す。行列方程式計算装置1はPCIインターフェース41によりホスト計算機42と接続されている。CG法の演算を実行する上で必要な値は、圧縮格納された大型疎行列A、反復計算の初期値となるベクトルp0 (=r0 )、x0 、非同次項の(b,b)、収束判定基準ε、最大反復回数Kmである。これらの値はホスト計算機42に格納され、計算開始指示の前に行列方程式計算装置1にダウンロードされてメモリモジュール11のメモリM3、M4、M5、M8に格納されるようになっている。ホスト計算機42は、これらの値を行列方程式計算装置1にダウンロードした後、行列方程式計算装置1に対し計算開始を指示する。行列方程式計算装置1は、(2−2)式の反復計算および収束判定を繰返し、最大反復回数Km以内で解が収束判定基準ε以下になれば、メモリM4’のベクトルxk+1 を近似解としてホスト計算機42に引渡し、最大反復回数Kmまで計算しても収束しなければ、計算は未収束として、これをホスト計算機42に通知する。
【0045】
図5A〜Eは行列方程式計算装置1の実装例を示す。図5AおよびBに示すように、この例では、1つの小プリント基板51上に、メモリモジュール11の2列分の圧縮行列の成分を格納するメモリ52と、この2列の行列と対応する探索ベクトルpk の成分との乗算を行う行列−ベクトル乗算回路13とが搭載される。図5CおよびDに示すように、この小プリント基板51が合計16個、サブプリント基板上53に接続される。図5Eに示すように、メインプリント基板上54に、演算モジュール12、収束判定部14およびマスターコントローラ15が搭載され、これにサブプリント基板53が接続される。こうして、CG法専用計算機としての行列方程式計算装置1が構成される。これらの搭載部品のほとんどは例えばFPGAまたはASICにより作製することができる。このように構成することにより、行列方程式計算装置1をある決められた列数m用に構成した場合でも、あらかじめ十分なソケットを用意しておけば、後に小プリント基板51を追加接続することにより、行列サイズの変更に対してフレキシビリティーを持たすことができる。
【0046】
この第1の実施の形態によれば、次のような利点を得ることができる。すなわち、行列方程式計算装置1をCG法専用計算機により構成し、メモリモジュール11と演算モジュール12とを分離した構成としていることにより、数値シミュレーションに用いる大型疎行列に応じてメモリモジュール11を適切な構成のものに交換することができ、比較的複雑な構成を有する演算モジュール13は変更しないで、大型疎行列の変更に柔軟に対応することができ、フレキシビリティーが高い。また、メモリモジュール11は、行列の1列ごとにm個のメモリM1−1〜M1−mを設け、これらのメモリM1−1〜M1−mから(3)式の1行分の計算に必要なデータを1クロックで行列−ベクトル乗算回路13にロードし、(3)式の1行分の計算を並列的に実行するようにしていることにより、メモリモジュール11へのアクセス回数を最小限にすることができ、それによって高速動作化を図ることができ、行列方程式の計算を高速かつ短時間で行うことができる。また、この行列方程式計算装置1は実装や計算の大規模化が容易である。以上により、極めて実用性が高い高性能の行列方程式計算装置1を実現することができる。
この行列方程式計算装置1は、電磁界解析、流体解析、構造解析などの各種の数値シミュレーションで最終的に解くべき方程式として現れる大型疎行列方程式を解くのに適用して好適なものである。
【0047】
次に、この発明の第2の実施の形態による行列方程式計算装置について説明する。
この第2の実施の形態においては、メモリモジュール11へのアクセス回数の最小限化に加え、さらに、演算モジュール12における3N+2クロック分の計算をより高速化すべく、演算モジュール12を複数用意し、3N+2クロック分の計算をこれらの複数の演算モジュール12で並列に実行する方式が用いられる。演算モジュール12における3N+2クロックの計算はもともと全て並列処理してもよく、この部分の計算を複数の演算モジュール12で行うことにより、1つの演算モジュール12を用いた場合に比べ、演算モジュール12の台数分だけ、高速化を図ることができる。上記以外のことは第1の実施の形態と同様である。
この行列方程式計算装置1の実装は、図6に示すように、図5Eに示すものと同様なメインプリント基板54上にサブプリント基板53を複数搭載することにより簡単に行うことができる。
【0048】
この第2の実施の形態によれば、第1の実施の形態と同様な利点に加えて、動作速度のより一層の向上を図ることができ、行列方程式の計算をより高速に行うことができるという利点を得ることができる。
【0049】
次に、この発明の第3の実施の形態による行列方程式計算装置について説明する。
この第3の実施の形態においては、複数の演算モジュール3の並列処理による高速化に加え、さらに、CG法は大型疎行列が対称行列である場合のみに適用が限定されているのに対し、非対称行列である場合にも適用することができる機能を装備すべく、2つの演算モジュール12を連動動作させ、非対称行列にも適用することができるBiCG法マシンとして動作させる方式が用いられる。BiCG法はもともとCG法に転置行列に対するCG法の処理を追加したものであり、もう1つの演算モジュール12に転置行列を処理させることにより、2つの演算モジュール12をペアで連動動作させることによりBiCG法の動作を実現することができる。上記以外のことは第1の実施の形態と同様である。
この行列方程式計算装置1の実装は、図6に示すように、図5Eに示すものと同様なメインプリント基板54上にサブプリント基板53を複数搭載することにより簡単に行うことができる。
【0050】
次に、ハードウェア記述言語であるVHDL(VHSIC Hardware Description Language)により行列方程式計算装置1による大型疎行列計算の論理シミュレーションを行った結果について説明する。
図7はシミュレーションの例として使用したリニアモータの界磁部のモデルを、図8はその数値モデルを示す。このモデルは、3つの励磁コイル61〜63で励磁された静磁場が、鉄(μr =5000)からなる磁場遮蔽材料64によって外部にもれないよう遮蔽される現象に関するもので、系は軸対称性を持っており、図8の数値シミュレーションの解析領域は軸対称性を考慮して2次元の50×100グリッドサイズのものである。この磁場を記述する支配方程式は、与えられた電流密度ベクトルJ、透磁率μに対し、ベクトルポテンシャルAを未知数とし、
【数4】

となる。この方程式を半径方向、軸方向ともにΔlのサイズの一様なグリッドで分割した上で軸対称性を考慮して差分法に基づき差分式で表すと、半径方向にi 番目、軸方向にj
番目のグリッドでは、
【数5】

となる。ただし、μi,j 、Ai,j 、Ji,j はそれぞれ、半径方向にi 番目、軸方向にj 番目のグリッドでの透磁率μ、ベクトルポテンシャルAのθ成分、電流密度ベクトルJのθ成分である。このとき、未知数Ai,j の数は、全てのグリッド数の50×100=5000であるので、差分法により数値解析する際に現れる大型疎行列は5000×5000のサイズとなる。この大型疎行列計算を、非対称行列用のBiCG法に基づいて構成した行列方程式計算装置1により実行する場合のVHDL論理回路シミュレーションにより行った。その解から得られた静磁場分布の結果を図9に示す。実際の計算では、(5)式からわかるように、1行に現れる未知数Ai,j の係数は高々5個であるので、この疎行列性を利用し、行列は5000×5のサイズに圧縮したものを用いている。図9に示す結果は、同じ数値モデルに基づいてC言語ソフトウェアシミュレーションを行った結果と一致しており、この行列方程式計算装置1の妥当性が保証される。このVHDL論理回路シミュレーションでの動作を参考に、この行列方程式計算装置1がアクセス速度266MHzのメモリと同程度の速度で動作した場合の性能を見積ると、2.6GHzのCPUを有するパソコン上でC言語を用いて計算した時の約50〜60倍の性能に匹敵する。
【0051】
ここでは、簡単のため、軸対称2次元となるモデルを用いたが、基本的には3次元の場合も全く同様である。すなわち、例えば同じ図7の3次元モデルでは、グリッドサイズが100×100×100であるので、最終的に現れる大型疎行列は、1000000×1000000で、(4)式に対応する3次元の差分式では、係数は16個となるため、最終的には、1000000×16のサイズに圧縮された行列を解くことに帰着する。このため、この行列方程式計算装置1では、軸対称2次元の場合が、N=5000、m=5であったものが、3次元では、単に、N=1000000、m=16となるだけで、動作自体は全く同様である。
この第3の実施の形態によれば、第1の実施の形態と同様な利点に加えて、大型疎行列Aが非対称行列である場合にも行列方程式計算装置1を適用することができるという利点を得ることができる。
【0052】
以上、この発明の実施の形態について具体的に説明したが、この発明は、上述の実施の形態に限定されるものではなく、この発明の技術的思想に基づく各種の変形が可能である。
例えば、上述の実施の形態において挙げた数値、回路構成、配置などはあくまでも例に過ぎず、必要に応じて、これらと異なる数値、回路構成、配置などを用いてもよい。また、行列方程式の解法には、CG法やBiCG法ではなく、ICCG法、BiCG−Stab法、CGS法、BiCG−Stab2法などの他の反復解法を採用し、演算モジュール12もこれらの行列方程式の解法用のもので構成してもよい。
【図面の簡単な説明】
【0053】
【図1】大型疎行列方程式の1例を示す略線図である。
【図2】この発明の第1の実施の形態による行列方程式計算装置の全体構成を示す略線図である。
【図3】この発明の第1の実施の形態による行列方程式計算装置の各部の構成の詳細を示す略線図である。
【図4】この発明の第1の実施の形態による行列方程式計算装置をホスト計算機と接続した状態を示す略線図である。
【図5】この発明の第1の実施の形態による行列方程式計算装置の実装例を示す略線図である。
【図6】この発明の第2の実施の形態による行列方程式計算装置の実装例を示す略線図である。
【図7】この発明の第3の実施の形態による行列方程式計算装置を用いて行った数値シミュレーションに用いた数値モデルを示す略線図である。
【図8】この発明の第3の実施の形態による行列方程式計算装置を用いて行った数値シミュレーションに用いた数値モデルを示す略線図である。
【図9】この発明の第3の実施形態による行列方程式計算装置を用いて行った数値シミュレーションの結果を示す略線図である。
【図10】電磁界解析を例に、多くの科学技術計算は最終的に大型疎行列方程式の計算に帰着することを説明するための略線図である。
【符号の説明】
【0054】
1…行列方程式計算装置、11…メモリモジュール、12…演算モジュール、13…行列−ベクトル乗算回路、14…収束判定部、15…マスターコントローラ、42…ホスト計算機、51…プリント基板、53…サブプリント基板、54…メインプリント基板、M1−1〜M1−m、M2−1〜M2−m、M3−0〜M3−m、M3−0’、M4、M4’、M5、M5’、M6、M7、M7’、M8…メモリ

【特許請求の範囲】
【請求項1】
対象となる大型疎行列方程式を反復解法により解く行列方程式計算装置であって、
上記大型疎行列方程式の大型疎行列の成分のうち、非ゼロの成分のみを1列ごとに格納する所定の個数のメモリを有するメモリ部と、
上記反復解法の演算の少なくとも一部をデータフロー形式で実行する1つまたは複数の演算部とを有し、
上記メモリ部から1行ごとの反復解法の演算に必要なデータを上記演算部に一度にロードするように構成されていることを特徴とする行列方程式計算装置。
【請求項2】
上記演算部を複数有することを特徴とする請求項1記載の行列方程式計算装置。
【請求項3】
上記複数の演算部を並列動作させることを特徴とする請求項2記載の行列方程式計算装置。
【請求項4】
上記反復解法は共役傾斜法または双共役傾斜法であることを特徴とする請求項3記載の行列方程式計算装置。
【請求項5】
対象となる大型疎行列方程式を反復解法により解く行列方程式計算方法であって、
上記大型疎行列方程式の大型疎行列の成分のうち、非ゼロの成分のみを1列ごとにメモリ部の所定の個数のメモリに格納するステップと、
上記メモリ部から1行ごとの反復解法の演算に必要なデータを1つまたは複数の演算部に一度にロードするステップと、
上記反復解法の演算の少なくとも一部を上記演算部でデータフロー形式で実行するステップとを有することを特徴とする行列方程式計算方法。
【請求項6】
上記演算部を複数用いることを特徴とする請求項5記載の行列方程式計算方法。
【請求項7】
上記複数の演算部を並列動作させることを特徴とする請求項6記載の行列方程式計算方法。
【請求項8】
上記反復解法は共役傾斜法または双共役傾斜法であることを特徴とする請求項7記載の行列方程式計算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−122850(P2010−122850A)
【公開日】平成22年6月3日(2010.6.3)
【国際特許分類】
【出願番号】特願2008−295135(P2008−295135)
【出願日】平成20年11月19日(2008.11.19)
【出願人】(504193837)国立大学法人室蘭工業大学 (70)
【Fターム(参考)】