(57)【要約】【課題】並列分散計算装置上でネットワーク回路のシミュレーションを効率的に並列分散処理の加速率を向上する高速計算装置を提供する。【解決手段】非線形素子と線形素子とこれら素子間を連結する配線からなる電気・電子ネットワーク回路の回路表示をバーテックスやエッジから構成されるグラフ表示に変換し、バーテックスとエッジの重付けをし、グラフ理論を用いて複数の領域に分割し、主領域と部分領域の二種類以上の領域にグループ化し、グラフ表示から回路表示への逆変換により主回路と部分回路の二種類以上の回路にグループ化する前処理過程により、複数の部分回路の計算処理を複数のコンピューティングユニットで並行して処理し、その後、主回路の計算処理を行うことを可能とした高速計算方法。【選択図】  図７
2004240541.tif 000002
【特許請求の範囲】
【請求項１】
計算処理を実行するコンピューティングプロセッサユニットと計算処理を実行するために必要なプログラム、入力データおよび計算処理を実行し得られた出力データを記憶するメモリユニットとよりなる複数のコンピューティングプロセッサユニットと、該複数のコンピューティングプロセッサユニット間のデータ転送を実行するデータ転送ネットワークから構成される超並列機と、および、シミュレーション対象のデータを取り込むとともに前記複数のコンピューティングプロセッサユニットに必要なデータを分配し、且つ、シミュレーション結果を出力する制御のためのコンピュータとを用いたシミュレーションにおいて、複数の素子とこれら素子間を連結するパスからなるネットワーク回路表示をバーテックスおよびエッジから構成されるグラフ表示に変換すること、該グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化することよりなる前処理過程と、前記一つの主回路の計算処理と複数の部分回路の計算処理を複数のコンピューティングユニットに分配すること、主回路の計算処理のコンピューティングユニットと複数の部分回路の計算処理のコンピューティングユニットの間でデータを送受信する計算手順とにより実行されることを特徴とするシミュレーション方法。
【請求項２】
前記ネットワーク回路が電気・電子ネットワーク回路であり、電気・電子ネットワーク回路の回路素子をバーテックスに、隣接する回路素子間のパスをエッジとして構成されるグラフ表示に変換するものである請求項１記載のシミュレーション方法。
【請求項３】
前記ネットワーク回路が生体分子ネットワーク回路であり、ＤＮＡ、蛋白質、細胞、臓器、薬物の機能分子をバーテックスに、該機能分子間を連結する静電的、化学的、拡散的な相互作用をエッジとして構成されるグラフ表示に変換するものである請求項１記載のシミュレーション方法。
【請求項４】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割する請求項２または３記載のシミュレーション方法。
【請求項５】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割するに際し、電気・電子ネットワーク回路の回路素子の線形素子の計算量を対応付けたバーテックスの重みに比較して非線形素子の計算量を対応付けたバーテックスの重みを大きく設定する請求項２記載のシミュレーション方法。
【請求項６】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割するに際し、ネットワーク回路が生体分子ネットワークの機能分子間の時定数の小さい相互作用の計算量を対応付けたエッジの重みに比較して時定数の大きい相互作用の計算量を対応付けたエッジの重みを大きく設定する請求項３記載のシミュレーション方法。
【請求項７】
計算処理を実行するコンピューティングプロセッサユニットと計算処理を実行するために必要なプログラム、入力データおよび計算処理を実行し得られた出力データを記憶するメモリユニットとよりなる複数のコンピューティングプロセッサユニットと、該複数のコンピューティングプロセッサユニット間のデータ転送を実行するデータ転送ネットワークから構成される超並列機と、および、シミュレーション対象のデータを取り込むとともに前記複数のコンピューティングプロセッサユニットに必要なデータを分配し、且つ、シミュレーション結果を出力する制御のためのコンピュータとを用いてシミュレーションを行う装置であって、前記制御のためのコンピュータは、複数の素子とこれら素子間を連結するパスからなるネットワーク回路表示をバーテックスおよびエッジから構成されるグラフ表示に変換すること、該グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化することよりなる前処理過程のためのプログラムと、前記一つの主回路の計算処理と複数の部分回路の計算処理を複数のコンピューティングユニットに分配するためのプログラムとよりなることを特徴とするシミュレーション装置。
【請求項８】
前記ネットワーク回路が電気・電子ネットワーク回路であり、電気・電子ネットワーク回路の回路素子をバーテックスに、隣接する回路素子間のパスをエッジとして構成されるグラフ表示に変換するものである請求項７記載のシミュレーション装置。
【請求項９】
前記ネットワーク回路が生体分子ネットワーク回路であり、電気・電子ネットワーク回路のＤＮＡ、蛋白質、細胞、臓器、薬物の機能分子をバーテックスに、該機能分子間を連結する静電的、化学的、拡散的な相互作用をエッジとして構成されるグラフ表示に変換するものである請求項７記載のシミュレーション装置。
【請求項１０】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割する請求項８または９記載のシミュレーション装置。
【請求項１１】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割するに際し、電気・電子ネットワーク回路の回路素子の線形素子の計算量を対応付けたバーテックスの重みに比較して非線形素子の計算量を対応付けたバーテックスの重みを大きく設定する請求項８記載のシミュレーション装置。
【請求項１２】
前記バーテックスおよびエッジに重み付けをして、前記複数の部分回路の計算処理の負担がほぼ均等になるとともに、前記主回路の計算処理の負担が低減できるように前記複数の領域を分割するに際し、ネットワーク回路が生体分子ネットワークの機能分子間の時定数の小さい相互作用の計算量を対応付けたエッジの重みに比較して時定数の大きい相互作用の計算量を対応付けたエッジの重みを大きく設定する請求項９記載のシミュレーション装置。
【請求項１３】
前記コンピューティングユニットは、パーソナルコンピュータやワークステーションの単一マシンから成り、そのマシン間のデータ転送を実行するインサーネットで接続されたデータ転送ネットワークから構成されるパーソナルコンピュータクラスタやワークステーションクラスタである請求項１ないし６のいずれかに記載のシミュレーション方法。
【請求項１４】
前記コンピューティングユニットは、複数の超並列機、パーソナルコンピュータクラスタとワークステーションクラスタをインサーネットで接続されたグリッドマシンからなり、複数のグリッドマシン間のデータ転送を実行する高速ネットワークで接続されたデータ転送ネットワークから構成される請求項１ないし６のいずれかに記載のシミュレーション方法。
【請求項１５】
前記コンピューティングユニットは、パーソナルコンピュータやワークステーションの単一マシンから成り、そのマシン間のデータ転送を実行するインサーネットで接続されたデータ転送ネットワークから構成されるパーソナルコンピュータクラスタやワークステーションクラスタである請求項７ないし１２のいずれかに記載のシミュレーション装置。
【請求項１６】
前記コンピューティングユニットは、複数の超並列機、パーソナルコンピュータクラスタとワークステーションクラスタをインサーネットで接続されたグリッドマシンからなり、複数のグリッドマシン間のデータ転送を実行する高速ネットワークで接続されたデータ転送ネットワークから構成される請求項７ないし１２のいずれかに記載のシミュレーション装置。
【請求項１７】
前記グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化するに際して、主領域内と部分領域内のエッジの一連のインデックス番号を主回路と部分回路内の一連の節番号に対応付けて逆変換し、節番号の順番に応じて連立一次方程式の変数を列方向に設定し、節番号の順番に応じて連立一次方程式を行方向に設定し、ブロック対角縁付型の行列構造を形成する請求項１、２、４および５のいずれかに記載のシミュレーション方法。
【請求項１８】
前記前処理過程のためのプログラムが、グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化する処理に際して、主領域内と部分領域内のエッジの一連のインデックス番号を主回路と部分回路内の一連の節番号に対応付けて逆変換し、節番号の順番に応じて連立一次方程式の変数を列方向に設定し、節番号の順番に応じて連立一次方程式を行方向に設定し、ブロック対角縁付型の行列構造を形成するものである請求項７、８、１０および１１のいずれかに記載のシミュレーション装置。
【請求項１９】
前記グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化するに際して、主領域内と部分領域内のバーテックスの一連のインデックス番号を主回路と部分回路内の一連の節番号に対応付けて逆変換し、節番号の順番に応じて連立一次方程式の変数を列方向に設定し、節番号の順番に応じて連立一次方程式を行方向に設定し、ブロック対角縁付型の行列構造を形成する請求項１、３、４および６のいずれかに記載のシミュレーション方法。
【請求項２０】
前記前処理過程のためのプログラムが、グラフ表示をグラフ理論を用いて複数の領域に分割すること、該分割された複数の領域を一つの主領域と複数の部分領域にグループ化すること、該グループ化されたグラフ表示から回路表示への逆変換により一つの主回路と複数の部分回路にグループ化する処理に際して、主領域内と部分領域内のバーテックスの一連のインデックス番号を主回路と部分回路内の一連の節番号に対応付けて逆変換し、節番号の順番に応じて連立一次方程式の変数を列方向に設定し、節番号の順番に応じて連立一次方程式を行方向に設定し、ブロック対角縁付型の行列構造を形成するものである請求項７、９、１０および１２のいずれかに記載のシミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列分散計算装置を用いた電気・電子ネットワーク回路の電流―電圧特性のシミュレーション、または、生体分子ネットワーク回路の遺伝子、蛋白質あるいは薬物濃度の時間変化を解析するシミュレーションの計算処理時間の短縮に有用な並列分散環境におけるネットワーク回路のシミュレーション方法および装置に関する。
【０００２】
【従来の技術】
近年、例えば、移動型携帯端末に向けたシリコン・オン・システムのように、大規模なデジタル回路とアナログ回路を同一のシリコン基板上に実装し、高速、低消費電力で多機能な電気・電子ネットワーク回路を実現することを目標とした開発が行われている。これには、シミュレーションを用いて設計期間を短縮し開発工数を削減することが期待される。
【０００３】
この種の開発では、並列分散計算装置を用いたシミュレーションが行われる。図１〜図３はこの種の並列分散計算装置としての超並列機の構成例を示す図である。
【０００４】
図１は、単位となるコンピューティングユニット２０３が、計算処理を実行するコンピューティングプロセッサユニット２０１と計算処理を実行するために必要な入力データ、または、計算処理を実行し得られた出力データを記憶するメモリユニット２０２とより構成されている状態を示す。また、この単位となるコンピューティングユニット２０３は、これらの間のデータ転送を実行するバス２０４および２０５でメッシュ状に接続されたデータ転送ネットワークで結合されていることを示す。転送ネットワークのバス２０４の一つに制御のためのパソコン１００が接続される。このパソコン１００はシミュレーションの対象についてのデータの入力、コンピューティングユニット２０３への計算の分配および各コンピューティングユニット２０３間および各コンピューティングユニット２０３の計算結果の集計等の処理を行う。
【０００５】
図２は、コンピューティングユニットがパーソナルコンピュータ、または、ワークステーション３０１の単一マシンから成り、そのマシン間のデータ転送を実行するインサーネット３０２で接続されたデータ転送ネットワークから構成される超並列機の構成例を示す図である。ここでも、転送ネットワークのインサーネット３０２に制御のためのパソコン１００が接続される。
【０００６】
図３は、コンピューティングユニットが複数の超並列機４０３とパーソナルコンピュータとワークステーション３０１をインサーネット３０２で接続されたグリッドマシン４０１からなり、複数のグリッドマシン４０１を間の高速なデータ転送を実行する高速ネットワーク４０２等で接続されたデータ転送ネットワークから構成される広域分散環境での超並列機の構成例を示す図である。ここでも、転送ネットワークの高速ネットワーク４０２に制御のためのパソコン１００が接続される。
【０００７】
このような超並列機によって行われるシミュレーションは、シミュレーションの対象に成立するＮ×Ｎ次元の行列を解くことによって行われる。
【０００８】
例えば、電気・電子ネットワーク回路のシミュレーションは、各時刻ｔにおいて、配線上に設定された節における電圧Ｖ（ｔ）と非線形素子や線形素子に流れる電流Ｉ（ｔ）の間には、キルヒホッフ方程式の関係が成立する。即ち、連立一次方程式に対するＧ｛Ｖ（ｔ）｝Ｖ（ｔ）＝Ｉ（ｔ）のＮ×Ｎ次元の行列が形成される。ここで、Ｎは節の数、Ｇは時刻ｔでの節における電圧Ｖ（ｔ）により決定される非線形素子や線形素子のコンダクタンスと時刻ｔでの節における電圧Ｖ（ｔ）の積が、時刻ｔでの節間の非線形素子や線形素子に流れる電流Ｉ（ｔ）になることを示している。
【０００９】
この連立一次方程式において、節と節の間が、非線形素子や線形素子を通して接続されている場合には、キルヒホッフ方程式の行列Ｇは行列要素をもっている。しかし、節と節の間が非線形素子や線形素子を通して接続されていない場合や他の節を介して接続されている場合には、キルヒホッフ方程式の行列Ｇは行列要素をもたない。電気・電子ネットワーク回路では、電界効果型トランジスタやバイポーラトランジスタの非線形素子は三端子をもち、抵抗、インダクタンスやキャパシタンスの線形素子は二端子をもつので、一つの節は素子を介して他の一つ節、または、他の二つの節と接続されている場合が多い。従って、節と節の間を非線形素子または線形素子を介して接続されている場合が少ないため、キルヒホッフ方程式の行列Ｇの行列要素は殆どが零である疎行列になる。
【００１０】
また、ポストゲノム時代では、ヒトゲノム計画において遺伝子のシーケンス解析を用いて得られる３万〜５万の遺伝子情報を、ＤＮＡチップやｃ−ＤＮＡマイクロアレイを用いて遺伝子間の相互作用の解析が進められている。また、蛋白質の数は、１０万程度であり、糖鎖の有無により蛋白質の分子機能が変化することから、蛋白質の総数は数１０万個に上ると考えられている。現在、これら蛋白質のアミノ酸配列の相同性から１万６千のファミリーに分類し、分類されたファミリーの中から代表的な蛋白質をターゲットに、ＮＭＲやＸ線解析を用いた蛋白質構造の立体構造解析が進められている。
【００１１】
これら蛋白質の間の相互作用や相関関係を解析するためには、電気泳動法、プロテインチップ、イースト２ハイブリッド法等が用いられる。蛋白質間の相互作用の全体像を探る大規模なロテオーム解析が進められている。これら分子機能を対象にする相互作用解析に対して、生体機能の相互作用を記述するフィジオロームの解析も進められている。遺伝子や蛋白質、さらに、は、細胞や臓器や生体内での薬物の低分子化合物との相互作用、即ち、パスウェイの解析が進められている。これら相互作用の情報がＫＥＧＧに代表される公用のデータベースに蓄積されつつある。
【００１２】
このようなパスウェイを、電気・電子ネットワーク回路と同様に、生体分子ネットワーク回路と見立てたシミュレーションは、遺伝子、蛋白質、低分子化合物の間の静電的、化学的、拡散的な相互作用を解析し、遺伝子や蛋白質の発現濃度や薬物の低分子化合物の代謝や排泄後の血中濃度等の時間変化を解析するシミュレーションである。
【００１３】
例えば、非特許文献１に記述されているように、これら遺伝子、蛋白質、低分子化合物の生体機能分子の濃度をｙｉとすると、その時間変化はレート方程式（１）で与えられる。
【００１４】
【数１】
2004240541.tif 000003
ここで、ｔは時間、Ａｉは生体機能分子ｙｉの最大濃度変化レート、Ｓは非線形のトランスファー関数、Ｗｉｊは生体機能分子ｉとｊの間の相互作用を決定するパラメータ、ｂｉは反応遅延パラメータ、Ｄｉは生体機能分子ｙＩの減衰レートである。この非線形方程式を線形化すれば、生体機能分子濃度の時間変化を記述する連立一次方程式に対して、Ｎ×Ｎ次元の行列Ｇ｛ｙ（ｔ）｝ｙ（ｔ）＝ｘ（ｔ）を得ることができる。ここで、Ｎは生体機能分子の数、ｘ（ｔ）は生体機能分子ｙｉの最大濃度変化レートＡｉ、生体機能分子ｉとｊの間の相互作用を決定するパラメータＷｉｊ、反応遅延パラメータｂｉ、生体機能分子ｙＩの減衰レートＤＩから決定する列ベクトルである。この連立一次方程式において、生体機能分子ｉとｊ間に相互作用が働きＷｉｊが有限であれば、行列Ｇの行列要素が存在する。しかし、生体機能分子間に相互作用Ｗｉｊがなければ、行列Ｇの行列要素は存在しない。通常、遺伝子の相互作用を記述するパラメータは各遺伝子に対して５〜１０個程度と考えられ、ヒト遺伝子の総数３〜５万に比較して極めて少ない。従って、生体分子ネットワーク回路シミュレーションでは、生体機能分子濃度の時間変化を記述する連立一次方程式の行列Ｇの行列要素は殆ど零である疎行列になる。
【００１５】
疎行列の連立一次方程式の解を求めるためには、ガウス消去法に代表される連立一次方程式の解法が用いられるが、行列要素を消去する計算手順が複雑である。図４を参照して、これを簡単に説明する。図４では、行列要素の対角成分１６０１（ｉ１×ｉ１），１６０４（ｉ２×ｉ２），１６０７（ｉ３×ｉ３）が存在し、しかも、行列要素の非対角成分１６０２（ｉ２×ｉ１），１６０３（ｉ１×ｉ２），１６０５（ｉ３×ｉ２），１６０６（ｉ２×ｉ１），１６０８（ｉ４×ｉ３）および１６０９（ｉ３×ｉ４）が存在する。ここで、（ｉ２×ｉ１）はｉ２行ｉ１列の行列要素、（ｉ１×ｉ２）はｉ１行ｉ２列の行列要素、（ｉ３×ｉ２）はｉ３行ｉ２列の行列要素、（ｉ３×ｉ４）はｉ３行ｉ４列の行列要素、（ｉ４×ｉ３）はｉ４行ｉ３列の行列要素を、それぞれ、表す。
【００１６】
ガウス消去法では、対角成分１６０１（ｉ１×ｉ１）を用いて非対角成分１６０２（ｉ２×ｉ１）を消去するが、そのとき、非対角成分１６０３（ｉ１×ｉ２）により対角成分１６０４（ｉ２×ｉ２）が変更される。従って、対角成分１６０４（ｉ２×ｉ２）を用いて非対角成分１６０５（ｉ３×ｉ２）を消去するには、非対角成分１６０２（ｉ２×ｉ１）を消去した後に非対角成分１６０５（ｉ３×ｉ２）を消去しなければならない。このことは、非対角成分１６０２（ｉ２×ｉ１）を消去した後に、全行ｉ２列の非対角成分の行列要素を消去しなければならないことを示している。また、行列要素として、非対角成分１６０２（ｉ２×ｉ１），１６０５（ｉ３×ｉ２），１６０８（ｉ４×ｉ３）と１６０３（ｉ１×ｉ２），１６０６（ｉ２×ｉ３），１６０９（ｉ３×ｉ４）が存在するとすれば、対角成分１６０１（ｉ１×ｉ１）の処理の後に非対角成分１６０２（ｉ２×ｉ１）の消去を行い、１６０２（ｉ２×ｉ１）の消去の後に非対角成分１６０５（ｉ３×ｉ２）の消去を行い、非対角成分１６０５（ｉ３×ｉ２）の消去の後に非対角成分１６０８（ｉ４×ｉ３）の消去を行わなければならない。このようにして、全ｉ行ｉ１列の非対角成分の行列要素を消去した後に、全ｉ行ｉ２列の非対角成分の行列要素を消去し、全ｉ行ｉ３列の非対角成分の行列要素を消去し、全ｉ行ｉ４列の非対角成分の行列要素を消去する計算手順が発生する。
【００１７】
この計算手順を元に、下三角にある行列要素の消去を繰り返すと、行列Ｇは上三角のみ行列要素をもつ構造に変換される。一旦、上三角行列構造に変換すると、Ｉ（ｔ）を元に、行列解Ｖ（ｔ）は前進代入法または後進代入法を用いて求めることができる。このように、行列要素を消去する計算手順に複雑な関係が存在するため、計算手順が逐次的になり、並列分散的な計算処理が難しくなる。
【００１８】
【非特許文献１】
Ｇｅｎｅｔｉｃ  Ｎｅｔｗｏｒｋ  Ａｎａｌｙｓｉｓ−Ｔｈｅ  Ｍｉｌｌｅｎｎｉｕｍ  Ｏｐｅｎｉｎｇ  Ｖｅｒｓｉｏｎ，  Ｐａｃｉｆｉｃ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｂｏｉｃｏｍｐｕｔｉｎｇ  ２００１  Ｔｕｔｏｒｉａｌ，  １月（２００１）
【非特許文献２】
Ｉｒｅｎｅ  Ｍｏｕｌｉｔｓａｓ  ａｎｄ  Ｇｅｏｒｇｅ  Ｋａｒｙｐｉｓ，”Ｍｕｌｔｉｌｅｖｅｌ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒＧｅｎｅｒａｔｉｎｇ  Ｃｏａｒｓｅ  Ｇｒｉｄｓ  ｆｏｒ  Ｍｕｌｔｉｇｒｉｄ  Ｍｅｔｈｏｄｓ”，  Ｓｕｐｅｒｃｏｍｐｕｔｉｎｇ  ２００１，［平成１４年１２月１２日検索］、インターネット、＜  ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｓｃ２００１．ｏｒｇ／ｐａｐｅｒｓ／ｐａｐ．ｐａｐ２７６．ｐｄｆ＞
【００１９】
【発明が解決しようとする課題】
並列分散計算装置上で、電気・電子ネットワーク回路のシミュレーションを並列分散処理する場合の実行手順の例を図５に示す。ここでは、並列分散計算装置として、データ転送を実行するバスで４台のプロセッサＰ１，Ｐ２，Ｐ３およびＰ４を並列に接続されたワークステーション上において、図４に示した行列要素の対角成分（ｉ１×ｉ１），（ｉ２×ｉ２），（ｉ３×ｉ３）および（ｉ４×ｉ４）と、非対角成分（ｉ２×ｉ１），（ｉ３×ｉ２），（ｉ４×ｉ３）と（ｉ１×ｉ２），（ｉ２×ｉ３），（ｉ３×ｉ４）とが存在する疎行列の連立一次方程式を、前述した消去法で解くときに実行される処理手順を示す。なお、図５では省略しているが、データ転送を実行するバスには制御のためのパソコン１００が備えられて、以下の制御をするものとする。
【００２０】
プロセッサＰ１上で（ｉ１×ｉ２）と（ｉ１×ｉ１）から形成されたデータ１７０１をプロセッサＰ３に転送する。プロセッサＰ３上で、（ｉ２×ｉ１）を消去し、プロセッサＰ１から送られたデータ１７０１を元に（ｉ２×ｉ２）を変更する。次に、プロセッサＰ３上で（ｉ２×ｉ３）と変更後の（ｉ２×ｉ２）から形成されたデータ１７０２をＰ２に転送する。プロセッサＰ２上で、（ｉ３×ｉ２）を消去しプロセッサＰ３から送られたデータ１７０２を元に（ｉ３×ｉ３）を変更する。プロセッサＰ２上で（ｉ３×ｉ４）と変更後の（ｉ３×ｉ３）から形成されたデータ１７０３をＰ４に転送する。プロセッサＰ４上で、（ｉ４×ｉ３）を消去しプロセッサＰ２から送られたデータ１７０３を元に（ｉ４×ｉ４）１７０４を変更する。このようにして、プロセッサＰ１での計算処理１７０１の後にプロセッサＰ３へのデータ送信１７０５、プロセッサＰ１からのデータ受信を待ってプロセッサＰ３での計算処理１７０２の後にプロセッサＰ２へのデータ送信１７０６、プロセッサＰ３からのデータ受信を待ってプロセッサＰ２での計算処理１７０３の後にプロセッサＰ４へのデータ送信１７０７が全ての行列要素に対して繰り返される。
【００２１】
図６は、データ転送を実行するバスで４台のプロセッサが接続されたワークステーション上で、従来の計算手順と通信手順を用いて並列分散処理により疎行列の解を求めた所要時間の加速化率の例を示す図である。この例では、１台のプロセッサ上で計算する所要時間に比較し、その加速化率は１．２倍程度である。理想的には４台のプロセッサの並列処理により４倍に向上することが期待されるが、実際の加速率は非常に低く並列分散処理の難しさを示している。
【００２２】
このように、疎行列構造に対応して行列要素の複雑な消去手順が必要であり、行列要素を消去するために必要な処理手順の数だけの計算処理単位に分割される。各計算処理が実行されるプロセッサ間でデータの送受信が繰り返される。そのデータの送受信先は、行列要素の処理手順と各計算処理が実行されるプロセッサで決まるため、送受信先を一意的に記述することは難しい。各プロセッサ上では、他のプロセッサからの受信を待って計算処理した後に、他のプロセッサへのデータ送信を実行する。そのため、計算処理が逐次的な処理になり、並列分散処理による計算所要時間の加速化が難しい。さらには、疎行列構造から決まる処理手順の数だけ、プロセッサ間のデータ通信の回数が必要である。他のプロセッサからデータを受け取ってから計算処理を実行するための同期を制御する回数が増える。結果的に、データ通信時間や同期を制御する時間が不必要な単一プロセッサ上での計算処理と比較して、並列分散計算装置上での計算所要時間を短縮することが難しい。
【００２３】
【課題を解決するための手段】
本発明は、電気・電子ネットワーク回路のシミュレーションあるいは生体分子ネットワーク回路シミュレーションのように、アナログまたはディジタル動作をする対象に対してグラフ理論を適用したシミュレーションを適用可能とする処理を行い、データ通信時間や同期を制御する時間をできるだけ低減する。グラフ理論自体はよく知られていることであるが、従来は論理回路のレイアウトの素子配列の最適化等に利用されているにすぎず、アナログ動作をする対象に対して適用された例は無い。
【００２４】
本発明では、以下の手順によりアナログ動作をする電気・電子ネットワーク回路あるいは生体分子ネットワーク回路に対してグラフ理論を適用したシミュレーションを実施可能とする。
（１）非線形要素、線形要素およびこれら要素間を連結するパスからなるシミュレーション対象の回路表示をバーテックスおよびエッジから構成されるグラフ表示に変換する。
（２）全てのバーテックスおよびエッジに重付けをする。
（３）グラフ理論を用いて複数の領域に分割する。
（４）前記領域をバーテックス間を連係するエッジを部分領域内で閉じているエッジのみからなる部分領域と、部分領域間にまたがるエッジのみからなる主領域とにグループ化する。
（５）グラフ表示から回路表示への逆変換により主回路と部分回路の二種類以上の回路にグループ化する。
（６）主回路の計算処理と複数の部分回路の計算処理を複数のコンピューティングユニットに分配し計算の実行をさせる。
（７）主回路の計算処理のコンピューティングユニットと複数の部分回路の計算処理のコンピューティングユニットの計算結果を統合して回路のシミュレーション結果を得る。
【００２５】
さらに、必要に応じて、非線形素子あるいは時定数の大きい相互作用の計算量を対応付けたバーテックスあるいはエッジの重付けを、線形素子あるいは時定数の小さい相互作用の計算量を対応付けたバーテックスあるいはエッジの重付けより大きく設定すること、あるいは、分割した部分領域間のエッジ数を最小化する目的関数、各部分領域内のエッジ数を均等化する拘束条件、各部分領域のバーテックスの重みを均等化する拘束条件を課すこと、さらに、コンピューティングユニットの数に対して部分回路の数を大きくして等の工夫を加えることにより、コンピューティングユニットの計算処理時間を均等化することもできる。
【００２６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２７】
なお、実施の形態を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する場合がある。
【００２８】
（実施形態１）
図７は、本発明の実施形態１の概略を示す並列分散環境におけるネットワーク回路の高速計算装置の構成例の概念図である。図１〜図３を参照して並列分散環境としての超並列機の構成例を説明したが、１００は制御のためのパソコンでありシミュレーションのデータを入力するための入力装置１０１、入力されたデータから各コンピューティングユニットに回路計算を分配するための処理を実行するための処理・制御部１０２および処理・制御部１０２の動作状況あるいは各コンピューティングユニットに分配して計算された結果を統合した結果を表示するための出力装置１０３とから構成される。
【００２９】
処理・制御部１０２では、入力装置１０１を介して導入されるシミュレーションの対象のデータを入力し、上述した手順（１）〜（７）により図１〜図３で説明したような並列分散計算装置１０４の各コンピューティングユニットに回路計算を分配し、各コンピューティングユニットが行った回路計算の結果を統合し、出力装置１０３に表示する。ここで、データ入力は、種々の方法が可能であり、例えば、コンポーザと呼ばれる回路ネットワークを実装している場合は各素子や素子間の配線がパーツとして用意され、お絵かきのようにその素子と配線とを組み合わせることで回路ネットワークを構成し、その回路ネットワークの幾何学的な情報を数値データとしてファイルに格納することができる。また、各コンピューティングユニットに回路計算を分配するための前処理過程の処理を、コンピューティングユニットの一つに代行させて、この結果を、各コンピューティングユニットに分配するものとすることもできる。
【００３０】
以下、処理・制御部１０２における各コンピューティングユニットへの回路計算の分配および結果の統合についての処理フローを簡単に説明する。
【００３１】
１０２１は回路表示のステップであり、入力装置１０１を介して導入されるシミュレーションの対象のデータを入力し表示する。１０２２はグラフ表示変換のステップであり、シミュレーション対象の回路表示をバーテックスおよびエッジから構成されるグラフ表示に変換する。１０２３はグラフの重付けのステップであり、全てのバーテックスおよびエッジに重付けをする。１０２４は領域分割のステップであり、グラフ理論を用いて複数の領域に分割する。１０２５は２領域グループ化のステップであり、前記領域をバーテックス間を連係するエッジを部分領域内で閉じているエッジのみからなる部分領域と、部分領域間にまたがるエッジのみからなる主領域とにグループ化する。１０２６は主回路、部分回路分割のステップであり、ステップ１０２５の結果として得られた２領域グループ化に対応して、グラフ表示から回路表示への逆変換により主回路と部分回路の二種類以上の回路にグループ化する。１０２７は回路計算分配のステップであり、主回路の計算処理と複数の部分回路の計算処理を複数のコンピューティングユニットに分配する。１０２８は通信制御のステップであり、回路計算分配のステップ１０２７の結果に応じて、並列分散計算装置の各コンピューティングユニットが対応すべき回路計算の対象を送信する。また、逆に、並列分散計算装置の各コンピューティングユニットが実施した回路計算の結果を受信する。１０２９は回路計算結果の統合ステップであり、主回路の計算処理のコンピューティングユニットと複数の部分回路の計算処理のコンピューティングユニットの計算結果を統合して回路のシミュレーション結果を得て、出力装置１０３に送る。
【００３２】
図８は、本発明によるシミュレーションの対象の一例の電気・電子ネットワーク回路を示す図である。電気・電子ネットワーク回路は、ＭＯＳＦＥＴ（Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｆｉｅｌｄ  Ｅｆｆｅｃｔ  Ｔｒａｎｓｉｓｔｏｒ）およびバイポーラトランジスタ等の非線形素子５０１、抵抗Ｒ、インダクタンスＬおよびキャパシタンスＣ等の線形素子５０２、および、これら非線形素子５０１および線形素子５０２を連結する配線上の節ａ，ｂ，ｃ，−−−（参照符号５０３で代表される）から構成される。図では、簡便のために、これらの素子の一つに代表的に参照符号を付すに止めた。
【００３３】
電気・電子ネットワーク回路のシミュレーションでは、各時刻ｔにおいて、配線上に設定された節における電圧Ｖ（ｔ）と非線形素子や線形素子に流れる電流Ｉ（ｔ）の間には、キルヒホッフ方程式の関係が成立する。図８に示す回路の各節に成立するキルヒホッフ方程式はＧ｛Ｖ（ｔ）｝Ｖ（ｔ）＝Ｉ（ｔ）で表示される。ここで、Ｇは時刻ｔでの節５０３における電圧Ｖ（ｔ）により決定される非線形素子５０１および線形素子５０２のコンダクタンス、Ｖ（ｔ）は時刻ｔでの節５０３における電圧、Ｉ（ｔ）は時刻ｔでの節５０３間の非線形素子５０１および線形素子５０２に流れる電流である。すなわち、時刻ｔでの節５０３間の非線形素子５０１および線形素子５０２に流れる電流Ｉ（ｔ）は時刻ｔでの節５０３におけるコンダクタンスＧと時刻ｔでの節５０３における電圧Ｖ（ｔ）の積であることを示している。
【００３４】
図９は、図８に示す回路の各節に成立するキルヒホッフ方程式のＮ×Ｎ次元行列を示す図である。ここで、Ｎは節の数である。ａ，ｂ，ｃ，−−−は図８に示す各節であるが、各節の配列順は、行と列の配列順を同じにすれば、任意で良い。黒で塗りつぶして示す各節の交点の間には上述したキルヒホッフ方程式が成立し、各節には行列要素が存在する、０で示す各節の交点の間には上述したキルヒホッフ方程式が成立せず、各節の行列要素は０となる。すなわち、図８に示す回路のコンダクタンスＧの行列要素の大半は零の疎行列である。
【００３５】
図１０−図１２は回路をグラフ表示変換するステップ１０２２の具体的な処理を説明する図であり、ここでは、図８に示す電気・電子ネットワーク回路を例に説明する。
【００３６】
まず、非線形素子５０１および線形素子５０２からなる回路表示を、図１０に示すように、バーテックス７０１からなるグラフ表示に変換する。７０１１，７０１２，７０１３，−−−，７０１１８は、それぞれ、バーテックスであり、回路表示における各素子ＶＣＣ，ＶＳ，ＣｉＮ，−−−，ＲＬに対応する。なお、回路表示における各素子のすべてがバーテックスとなされるので、下付きで付した数字の順序には意味が無い。
【００３７】
次に、図１１に示すように、配線の上の節５０３からなる回路表示をエッジ７０２からなるグラフ表示に変換する。例えば、節ａからなる回路表示をエッジからなるグラフ表示に変換したエッジ７０２−Ａは回路表示の素子ＶＳおよびＣｉＮに対応するバーテックス７０１２および７０１３を含む。また、節ｂからなる回路表示をエッジからなるグラフ表示に変換したエッジ７０２−Ｂは回路表示の素子ＣｉＮ，Ｒ１，Ｒ２およびＴ１に対応するバーテックス７０１３，７０１４，７０１７，および７０１６を含む。節ｊからなる回路表示をエッジからなるグラフ表示に変換したエッジ７０２−Ｊは回路表示の素子ＶＣＣ，ＶＳ，Ｒ２，ＲＥ１，ＣＥ１，Ｒ４，ＲＥ２，ＣＥ２およびＲＬに対応するバーテックス７０１１，７０１２，７０１７，７０１８，７０１９，７０１１０，７０１１４，７０１１５および７０１１８を含む。このようにして得られた各エッジ７０２の各回路素子間ではキルヒホッフ方程式が成立する。即ち、エッジ７０２の数は、連立一次方程式の次元の数である。
【００３８】
また、バーテックス７０１を囲むエッジ７０２が二つ重なる場合、そのエッジ７０２のインデックスを夫々にｉ番目とｊ番目とする。これらエッジｉ番目，ｊ番目のインデックスの順番通りに、節ｉ，ｊに対するキルヒホッフ方程式の行列を形成する。エッジｉ番目、ｊ番目の変数となる節を表す列とｉ番目、ｊ番目の節に対する方程式を行にすれば、行列Ｇの行列要素の対角成分（ｉ×ｉ），（ｊ×ｊ）と非対角成分（ｉ×ｊ），（ｊ×ｉ）にバーテックス７０１に対応する非線形素子５０１と線形素子５０２を用いた行列要素が生まれる。バーテックス７０１を囲むエッジ７０２が三つ重なる場合、そのエッジ７０２のインデックスを夫々にｉ番目、ｊ番目およびｋ番目とする。これらエッジｉ番目、ｊ番目およびｋ番目のインデックスの順番通りに、節ｉ，ｊおよびｋに対するキルヒホッフ方程式の行列を形成して、上述したように処理すれば良い。例えば、トランジスタは３端子素子を構成するが、トランジスタ素子をバーテックス７０１とする場合、３方向の配線に対応するエッジ７０２がバーテックス７０１に対して三つ重なることになる。
【００３９】
次に、バーテックス７０１の重付けを説明する。非線形素子５０１と線形素子５０２の行列要素の計算量に対応するバーテックスの重み７０３を付ける。ＭＯＳＦＥＴやバイポーラトランジスタの非線形素子５０１では、ある電圧におけるＧの行列要素を求めるためには、ニュートンラプソン法等を用いて非線形方程式を解く必要がある。ニュートンラプソン法では、反復的な計算が必要なため、Ｇの行列要素を求めるために計算所要時間が長くなる。一方、抵抗Ｒ、インダクタンスＬ、キャパシタンスＣからなる線形素子５０２は、電圧に依存せずＧの行列要素を決定できるため、その行列要素を求めるための計算所要時間は短い。従って、非線形素子の計算量に対応するバーテックスの重付けを線形素子の計算量に対応するバーテックスの重付けに比較して大きく設定する。このようにして、各バーテックスに掛かる計算量を定量的に表すことができる。図１２はこの考え方で、電源回路および抵抗Ｒに対応するバーテックスの重付けを１、インダクタンスＬおよびキャパシタンスＣに対応するバーテックスの重付けを２、ＭＯＳＦＥＴやバイポーラトランジスタの非線形素子に対応するバーテックスの重付けを９として各素子に隣接させて括弧内に表示したものである。
【００４０】
次に、エッジ７０２の重付けを説明する。電気・電子ネットワーク回路のシミュレーションでは、上述したように、計算時間はバーテックスに掛かる計算量で支配されるから、各エッジ７０２自体の重付けは意味が無い。したがって、エッジ内に含まれる全てのバーテックスの重付けを加算したものをエッジ７０２の重付けとすることで良い。すなわち、各エッジが連立一次方程式の各式に対応するから、連立一次方程式の各式の演算に要する時間は、これに含まれるバーテックスの重付けの加算値に対応することになる。
【００４１】
次に、グラフ理論を用いて複数の領域に分割する手段を述べる。回路表示をバーテックス７０１とエッジ７０２からなるグラフ表示に変換すれば、それぞれのエッジ７０２内に含まれているバーテックス７０１を失うことなく、共通するバーテックス７０１を含み、お互いに重なるエッジ７０２間の幾何学的な関係を変えないかぎり、回路素子の回路図上の配列位置は変わっても、回路表示の非線形素子５０１および線形素子５０２と配線上の節５０３から構成されたネットワーク回路の回路構成は変わらない。そこで、バーテックスを複数の領域に分割することを試みる。例えば、２つの部分領域ＡＲ１，ＡＲ２に分割するため、一つのバーテックスを一方の部分領域ＡＲ１から他方の部分領域ＡＲ２に移動する。一つのバーテックスの移動に伴って、そのバーテックスを共通に含み、お互いに重なったエッジの端が一方の部分領域ＡＲ１から他方の部分領域ＡＲ２に移動する。このとき、エッジ内に含まれている他のバーテックスが部分領域ＡＲ２に含まれている場合は、エッジは完全に部分領域ＡＲ２に移動したことになる。反対に、エッジ内に含まれている他のバーテックスが部分領域ＡＲ１に含まれている場合は、そのエッジは部分領域ＡＲ１および部分ＡＲ２に跨ることになる。このようにして、部分領域ＡＲ１およびＡＲ２のそれぞれに含まれるバーテックスの数と重みおよびエッジの数と重み、さらに部分領域ＡＲ１およびＡＲ２に跨るエッジの数と重みを変化させることができる。
【００４２】
非特許文献２に記述されているように、逐次的にバーテックスを部分領域間で移動させる分割法（Ｋ−Ｍ法）を用いて、目的関数や拘束条件を満たす最適な分割パターンを求めることができる。ここで、複数の部分領域に分割する目的関数として、部分領域間に跨るエッジ数を最小にすること、拘束条件１として、部分領域内のエッジ数を均等化すること、拘束条件２として、部分領域内のバーテックスの重みを均等化すること、を満足するものとすれば、連立一次方程式の各式の演算に要する時間を均等化することができる。
【００４３】
次に、バーテックスおよびエッジからなるグラフ表示に変換された回路表示を、主回路と部分回路の二種類以上の回路にグループ化する手段を述べる。
【００４４】
まず、上述したように、グラフ表示に変換された全領域を、グラフ理論を用いて複数の部分領域に分割する。図１３は部分領域に分割した結果を模式的に示す図である。ここでは、図１２に示したグラフ表示は関係ない。複数の部分領域ＡＲ１，ＡＲ２およびＡＲ３が形成されており、各部分領域には、代表的に参照符号８０１を付したバーテックスとバーテックスを含むエッジ９０１が存在する。また部分領域間にまたがるエッジ９０１も存在する。例えば、部分領域ＡＲ１にはバーテックス８０１１および８０１２を含むエッジ９０１１が存在する。部分領域間ＡＲ１，ＡＲ２間にはそれぞれの部分領域のバーテックス８０１２および８０１３を含むエッジ９０１２が存在する。さらに、部分領域間ＡＲ２，ＡＲ３間にはそれぞれの部分領域のバーテックス８０１４および８０１５を含むエッジ９０１３が存在する。なお、部分領域のバーテックスに参照符号を付すのは省略したが、部分領域間ＡＲ１，ＡＲ２間にはエッジ９０１４が、部分領域間ＡＲ２，ＡＲ３間にはエッジ９０１５も存在する。
【００４５】
次に、図１４に示すように、各部分領域ＡＲ１，ＡＲ２およびＡＲ３から構成されたグループと各部分領域ＡＲ間を跨ぐエッジのみから構成された主領域ＭＡＲに分別する。すなわち、各部分領域のバーテックスには変更は加えないが、各部分領域ＡＲ間を跨ぐエッジ９０１１，９０１２，９０１３および９０１４のみを統合して一つの主領域ＭＡＲとする。
【００４６】
次いで、これら各部分領域ＡＲと主領域ＭＡＲのエッジに対してインデックス番号をつける。例えば、図１４では、部分領域ＡＲ１内のエッジにインデックス番号１，２および３を連続に付け、次に隣接した部分領域ＡＲ２内のエッジに連続したインデックス番号４，５および６を連続に付け、さらに隣接した部分領域ＡＲ３内のエッジに連続したインデックス番号７，８，９および１０を連続に付ける。その後に、主領域ＭＡＲ内の各部分領域ＡＲ間に跨るエッジ９０１１，９０１２，９０１３および９０１４についてインデックス番号１１，１２，１３および１４を連続的に付ける。
【００４７】
次に、グラフ表示から回路表示への逆変換によるグラフ表示から主回路と部分回路への逆変換について述べる。図１３および図１４を参照して説明したように、バーテックスおよびエッジからなるグラフ表示に変換された全領域を複数の部分領域と一つの主領域に分割し、このグラフ表示を回路表示に逆変換すると、各部分領域のバーテックスおよびエッジに対応して、非線形素子および線形素子と配線上の節からなる部分回路が形成される。また、同様に、主領域のバーテックスまたはエッジに対応して、非線形素子および線形素子と配線上の節からなる主回路が構成される。すなわち、各部分領域ＡＲおよび主領域ＭＡＲの各エッジに付けられたインデックス番号に対応して、図１２の各エッジに付けられた節の付号（ａ，ｂ，−−−）を付ければ、グラフ表示が回路表示に逆変換されたことが理解できる。
【００４８】
図１４に示すエッジに付けられたインデックス番号の順序で、節に対する変数を列として表し、節に対する方程式を行として連立一次方程式を形成する。キルヒホッフ方程式に対する連立方程式の行列Ｇはブロック対角帯行列を形成することができる。
【００４９】
図１５は、上述の考え方で行列を形成したときの行列要素の配列を示す図である。ここで、各部分領域ＡＲ内のエッジが同じ部分領域ＡＲ内のエッジとのみ重なるときには、同じ部分回路内の節の間にのみ行列要素１００１が発生する。すなわち、部分領域ＡＲ１の節の間にのみ行列要素１００１１が発生し、部分領域ＡＲ２の節の間にのみ行列要素１００１２が発生し、部分領域ＡＲ３の節の間にのみ行列要素１００１３が発生する。また、異なる部分領域ＡＲ間に跨るエッジのみから構成される主領域ＭＡＲが導入された結果、異なる部分領域間に跨るエッジが存在しない。このことは、部分回路間に跨る節が存在しなくなり、異なる部分回路の節の間の非対角的な行列要素は存在しないことを意味する。一方、各部分領域ＡＲと主領域ＭＡＲに跨るエッジの存在は、部分回路と主回路に関係する節の存在を意味する。すなわち、部分回路と主回路の節の間に行列要素１００２１から１００１６が発生する。また、主領域ＭＡＲにのみかかわるエッジの存在により、主回路間の行列要素１００３が発生する。このようにして、キルヒホッフ方程式に対する行列Ｇは、ブロック的な行列要素が対角項に集まり、行列の右側および下側の縁には主回路と部分回路の節の間の行列要素が集まった構造を形成する。
【００５０】
このように、本発明では、回路表示をバーテックスおよびエッジからなるグラフ表示に変換し、次いで、グラフ表示に変換された回路表示を、主回路と部分回路にグループ化する前処理を行う。この結果、全回路に対するキルヒホッフ方程式の連立一次方程式の疎行列構造は、複数の部分回路からなるブロック対角行列と主回路からなる縁付きの行列要素とから構成されるブロック対角縁付き行列に変換することができる。
【００５１】
ブロック対角縁付き行列の連立一次方程式の解を求める場合は、疎行列の連立一次方程式の解を求める場合に比較し、計算手順と通信手順は容易になる。これを図１６および図１７を参照して説明する。
【００５２】
図１６はブロック対角行列と縁付きの行列要素とから構成されるブロック対角縁付き行列の例を示す図である。行列要素のブロック対角成分１１０１［ｉｂ１×ｉｂ１］，１１０２［ｉｂ２×ｉｂ２］，１１０３［ｉｂ３×ｉｂ３］，−−−，１１０４［ｉｂｎ×ｉｂｎ］が存在する。また非対角ブロック成分１１０５［ｉｂｎ×ｉｂ１］，１１０６［ｉｂｎ×ｉｂ２］，１１０７［ｉｂｎ×ｉｂ３］，−−−，１１０８［ｉｂ１×ｉｂｎ］，１１０９［ｉｂ２×ｉｂｎ］，１１１０［ｉｂ３×ｉｂｎ］，−−−が存在する。ここで、例えば、対角ブロック［ｉｂ１×ｉｂ１］はブロック単位でｉｂ１行ｉｂ１列の対角ブロックを示し、非対角ブロック［ｉｂｎ×ｉｂ１］はブロック単位でｉｂｎ行ｉｂ１列の非対角ブロックを示す。ブロック対角成分１１０１、１１０２，１１０３および１１０４は、図１５との対応で言えば、行列要素１００１１，１００１２，１００１３，および１００１４に対応する。また非対角ブロック成分１１０５〜１１１０は行列要素１００２１〜１００２６に対応する。
【００５３】
対角ブロック１１０１［ｉｂ１×ｉｂ１］内の行列要素の消去処理では、対角ブロック１００１［ｉｂ１×ｉｂ１］内の対角成分の行列要素を用いる。このとき、非対角ブロックの［ｉｂ１×ｉｂ２］，［ｉｂ１×ｉｂ３］，−−−の行列要素は全て零なので、その行列要素を消去手順によって消去処理する必要は無い。消去処理に伴って変更される必要があるのは、縁に位置する非対角ブロック１００８［ｉｂ１×ｉｂｎ］の行列要素である。また、非対角ブロック［ｉｂ２×ｉｂ１］，［ｉｂ３×ｉｂ１］，−−−の行列要素も全て零なので消去処理をする必要はない。一方、消去処理に伴って変更される必要があるのは、縁に位置する非対角ブロック１１０５［ｉｂｎ×ｉｂ１］の行列要素である。
【００５４】
非対角ブロック１１０５［ｉｂｎ×ｉｂ１］の消去処理は、対角ブロック１１０１［ｉｂ１×ｉｂ１］内の対角成分の行列要素を用いる。このとき、非対角ブロックの［ｉｂ１×ｉｂ２］，［ｉｂ１×ｉｂ３］，−−−の行列要素は全て零なので、非対角ブロック１１０６［ｉｂｎ×ｉｂ２］，１１０７［ｉｂ×ｉｂ３］，−−−の行列要素が変更される必要は無い。消去処理に伴って変更される必要があるのは、対角ブロックの右隅に位置する対角ブロック１００４［ｉｂｎ×ｉｂｎ］の行列要素である。
【００５５】
このように、行列要素の消去手順として関係が生じるのは、ブロック行列１１０１［ｉｂ１×ｉｂ１］，１１０８［ｉｂ１×ｉｂｎ］，１１０５［ｉｂｎ×ｉｂ１］，および１１０４［ｉｂｎ×ｉｂｎ］の行列要素のみである。即ち、ブロック行列１１０１［ｉｂ１×ｉｂ１］，１１０８［ｉｂ１×ｉｂｎ］および１１０５［ｉｂｎ×ｉｂ１］の行列要素に関する消去処理を行い、その消去により変更されたデータを用いてブロック行列１１０４［ｉｂｎ×ｉｂｎ］の行列要素の消去を実行する。同様にして、行列要素の消去手順として関係が生じるのは、ブロック行列１１０２［ｉｂ２×ｉｂ２］，１１０９［ｉｂ２×ｉｂｎ］，１１０６［ｉｂｎ×ｉｂ２］，および１１０４［ｉｂｎ×ｉｂｎ］の行列要素のみである。即ち、ブロック行列１１０２［ｉｂ２×ｉｂ２］，１１０９［ｉｂ２×ｉｂｎ］および１１０６［ｉｂｎ×ｉｂ２］の行列要素に関する消去処理を行い、その消去により変更されたデータを用いてブロック行列１１０４［ｉｂｎ×ｉｂｎ］の行列要素の消去を実行する。以下、同様に、ブロック行列の対角行列要素と縁に位置する非対角ブロックの行列要素に関する消去処理を行い、その消去により変更されたデータを用いてブロック行列の対角ブロックの右隅に位置する対角ブロックの消去を実行する。
【００５６】
ここで、ブロック行列１１０１［ｉｂ１×ｉｂ１］，１１０８［ｉｂ１×ｉｂｎ］，１１０５［ｉｂｎ×ｉｂ１］の行列要素に関する消去処理、ブロック行列１１０２［ｉｂ２×ｉｂ２］，１１０９［ｉｂ２×ｉｂｎ］，１１０６［ｉｂｎ×ｉｂ２］の行列要素に関する消去処理、さらには、他のブロック行列の対角行列要素と縁に位置する非対角ブロックの行列要素に関する消去処理は、それぞれ、独立に並列分散的に実行することができる。その後、消去により変更されたデータを用いてブロック行列１１０４［ｉｂｎ×ｉｂｎ］の行列要素の消去処理を実行することができる。
【００５７】
上述した主回路と複数の部分回路に分割し構成した電気・電子ネットワーク回路の並列分散処理の実行手順の例を図１７に示す。図１７の例は、図５で説明した並列分散計算装置と同様に、データ転送を実行するバスで４台のコンピュ−ティングユニットＰ１，Ｐ２，Ｐ３およびＰ４を接続された超並列機を考える。
【００５８】
キルヒホッフ方程式の連立一次方程式対して、前処理過程により形成されたブロック対角縁付き行列は、上述したように、ブロック対角成分のブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］，［ｉｂ３×ｉｂ３］，および［ｉｂｎ×ｉｂｎ］が、非対角ブロック成分のブロック行列［ｉｂｎ×ｉｂ１］，［ｉｂｎ×ｉｂ２］，［ｉｂｎ×ｉｂ３］，［ｉｂ１×ｉｂｎ］，［ｉｂ２×ｉｂ］および［ｉｂ３×ｉｂｎ］が、それぞれ、存在する。コンピュ−ティングユニットＰ１にはブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ１×ｉｂｎ］および［ｉｂｎ×ｉｂ１］の行列要素の消去処理１２０１を分配し、Ｐ２にはブロック行列［ｉｂ２×ｉｂ２］，［ｉｂ２×ｉｂｎ］および［ｉｂｎ×ｉｂ２］の行列要素の消去処理１２０２を分配し、Ｐ３にはブロック行列［ｉｂ３×ｉｂ３］，［ｉｂ３×ｉｂｎ］および［ｉｂｎ×ｉｂ３］の行列要素の消去処理１２０３を分配する。また、Ｐ４にはブロック行列［ｉｂｎ×ｉｂｎ］の行列要素の消去処理１２０５を分配する。すなわち、図１６との対応で言えば、ブロック行列１１０１［ｉｂ１×ｉｂ１］，１１０８［ｉｂ１×ｉｂｎ］および１１０５［ｉｂｎ×ｉｂ１］の行列要素に関する消去処理をコンピュ−ティングユニットＰ１に分配し、ブロック行列１１０２［ｉｂ２×ｉｂ２］，１１０９［ｉｂ２×ｉｂｎ］および１１０６［ｉｂｎ×ｉｂ２］の行列要素に関する消去処理をＰ２に分配し、ブロック行列１１０３［ｉｂ３×ｉｂ３］，１１０９［ｉｂ３×ｉｂｎ］および１１０６［ｉｂｎ×ｉｂ３］の行列要素に関する消去処理をＰ３に分配する。さらに、ブロック行列１１０４［ｉｂｎ×ｉｂｎ］の行列要素の消去処理をＰ４に分配する。
【００５９】
上述のように、ブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ１×ｉｂｎ］および［ｉｂｎ×ｉｂ１］の行列要素に関する消去処理１２０１、ブロック行列［ｉｂ２×ｉｂ２］，［ｉｂ２×ｉｂｎ］および［ｉｂｎ×ｉｂ２］の行列要素に関する消去処理１２０２、ブロック行列［ｉｂ３×ｉｂ３］，［ｉｂ３×ｉｂｎ］および［ｉｂｎ×ｉｂ３］の行列要素に関する消去処理１２０３は、それぞれ、独立に実行することができるため、各コンピュ−ティングユニットＰ１，Ｐ２およびＰ３上で並列分散的に実行することができる。この結果、キルヒホッフ方程式に対する行列Ｇのブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］および［ｉｂ３×ｉｂ３］は上三角行列に変換される。この後に、これら消去により変更されたデータを各コンピュ−ティングユニットＰ１，Ｐ２およびＰ３から同時にコンピュ−ティングユニットＰ４にデータの送信処理１２０４を行う。送信されたデータを用いて、ブロック行列［ｉｂｎ×ｉｂｎ］の行列要素の消去処理１２０５を実行する。この処理手順により、ブロック行列［ｉｂｎ×ｉｂｎ］の行列要素は上三角行列に変換される。前進代入法、または、後進代入法を用いて、ブロック行列［ｉｂｎ×ｉｂｎ］の節に対する解Ｖｂ（ｔ）１２０６を求めることができる。一方、解Ｖｂ（ｔ）１２０６をコンピュ−ティングユニットＰ４からコンピュ−ティングユニットＰ１，Ｐ２，Ｐ３にデータ送信する処理１２０７を実行する。各コンピュ−ティングユニットＰ１，Ｐ２およびＰ３では、ブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］および［ｉｂ３×ｉｂ３］が上三角行列に変換されていることから、解Ｖｂ（ｔ）を元に、前進代入法、または、後進代入法を用いて、ブロック行列の［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］および［ｉｂ３×ｉｂ３］の節に対する解Ｖｂ１（ｔ）１２０８，Ｖｂ２（ｔ）１２０９およびＶｂ３（ｔ）１２１０を並列処理で同時に求めることができる。
【００６０】
このようにして，コンピュ−ティングユニットＰ１，Ｐ２およびＰ３での計算処理の後にコンピュ−ティングユニットＰ４へのデータ送信、これを受けてのＰ４での計算処理の後にＰ１，Ｐ２およびＰ３へのデータ送信が繰り返される。ここで、各コンピュ−ティングユニットＰ１，Ｐ２およびＰ３上で実行される消去処理１２０１，１２０２および１２０３は、ブロック行列の次元がほぼ等しくなるように設定されていれば、計算所要時間はほぼ均等に並列分散処理することができる。ブロック行列［ｉｂｎ×ｉｂｎ］の行列の次元は分割領域を跨ぐエッジの数と等しい。したがって、分割された部分回路に跨る節の数が最小になるように部分回路が決定されていれば、その計算所要時間は非常に短いため、部分回路の行列要素の消去をコンピュ−ティングユニットＰ１，Ｐ２またはＰ３のいずれかで実行しても、並列分散処理の加速化率を低下させることは少ない。
【００６１】
並列分散計算装置のコンピュ−ティングユニットは、前述したように、超並列機の他に、パーソナルコンピュータ、ワークステーションから構成することができる。または、複数の超並列機、パーソナルコンピュータクラスタ、ワークステーションクラスタを連結したグリッドマシンにすることができる。これら並列分散計算装置において、そのコンピュ−ティングユニットの数に合わせて、電気・電子ネットワーク回路を部分回路に分割する数を設定する。すなわち、電気・電子ネットワーク回路を部分回路と主回路とに分割するとき、部分回路の数をコンピュ−ティングユニットの数より一つ少なくなるように設定するときは、図７の処理ステップ１０２７では、各部分回路の計算処理を各コンピュ−ティングユニットに分配する。残された一つのコンピュ−ティングユニットには主回路の計算処理を分配する。各コンピュ−ティングユニット上では、各部分回路の計算処理を並列分散的に同時に実行する。各コンピュ−ティングユニット上で計算処理の後に、残された一つのコンピュ−ティングユニットにデータを送信する。残された一つのコンピュ−ティングユニットでは、データを受信した後に主回路の計算処理を実行する。その計算実行後に、部分回路の計算処理を実行する各コンピュ−ティングユニットに送信する計算手順・通信手順を繰り返す。図７の処理ステップ１０２８は、制御装置１００と並列分散計算装置１０４の各コンピュ−ティングユニットとの間の通信を制御する。
【００６２】
なお、主回路の行列の次元が最小になるように決定されているときは、その計算所要時間は非常に短い。そのため、主回路の計算処理を部分回路の計算処理を実行しているコンピュ−ティングユニット上で実行するものとしても、全体の計算処理を実質的に遅らせることは無い。このような場合には、電気・電子ネットワーク回路を部分回路と主回路とに分割するとき、部分回路の数をコンピュ−ティングユニットの数と同じになるように設定する。処理ステップ１０２７では、各部分回路の計算処理を各コンピュ−ティングユニットに分配する。各コンピュ−ティングユニット上では、各部分回路の計算処理を並列分散的に同時に実行する。各コンピュ−ティングユニット上で計算処理の後に、コンピュ−ティングユニットのいずれか一つにデータを送信する。データを送信された一つのコンピュ−ティングユニットでは、データを受信した後に主回路の計算処理を実行する。その計算実行後に、主回路の計算処理の結果を各コンピュ−ティングユニットに送信する計算手順・通信手順を繰り返す。
【００６３】
また、電気・電子ネットワーク回路の分割の際、コンピュ−ティングユニットの数のα倍の数の部分回路と一つの主回路とに分割するものとしても良い。この場合は、各コンピュ−ティングユニットはα個の部分回路の計算処理を一つの処理単位として分配されることになる。各コンピュ−ティングユニット上では、α個の部分回路の計算処理を並列分散的に同時に実行する。このように、コンピュ−ティングユニットの数のα倍の数の部分回路に分割するときは、分割された部分回路の重み付けを均一化することが簡単になるので、各コンピュ−ティングユニットの負担の均一化がより実行しやすいものとなる。
【００６４】
なお、図７に示すグラフ表示のステップ１０２２から主回路、部分回路分割のステップ１０２６までの前処理を、制御のためのパソコン１００に代えて、部分回路の計算処理を行うコンピュ−ティングユニットのいずれか一つで実行させ、この結果をあらためて部分回路の計算処理を行うコンピュ−ティングユニットに分配するものとしても良い。
【００６５】
今、電気・電子ネットワーク回路の全体網を主回路と複数の部分回路に分け、主回路の節の数をＮｍ、部分回路の数をＳ、各部分回路の節の数をＮＳであるとして、Ｓ個のコンピュ−ティングユニットで並列分散処理する場合の加速化率について説明する。加速化率は（単一コンピュ−ティングユニット上での計算処理時間）を（複数のコンピュ−ティングユニット上での計算処理時間＋通信処理時間）で除した値と定義する。ここで、Ｍは非線形素子と線形素子からなる行列要素の計算量、Ｂは一つのコンピュ−ティングユニットから全てのコンピュ−ティングユニットにデータを送信または受信する場合の通信の処理負荷である。Ｐｃｕ（ＦＬＯＰＳ）は各コンピュ−ティングユニットの計算処理性能、Ｐｔｈ（ｂｐｓ）はデータ通信ネットワークの通信バンド幅である。
【００６６】
単一のコンピュ−ティングユニット上での計算処理時間は、式（２）で与えられる。
【００６７】
【数２】
2004240541.tif 000004
複数のコンピュ−ティングユニット上での計算処理時間＋通信処理時間は、次式（３）で与えられる。
【００６８】
【数３】
2004240541.tif 000005
従って、単一コンピュ−ティングユニット上での計算処理時間に対する複数のコンピュ−ティングユニット上での計算所要時間の加速化率は、式（４）で与えられる。
【００６９】
【数４】
2004240541.tif 000006
ここで、主回路の節の数Ｎｍが、部分回路の節の数Ｎｓに対して充分小さい（Ｎｍ／ＮＳ＜＜１とする。また、大規模回路では、部分回路の節の数ＮＳは充分に大きいことからＮＳ３＞＞Ｍ（ＮＳ２）を満たす。式（３）より、加速化率が理想値であるＳ倍に近づくのは、主回路の節の数Ｎｍが充分小さい場合である。または、主回路を計算処理するコンピュ−ティングユニットの計算処理性能Ｐｃｕ（ＦＬＯＰＳ）が充分高い場合である。さらに、は、データ通信ネットワークの通信バンド幅Ｐｔｈ（ｂｐｓ）が充分大きい場合である。
【００７０】
本発明を超並列機上で並列分散処理する高速プロセッサ用ノイズ評価回路に適用した例を述べる。適用例の高速プロセッサ用ノイズ評価回路は、ＭＯＳＦＥＴの非線形素子と抵抗とキャパシタンスからなる線形素子、並びに、配線上の節から構成されるが、キルヒホッフ方程式Ｇ｛Ｖ（ｔ）｝Ｖ（ｔ）＝Ｉ（ｔ）における節の数は、約１５０００個にもなる。図１８は、図８および図９を参照して説明した従来の手法で、この回路の各節に成立するキルヒホッフ方程式の１５０００×１５０００次元行の疎行列Ｇを図形化して示す図である。図で濃く表されている位置ほど行列要素の数が多いことを意味する。
【００７１】
本発明では、ＭＯＳＦＥＴの非線形素子と抵抗とキャパシタンスからなる線形素子、並びに、配線上の節から構成される同じ高速プロセッサ用ノイズ評価回路をＭＯＳＦＥＴ、抵抗とキャパシタンスはバーテックスのグラフ表示に、節はエッジのグラフ表示に変換する。バーテックスの重付けとして、ＭＯＳＦＥＴ、キャパシタンス、抵抗に対するバーテックスの重付けを１０：２：１とした。
【００７２】
次に、コンピュ−ティングユニットの数に合わせて部分領域の分割数を設定し、グラフ理論を用いて、コンピュ−ティングユニット数と同じ数の部分領域に分割した。ここで、複数の領域に分割する目的関数として、分割領域間に跨るエッジ数を最小にする。また、拘束条件として、分割領域内のバーテックスの重みを均等化する条件を設定した。次に、主回路と部分回路の二種類以上の回路にグループ化するため、部分領域を跨ぐエッジから構成された主領域を設定する。
【００７３】
従って、全領域は、各部分領域から構成されたグループと部分領域を跨ぐエッジのみから構成された主領域に分別される。これら部分領域と主領域に対して、エッジのインデックス番号をつける。部分領域内のエッジにインデックス番号を連続に付け、異なる部分領域内のエッジに継続するようにインデックス番号を連続に付ける。このインデックス番号をコンピュ−ティングユニットの数の部分領域のエッジについて連続に付ける。その後に、部分領域間に跨るエッジから構成された主領域内のエッジについてインデックス番号を継続的に連続的に付ける。
【００７４】
さらに、主回路と部分回路の二種類以上の回路にグループ化する。部分領域のエッジとバーテックスのグラフ表示を回路表示に変換するとき、部分領域のバーテックスまたはエッジに対応し、ＭＯＳＦＥＴ、抵抗、キャパシタンスと配線からなる部分回路が形成される。また、主領域のエッジまたはバーテックスのグラフ表示を回路表示に変換するとき、主領域のバーテックスまたはエッジに対応し、ＭＯＳＦＥＴ、抵抗、キャパシタンスと配線からなる主回路が構成される。部分領域と主領域のエッジのそれぞれに付けられたインデックス番号に対応し節の番号をつける。エッジに付けられたインデックス番号の順序で、節に対する変数を列として表し、節に対する方程式を行として連立一次方程式を形成する。この処理により、キルヒホッフ方程式に対する連立方程式の行列Ｇはブロック対角帯行列を形成することができる。
【００７５】
図１９は、高速プロセッサ用ノイズ評価回路に成立するキルヒホッフ方程式の連立方程式を、本発明を適用して得られたブロック対角縁付き行列として図形化した図である。図で濃く表されている位置ほど行列要素の数が多いことを意味する。図は、後述するように、８台のプロセッサで構成される超並列機上での実行を前提として得られたものである。当然のことながら、８領域に分割された部分回路に跨る節の数が最小になり、分割された部分回路内の非線形素子と線形素子からなる行列要素を求める計算量が全ての部分回路でほぼ等しくなるように分割された。
【００７６】
データ転送を実行するバスで接続された８台のプロセッサＰ１，Ｐ２，−−−，Ｐ８からなる超並列機上での実行手順を示す。キルヒホッフ方程式の連立一次方程式対して、前処理過程により形成されたブロック対角縁付き行列において、ブロック対角成分のブロック行列として、［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］，−−−，［ｉｂ８×ｉｂ８］および［ｉｂ９×ｉｂ９］が存在する。非対角ブロック成分のブロック行列として、［ｉｂ９×ｉｂ１］，［ｉｂ９×ｉｂ２］，−−−，［ｉｂ９×ｉｂ８］、並びに、［ｉｂ１×ｉｂ９］，［ｉｂ２×ｉｂ９］，−−−，［ｉｂ８×ｉｂ９］が存在する。プロセッサＰ１にはブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ１×ｉｂ９］および［ｉｂ９×ｉｂ１］の行列要素を分配し、プロセッサＰ２にはブロック行列［ｉｂ２×ｉｂ２］，［ｉｂ２×ｉｂ９］および［ｉｂ９×ｉｂ２］の行列要素を分配する。他のブロック行列の行列要素も同様にプロセッサＰ３〜Ｐ７に分配し、プロセッサＰ８にはブロック行列［ｉｂ８×ｉｂ８］，［ｉｂ８×ｉｂ９］および［ｉｂ９×ｉｂ８］の行列要素を分配する。
【００７７】
ブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ１×ｉｂ９］および［ｉｂ９×ｉｂ１］の行列要素に関する消去処理、ブロック行列［ｉｂ２×ｉｂ２］，［ｉｂ２×ｉｂ９］および［ｉｂ９×ｉｂ２］の行列要素に関する消去処理、他のブロック行列の行列要素に関する消去処理、および、ブロック行列［ｉｂ８×ｉｂ８］，［ｉｂ８×ｉｂ９］および［ｉｂ９×ｉｂ８］の行列要素に関する消去処理は独立に実行することができるため、各プロセッサＰ１，Ｐ２，−−−，Ｐ８上で並列分散的に実行することができる。このようにして、行列Ｇのブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］，−−−，［ｉｂ８×ｉ８］は上三角行列に変換される。この後、これら消去により変更されたデータを各プロセッサＰ１，Ｐ２，−−−，Ｐ７から同時にプロセッサＰ８にデータを転送する。プロセッサＰ８では、転送されたデータとブロック行列［ｉｂ９×ｉｂ９］の行列要素を用いて、ブロック行列［ｉｂ９×ｉｂ９］の行列要素の消去を実行する。
【００７８】
この処理手順により、ブロック行列［ｉｂ９×ｉｂ９］の行列要素は上三角行列に変換され、前進代入法、または、後進代入法を用いて、ブロック行列［ｉｂ９×ｉｂ９］の節に対する解Ｖ９（ｔ）を求めることができる。一方、解Ｖ９（ｔ）をプロセッサＰ８からプロセッサＰ１，Ｐ２，−−−，Ｐ７にデータ転送する。各プロセッサＰ１，Ｐ２，−−−，Ｐ８では、ブロック行列［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］，−−−，［ｉｂ８×ｉ８］が上三角行列に変換されていることから、解Ｖ９（ｔ）を元に、前進代入法、または、後進代入法を用いて、ブロック行列の［ｉｂ１×ｉｂ１］，［ｉｂ２×ｉｂ２］，−−−，［ｉｂ８×ｉｂ８］の節に対する解Ｖ１（ｔ），−−−，Ｖ８（ｔ）を並列処理で同時に求めることができる。
【００７９】
図２０は、本発明を適用して超並列機上で高速プロセッサ用ノイズ評価回路の並列分散処理を実行したときのプロセッサに対する加速化率を示す。８台のプロセッサで最高４．１倍の加速率を得ることができた。
【００８０】
（実施形態２）
次に、生体分子ネットワーク回路に本発明を適用する例を述べる。図２１は生体分子ネットワーク回路を模式的に示す図の例である。生体分子ネットワーク回路は、Ｇ１，Ｇ２，−−−，Ｇ４で示す遺伝子１９０１１，１９０１２，−−−，１９０１４、Ｐ１，Ｐ２，−−−，Ｐ４で示す蛋白質１９０２１，１９０２２，−−−，１９０２４、Ｄ１，Ｄ２で示す低分子化合物１９０３１，１９０３２の生体機能分子とその生体機能分子間の静電的、化学的、拡散的な相互作用１９０４１，１９０４２および１９０４３から構成される。相互作用１９０４１，１９０４２および１９０４３は、相互作用の時定数が短い場合を太線１９０４１、時定数が中程度の場合を実線１９０４２、時定数が長い場合を破線１９０４３で示した。
【００８１】
生体分子ネットワーク回路のシミュレーションは生体機能分子濃度の時間変化を解析することを意味する。生体機能分子濃度ｙｉの時間変化を記述する連立一次方程式は、Ｎ×Ｎ次元の行列Ｇ｛ｙ（ｔ）｝ｙ（ｔ）＝ｘ（ｔ）を形成する。ここで、Ｎは生体機能分子の数である。ｘ（ｔ）は式（１）から決定される列ベクトルである。この生体分子ネットワーク回路に成立する連立一次方程式の行列Ｇ｛ｙ（ｔ）｝ｙ（ｔ）＝ｘ（ｔ）を、電気・電子ネットワーク回路に成立する連立一次方程式の行列Ｇ｛Ｖ（ｔ）｝Ｖ（ｔ）＝Ｉ（ｔ）と対比して明らかなように、実施形態１で説明した処理が実施形態２でも採用できることは容易に理解できる。
【００８２】
この連立一次方程式において、生体機能分子ｉとｊ間に相互作用が働けば、行列Ｇの行列要素が存在する。しかし、生体機能分子間に相互作用がなければ、行列Ｇの行列要素は存在しない。通常、遺伝子の相互作用を記述するパラメータは各遺伝子に対して５〜１０個程度と考えられ、ヒト遺伝子の総数３〜５万に比較して極めて少ない。従って、図２１に示す生体分子ネットワーク回路のシミュレーションでは、図２２に示すように、生体機能分子濃度の時間変化を記述する連立一次方程式の行列Ｇの行列要素は殆ど零である疎行列になる。
【００８３】
生体分子ネットワーク回路シミュレーションにおいて、遺伝子１９０１、蛋白質１９０２と薬物１９０３の低分子化合物とこれら生体機能分子間を連結する相互作用１９０４からなるネットワーク回路を主回路と部分回路に分割する手段を述べる。
【００８４】
遺伝子１９０１、蛋白質１９０２と薬物の低分子化合物１９０３からなる回路表示を、図２３に示すように、生体機能分子１９０１，１９０２および１９０３からなる回路表示をバーテックス２１０１からなるグラフ表示に変換し、相互作用１９０４からなる回路表示をエッジ２１０２からなるグラフ表示に変換する。これは、図１０から図１２で説明した電気・電子ネットワーク回路の回路表示をグラフ表示に変換するのと同様の手順である。生体分子ネットワーク回路が電気・電子ネットワーク回路と異なるのは、電気・電子ネットワーク回路がキルヒホッフの方程式を基礎とするのに対して、生体分子ネットワーク回路は式（１）で説明したレート方程式が基礎となっていることである。すなわち、生体分子ネットワーク回路では、各バーテックス２１０１が生体機能分子濃度の時間変化を記述する連立一次方程式の変数に対応する。電気・電子ネットワーク回路では、エッジの数が連立一次方程式の次元の数であったのに対し、生体分子ネットワーク回路ではバーテックス２１０１の数が連立一次方程式の次元の数である。
【００８５】
したがって、エッジ２１０２に含まれるバーテックス２１０１のインデックスを夫々にｉ番目とｊ番目として、これらバーテックスｉ番目、ｊ番目のインデックスの順番通りに、生体機能分子ｉ，ｊに対する濃度の時間変化を記述する連立一次方程式の行列を形成する。ｉ，ｊ番目の変数を表す列とｉ，ｊ番目の生体機能分子に対する方程式を行にすれば、行列Ｇの行列要素の対角成分（ｉ×ｉ）、（ｊ×ｊ）と非対角成分（ｉ×ｊ）と（ｊ×ｉ）にエッジ２１０２に対応して相互作用１９０４を用いた行列要素が発生する。
【００８６】
次に、バーテックス２１０１とエッジ２１０２の重付けを述べる。電気・電子ネットワーク回路と異なり、生体分子ネットワーク回路では生体機能分子自体には時定数の概念が無いから、エッジ２１０２に含まれる生体機能分子の相互作用の時定数に対応してエッジの重み付けをする。相互作用の時定数の短い場合は、一方の生体機能分子の濃度が変化すると他方の生体機能分子の濃度は短時間で変化する。相互作用の時定数の長い場合は、一方の生体機能分子濃度の変化は他方の生体機能分子濃度に影響を及ぼしにくい。従って、時定数の短い相互作用に対応したエッジの重付けを時定数の長い相互作用に対応したエッジの重付けに比較して大きく設定する。図２３では、これを図２１と同様にエッジの線の太さで示した。
【００８７】
次に、グラフ理論を用いて複数の領域に分割する方法を述べる。生体分子ネットワーク回路をバーテックスとエッジからなるグラフ表示にすれば、エッジ内に含まれているバーテックス、バーテックスを共通に含み、お互いに重なるエッジの幾何学的な形状を変えないかぎり、遺伝子１９０１、蛋白質１９０２と薬物の低分子化合物１９０３と生体機能分子間の相互作用１９０４から構成されたネットワーク回路は変わらない。したがって、図２４に示すように、部分領域ＡＲ１，ＡＲ２およびＡＲ３に分割し、各部分領域のみに属するエッジと部分領域間に跨るエッジとに分割する。エッジ２２０１１は部分領域のみに属し、エッジ２２０１２，２２０１３は部分領域間に跨る。参照符号２２０３を付したのはバーテックスである。これは図１３で説明したと同様である。
【００８８】
前述の非特許文献２に記述されているように、逐次的にバーテックスを領域間で移動させるＫ−Ｍ法を用いて、目的関数や拘束条件を満たす最適な分割方法を求めることができる。ここで、複数の領域に分割する目的関数として、分割領域間に跨るエッジの重みを最小にする。また、拘束条件として、分割領域内のバーテックスの数を均等化する。目的関数では、分割された部分回路に跨る相互作用の時定数が長いため、部分回路内の生体機能分子濃度の変化が部分回路間の生体機能分子の濃度に影響を及ぼしにくく、部分回路毎に分割し生体機能分子の濃度を解析することができる。拘束条件では、分割された部分回路内の生体機能分子の数が等しくなるように分割しているため、部分回路毎の生体機能分子濃度に対する連立一次方程式の次元の数が等しくなり、計算所要時間を均等化できることは、生体分子ネットワーク回路でも同じである。
【００８９】
次に、主回路と部分回路の二種類以上の回路にグループ化する手段を述べる。図２４に示すように、全領域は、グラフ理論を用いて複数の領域に分割すると、複数の部分領域ＡＲ１，ＡＲ２およびＡＲ３の内部にのみ存在するエッジ２２０１１，２２０１３，２２０１５，−−−と、部分領域ＡＲ１，ＡＲ２およびＡＲ３間を跨ぐエッジ２２０１２および２２０１４から構成される。これから、図２５に示すように、各部分領域ＡＲ１，ＡＲ２およびＡＲ３から構成されたグループと部分領域ＡＲ１，ＡＲ２およびＡＲ３間を跨ぐエッジ２２０１２および２２０１４に含まれるバーテックス２２０３３および２３０２５から構成された主領域ＭＡＲに分別する。これら部分領域ＡＲ１，ＡＲ２およびＡＲ３と主領域ＭＡＲにある全てのバーテックスに対してインデックス番号をつける。この際、各部分領域ＡＲ１，ＡＲ２およびＡＲ３内のバーテックスにインデックス番号を連続に付け、次に異なる部分領域内のバーテックスに継続するようにインデックス番号を連続に付ける。このインデックス番号を全ての部分領域のバーテックスについて連続に付け、その後に、主領域ＭＡＲのバーテックスにインデックス番号を連続的に付ける。図では、インデックス番号をバーテックスに隣接して示した。
【００９０】
図２５と図１４とを対比して分かるように、電気・電子ネットワーク回路ではエッジに着目してインデックス番号が付されたのに対して、生体分子ネットワーク回路ではバーテックスに着目してインデックス番号が付される。これは、先にも述べたように、電気・電子ネットワーク回路がキルヒホッフの方程式を基礎とするのに対して、生体分子ネットワーク回路は式（１）で説明したレート方程式が基礎となっていることによる。
【００９１】
次に、グラフ表示から回路表示への逆変換により主回路と部分回路の二種類以上の回路にグループ化する手段を述べる。部分領域のエッジとバーテックスのグラフ表示を回路表示に変換するとき、部分領域のバーテックスまたはエッジに対応し、遺伝子、蛋白質と薬物の低分子化合物と生体機能分子間の相互作用からなる部分回路が形成される。また、主領域のエッジまたはバーテックスのグラフ表示を回路表示に変換するとき、主領域のバーテックスまたはエッジに対応し、遺伝子、蛋白質と薬物の低分子化合物と生体機能分子間の相互作用からなる主回路が構成される。部分領域のバーテックスに付けられたインデックス番号と主領域のバーテックスに付けられたインデックス番号に対応し節の番号をつける。図２６に示すように、バーテックスに付けられたインデックス番号の順序で、生体機能素子の濃度に対する変数を列として表し、生体機能素子の濃度に対する方程式を行として連立一次方程式を形成する。生体機能素子濃度に対する連立方程式の行列Ｇはブロック対角帯行列を形成することができる。これは、部分領域内のバーテックスが同じ部分領域内のエッジ内に含まれるときは、同じ部分回路内の生体機能素子の間に行列要素２４０１が発生する。また、主領域が導入され、異なる部分領域に跨るエッジが存在しないことから、部分回路に跨る生体機能分子間の相互作用が存在しなくなり、異なる部分回路の生体機能素子間の非対角的な行列要素は存在しない。一方、部分領域と主領域を跨るエッジは、部分回路と主回路に関係する生体機能分子間の相互作用が存在するため、部分回路と主回路の生体機能素子の間に行列要素２４０２が発生する。また、主回路間の行列要素２４０３が発生する。このようにして、生体機能素子濃度の時間変化に対する方程式に対する行列Ｇは、ブロック的な行列要素が対角項に集まり、行列の右隅の縁には主回路、並びに、主回路と部分回路の節の間の行列要素が集まった構造を形成する。これら前処理過程を通して、生体分子ネットワーク回路に対する連立一次方程式の疎行列構造は、複数の部分回路からなるブロック対角行列に主回路からなる縁付きの行列要素が構成され、ブロック対角縁付き行列に変換することができる。
【００９２】
ブロック対角縁付き行列になれば、電気・電子ネットワーク回路に対して実施したと同様に、主回路の計算処理と複数の部分回路の計算処理を複数のコンピューティングユニットに分配する手段と主回路と複数の部分回路間の通信手順を用いて、生体分子ネットワーク回路シミュレーションの計算所要時間を短縮することができる。
【００９３】
【発明の効果】
本発明によれば、並列分散処理の加速化率を向上することができる。
【図面の簡単な説明】
【図１】本発明の適用対象の並列分散計算装置としての超並列機の構成例を示す図。
【図２】本発明の適用対象の並列分散計算装置としての超並列機の他の構成例を示す図。
【図３】本発明の適用対象の並列分散計算装置としての超並列機の他の構成例を示す図。
【図４】ガウス消去法に代表される連立一次方程式の解法の従来例の一つを説明する図。
【図５】並列分散計算装置上で、電気・電子ネットワーク回路のシミュレーションを並列分散処理する場合の従来例の一つの実行手順の例を示す図。
【図６】データ転送を実行するバスで４台のプロセッサが接続されたワークステーション上で、従来の計算手順と通信手順を用いて並列分散処理により疎行列の解を求めた所要時間の加速化率の例を示す図。
【図７】本発明の実施形態１の概略を示す並列分散環境におけるネットワーク回路の高速計算装置の構成例の概念図。
【図８】本発明によるシミュレーションの対象の一例の電気・電子ネットワーク回路を示す図。
【図９】図８に示す回路の各節に成立するキルヒホッフ方程式のＮ×Ｎ次元行列を示す図。
【図１０】図８に示す電気・電子ネットワーク回路をグラフ表示変換するステップの具体的な処理の第１段階を説明する図。
【図１１】図８に示す電気・電子ネットワーク回路をグラフ表示変換するステップの具体的な処理の第２段階を説明する図。
【図１２】図８に示す電気・電子ネットワーク回路をグラフ表示変換するステップの具体的な処理の最終段階を説明する図。
【図１３】グラフ表示に変換された全領域をグラフ理論を用いて複数の部分領域に分割した結果を模式的に示す図。
【図１４】各部分領域ＡＲ１，ＡＲ２およびＡＲ３から構成されたグループと各部分領域ＡＲ間を跨ぐエッジのみから構成された主領域ＭＡＲに分別した結果を模式的に示す図。
【図１５】図１４に示すエッジに付けられたインデックス番号の順序で、節に対する変数を列として表し、節に対する方程式を行として連立一次方程式を形成したときの行列要素の配列を示す図。
【図１６】ブロック対角行列と縁付きの行列要素とから構成されるブロック対角縁付き行列の例を示す図。
【図１７】主回路と複数の部分回路に分割し構成した電気・電子ネットワーク回路の並列分散処理の実行手順の例を示す図。
【図１８】図８および図９を参照して説明した従来の手法で、キルヒホッフ方程式の連立方程式の１５０００×１５０００次元行の疎行列Ｇの処理を図形化して示す図。
【図１９】図１８と同じキルヒホッフ方程式の連立方程式を、本発明を適用して得られたブロック対角縁付き行列とした後の疎行列Ｇの処理を図形化した図。
【図２０】本発明を適用して超並列機上で高速プロセッサ用ノイズ評価回路の並列分散処理を実行したときのプロセッサに対する加速化率を示す図。
【図２１】本発明を適用する生体分子ネットワーク回路の例を模式的に示す図。
【図２２】図２１に示す生体分子ネットワーク回路の生体機能分子濃度の時間変化を記述する連立一次方程式の行列Ｇの例を示す図。
【図２３】図２１の生体分子ネットワーク回路表示をバーテックスおよびエッジからなるグラフ表示に変換した結果を示す図。
【図２４】図２３のグラフ表示を部分領域ＡＲ１，ＡＲ２およびＡＲ３に分割し、各部分領域のみに属するエッジと部分領域間に跨るエッジとに分割した例を示す図。
【図２５】グラフ理論を用いて複数の部分領域に分割された全領域を各部分領域ＡＲ１，ＡＲ２およびＡＲ３および主領域ＭＡＲに分別した例を示す図。
【図２６】図２５に示すバーテックスに付けられたインデックス番号の順序で、生体機能素子の濃度に対する変数を列として表し、生体機能素子の濃度に対する方程式を行として連立一次方程式を形成したときの行列要素の配列を示す図。
【符号の説明】
１００…制御のためのパソコン、１０１…入力装置、１０２…処理・制御部、１０３…出力装置、１０４…並列分散計算装置、２０１…コンピューティングプロセッサユニット、２０２…メモリユニット、２０３…コンピューティングユニット、２０４…データ転送ネットワーク、３０１…パーソナルコンピュータまたはワークステーション、３０２…インサーネット、４０１…グリッドマシン、４０２…高速ネットワーク、４０３…超並列機、１０２１…回路表示のステップ、１０２２…グラフ表示変換のステップ、１０２３…グラフの重付けのステップ、１０２４…領域分割のステップ、１０２５…２領域グループ化のステップ、１０２６…主回路、部分回路分割のステップ、１０２７…回路計算分配のステップ、１０２８…通信制御のステップ、１０２９…回路計算結果の統合ステップ、５０１…非線形素子、５０２…線形素子、５０３…節、７０１…バーテックス、７０２…エッジ、７０３…重付け、８０１…バーテックス、９０１…エッジ、９０２…主領域でのエッジのインデックス番号、ＡＲ…部分領域、ＭＡＲ…主領域、１００１…部分回路間のブロック行列、１００２…部分回路と主回路間のブロック行列、１００３…主回路間のブロック行列、１１０１…ｉｂ１行ｉｂ１列の対角ブロック、１１０２…ｉｂ２行ｉｂ２列の対角ブロック、１１０３…ｉｂ３行ｉｂ３列の対角ブロック、１００４…ｉｂｎ行ｉｂｎ列の対角ブロック、１１０５…ｉｂｎ行ｉｂ１列の非対角ブロック、１１０６…ｉｂｎ行ｉｂ２列の非対角ブロック、１１０７…ｉｂｎ行ｉｂ３列の非対角ブロック、１１０８…ｉｂ１行ｉｂｎ列の非対角ブロック、１１０９…ｉｂ２行ｉｂｎ列の非対角ブロック、１１１０…ｉｂ３行ｉｂｎ列の非対角ブロック、１２０１…ｉｂ１行ｉｂ１列，ｉｂ１行ｉｂｎ列およびｉｂｎ行ｉｂ１列の対角ブロックの行列要素に関する消去処理、１２０２…ｉｂ２行ｉｂ２列，ｉｂ２行ｉｂ列およびｉｂ行ｉｂ２列の対角ブロックの行列要素に関する消去処理、１２０３…ｉｂ３行ｉｂ３列，ｉｂ３行ｉｂｎ列およびｉｂｎ行ｉｂ３列の対角ブロックの行列要素に関する消去処理、１２０４…Ｐ１，Ｐ２およびＰ３のコンピュ−ティングユニットからＰ４のコンピュ−ティングユニットへのデータの送信処理、１２０５…ｉｂｎ行ｉｂｎ列の対角ブロックの行列要素に関する消去処理、１２０６…ブロック行列のｉｂｎ行ｉｂｎ列の節に対する解、１２０７…Ｐ４のコンピュ−ティングユニットからＰ１，Ｐ２およびＰ３のコンピュ−ティングユニットへのデータの送信処理、１２０８…ブロック行列のｉｂ３行ｉｂ３列の節に対する解、１２０９…ブロック行列のｉｂ２行ｉｂ２列の節に対する解、１２１０…ブロック行列のｉｂ１行ｉｂ１列の節に対する解、１６０１…ｉ１行ｉ１列の行列要素、１６０２…ｉ２行ｉ１列の行列要素、１６０３…ｉ１行ｉ２列の行列要素、１６０４…ｉ２行ｉ２列の行列要素、１６０５…ｉ３行ｉ２列の行列要素、１６０６…ｉ２行ｉ３列の行列要素、１６０７…ｉ３行ｉ３列の行列要素、１６０８…ｉ４行ｉ３列の行列要素、１６０９…ｉ３行ｉ４列の行列要素、１７０１…ｉ１行ｉ１列およびｉ１行ｉ２列の行列要素に関する消去処理、１７０２…ｉ２行ｉ１列，ｉ２行ｉ２列およびｉ２行ｉ３列の行列要素に関する消去処理、１７０３…ｉ３行ｉ２列，ｉ３行ｉ３列およびｉ３行ｉ４列の行列要素に関する消去処理、１７０４…ｉ４行ｉ３列およびｉ４行ｉ４列の行列要素に関する消去処理、１７０５…Ｐ１からＰ３へのデータ送信、１７０６…Ｐ３からＰ２へのデータ送信、１７０７…Ｐ２からＰ４へのデータ送信、１７０８…Ｐ４からＰ２へのデータ送信、１９０１…遺伝子、１９０２…蛋白質、１９０３…薬物の低分子化合物、２１０１…バーテックス、２１０２…エッジ、２４０１…部分回路間のブロック行列、２４０２…部分回路と主回路間のブロック行列、２４０３…主回路間のブロック行列。
【図１】
2004240541.tif 000007
【図２】
2004240541.tif 000008
【図３】
2004240541.tif 000009
【図４】
2004240541.tif 000010
【図５】
2004240541.tif 000011
【図６】
2004240541.tif 000012
【図７】
2004240541.tif 000013
【図８】
2004240541.tif 000014
【図９】
2004240541.tif 000015
【図１０】
2004240541.tif 000016
【図１１】
2004240541.tif 000017
【図１２】
2004240541.tif 000018
【図１３】
2004240541.tif 000019
【図１４】
2004240541.tif 000020
【図１５】
2004240541.tif 000021
【図１６】
2004240541.tif 000022
【図１７】
2004240541.tif 000023
【図１８】
2004240541.tif 000024
【図１９】
2004240541.tif 000025
【図２０】
2004240541.tif 000026
【図２１】
2004240541.tif 000027
【図２２】
2004240541.tif 000028
【図２３】
2004240541.tif 000029
【図２４】
2004240541.tif 000030
【図２５】
2004240541.tif 000031
【図２６】
2004240541.tif 000032