(57)【要約】【課題】ＧＳＭＡＣ有限要素法による数値解析処理を高速に実行することが可能な専用計算機を実現する。【解決手段】ポアソン方程式の計算内で単純且つ演算量が多い部分である少なくとも発散の計算については専用回路１６で実行し、柔軟性が必要な運動方程式の処理や、専用回路１６によって実行される計算を除く他のポアソン方程式の計算については汎用プロセッサ１５によって実行する。汎用プロセッサ１５は要素単位で当該要素に関する余因子ベクトル、速度ベクトル、体積のデータを専用回路１６に送信し、専用回路１６は余因子ベクトル、速度ベクトル、体積のデータに基づいて、発散を計算する。専用回路１６と汎用プロセッサ１５との間はローカルバスによって密結合されており、専用回路１６と汎用プロセッサ１５との間のデータの入出力はローカルバスを介して高速に実行される。【選択図】    図７
2004362358.tif 000002
【特許請求の範囲】
【請求項１】
ＧＳＭＡＣ有限要素法を用いて解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理を実行する数値解析装置において、
前記数値解析処理の内、運動方程式から導かれるポアソン方程式の計算の内で少なくとも離散ナブラ演算子を用いた発散の計算を実行する専用回路と、
前記専用回路によって実行される計算を除く他のポアソン方程式の計算、および前記運動方程式に関する計算を実行する汎用プロセッサとを具備し、
前記専用回路および前記汎用プロセッサはその間で前記離散ナブラ演算子を用いた発散の計算に必要な入力データおよび前記専用回路によって算出された発散の値が授受されるように前記専用回路と前記汎用プロセッサとの間に配設されたローカルバスを介して結合されており、前記専用回路は、前記離散ナブラ演算子を用いた発散の計算に必要な入力データとして前記汎用プロセッサから前記ローカルバスを介して要素単位で入力される、当該要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータに基づいて、前記発散を計算するための演算処理を実行するように構成されていることを特徴とする数値解析装置。
【請求項２】
前記専用回路には、
前記汎用プロセッサが前記入力データを書き込むことが可能な入力バッファ、および前記汎用プロセッサが前記専用回路によって算出された発散の値を読み出すことが可能な出力バッファを含み、前記専用回路による前記入力バッファからの入力データの読み込み状態、および前記専用回路によって算出された発散の値についての前記出力バッファへの書き込みの状態に応じて、前記入力バッファに関する書き込み可否、および前記出力バッファからのデータ読み出しの可否をそれぞれ前記汎用プロセッサに提示する入出力回路が設けられていることを特徴とする請求項１記載の数値解析装置。
【請求項３】
前記入出力回路には、前記汎用プロセッサが前記入力データをそれぞれ書き込むことが可能な第１および第２の２つの入力バッファが設けられており、前記入出力回路は、前記専用回路によって入力データの読み込みが完了された入力バッファから順次新たな要素に関する入力データの書き込みが許可されるように、前記専用回路による入力データの読み込み状態に応じて前記第１および第２の２つの入力バッファそれぞれに関する書き込み可否を前記汎用プロセッサに提示する手段を含むことを特徴とする請求項２記載の数値解析装置。
【請求項４】
外部バスを介してホスト装置に電気的に接続可能に構成され、前記ホスト装置からの要求に応じて、ＧＳＭＡＣ有限要素法を用いて解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理を実行する専用プロセッサモジュールであって、
前記数値解析処理の内、運動方程式から導かれるポアソン方程式の計算の内で少なくとも離散ナブラ演算子を用いた発散の計算を実行する専用回路と、
前記外部バスを介して前記ホスト装置との通信を実行可能に構成され、前記外部バスを介して前記ホスト装置から入力されるデータに基づき、前記専用回路によって実行される計算を除く他のポアソン方程式の計算、および前記運動方程式に関する計算を実行する汎用プロセッサとを具備し、
前記専用回路および前記汎用プロセッサはその間で前記離散ナブラ演算子を用いた発散の計算に必要な入力データおよび前記専用回路によって算出された発散の値が授受されるように前記専用プロセッサモジュール内のローカルバスを介して結合されており、前記専用回路は、前記離散ナブラ演算子を用いた発散の計算に必要な入力データとして前記汎用プロセッサから前記ローカルバスを介して要素単位で入力される、当該要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータに基づいて、前記発散を計算するための演算処理を実行するように構成されていることを特徴とする専用プロセッサモジュール。
【請求項５】
ポアソン方程式中の発散を離散ナブラ演算子を用いて計算するように構成された専用回路であって、
前記離散ナブラ演算子を用いた発散の計算に必要な入力データとして外部のプロセッサから要素単位で入力される、当該要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータに基づいて、前記発散を計算するための演算処理を実行する演算回路と、
前記外部のプロセッサと前記専用回路とを結合するローカルバスを介して前記外部のプロセッサとの間のデータ入出力を行うための入出力回路とを具備し、
前記入出力回路は、前記外部のプロセッサが前記入力データを書き込むことが可能な入力バッファと、前記外部のプロセッサが前記演算回路によって算出された発散の値を読み出すことが可能な出力バッファと、前記演算回路による前記入力バッファからの入力データの読み込み状態、および前記演算回路によって算出された発散の値についての前記出力バッファへの書き込みの状態に応じて、前記入力バッファに関する書き込み可否、および前記出力バッファからのデータ読み出しの可否をそれぞれ前記外部のプロセッサに提示する手段を含むことを特徴とする専用回路。
【請求項６】
ＧＳＭＡＣ有限要素法を用いて解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理をコンピュータによって実行する数値解析方法において、
前記数値解析処理の内、運動方程式に関する計算、および前記運動方程式から導かれるポアソン方程式の計算の内で発散の計算を除く他の計算を汎用プロセッサによって実行するとともに、前記発散を離散ナブラ演算子を用いて計算するために必要な入力データとして、当該発散の計算対象となる要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータを前記汎用プロセッサによって生成し、
前記生成された入力データを要素単位で前記汎用プロセッサから前記専用回路に、その間を結合するローカルバスを介して入力し、
前記離散ナブラ演算子を用いた発散の計算を前記専用回路によって実行することを特徴とする数値解析方法。
【請求項７】
前記汎用プロセッサと前記専用回路との間には、前記汎用プロセッサが前記入力データを書き込むことが可能な第１および第２の入力バッファが設けられており、
前記専用回路によって入力データの読み込みが完了された入力バッファから順次新たな要素に関する入力データの書き込みが許可されるように、前記専用回路による入力データの読み込み状態に応じて前記第１および第２の２つの入力バッファそれぞれに関する書き込み可否を前記汎用プロセッサに提示することを特徴とする請求項６記載の数値解析方法。
【請求項８】
ＧＳＭＡＣ有限要素法を用いて解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理を、汎用プロセッサと専用回路とが搭載されコンピュータのバスに電気的に接続可能に構成された専用プロセッサモジュールを用いて実行する数値解析方法であって、
コンピュータからバスを介して前記専用プロセッサモジュールに対してデータを入力して、運動方程式に関する計算、および前記運動方程式から導かれるポアソン方程式の計算の内で発散の計算を除く他の計算を前記汎用プロセッサによって実行するとともに、前記発散を離散ナブラ演算子を用いて計算するために必要な入力データとして、当該発散の計算対象となる要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータを前記汎用プロセッサによって生成し、
前記生成された入力データを前記汎用プロセッサから前記専用回路に前記専用プロセッサモジュール内のローカルバスを介して入力し、
前記離散ナブラ演算子を用いた発散の計算を前記専用回路によって実行することを特徴とする数値解析方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＧＳＭＡＣ有限要素法を用いて数値解析処理を実行するための数値解析装置、数値解析用専用プロセッサモジュール、数値解析用専用回路、および数値解析方法に関する。
【０００２】
【従来の技術】
従来より、電磁熱流体解析や粘弾性流体解析などの問題を解くために、解析対象の領域の物理量を計算によって解析するための数値解析処理が用いられている。このような数値解析処理の手法として、差分法（ＦＤＭ）、有限要素法（ＦＥＭ）、有限体積法（ＦＶＭ）、境界要素法（ＢＥＭ）が知られている。差分法はシミュレーション技術として最も確立された手法であるが、汎用性が乏しく複雑な形状の実用的な計算にはケースバイケースで考えなければならない。一方、有限要素法は多くの実用的な問題に適用できる汎用性を持っている。しかし、要素数の増大と共に記憶容量と計算時間を多く必要とし、一般的には経済的な計算手法とはいえない。有限体積法は差分法の長所と有限要素法の汎用性をもつ手法で現在多くの試みがなされつつある。境界要素法はポテンシャル問題に適しているものの、高レイノルズ数の粘性流れの解析には精度的に満足できるものではない。したがって、現在、汎用的・高精度・経済的な高速計算技術の確率が望まれている。これら三つの条件をある程度満足する数値解析手法として、ＧＳＭＡＣ有限要素法が知られている（例えば、非特許文献１参照。）。ＧＳＭＡＣ有限要素法は差分法の分野で開発されたＭＡＣ法、ＳＭＡＣ法、ＨＳＭＡＣ法の技術を有限要素法へ応用したもので、ｇｅｎｅｒａｌｉｚｅｄ  ＳＭＡＣ法の省略形である。また、最近では、ＧＳＭＡＣ有限要素法に対応する専用計算機の検討も行われている。例えば、ポアソン方程式中における発散の計算を実行する専用演算器の検討も本発明者らによってなされている（例えば、非特許文献２参照。）。
【０００３】
【非特許文献１】
棚橋隆彦著「流れの有限要素法解析Ｉ、ＩＩ」朝倉書店、１９９７
【０００４】
【非特許文献２】
青木すみえ、他４名、「ＧＳＭＡＣ−ＦＥＭ専用プロセッサの検討」、計算工学会講演会論文集  Ｖｏｌ．７、２００２年５月
【０００５】
【発明が解決しようとする課題】
しかしながら、専用計算機の開発に際しては、単に専用回路を用いるというだけでなく、ＧＳＭＡＣ有限要素法の特性や専用回路との間のインタフェースについても十分に考慮しなければ十分な処理速度の高速化を実現することは実際上困難である。
本発明は上述の事情を考慮してなされたものであり、ＧＳＭＡＣ有限要素法による数値解析処理を高速に実行することが可能な数値解析装置、数値解析用専用プロセッサモジュール、数値解析用専用回路、および数値解析方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記課題を解決するために、本発明は、ＧＳＭＡＣ有限要素法を用いて解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理を実行する数値解析装置において、前記数値解析処理の内、運動方程式から導かれるポアソン方程式の計算の内で少なくとも離散ナブラ演算子を用いた発散の計算を実行する専用回路と、前記専用回路によって実行される計算を除く他のポアソン方程式の計算、および前記運動方程式に関する計算を実行する汎用プロセッサとを具備し、前記専用回路および前記汎用プロセッサはその間で前記離散ナブラ演算子を用いた発散の計算に必要な入力データおよび前記専用回路によって算出された発散の値が授受されるように前記専用回路と前記汎用プロセッサとの間に配設されたローカルバスを介して結合されており、前記専用回路は、前記離散ナブラ演算子を用いた発散の計算に必要な入力データとして前記汎用プロセッサから前記ローカルバスを介して要素単位で入力される、当該要素に関する物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータに基づいて、前記発散を計算するための演算処理を実行するように構成されていることを特徴とする。
【０００７】
この数値解析装置においては、ＧＳＭＡＣ有限要素法による数値解析処理では外部メモリ参照が多く必要とされ、且つ全計算時間のほとんどを占めるような突出した計算時間を必要とする特定の処理が存在しないことに着眼し、ポアソン方程式の計算内で単純且つ演算量が多い部分である少なくとも発散の計算については専用回路で実行し、柔軟性が必要な運動方程式の処理や、専用回路によって実行される計算を除く他のポアソン方程式の計算については汎用プロセッサによって実行するとともに、専用回路と汎用プロセッサとの間をローカルバスによって密結合することによって、専用回路と汎用プロセッサとの間のデータの入出力を効率よく実行できるようにしたものである。この場合、専用回路では離散ナブラ演算子を用いて発散の計算を実行するので、離散ナブラ演算子を用いた発散の計算に必要な入力データとして物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータがローカルバスを介して汎用プロセッサから専用回路に要素単位で入力される。これにより、発散の計算に必要な入力データとその入力データから計算された発散の値を高速に受け渡すことが可能となり、全体として十分な高速化を実現することが可能となる。また汎用プロセッサと専用回路との間のデータ入出力の為に、専用回路には、前記汎用プロセッサが前記入力データを書き込むことが可能な入力バッファ、および前記汎用プロセッサが前記専用回路によって算出された発散の値を読み出すことが可能な出力バッファを含み、前記専用回路による前記入力バッファからの入力データの読み込み状態、および前記専用回路によって算出された発散の値についての前記出力バッファへの書き込みの状態に応じて、前記入力バッファに関する書き込み可否、および前記出力バッファからのデータ読み出しの可否をそれぞれ前記汎用プロセッサに提示する入出力回路を設けることが好ましい。通常、専用回路と汎用プロセッサは互いに異なるクロックで非同期に動作するが、上記仕組みによりデータの同期を図ることが可能となると共に、ローカルバスのバンド幅を有効利用することが可能となる。また上記仕組みを用いて、第１および第２の２つの入力バッファによるダブルバッファリングを実現することも可能となり、専用回路が常に動作し続けられるようにすることができる。
【０００８】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１には、本発明の一実施形態に係る数値解析装置を実現するための専用の並列計算機の構成例が示されている。この数値解析装置は解析対象の領域の物理量を当該領域を分割した要素毎に解析する数値解析処理をコンピュータによって実行するものであり、数値解析処理の手法としてはＧＳＭＡＣ有限要素法（ＧＳＭＡＣ−ＦＥＭ）を用いる。図１の並列計算機は、コンピュータとしてそれぞれ機能する複数の筐体（シャーシ）１１をＬＡＮ等の通信回線１０を介して並列接続して構成される。各筐体１０はコンピュータとして機能するものであり、一つの筐体１１内に最大で７ボード搭載可能となっている。各筐体１１内には、通常のパーソナルコンピュータ（ＰＣ）と同機能を持った一つのボードＰＣをホストコンピュータ（ホストＰＣ）１２として搭載しており，ＰＣ上にて開発されてきた豊富な資産を利用することが可能である。また各ホストＰＣ１２は汎用品のＥｔｈｅｒｎｅｔ（Ｒ）等のＬＡＮ（１００Ｍｂｐｓ）１０にて接続されており，複数のホストＰＣ１２によってＰＣ  クラスタ環境を構築している。また、筐体１１内には、数値解析処理を実行するための複数の専用プロセッサモジュール１４  が設けられている。専用プロセッサモジュール１４は、汎用プロセッサ（ＣＰＵ）１５と専用回路１６とから構成されており、その間はローカルバス１７を介して密結合されている。汎用プロセッサ（ＣＰＵ）１５と専用回路（専用プロセッサ）１６の実現形態としては、例えば、▲１▼ＳＯＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）、▲２▼汎用ＣＰＵとＡＳＩＣ（別プロセッサ）、▲３▼汎用ＣＰＵとＦＰＧＡ  が利用される。以下では、専用プロセッサモジュール１４を、汎用ＣＰＵとＦＰＧＡとから構成されるＦＰＧＡボード１４として実現した場合を例示する。
【０００９】
複数のＦＰＧＡボード１４は、筐体１１内のバス１３に並列に接続されている。上述したように各ＦＰＧＡボード１４には汎用プロセッサ（ＣＰＵ）１５と専用回路１６とが設けられており、その間はＦＰＧＡボード１４上のローカルバス１７を介して密結合されている。専用回路１６は特定の数値演算を実行するための専用演算ロジックであり、ＦＰＧＡ（再構成可能ゲートアレイ）にて実現されている。ボードＰＣ（ホストＰＣ）１２および各ＦＰＧＡボード１４はそれぞれ例えばｃｏｍｐａｃｔ  ＰＣＩバス規格のボード等から構成されており、複数のＦＰＧＡボード１４は例えばｃｏｍｐａｃｔ  ＰＣＩバスなどのバス１７に並列接続されている。ＦＰＧＡボード１４の構成例を図２に示す。ここでは、一つのＦＰＧＡボード１４上に１つの汎用プロセッサ（ＣＰＵ）１５と４つの専用回路（ＦＰＧＡ）１６とを搭載している。汎用プロセッサ（ＣＰＵ）１５は外部バスインタフェース１８を介して外部バス（ｃｏｍｐａｃｔ  ＰＣＩバス１７）に電気的に接続されており、外部バス１７を介してホストＰＣ１２との通信を行うことが出来る。汎用プロセッサ（ＣＰＵ）１５としては、例えばチップパッケージにメモリを混載した汎用ＣＰＵパッケージが用いられる。汎用プロセッサ１５では例えば埋め込み型のオペレーティングシステムや数値解析処理用のアプリケーションプログラムが実行される。数値解析処理に必要な各要素に関するデータ等は外部バス１７を介してホストＰＣ１２から各ＦＰＧＡボード１４上の汎用プロセッサ１５に入力される。図１の計算機の特徴を端的に述べると、ＰＣクラスタの各ノードに専用ハードウェアによるアクセラレータが付加されたシステムと言うことができる。このアクセラレータに最も負荷の高い処理をオフロードし、いかにその処理を高速化できるかが重要である。また、図１の計算機システムは、レベル１：筐体間の並列処理（ＰＣ  クラスタ），レベル２：筐体内のボード間並列処理，レベル３：ボード内のマルチプロセッサ並列処理，という３つの階層の並列処理構造を持っている。
【００１０】
次に、ＧＳＭＡＣ有限要素法の並列処理方法について述べる。まず、ＦＰＧＡボード１４を使用した数値解析処理を実現するための事前の準備として，ＦＰＧＡボード１４の代わりに汎用ＣＰＵ版ボードを使用した場合の並列処理について検証する。汎用ＣＰＵ版ボードは汎用ＣＰＵのみから構成されるボードであり、各筐体１１に搭載することができる。１汎用ＣＰＵ版ボード当たり４つの汎用ＣＰＵが搭載されている。並列化の方法としては領域分割法を用いる。解析対象とする計算領域の分割にはグラフや非構造メッシュの分割ツール等を使用する。また，図１の計算機システムは階層的なハードウェア構造になっているため，図３の例に示すようにメッシュ分割も階層的に行って末端の計算ノードに対して担当領域を割り当てる。境界面においては，要素については重複させず，節点を複数の領域で重複させるようにしている。これらの重複した節点の上に定義されたデータを，隣接する領域間で交換する事で計算における空間の連続性を維持している。このようにして実装した並列処理を検証するための例題として図４のモデルに示す正方キャビティ内強制対流の計算を行った。初期条件は流速，圧力ともに０  からのインパルシブスタート，境界条件は壁面上ですべり無しとした。計算空間は指数関数を利用して壁面付近にメッシュを集中させ，一辺を６０  に不等分割した（要素数２１  万６  千）。この例題を汎用ＣＰＵ版ボードを搭載した図１のシステム上で，１筐体２８プロセッサ（７ボード）を用いて，レイノルズ数Ｒｅ＝  １０００，時間刻み  ｔ  ＝  ２×１０−３として，無次元時間ｔ＝１００まで並列計算を行った。計算の結果、Ｋｕ（Ｈｗａｒ  Ｃ．  Ｋｕ，  Ｒｉｃｈａｒｄ  Ｓ．  Ｈｉｒｓｈ，  ａｎｄ  Ｔｈｏｍａｓ  Ｄ．  Ｔａｙｌｏｒ，  “Ａ  ｐｓｅｕｄｏｓｐｅｃｔｒａｌ  ｍｅｔｈｏｄ  ｆｏｒ  ｓｏｌｕｔｉｏｎ  ｏｆ  ｔｈｅ  ｔｈｒｅｅ−ｄｉｍｅｎｓｉｏｎａｌ  ｉｎｃｏｍｐｒｅｓｓｉｂｌｅ  Ｎａｖｉｅｒ−Ｓｔｏｋｅｓ  ｅｑｕａｔｉｏｎｓ”，  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｐｈｙｓｉｃｓ，  ７０，  （１９８６），  ｐｐ．４３９−４６２．）  らが行った擬似スペクトル法による解析結果と良好に一致したこと確認した。また，並列計算を行わずに単一ＣＰＵ  上にて計算した結果と並列計算結果の比較も行い，それらが一致していることを確認した。これらの比較結果から並列処理が問題なく行われていることを確認した。
【００１１】
次に並列化による速度向上の効果を調べるため，使用するＣＰＵ  数を変化させて速度向上率を計測した．また，その際に計算規模の影響を調べるため，一辺の分割数を２０（要素数８  千）から８０（要素数５１  万２  千）まで変化させて計算を行った。筐体１１を一つだけ使用して，その中で計算に用いるボード数を変化させた。この結果、ＣＰＵ数の増加に伴って通信境界面が相対的に増えていくため規模の小さい計算では加速率が鈍る傾向が見られるものの，概ね線形な速度向上が達成されていることが確認された。また１辺の分割数８０（５１  万２  千要素）においては，２８ＣＰＵで２４．４  倍の高速化がなされていることを確認した。次に最大４  台までの筐体１１を使用した並列計算を行った。既に述べたように筐体間は１００ＭｂｐｓのＬＡＮ１０を用いて接続されており，ホストＰＣ１２上で実行されるオペレーティングシステムによって筐体間の並列処理環境を構築している。使用する筐体数を１  台（２８ＣＰＵ）から４台（１１２ＣＰＵ）まで変化させて高速化率を計測した。こちらも計算規模の影響を調べるため，一辺の分割数を２０（要素数８千）から１２０（要素数１７２万８千）まで変化させて計算を行った。１  筐体内でボード数を変化させた場合と同様に，計算規模が大きいほど，より効率良く計算速度が向上していることが確認された。１  辺の分割数１２０（要素数１７２  万８  千）の例においては１  筐体と比較して，２  筐体で１．８３  倍，３  筐体で２．６４  倍，４  筐体で３．４２  倍の高速化率が得られた。ここで述べた並列処理は汎用ＣＰＵのみで構成されたシステム上に実装したものであり，末端の演算用ＣＰＵが担当領域における流体の支配方程式（連続の式，運動方程式）を全てソフトウェアに基づいて計算している。ここで実装した並列化方法，計算の制御を担うソフトウェアはそのまま利用し，負荷の高い演算部分を選定してＦＰＧＡ上の専用回路にオフロードすることとする。
【００１２】
（ＧＳＭＡＣ−ＦＥＭ中で専用化する個所の選定）
専用回路化する個所の選定には，以下に述べる条件を考慮することが重要である。まず「（１）  全計算時間の中で多くの割合を占有している個所であること」，次に「（２）  外部メモリ参照よりも演算に要する時間が支配的な個所であること」，の２  点である。（１）の条件に適合しない部分を高速化しても全体の処理速度に対する寄与が小さいため，これは必須な条件となる。（２）の条件については，汎用プロセッサに対する専用回路の主な利点の一つが，処理に必要とされる演算器を大量に並置することが可能な点であることから，演算が支配的であるほど専用回路による高速化の効果が大きいためである。これら２点の条件を考慮してＧＳＭＡＣ−ＦＥＭ  について専用回路化を行う。
【００１３】
（１）  計算時間占有割合の高い個所
全計算時間に対する各部分の占有割合を調べる為，例題として３次元正方キャビティ内強制対流問題をＧＳＭＡＣ−ＦＥＭにより計算した。解析条件は、レイノズル数Ｒｅ  ＝  １０００，  時間刻み  ｔ  ＝  １．０×１０−２  ，メッシュサイズ＝３２ｘ３２ｘ３２，  ε＝  １．０×１０−３である。ここでεはポアソン（Ｐｏｉｓｓｏｎ）  方程式の収束計算における打ち切り条件となる無次元Ｄｉｖｅｒｇｅｎｃｅ  の最大値を表す。計算は無次元時間１０（１０００  ステップ）まで実行した。計算機は，ＰｅｎｔｉｕｍＩＩ（Ｒ）４００Ｍｈｚ，ＳＤＲＡＭ１００ＭＨｚ  を使用した。その結果得られた計算時間のプロファイルは、Ｐｏｉｓｓｏｎ  方程式のＤｉｖｅｒｇｅｎｃｅ以外の計算が占める割合が３０．８８％、Ｄｉｖｅｒｇｅｎｃｅの計算が占める割合が２５．５０％  、運動方程式の処理などのその他の計算に要する割合が４３．１９％である。これより，ＧＳＭＡＣ−ＦＥＭ  はプログラム中に突出して計算時間占有割合の高い部分があるアプリケーションではなく，全体に平均的に計算時間の分散したフラットプロファイルなアプリケーションであるといえる。その中でも，計算時間占有割合の高い個所は，Ｐｏｉｓｓｏｎ  方程式中のＤｉｖｅｒｇｅｎｃｅ  計算以外（約３０％），及びＤｉｖｅｒｇｅｎｃｅ  計算（約２５％）が挙げられる。つまりＰｏｉｓｓｏｎ  方程式の計算が全体の約半分強の計算時間を占有している事が分かる。
【００１４】
（２）  メモリアクセスよりも演算が支配的である個所
ここでは，（１）で計算時間占有率の高かった以下の２  項目についてデータ量と演算量について述べる。
▲１▼  Ｐｏｉｓｓｏｎ  方程式中のＤｉｖｅｒｇｅｎｃｅ  以外の計算
▲２▼  Ｄｉｖｅｒｇｅｎｃｅ  計算
それぞれ１  要素の計算に必要な入力データ数，出力データ数，  演算回数を図５に示す。これから分かるように，データ入力数は多い。▲１▼，▲２▼を比較すると，入力データ数に関して差はないが，出力データ数は▲２▼の方が少なく，さらに演算回数も▲２▼の方が多いことが分かる。したがって，Ｄｉｖｅｒｇｅｎｃｅ  計算がより少ないデータに多くの演算を実行するため，比較的演算が支配的な個所であるといえる。これらの考察の結果，本実施形態ではＰｏｉｓｓｏｎ  方程式の中のＤｉｖｅｒｇｅｎｃｅ  計算を専用回路化する個所として選定する。
【００１５】
（ＧＳＭＡＣ−ＦＥＭに適した専用計算機の形態）
本実施形態ではＤｉｖｅｒｇｅｎｃｅ  計算を専用化する部分に決定したが，同時にＧＳＭＡＣ−ＦＥＭ  は計算時間に偏りのないこと，また外部メモリ参照が多いアプリケーションであることが分かった。そこで，このようなアプリケーションに適した専用計算機の形態について考察する。ある一つのサブルーチンが全計算時間の９０％以上を占めるような問題では，そのサブルーチンを専用回路にオフロードした場合に，専用回路と汎用ＣＰＵとの間の入出力コストが計算コストに比べて無視できるため，比較的低速な外部バス（図１のバス１３）を経由した疎な結合でも大きな問題とはならない。一方，ＧＳＭＡＣ−ＦＥＭ  のように突出したサブルーチンが存在せず，演算に対するデータ参照のオーダーがほぼ同程度の場合は専用回路１６に対する入出力のコストが無視できない。そのため，このようなアプリケーションでは専用回路１６とそれに対してデータの入出力を行う汎用ＣＰＵ１３とが密に結合されていることが望ましい。従って，図６のような，１つのチップ内に汎用プロセッサ１０１とユーザ定義可能な専用ロジック１０２が密に結合されたＳＯＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）型のアーキテクチャがＧＳＭＡＣ−ＦＥＭに適した専用プロセッサモジュールの形態であると考えられる。図６のＳＯＣにおいては、汎用プロセッサ１０１とユーザ定義可能な専用ロジック１０２とがＳＯＣ上のローカルバス（内部バス）によって密に接続され、また汎用プロセッサ１０１は外部バスインタフェース１０３を介してコンピュータのバスである外部バス１３に電気的に接続され、外部バス１３を通じてホストコンピュータ等との通信を行うことが出来る。ＳＯＣ  は重要な基盤技術として近年活発に研究開発されており，より普及していくことが将来的に見込まれる。ＳＯＣとＦＰＧＡボード１４と対比させると、システム構成が図７のように相似になることが分かる。ＳＯＣ  におけるユーザロジック部分１０２は，ＦＰＧＡボード１４のＦＰＧＡチップ（専用回路）１６に対応し，特定の演算のみを実行する計算アクセラレータとして機能する。また，ＳＯＣ  におけるＣＰＵ  コア１０１は，ＦＰＧＡボード１４の汎用ＣＰＵ１５  に対応し，複雑な処理や，ホストＰＣ１２との通信，柔軟性を必要とする計算を担当する。従って，ＦＰＧＡボード１４の代わりにＳＯＣ  を専用プロセッサモジュールとして使用する専用計算機を実現することができる。以下では、ＦＰＧＡボード１４を使用する場合の構成及び処理手順について説明するが、その構成及び処理手順はＳＯＣ  についても同じである。
【００１６】
本実施形態では、ＧＳＭＡＣ−ＦＥＭによる数値解析処理では外部メモリ参照が多く必要とされ、且つ全計算時間のほとんどを占めるような突出した計算時間を必要とする特定の処理が存在しないことに着眼し，ポアソン方程式の計算内で単純且つ演算量が多い部分である少なくともＤｉｖｅｒｇｅｎｃｅ  計算を専用回路１６で実行し，柔軟性が必要な運動方程式の処理や、専用回路１６によって実行される計算を除く他のポアソン方程式の計算については汎用プロセッサ１５によって実行する。この場合，専用回路１６と汎用プロセッサ１５との間はローカルバス１７によって密結合し，また汎用プロセッサ１５についてはホストＰＣ１２との通信のために外部バス１３に電気的に接続する。専用回路１６では離散ナブラ演算子を用いてＤｉｖｅｒｇｅｎｃｅの計算が実行される。このため離散ナブラ演算子を用いたＤｉｖｅｒｇｅｎｃｅの計算に必要な各要素に関する入力データとして、当該要素に関する、物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータを汎用プロセッサ１５で生成し、それをローカルバスを介して汎用プロセッサ１５から専用回路１６に要素単位で入力する。これにより、Ｄｉｖｅｒｇｅｎｃｅの計算に必要な入力データとその入力データから計算されたＤｉｖｅｒｇｅｎｃｅの値を高速に受け渡すことが可能となり、全体として十分な高速化を実現することが可能となる。また汎用プロセッサ１５についてはホストＰＣ１２との通信によって，流速、圧力等の物量量の解析処理に必要なデータ（例えば各要素の節点に関する座標データ、初期条件、その他）をバス１３を介してホストＰＣ１２から受信したり、各要素の解析結果をホストＰＣ１２に出力することができる。
【００１７】
（ＧＳＭＡＣ−ＦＥＭの基本アルゴリズムとＤｉｖｅｒｇｅｎｃｅの計算）
ここで、ＧＳＭＡＣ−ＦＥＭの基本アルゴリズムについて説明する。ＧＳＭＡＣ−ＦＥＭでは非圧縮粘性流体の非常に広範囲の流れの問題を取り扱う。すなわち、流体と熱の相互作用および流体と電磁場の相互作用や非ニュートン流体の流体について数値解析処理が行われる。ＧＳＭＡＣ−ＦＥＭにおいては非圧縮粘性流体の基礎方程式として，質量保存法則を表す連続の式と運動方程式（Ｎａｖｉｅｒ−Ｓｔｏｋｅｓ  方程式）を使用する。
【数１】
2004362358.tif 000003
ただし，式（２．１）と式（２．２）は無次元化されている。νは速度、ｐは圧力、Ｒｅはレイノズル数である。式（２．２）の左辺は非定常項，右辺第１項は移流項，右辺第２項は圧力項，右辺第３項は粘性項である。式（２．２）を陽的に離散化してみる。
【数２】
2004362358.tif 000004
たとえ∇・νｎ  ＝  ０であるとしても，式（２．３）  のような計算で求めたνｎ＋１は∇・νｎ＋１＝０  とはならず，時間的な離散化による誤差や数値計算上の丸め誤差などを含み∇・νｎ＋１＝ε  となる。時間進行するごとにこの誤差が蓄積されると，計算が破綻する原因となる。そのことを考慮した上で，この基礎方程式の時間的な離散化を考える。
差分法の分野で開発されたＨＳＭＡＣ法（ｈｉｇｈｌｙ  ｓｉｍｐｌｉｆｉｅｄ  Ｍａｒｋｅｒ  ａｎｄ  Ｃｅｌｌ  ｍｅｔｈｏｄ）  を有限要素法へ拡張した方法がＧＳＭＡＣ法（ｇｅｎｅｒａｌｉｚｅｄ  ｓｉｍｐｌｉｆｉｅｄ  ＭＡＣ  ｍｅｔｈｏｄ）  である。ＭＡＣ  系の解法では∇・νｎ＋１＝０  を満足するように圧力ｐｎ＋１  が決められる。まず，式（２．２）  を速度ν  について陽的に，圧力ｐについて陰的に離散化する。時間的に離散化した基礎方程式は
【数３】
2004362358.tif 000005
となる。上述したように，式（２．６）  より求まる速度の予測子ν￣の発散は０とみなせない大きさの誤差を含んでいるので，圧力ｐを修正しながら速度の発散が０  に近づくように速度を修正する必要がある。式（２．５）  から式（２．６）  を差し引くと
【数４】
2004362358.tif 000006
となる。式（２．１０）  と式（２．１１）  は，φｐ  が求まれば時刻（ｎ＋１）Δｔ  の圧力ｐ  と速度ν  が求まることを意味している。さらに，式（２．１０）  の両辺の発散をとり式（２．４）  を代入すると，φｐ  に関するＰｏｉｓｓｏｎ  方程式
【数５】
2004362358.tif 000007
が得られる。この式は，φｐ  が楕円型の方程式に支配されていること意味している。よって，境界条件を与えればφｐ  は求めることができる。以上で，Ｎａｖｉｅｒ−Ｓｔｏｋｅｓ  方程式は、図８に示すように予測・修正ステップの式（Ｐｒｅｄｉｃｔｏｒ  Ｓｔｅｐ，  Ｃｏｒｒｅｃｔｏｒ  Ｓｔｅｐ）とＰｏｉｓｓｏｎ  方程式に分離されたことになる。
【００１８】
つまり、図８に示すように、ＧＳＭＡＣ−ＦＥＭにおいては、以下の処理手順で物理量の解析が予測子・修正子法によって要素毎に行われる。
ステップＳ１：  運動方程式を解き、速度の予測子ν￣を求める。
ステップＳ２：  予測子ν￣から速度の発散∇・ν￣を求め、さらに修正速度ポテンシャルφを求める。
ステップＳ３：  発散∇・ν￣の収束判定を行う。
ステップＳ４：  非圧縮条件を満たさない場合は、修正速度ポテンシャルφを用いて速度ベクトルと圧力を補正する（同時緩和法）。そして非圧縮条件を満たすまでステップＳ２，Ｓ３を  繰り返した後に、時間進行してステップＳ１へ移行する。専用回路１６によって実行される演算は、ステップＳ２におけるＰｏｉｓｓｏｎ  方程式の発散（Ｄｉｖｅｒｇｅｎｃｅ）の計算であり、それ以外の処理は汎用プロセッサ１６が担当する。専用回路１６によるＤｉｖｅｒｇｅｎｃｅの計算は、空間微分の微分演算子であるナブラ演算子を離散化した離散ナブラ演算子を用いて実行される。離散ナブラ演算子を用いたＤｉｖｅｒｇｅｎｃｅ計算に必要な入力データは汎用プロセッサ１６によって要素毎に生成され、それが要素単位でローカルバス１７を介して専用回路１６に送られる。Ｄｉｖｅｒｇｅｎｃｅ計算に必要な入力データは各要素に関する、物理空間と計算空間を結びつける行列の余因子ベクトル、各節点の速度ベクトル、および体積のデータである。
【００１９】
（専用回路１６によるＤｉｖｅｒｇｅｎｃｅ  の計算）
まず，６  面体のＤｉｖｅｒｇｅｎｃｅ  の計算方法について述べる。上述したようにＧＳＭＡＣ−ＦＥＭではＤｉｖｅｒｇｅｎｃｅは離散ナブラ演算子を利用して計算される。１  要素のＤｉｖｅｒｇｅｎｃｅ  計算に必要な入力データは，余因子ベクトルＡが９  データ，速度ベクトルνが各頂点３  方向で２４  データ，体積の逆数が１  データ必要になる。これらのデータと余因子ベクトルより計算されるこう配ベクトルＣａ  を用いて，Ｄｉｖｅｒｇｅｎｃｅ  は次のように計算される。
【数６】
2004362358.tif 000008
・計算方法１
余因子ベクトルからこう配ベクトルを計算し、こう配ベクトルと速度ベクトルからＤｉｖｅｒｇｅｎｃｅを計算する。
【数７】
2004362358.tif 000009
・計算方法２
６面体要素の対象性を利用し、こう配ベクトルを半分生成する。さらに、図９に示すように、原点に対して点対称な位置にある速度ベクトルの差を取る。これらよりＤｉｖｅｒｇｅｎｃｅ  を計算する。
【数８】
2004362358.tif 000010
この２つの計算方法について浮動小数点演算回数を比較した。計算方法１では、浮動小数点加算７１回，浮動小数点乗算２４回，で計９５回の浮動小数点演算が必要であるのに対し、計算方法２では、浮動小数点加算４１回，浮動小数点乗算１３回，で計５４回の浮動小数点演算で済み、演算回数は計算方法２のほうが少ない。したがって，ＦＰＧＡ  上に実装する計算方法は対称性を利用した計算方法２とする。
【００２０】
（離散ナブラ演算子）
ここで、Ｄｉｖｅｒｇｅｎｃｅ  計算で使用される離散ナブラ演算子について具体的に説明する。
（１，１）  物理空間と計算空間
流体の運動を支配する方程式は物理空間のＣａｒｔｅｓｉａｎ座標（ｘ，  ｙ  ，  ｚ  ）を用いて表される。しかし，任意形状の物体まわりの流れを調べるときにＣａｒｔｅｓｉａｎ座標を用いると境界条件の取り扱いが複雑になる。  そこで，境界条件を取り扱い易くするため，物体の形状に沿った座標系を選ぶ。このような座標形を物体適合座標と呼び，これは一般曲線座標（ξ  ，η  ，ζ  ）の一種である。（ξ  ，η  ，ζ  ）で表された空間を計算空間と呼ぶ．実際の計算は物理空間から計算空間に写像されてから実行されることになる。
（１．２）  基底ベクトルと逆基底ベクトル
物理空間における基底ベクトルは（ｉ  ，ｊ  ，ｋ  ）でこれらは互いに直交する単位基底ベクトルである．よってｉ  ，ｊ  ，ｋから作られる逆基底ベクトルをｉ＊，  ｊ＊  ，ｋ＊とすれば、
【数９】
2004362358.tif 000011
となる。つまりＩ＝ｉ＊，  ｊ＝ｊ＊  ，ｋ＝ｋ＊  となり逆基底ベクトルは基の基底ベクトルに等しい。計算空間における基底ベクトルは各座標軸に接する接ベクトルである。これは、
【数１０】
2004362358.tif 000012
となる。これは大きさ１ではなく，互いにも直交しない。次に計算空間の座標の勾配から作られるベクトル
【数１１】
2004362358.tif 000013
を考える。これは計算空間における逆基底ベクトルになっている。すなわち関係式
【数１２】
2004362358.tif 000014
が成立する．ただしｉ  ，ｊ  ，  ｋ  ＝１，  ２，  ３  とする。計算空間における基底ベクトルｇｉ  は曲線  ξｉ  に接し，計算空間における逆基底ベクトルｇｉ  は面ξｉ  ＝ｃｏｎｓｔに垂直となる。
【００２１】
（１．３）  ヤコビアン
（ξ  ，η  ，ζ  ）に関する（ｘ，  ｙ  ，  ｚ  ）のヤコビアンは
【数１３】
2004362358.tif 000015
の様に表されて，逆基底ベクトルの関係式より
【数１４】
2004362358.tif 000016
という関係式が成立する。ただしここでＪ−１  はＪ  の逆行列で以下の様に表される。
【００２２】
【数１５】
2004362358.tif 000017
ここでＡｉｊ  はヤコビアン  の余因子行列である。成分Ａｉｊ  を表示すると
【数１６】
2004362358.tif 000018
となる。
【００２３】
（１．４）  変数変換
物理空間  ｘ（ｘ１  ，ｘ２  ，  ｘ３  ）と計算空間  ？（ξ１  ，ξ２  ，ξ３  ）の間にｘ＝ｘ（ξ）の対応関係を考える。物理空間ｘ  と計算空間？  の間に成立する微分関係式は
【数１７】
2004362358.tif 000019
が成立する。ここで∇とヤコビの行列をＪとすれば
【数１８】
2004362358.tif 000020
となる。
【００２４】
（１．５）        離散ナブラ演算子とこう配ベクトル
関数ｆ（ｘ）  をある節点ｉ  における近似値ｆｉ  と形状関数Ｎｉ  を用いて表すと
【数１９】
2004362358.tif 000021
となる。ここで離散ナブラ演算子の定義は
【数２０】
2004362358.tif 000022
である。つぎに離散ナブラ演算子の近似について述べる。まず，形状関数のこう配を計算空間から物理空間に変換する。
【数２１】
2004362358.tif 000023
これを考慮すると離散ナブラ演算子の近似は，
【数２２】
2004362358.tif 000024
の様に表す事が出来る。離散ナブラ演算子を用いた場合のナブラ演算表示について述べる。
こう配・発散・回転の数式表示は
【数２３】
2004362358.tif 000025
となる。この様に離散ナブラ演算子は∇ａ  またはＣａ  ／Ωｅ  と表される。ここで，Ｃａ  はこう配ベクトルである。実際にＧＳＭＡＣ−ＦＥＭで用いるのは圧力と修正速度ポテンシャルのこう配と，速度の発散である。こう配に関しては
【数２４】
2004362358.tif 000026
と表せる。発散に関しては
【数２５】
2004362358.tif 000027
と表せる。余因子ベクトルは物理空間における任意の方向における面積ベクトルと計算空間における面積ベクトルの比であることが分かる。それを計算空間における，さらに任意の方向に対して各面積ベクトルからの成分をあわせたものがこう配ベクトルになる。そしてこう配ベクトルを要素平均したものが離散ナブラ演算子となる。３次元の離散ナブラ演算子の一般公式はｘ  成分について
【数２６】
2004362358.tif 000028
となる。同様にしてｙ，ｚ成分についても表示できる。
【００２５】
ただしここで，
【数２７】
2004362358.tif 000029
である。
【００２６】
（１．６）  ３次元６面体要素における離散ナブラ演算子
ここでは３次元６面体要素の離散ナブラ演算子を具体的に求める。６面体の形状関数は
【数２８】
2004362358.tif 000030
と表示できる（節点番号については図１０を参照）。これより
【数２９】
2004362358.tif 000031
となる。ここで要素平均に対し
【数３０】
2004362358.tif 000032
となるから，
【数３１】
2004362358.tif 000033
となる。また，各軸方向の△ｒの平均値は
【数３２】
2004362358.tif 000034
となる。さらに△ξ＝△η＝△ζ＝２である。さらにヤコビアンの要素平均値は
【数３３】
2004362358.tif 000035
となる。これは計算空間の基準体積が１であることによる。また、物理空間の要素体積は
【数３４】
2004362358.tif 000036
と求まる。以上より６面体要素に対する離散ナブラ演算子は
【数３５】
2004362358.tif 000037
と表すことができる。このようにして、ＧＳＭＡＣ−ＦＥＭにおいては、要素毎に離散ナブラ演算子が求められ、そしてその離散ナブラ演算子を用いて、圧力と修正速度ポテンシャルのこう配と，速度の発散等の微分演算が要素毎に実行される。
【００２７】
（Ｄｉｖｅｒｇｅｎｃｅ  専用演算器）
次にＤｉｖｅｒｇｅｎｃｅ  専用演算器としての専用回路１６の構成を説明する。専用回路１６は，図１１に示すように、ｘ，  ｙ，  ｚ  の３方向のデータ演算を可能な限り並列に実行できるようにするために、ｘ，  ｙ，  ｚ  の３方向それぞれに対応する３つの２入力浮動小数点加算器３１−３３，３つのマルチプレクサ（ＭＰＸ）３４−３６，３つのレジスタ３７−３９，３つの２入力浮動小数点乗算器４０−４２，３入力浮動小数点加算器４３，２入力浮動小数点加算器４４，マルチプレクサ（ＭＰＸ）４７，４８，レジスタ４５，４６，および２入力浮動小数点乗算器４９から構成されている。専用回路１６はパイプライン動作する。動作周波数は５０ＭＨｚ  であり，初期レイテンシが４２ｃｙｃｌｅで，１０ｃｙｃｌｅ  毎に１  要素のＤｉｖｅｒｇｅｎｃｅ  演算結果が得られる。前述の計算方法２を用いると１要素当たりのＤｉｖｅｒｇｅｎｃｅ  計算には５４  回の浮動小数点演算（浮動小数点加算＝４１，浮動小数点乗算＝１３）が実行されるため，演算性能は２７０ＭＦｌｏｐｓ  となる。これは，ある１  サイクルにおけるＰｅａｋ  Ｐｅｒｆｏｒｍａｎｃｅ  では無く，演算に必要なデータが途切れること無く与えられた場合のＳｕｓｔａｉｎｅｄ  Ｐｅｒｆｏｒｍａｎｃｅ  であり，それに必要となる入力データレートは６８０ＭＢ／ｓｅｃ  となり，その際の出力データレートは２０ＭＢ／ｓｅｃ  となる。次に、専用回路１６によって実行されるＤｉｖｅｒｇｅｎｃｅ  演算動作について具体的に説明する。上述したように、専用回路１６は離散ナブラ演算子を用いた発散の計算を実行する。発散の計算に必要な入力データは汎用プロセッサ１５が計算によって生成し、専用回路１６に入力する。６面体要素の場合、入力データは、図１２に示すように、余因子ベクトルＡが９  データ，速度ベクトルν  が各頂点３  方向で２４  データ，体積の逆数が１  データであり、計３４データとなる。専用回路１６はデータを取り込みながら演算を実行し、演算開始から、つまりデータ入力から４２ｃｙｃｌｅ経過した時点でその入力データに対応する発散の値を出力する。
ここで、Ａξはξ  方向の余因子ベクトルであり，Ａ１１はξ  方向の余因子ベクトルＡξのｘ  方向成分，Ａ２１はξ  方向の余因子ベクトルＡξのｙ  方向成分，Ａ３１はξ  方向の余因子ベクトルＡξのｚ  方向成分である。またＡηはη  方向の余因子ベクトルであり，Ａ１２はη  方向の余因子ベクトルＡηのｘ  方向成分，Ａ２２はη  方向の余因子ベクトルＡηのｙ  方向成分，Ａ３２はη  方向の余因子ベクトルＡηのｚ  方向成分である。Ａζはζ  方向の余因子ベクトルであり，Ａ１３はζ  方向の余因子ベクトルＡζのｘ  方向成分，Ａ２３はζ  方向の余因子ベクトルＡζのｙ  方向成分，Ａ３３はζ  方向の余因子ベクトルＡζのｚ  方向成分である。各節点  ｉの速度ベクトル（  ｉ＝１〜８）のｘ  方向成分をｕｉ  ，ｙ  方向成分をｖｉ，ｚ  方向成分をｗｉ  とする。またｒＶは要素体積の逆数である。これらのデータ（Ａ１１，Ａ２１，Ａ３１，Ａ１２，Ａ２２，Ａ３２，Ａ１３，Ａ２３，Ａ３３，ｕ１，ｖ１，ｗ１，ｕ２，ｖ２，ｗ２，ｕ３，ｖ３，ｗ３，ｕ４，ｖ４，ｗ４，ｕ５，ｖ５，ｗ５，ｕ６，ｖ６，ｗ６，ｕ７，ｖ７，ｗ７，ｕ８，ｖ８，ｗ８，ｒＶ）を使用して速度の発散は，Ｄｉｖｅｒｇｅｎｃｅ専用演算器で以下に示す式でこの順番に計算される。
【００２８】
【数３６】
2004362358.tif 000038
上記式において（ａ）の部分の浮動小数点加算演算は，３つの２入力浮動小数点加算器３１−３３およびマルチプレクサ（ＭＰＸ）３４−３６によって並列に実行される。すなわち、（ａ）の部分における各行の左、中、右の３つの式の演算は、マルチプレクサ（ＭＰＸ）３４−３６によって入力データを選択しながら、３つの２入力浮動小数点加算器３１−３３によって並列に実行される。また、（ｂ）の部分においては，各行の左、中、右の３つの式の浮動小数点乗算が３つの２入力浮動小数点乗算器４０−４２によって並列に実行される。（ｃ）の部分における浮動小数点加算演算は，３入力浮動小数点加算器４３によって実行される。（ｄ）の部分における浮動小数点加算演算は，レジスタ４５，４６とマルチプレクサ（ＭＰＸ）４７，４８とによって入力データを選択しながら、２入力浮動小数点加算器４４によって実行される。（ｅ）の部分における浮動小数点乗算演算は，２入力浮動小数点乗算器４９によって実行される。上記式中における各変数の意味は次の通りである。
【００２９】
Ｂｘ１：中間変数（  Ａ１１とＡ１２の和），  Ｂｘ２：中間変数（  Ａ１１とＡ１２の差），  Ｂｙ１：中間変数（Ａ２１とＡ２２の和），  Ｂｙ２：中間変数（Ａ２１とＡ２２の差），  Ｂｚ１：中間変数（Ａ３１  とＡ３２の和），  Ｂｚ２：中間変数（Ａ３１  とＡ３２の差），  △ｕ１：中間変数（ｕ５  とｕ３  の差），  △ｖ１：中間変数（ｖ５  とｖ３  の差），  △ｗ１：中間変数（ｗ５  とｗ３  の差），  △ｕ２：中間変数（ｕ６  とｕ４  の差），  △ｖ２：中間変数（ｖ６  とｖ４  の差），  △ｗ２：中間変数（ｗ６  とｗ４  の差），  △ｕ３：中間変数（ｕ７  とｕ１  の差），  △ｖ３：中間変数（ｖ７  とｖ１  の差），  △ｗ３：中間変数（ｗ７  とｗ１  の差），  △ｕ４：中間変数（ｕ８  とｕ２  の差），  △ｖ４：中間変数（ｖ８  とｖ２  の差），  △ｗ４：中間変数（ｗ８  とｗ２  の差），  Ｃｘ１：節点１で定義されたこう配ベクトルの  ｘ方向成分，  Ｃｙ１：節点１で定義されたこう配ベクトルのｙ方向成分，  Ｃｚ１：節点１で定義されたこう配ベクトルのｚ方向成分，  Ｃｘ２：節点２で定義されたこう配ベクトルの  ｘ方向成分，  Ｃｙ２：節点２で定義されたこう配ベクトルの  ｙ方向成分，  Ｃｚ２：節点２で定義されたこう配ベクトルの  ｚ方向成分，  Ｃｘ３：節点３で定義されたこう配ベクトルの  ｘ方向成分，  Ｃｙ３：節点３で定義されたこう配ベクトルの  ｙ方向成分，  Ｃｚ３：節点３で定義されたこう配ベクトルの  ｚ方向成分，  Ｃｘ４：節点４で定義されたこう配ベクトルの  ｘ方向成分，  Ｃｙ４：節点４で定義されたこう配ベクトルの  ｙ方向成分，  Ｃｚ４：節点４で定義されたこう配ベクトルの  ｚ方向成分，  Ｍｘ１  ：中間変数（Ｃｘ１  と△ｕ１  の積），  Ｍｙ１  ：中間変数（Ｃｙ１  と△ｖ１  の積），  Ｍｚ１  ：中間変数（Ｃｚ１  と△ｗ１  の積），  Ｍｘ２  ：中間変数（Ｃｘ２  と△ｕ２  の積），  Ｍｙ２  ：中間変数（Ｃｙ２  と△ｖ２  の積），  Ｍｚ２  ：中間変数（Ｃｚ２  と△ｗ２  の積），  Ｍｘ３  ：中間変数（Ｃｘ３  と△ｕ３  の積），  Ｍｙ３  ：中間変数（Ｃｙ３  と△ｖ３  の積），Ｍｚ３  ：中間変数（Ｃｚ３  と△ｗ３  の積），Ｍｘ４  ：中間変数（Ｃｘ４  と△ｕ４  の積），Ｍｙ４  ：中間変数（Ｃｙ４  と△ｖ４  の積），Ｍｚ４  ：中間変数（Ｃｚ４  と△ｗ４  の積），Ｓ１：中間変数（Ｍｘ１とＭｙ１とＭｚ１の和），Ｓ２：中間変数（Ｍｘ２とＭｙ２とＭｚ２の和），Ｓ３：中間変数（Ｍｘ３とＭｙ３とＭｚ３の和），Ｓ４：中間変数（Ｍｘ４とＭｙ４とＭｚ４の和），Ｓｕｍ  １：中間変数（Ｓ３  とＳ１  の和），Ｓｕｍ  ２：中間変数（Ｓ２  とＳ４  の和），Ｓｕｍ：中間変数（Ｓｕｍ  １  とＳｕｍ  ２  の和），ｒＶ：要素体積の逆数。
【００３０】
（Ｄｉｖｅｒｇｅｎｃｅ専用演算器のデータ入出力回路）
次に、ローカルバス１７を介して実行される汎用プロセッサ１５と専用回路１６（Ｄｉｖｅｒｇｅｎｃｅ専用演算器）との間のデータ入出力を高速化するための仕組みについて説明する。すなわち、汎用プロセッサ１５と専用回路１６は互いに異なるクロックで動作するので、Ｄｉｖｅｒｇｅｎｃｅ専用演算器に対するデータ入出力の同期を取る為には、それを管理する入出力回路を汎用プロセッサ１５と専用回路１６との間に設けることが必要となる。入出力回路は、実際には専用回路１６を構成するＦＰＧＡチップ上に設けられる。さらに、専用回路１６が停止することなく動作し続けるように、汎用プロセッサ−専用回路間のローカルバス１７のデータバンド幅を有効に生かすことのできる入出力回路の作成が必要になる。専用回路１６が停止することなく動作し続けるために図１３のようなダブルバッファリングを入出力回路によって行う。入力にダブルバッファリングを用いることで、専用回路１６がバッファ２１，２２の一方のバッファから入力データを入力しながらデータ計算している最中にも、汎用プロセッサ１５は次の要素に関するデータをバッファ２１，２２の別のバッファ２１に書き込みことが可能となり、専用回路１６がデータ供給不足によりＤｉｖｅｒｇｅｎｃｅ  計算を停止する可能性を少なくすることができる。専用回路１６によって算出されたＤｉｖｅｒｇｅｎｃｅの演算結果は出力レジスタ３１に書き込まれ、それが汎用プロセッサ１５によって読み出される。
【００３１】
この場合、汎用プロセッサ１５と専用回路１６との間のデータ入出力の同期を取るために、入出力回路は、専用回路１６によって入力データの読み込みが完了された入力バッファから順次新たな要素に関する入力データの書き込みが許可されるように、専用回路１６による入力データの読み込み状態に応じて第１および第２の２つの入力バッファ２１，２２それぞれに関する書き込み可否をフラグを用いて汎用プロセッサ１５に提示すると共に、専用回路１６によって算出された発散の値が出力バッファとしての出力レジスタ３１に書き込まれたときに汎用プロセッサ１５による出力レジスタ３１からのデータ読み出しが許可されるように、出力レジスタ３１に対する発散の値の書き込み状態に応じて出力レジスタ３１からのデータ読み出しの可否をフラグを用いて汎用プロセッサ１５に提示する。これら各フラグの値は例えば入出力回路内の制御レジスタを通じて汎用プロセッサ１５に示すことが出来る。
【００３２】
ここではまず、ダブルバッファリングを行わず、データの同期を取る回路について説明する。その簡単なブロック図を図１３に示す。
入出力回路１７は、例えば専用回路１６と同一のＦＰＧＡ上に設けられる。この場合、１つのＦＰＧＡチップ上に、図１１の回路を含むＤｉｖｅｒｇｅｎｃｅ専用回路１６と、入出力回路１７とが混載される。つまり、入出力回路１７はＤｉｖｅｒｇｅｎｃｅ専用回路１６が形成されるＦＰＧＡ内に設けられたインタフェース回路であり、この入出力回路１７を介して汎用プロセッサ１５とのデータ入出力が行われる。入出力回路１７はデータ用入出力レジスタ１７１，制御用レジスタ１７２，およびデータ入出力制御回路１７３から構成される。データ用入出力レジスタ１７１は上述の入力バッファおよび出力バッファとして機能する。データ入出力制御回路１７３は、汎用プロセッサ１５と専用回路１６との間の同期を取るために、入出力レジスタ１７１の状態（入力データの書き込みの可否、演算結果データの読み出しの可否）をフラグによって汎用プロセッサ１５に提示する。汎用プロセッサ１５側では、提示されたフラグの値に応じて、入出力レジスタ１７１へのデータ書き込みや、入出力レジスタ１７１からの演算結果データの読み出しが行われる。すなわち、汎用プロセッサ１５と専用回路１６との間の同期を取るためには、１）汎用プロセッサ１５は、Ｄｉｖｅｒｇｅｎｃｅ専用回路１６がデータを受け取ることができる状態であるかどうかを確認する、２）  １要素分の入力データが全て汎用プロセッサ１５から転送されたことをＤｉｖｅｒｇｅｎｃｅ専用回路１６に通知する、３）入力データが全て送られてきたことを確認してＤｉｖｅｒｇｅｎｃｅ専用回路１６が演算を実行し、得られた結果を示すデータを所定の場所に置く、４）Ｄｉｖｅｒｇｅｎｃｅ専用回路１６が計算結果を出力したことを汎用プロセッサ１５が確認してデータを回収する、という動作が必要となるが、これが、入出力レジスタ１７１の状態（入力レジスタに対する入力データの書き込みの可否、出力レジスタからの演算結果データの読み出しの可否）を示す上述のフラグによって実現される。
【００３３】
入出力回路１７の具体的な構成例を図１５に示す。汎用プロセッサ１５からはＦＰＧＡ上に作られたデータ用入出力レジスタ１７１および制御用レジスタ１７２は、図１５のように見える。データ用入出力レジスタ１７１には１  要素分のＤｉｖｅｒｇｅｎｃｅ  計算に必要な計３４データ（Ａ１１，Ａ２１，Ａ３１，Ａ１２，Ａ２２，Ａ３２，Ａ１３，Ａ２３，Ａ３３，ｕ１，ｖ１，ｗ１，ｕ２，ｖ２，ｗ２，ｕ３，ｖ３，ｗ３，ｕ４，ｖ４，ｗ４，ｕ５，ｖ５，ｗ５，ｕ６，ｖ６，ｗ６，ｕ７，ｖ７，ｗ７，ｕ８，ｖ８，ｗ８，ｒＶ）それぞれに対応する入力レジスタ群が用意されており、データ毎にそれを書き込むべき入力レジスタが予め決められている。このように１  要素分のＤｉｖｅｒｇｅｎｃｅ  計算に必要な３４データそれぞれに対応する入力レジスタを用意することにより、Ｄｉｖｅｒｇｅｎｃｅ専用回路１６においてｘ，  ｙ，  ｚ  の３方向のデータ演算を並列に実行することが可能となる。入出力回路１７内のデータ入出力制御回路１７３でデータ用入出力レジスタ１７１の入出力を制御する。但し、簡単のため図１５ではクロック入力を省略してある。データ用入出力レジスタ１７１内のリードオンリーレジスタが出力バッフ（出力レジスタ）として用いられる。データ入出力制御回路１７３は、図示のような４つのコンポーネント、すなわち、入力用レジスタ制御部（ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌ）４０１，出力用レジスタ制御部（ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ）４０２，カウンタ（ｃｏｕｎｔ４２）４０３，およびリセット・ストール制御部（ｒｓｔＳｔａｌｌＣｔｒｌ）４０４から構成される。また図１５における符号ａ￣ｙそれぞれは次の信号を示している。
ａ．ａｃｃＳＨ：汎用プロセッサのデータ受信完了確認信号，  ｂ．ｗｅｏｕｔ：レジスタへの書き込み許可信号，ｃ．ｆｉｌｌＯＢ：出力用レジスタの状態，  ｄ．ｆｉｌｌＩｎ：入力用レジスタの状態，  ｅ．ｉｎｆｏｒｍ：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）からのデータ送信準備信号，  ｆ．ｒｓｔＯＢ：ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌへのリセット信号，  ｇ．ｉｎｆｏｒｍＣｔｒｌ：ｒｓｔＳｔａｌｌＣｔｒｌからの制御信号，  ｈ．ｒｓｔＣｔｒｌ：ｃｏｕｎｔ４２へのリセット信号，  ｉ．ｓｔｌＣｔｒｌ：ｃｏｕｎｔ４２へのストール信号，  ｊ．ｅｖｅｎｔＰＯＰＥ：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）へのデータ入力完了信号，  ｋ．ｓｅｎｄＳｔａｒｔ：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）へのデータ送信開始通知信号，  ｌ．ｒｓｔＩＯ：ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌへのリセット信号，  ｍ．ｆｕｌｌＩＢ：ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌからの制御信号，  ｎ．ｗｅｉｎ：レジスタへの書き込み許可信号，  ｏ．ｄ２ｐ＿ｓｔａｔｅ：ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌの状態，  ｐ．ｌａｓｔＤａｔａ：最終データ書き込み通知信号，  ｑ．ｃｌｋ：クロック信号，  ｒ．ｉｎｓｔＰＯＰＥ：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の状態，  ｓ．ｉｎｐＸ０：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｘ方向入力データ），  ｔ．ｉｎｐＸ１：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｘ方向入力データ  符号反転可），  ｕ．ｉｎｐＹ０：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｙ方向入力データ），  ｖ．ｉｎｐＹ１：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｙ方向入力データ  符号反転可），  ｗ．ｉｎｐＺ０：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｚ方向入力データ），  ｘ．ｉｎｐＺ１：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（ｚ方向入力データ  符号反転可），  ｙ．ｉｎｐＶ：Ｄｉｖｅｒｇｅｎｃｅ専用回路（ｐｏｐｅ）の入力（体積逆数データｒＶ）。
【００３４】
次に、各コンポーネントの詳細を説明する。
（ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌ）
図１６は“ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌ”４０１を示している。ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌの入力データは、ｃｌｋ信号，ｒｅｓｅｔ信号，ｉｎｓｔＰＯＰＥ信号，ｌａｓｔＤａｔａ信号であり、出力データはｓｅｎｄＳｔａｒｔ信号，ｅｖｅｎｔＰＯＰＥ信号，ｗｅｉｎ信号，ｄ２ｐ＿ｓｔａｔｅである。ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌは、専用演算器１６に対して必要なデータを供給する。その際、データが破壊されないようにするために同期を取る必要がある。その機能をフラグ（ｆｕｌｌ）により実装している。データ用入出力レジスタ１７１にはＤｉｖｅｒｇｅｎｃｅ  計算に必要な計３４データそれぞれに対応する入力レジスタが用意されており、フラグは汎用プロセッサ（ＣＰＵ）１５が１要素分のデータを全て送信し終わると同時に汎用プロセッサ（ＣＰＵ）１５からのｌａｓｔＤａｔａによって１にセットされ、専用演算器１６が全てのデータを読み出し終えると０にセットさせる。このフラグを元にして基本的には状態が遷移し、どのタイミングで計算が開始されたか等を他のコンポーネントに知らせる。データが実際に格納される入力レジスタに対する書き込み許可信号（ｗｅｉｎ）はＷＲＩＴＥ状態でレジスタが満タンではない（ｆｕｌｌ＝０）の時１（アクティブステート）となる。ｅｖｅｎｔＰＯＰＥ信号はＷＲＩＴＥ状態で入力レジスタが満タン（ｆｕｌｌ＝１）の時に１となり、コンポーネント“ｒｓｔＳｔａｌｌＣｔｒｌ”の専用演算器１６のリセットを強制解除する。ｓｅｎｄＳｔａｒｔ信号はＲＥＡＤ０状態で１になり、コンポーネント“ｃｏｕｎｔ４２”に対しカウント開始を通知する。図１７にｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌの状態遷移を示す。専用演算器１６がデータ入力可能な状態（ＩＮＳＴ８）で、入力レジスタが満タン（ｆｕｌｌ＝１）であれば、専用演算器１６がデータを読み、計算が開始される。全てのデータを専用演算器１６が読み込みフラグが０になると、汎用ＣＰＵ１５による次の要素の入力データの書き込みが許可される。フラグ（ｆｕｌｌ）の値、つまり入力レジスタの状態は制御用レジスタ１７２にｆｕｌｌＩｎとして設定され、制御用レジスタ１７２を介して汎用ＣＰＵ１５が読み取ることができる。ダブルバッファの場合には上述の制御は入力バッファを構成する入力レジスタ毎に行えばよい。
【００３５】
（ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ）
図１８は“ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ”４０２を示している。ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒ４０２ｌの入力データは、ｃｌｋ信号，ｒｅｓｅｔ信号，ａｃｃＳＨ信号，ｉｎｆｏｒｍ信号であり、出力データはｆｕｌｌＯＢ信号，ｗｅｏｕｔ信号である。ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ４０２では専用演算器１６から同期を取って正しいタイミングでデータを受け取り、出力レジスタに格納し、それを汎用ＣＰＵ１５に渡さなければならい。出力レジスタはｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌと同様にフラグにより制御される。フラグはＷＲＩＴＥ時に１にセットされる。ＲＥＡＤ時には汎用ＣＰＵ１５からのａｃｃＳＨ信号が代入される。ａｃｃＳＨ信号は汎用ＣＰＵ１５が専用演算器１６の出力結果を取り出せた場合０となり、フラグは０にセットされる。専用演算器１６の出力結果が書き込まれる出力レジスタは書き込み許可信号ｗｅｏｕｔにより書き込み制御されている。ＷＲＩＴＥ状態のときは１（書き込み可）、それ以外は０（書き込み不可）になっている。図１９にｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ４０２の状態遷移を示す。▲１▼レジスタが空で，かつ専用演算器１６から次のサイクルで答えが送られてくる状態．ＷＲＩＴＥに遷移して答えを得る。▲２▼レジスタが満タンの状態．汎用ＣＰＵ１５からデータが取り出されるのを待つ。▲３▼データが読み出されて空の状態．ＩＤＬＥに遷移して待機する。
【００３６】
（ｃｏｕｎｔ４２，ｒｓｔＳｔａｌｌＣｔｒｌ）
図２０は“ｃｏｕｎｔ４２”４０３と“ｒｓｔＳｔａｌｌＣｔｒｌ”４０４を示している。“ｃｏｕｎｔ４２”４０３の入力データはｃｌｋ、ｓｅｎｄＳｔａｒｔ，ｒｓｔＣｔｒｌ，ｓｔｌＣｔｒｌであり、出力データはｉｎｆｏｒｍ，ｉｎｆｏｒｍＣｔｒｌである。ｃｏｕｎｔ４２は専用演算器１６は専用演算器１６が計算開始してから（これはｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌのｓｅｎｄＳｔａｒｔ信号によって通知）カウントして，結果が出る２サイクル前にｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌに知らせる（ｉｎｆｏｒｍ）。また専用演算器１６が計算開始してからカウントして，結果が出る４サイクル前にｒｓｔＳｔａｌｌＣｔｒｌに知らせる（ｉｎｆｏｒｍＣｔｒｌ）。つまり専用演算器１６は入力データの読み込み開始（計算開始）から４２サイクルタイム数経過後にその入力データに対応するＤｉｖｅｒｇｅｎｃｅを出力するように構成されているので、“ｃｏｕｎｔ４２”４０３が計算開始からのサイクルタイム数をカウントすることにより、専用演算器１６から正しい演算結果が出力されるタイミングが判断される。これにより、計算開始から４２サイクルタイム数経過後の正しい演算結果を出力レジスタに格納することが出来る。“ｒｓｔＳｔａｌｌＣｔｒｌ”４０４の入力データはｉｎｆｏｒｍＣｔｒｌ、  ｆｕｌｌ（ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌからの制御信号），ｒｓｔＳＨ（汎用ＣＰＵからのリセット信号），ｓｔｌＳＨ（汎用ＣＰＵからのストール信号），ｅｖｅｎｔＰＯＰＥであり、出力データはｒｓｔ（ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌへのリセット信号），ｓｔｌ（ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌ）へのストール信号，ｒｓｔ（専用演算器へのリセット信号），ｓｔｌ（Ｄｉｖｅｒｇｅｎｃｅへのストール信号），ｒｓｔ（  ｃｏｕｎｔ４２へのリセット信号），ｓｔｌ（ｃｏｕｎｔ４２へのストール信号），ｒｓｔ（ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ）へのリセット信号である。ｒｓｔＳｔａｌｌＣｔｒｌ４０４では入出力回路を構成するコンポーネントとＤｉｖｅｒｇｅｎｃｅ専用演算器１６に対して，汎用ＣＰＵからのリセット，ストール及び他のコンポーネントが出力する信号を考慮して、リセット，ストール信号を生成する．コンポーネント”ｃｏｕｎｔ４２”から得たｉｎｆｏｒｍＣｔｒｌ信号とコンポーネント”ｄａｔａＦｒｏｍＰＯＰＥＲｅｇｓＣｔｒｌ”のｆｕｌｌ信号（ｆｕｌｌ＝１）を見て必要ならばＤｉｖｅｒｇｅｎｃｅ専用演算器にｓｔａｌｌ信号を送る．また、コンポーネント”ｄａｔａ２ＰＯＰＥＲｅｇｓＣｔｒｌ”からのｅｖｅｎｔＰＯＰＥ信号により専用演算器１６のリセットを強制解除する。
【００３７】
図２１は汎用ＣＰＵ１５から見た入出力回路１７のレジスタセットのメモリマップの例を示している。エリア１は制御レジスタ１７２を示し、エリア２はデータ用レジスタ１７１を示している。汎用ＣＰＵ１５によって生成される余因子ベクトルＡの９  データ，速度ベクトルν（ｕ，ｖ，ｗ）  の２４  データ，体積の逆数（Ω）はエリア２内のレジスタに書き込まれ、また専用演算器１６から出力されるＤｉｖｅｒｇｅｎｃｅ  演算結果Ｄｉｖはエリア２内のリードオンリーレジスタに書き込まれる。
【００３８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば体積の逆数の代わりに体積を入力するように専用演算器１６を構成してもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、ＧＳＭＡＣ有限要素法による数値解析処理を高速に実行することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る数値解析装置を示すブロック図。
【図２】専用プロセッサモジュールの例（ボード）を示すブロック図。
【図３】階層的領域分割の例を示す図。
【図４】正方キャビティの例を示す図。
【図５】入出力データ数と演算回数をポアソン方程式の発散の計算とそれ以外の計算とで比較した図。
【図６】専用プロセッサモジュールの他の例（ＳＯＣ）を示すブロック図。
【図７】汎用プロセッサと専用回路の役割分担を説明する図。
【図８】ＧＳＭＡＣ−ＦＥＭの基本アルゴリズムを説明するフローチャート。
【図９】節点の点対称性を示す図。
【図１０】６面体要素の節点の配置を示す図。
【図１１】Ｄｉｖｅｒｇｅｎｃｅ  専用演算器の回路構成を示す図。
【図１２】専用演算器で実行される計算を説明するための図。
【図１３】汎用プロセッサと専用回路間のデータ入出力を説明する図。
【図１４】入出力回路の構成を模式的に示す図。
【図１５】入出力回路の具体的な構成を示す図。
【図１６】入出力回路内の入力用レジスタ制御部の構成を示す図。
【図１７】入力用レジスタ制御部の状態遷移を示す図。
【図１８】データ入出力回路内の出力用レジスタ制御部の構成を示す図。
【図１９】出力用レジスタ制御部の状態遷移を示す図。
【図２０】カウンタとリセット・ストール制御部を示す図。
【図２１】汎用プロセッサから見たメモリマップの例を示す図。
【符号の説明】
１４…ＦＰＧＡボード（専用プロセッサモジュール）、１５…汎用プロセッサ、１６…専用回路、１７…入出力回路、１７１…データ用入出力レジスタ、１７３…データ入出力制御回路。
【図１】
2004362358.tif 000039
【図２】
2004362358.tif 000040
【図３】
2004362358.tif 000041
【図４】
2004362358.tif 000042
【図５】
2004362358.tif 000043
【図６】
2004362358.tif 000044
【図７】
2004362358.tif 000045
【図８】
2004362358.tif 000046
【図９】
2004362358.tif 000047
【図１０】
2004362358.tif 000048
【図１１】
2004362358.tif 000049
【図１２】
2004362358.tif 000050
【図１３】
2004362358.tif 000051
【図１４】
2004362358.tif 000052
【図１５】
2004362358.tif 000053
【図１６】
2004362358.tif 000054
【図１７】
2004362358.tif 000055
【図１８】
2004362358.tif 000056
【図１９】
2004362358.tif 000057
【図２０】
2004362358.tif 000058
【図２１】
2004362358.tif 000059