(57)【要約】【課題】マルチコア・プロセッサを搭載したコンピュータによる粒子の挙動解析の並列分散処理において、力分割法による並列分散処理の実行速度を向上させる。【解決手段】各々が複数のプロセッサコア（ノード）を持ち、並列分散処理アルゴリズムを用いてプロセッサコアごとに計算対象が割り当てられた複数の計算機を備える。この計算機は、プロセッサコアごとに、粒子間に働く相互作用力を計算する第１計算部と、計算された相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備える。個々のプロセッサコアは、並列分散処理アルゴリズムにより、第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられる。また、第１計算部の計算対象として、相互作用力を計算する対象である粒子の組み合わせであって、同じ計算機上のプロセッサコアの第２計算部に割り当てられている粒子の組み合わせが割り当てられる。【選択図】図６
2010003156.tif 000002
【特許請求の範囲】
【請求項１】
各々が複数のプロセッサコアを持ち、相互に接続され、並列分散処理アルゴリズムを用いて当該プロセッサコアごとに計算対象が割り当てられた複数の計算機を備え、
前記計算機は、前記プロセッサコアごとに、
粒子間に働く相互作用力を計算する第１計算部と、
前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、
個々の前記プロセッサコアは、
前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、
前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、相互作用力を計算する対象である粒子の組み合わせであって、同じ前記計算機上の前記プロセッサコアの前記第２計算部に割り当てられている粒子の組み合わせが割り当てられる
ことを特徴とする粒子挙動解析装置。
【請求項２】
前記並列分散処理アルゴリズムは、行および列の一方に相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づくことを特徴とする請求項１に記載の粒子挙動解析装置。
【請求項３】
前記計算機は、自身の個々の前記プロセッサコアにおける前記第１計算部による相互作用力の計算結果を、前記第２計算部に対する割り当てにしたがって、各粒子が割り当てられたプロセッサコアに収集し、各当該プロセッサコアにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項１に記載の粒子挙動解析装置。
【請求項４】
粒子間に働く相互作用力および個々の粒子の挙動を、並列分散処理アルゴリズムによる割り当てにしたがって、並列分散処理により計算する複数の計算ノードを備え、
前記計算ノードは、
複数のプロセッサコアを持つ計算機における個々の当該プロセッサコアであり、
粒子間に働く相互作用力を計算する第１計算部と、
前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、
個々の前記計算ノードは、
前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、
前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、相互作用力を計算する対象である粒子の組み合わせであって、同じ前記計算機上の前記プロセッサコアである前記計算ノードの前記第２計算部に割り当てられている粒子の組み合わせが割り当てられる
ことを特徴とする粒子挙動解析装置。
【請求項５】
前記並列分散処理アルゴリズムは、行および列の一方に前記相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づくことを特徴とする請求項４に記載の粒子挙動解析装置。
【請求項６】
前記計算ノードである前記プロセッサコアが設けられる前記計算機は、自身のプロセッサコアである個々の当該計算ノードにおける前記第１計算部による前記相互作用力の計算結果を、前記第２計算部に対する割り当てにしたがって、各粒子が割り当てられた計算ノードに収集し、各当該計算ノードにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項４に記載の粒子挙動解析装置。
【請求項７】
各々が複数のプロセッサコアを持ち、相互に接続され、並列分散処理アルゴリズムを用いて当該プロセッサコアごとに計算対象が割り当てられた複数の計算機を備え、
前記計算機は、前記プロセッサコアごとに、
粒子間に働く相互作用力を計算する第１計算部と、
前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、
個々の前記プロセッサコアは、
前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、
前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、行および列の一方に前記相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づいて、当該力マトリクスにおける当該相互作用力を受ける粒子を登録した行または列に沿って、同じ前記計算機上の前記プロセッサコアが並ぶように、当該相互作用力を計算する対象である粒子の組み合わせが割り当てられる
ことを特徴とする粒子挙動解析装置。
【請求項８】
各前記プロセッサコアは、前記相互作用力の計算結果を、前記力マトリクスにおける当該相互作用力を受ける粒子を割り当てた行または列に沿って収集し、各当該プロセッサコアにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項７に記載の粒子挙動解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、粒子の挙動を解析しシミュレーションする装置に関する。
【背景技術】
【０００２】
粒子の挙動をシミュレーションする解析処理では、粒子の数が多くなると計算量が膨大になる。そのため、一般に、複数台の計算機（コンピュータ）を用いた並列分散処理による解析が行われている。並列分散処理による粒子の挙動解析の手法としては、粒子分割法、領域分割法、力分割法等の種々の手法がある。
【０００３】
特許文献１に記載された従来技術は、力分割法を用いた並列分散処理による解析手法である。この従来技術は、各粒子の磁気力、静電気力、接触力の各粒子間相互作用について、それぞれ各別の力マトリクスを用いて、特定プロセッサに分散して計算、特定プロセッサ間で通信し分散して計算した相互作用力の和を求め、各粒子の運動方程式を解いて位置座標を計算する。そして、各粒子の位置座標を特定プロセッサに通信し、計算情報を更新する。この処理を、所定の計算ステップに到達するまで繰り返す。
【０００４】
【特許文献１】特開２００７−１９３１５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、マルチコア・プロセッサを搭載したコンピュータによる粒子の挙動解析の並列分散処理において、力分割法による並列分散処理の実行速度を向上させることにある。
【課題を解決するための手段】
【０００６】
請求項１に記載の発明は、各々が複数のプロセッサコアを持ち、相互に接続され、並列分散処理アルゴリズムを用いて当該プロセッサコアごとに計算対象が割り当てられた複数の計算機を備え、前記計算機は、前記プロセッサコアごとに、粒子間に働く相互作用力を計算する第１計算部と、前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、個々の前記プロセッサコアは、前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、相互作用力を計算する対象である粒子の組み合わせであって、同じ前記計算機上の前記プロセッサコアの前記第２計算部に割り当てられている粒子の組み合わせが割り当てられることを特徴とする粒子挙動解析装置である。
請求項２に記載の発明は、前記並列分散処理アルゴリズムは、行および列の一方に相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づくことを特徴とする請求項１に記載の粒子挙動解析装置である。
請求項３に記載の発明は、前記計算機は、自身の個々の前記プロセッサコアにおける前記第１計算部による相互作用力の計算結果を、前記第２計算部に対する割り当てにしたがって、各粒子が割り当てられたプロセッサコアに収集し、各当該プロセッサコアにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項１に記載の粒子挙動解析装置である。
請求項４に記載の発明は、粒子間に働く相互作用力および個々の粒子の挙動を、並列分散処理アルゴリズムによる割り当てにしたがって、並列分散処理により計算する複数の計算ノードを備え、前記計算ノードは、複数のプロセッサコアを持つ計算機における個々の当該プロセッサコアであり、粒子間に働く相互作用力を計算する第１計算部と、前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、個々の前記計算ノードは、前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、相互作用力を計算する対象である粒子の組み合わせであって、同じ前記計算機上の前記プロセッサコアである前記計算ノードの前記第２計算部に割り当てられている粒子の組み合わせが割り当てられることを特徴とする粒子挙動解析装置である。
請求項５に記載の発明は、前記並列分散処理アルゴリズムは、行および列の一方に前記相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づくことを特徴とする請求項４に記載の粒子挙動解析装置である。
請求項６に記載の発明は、前記計算ノードである前記プロセッサコアが設けられる前記計算機は、自身のプロセッサコアである個々の当該計算ノードにおける前記第１計算部による相互作用力の計算結果を、前記第２計算部に対する割り当てにしたがって、各粒子が割り当てられた当該計算ノードに収集し、各当該計算ノードにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項４に記載の粒子挙動解析装置である。
請求項７に記載の発明は、各々が複数のプロセッサコアを持ち、相互に接続され、並列分散処理アルゴリズムを用いて当該プロセッサコアごとに計算対象が割り当てられた複数の計算機を備え、前記計算機は、前記プロセッサコアごとに、粒子間に働く相互作用力を計算する第１計算部と、前記第１計算部により計算された前記相互作用力に基づいて個々の粒子の挙動を計算する第２計算部とを備え、個々の前記プロセッサコアは、前記並列分散処理アルゴリズムにより、前記第２計算部の計算対象として、挙動を計算する対象である粒子が割り当てられ、前記並列分散処理アルゴリズムにより、前記第１計算部の計算対象として、行および列の一方に前記相互作用力を受ける粒子を割り当て、他方に当該相互作用力を作用させる粒子を割り当て、各粒子の行と列の交点を含む領域に当該相互作用力を計算する前記プロセッサコアを割り当てた力マトリクスに基づいて、当該力マトリクスにおける当該相互作用力を受ける粒子を登録した行または列に沿って、同じ前記計算機上の前記プロセッサコアが並ぶように、当該相互作用力を計算する対象である粒子の組み合わせが割り当てられることを特徴とする粒子挙動解析装置である。
請求項８に記載の発明は、各前記プロセッサコアは、相互作用力の計算結果を、前記力マトリクスにおける相互作用力を受ける粒子を割り当てた行または列に沿って収集し、各当該プロセッサコアにおいて、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動を計算することを特徴とする請求項７に記載の粒子挙動解析装置である。
【発明の効果】
【０００７】
請求項１の発明によれば、同じ計算機上のプロセッサコア間で相互作用力の計算結果をやり取りすることにより、プロセッサ間通信を削減し、並列分散処理の実行速度を向上させることができる。
請求項２の発明によれば、力マトリクスを用いることにより、同じ計算機上のプロセッサコア間で相互作用力の計算結果がやり取りされるように、計算機への割り当てを行うことができる。
請求項３の発明によれば、各計算機が自身のプロセッサコア間で相互作用力の計算結果をやり取りすることにより、プロセッサ間通信を削減することができる。
請求項４の発明によれば、同じ計算機上のプロセッサコアである計算ノード間で相互作用力の計算結果をやり取りすることにより、プロセッサ間通信を削減することができる。
請求項５の発明によれば、力マトリクスを用いることにより、同じ計算機上の計算ノード間で相互作用力の計算結果がやり取りされるように、計算機への割り当てを行うことができる。
請求項６の発明によれば、各計算機が自身に搭載された計算ノード間で相互作用力の計算結果をやり取りすることにより、プロセッサ間通信を削減することができる。
請求項７の発明によれば、力マトリクスを用いて同じ計算機上のプロセッサコアである計算ノード間で相互作用力の計算結果をやり取りするように各計算ノードへの割り当てを行うことにより、プロセッサ間通信を削減することができる。
請求項８の発明によれば、各計算機が自身に搭載された計算ノード間で相互作用力の計算結果をやり取りすることにより、プロセッサ間通信を削減することができる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜システム構成＞
図１は、本実施形態が適用される並列計算システムの全体構成を示す図である。
図１に示す本実施形態のシステムは、複数台の計算ノード１１０を備えて構成される。各計算ノード１１０は、ネットワーク接続されており、いわゆるクラスタコンピューティングを実現する。また各ノードは、パーソナルコンピュータ等のコンピュータ（計算機）で実現される。また、特に図示しないが、複数の計算ノード１１０を統括的に制御し、解析を開始させたり、最終的な解析結果を取得して保存し、または出力したりする制御装置が、必要に応じて設けられる。
【０００９】
図２は、計算ノード１１０を実現するコンピュータのハードウェア構成例を示す図である。
図２に示すコンピュータ１０は、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、記憶手段である主記憶装置（メインメモリ）１０ｂおよび外部記憶装置１０ｃを備える。ＣＰＵ１０ａとしては、クアッド・コア（quad-core）やデュアル・コア（dual core）等のように複数のプロセッサコアを集積したマルチコア・プロセッサ（multi-core processor）が用いられる。外部記憶装置１０ｃとしては、一般に磁気ディスク装置（ＨＤＤ：Hard Disk Drive）が用いられるが、より高速にデータの読み書きを行うことができるＳＳＤ（Solid State Drive）を用いても良い。また、図２のコンピュータ１０は、ネットワークを介して外部装置に接続するためのネットワークＩ／Ｆ（インターフェイス）１０ｄと、ディスプレイ装置へ表示出力を行うための表示機構１０ｅと、音声出力を行うための音声機構１０ｆとを備える。さらに、キーボードやマウス等の入力デバイス１０ｇを備える。ＣＰＵ１０ａと他の構成要素との間には、図示しないチップセットやブリッジ回路が介在している。
【００１０】
図２において、各構成要素は、システムバスや入出力バス等の各種のバスを介して接続される。例えば、ＣＰＵ１０ａと主記憶装置１０ｂの間は、システムバスやメモリバスを介して接続される。また、ＣＰＵ１０ａと外部記憶装置１０ｃ、ネットワークＩ／Ｆ１０ｄ、表示機構１０ｅ、音声機構１０ｆ、入力デバイス１０ｇ等との間は、ＰＣＩ（Peripheral Components Interconnect）、ＰＣＩ  Ｅｘｐｒｅｓｓ、シリアルＡＴＡ（AT Attachment）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）等の入出力バスを介して接続される。
【００１１】
なお、図２は、並列計算システムを構成する計算ノード１１０を実現するのに好適なコンピュータのハードウェア構成を例示するに過ぎず、図示の構成に限定されないことは言うまでもない。例えば、計算ノード１１０の補助記憶装置として、外部記憶装置１０ｃの他に、フレキシブルディスクや光学ディスクをメディアとするドライブを設けたり、ＵＳＢメモリを設けたりしても良い。ＵＳＢメモリは、ＵＳＢを介してブリッジ回路に接続されることとなる。また、音声機構１０ｆを独立した構成とせず、チップセットの機能として備えても良い。
【００１２】
詳しくは後述するが、ＣＰＵ１０ａとしてマルチコア・プロセッサを用いる場合、個々のプロセッサコアは、各々、個別の計算ノード１１０として独立に動作する。この場合、図２に示すハードウェア構成は、複数の計算ノード１１０を実現するコンピュータの構成として把握される。
【００１３】
＜ノードの機能＞
図３は、計算ノード１１０の機能構成を示す図である。
計算ノード１１０は、自ノードに割り当てられた解析対象に対する個々の処理を実行する装置である。図３に示すように、各計算ノード１１０は、それぞれ、並列分散処理アルゴリズムによる制御を行うための並列分散処理制御部１２０と、解析対象のデータや解析結果を保持する保持部１２１と、解析処理のための計算を行う第１計算部１２２および第２計算部１２３と、他の計算ノード１１０との間でデータの送受信を行うための通信部１２４とを備える。並列分散処理制御部１２０、第１計算部１２２および第２計算部１２３は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能である。保持部１２１は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂや外部記憶装置１０ｃにより実現される。通信部１２４は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行しネットワークＩ／Ｆ１０ｄを制御することで実現される。このように、図３に示す計算ノード１１０の各機能ブロックは、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００１４】
並列分散処理制御部１２０は、並列分散処理アルゴリズムにより、分散処理における自ノードの動作を制御する。本実施形態で用いられる並列分散処理アルゴリズムは、力マトリクスと呼ぶデータ構造に基づいて各計算ノード１１０へのデータの割り当てを行う。本実施形態では、相互作用力を計算する対象である粒子の組み合わせが第１計算部１２２の計算対象として割り当てられ、挙動を計算する対象である粒子が第２計算部１２３の計算対象として割り当てられる。並列分散処理制御部１２０は、この並列分散処理アルゴリズムによる割り当てに基づいて、自ノードに割り当てられた計算対象のデータを取得し、保持部１２１に保持させる。また、並列分散処理制御部１２０は、この並列分散処理アルゴリズムによる割り当てに基づいて、自ノードにおける計算結果を他の計算ノード１１０とやり取りする。力マトリクスおよび力マトリクスに基づくデータの割り当て方法の詳細については後述する。
【００１５】
保持部１２１は、並列分散処理制御部１２０の制御により、自ノードの計算に必要なデータを取得して保持する。また、第１計算部１２２および第２計算部１２３による計算結果を保持する。ここで、自ノードの計算に必要なデータとは、並列分散処理アルゴリズムにより自ノードに割り当てられた粒子のデータと、力マトリクスに基づく分散処理により相互作用力を計算するために用いられるデータである。これらのデータは、自ノードに割り当てられた粒子の初期データが外部から取得された後は、計算ノード１１０どうしの間で相互にやり取りされる。
【００１６】
第１計算部１２２は、粒子間に働く相互作用力を計算する。解析対象の粒子の材質等によって計算すべき相互作用の種類は異なるが、通常は、磁気相互作用、静電相互作用、機械的相互作用（壁などの物体と粒子との間の接触力や粒子間接触の接触力）などが計算される。この相互作用力の計算は、力マトリクスに基づいて複数の計算ノード１１０に分散されて実行される。したがって、第１計算部１２２は、この分散によって自ノードが担当する粒子間の相互作用力を計算することとなる。
【００１７】
第２計算部１２３は、粒子の挙動を計算する。すなわち、第１計算部１２２により計算された相互作用力と粒子の現在位置および属性に基づいて、粒子の位置がどのように変化するかを計算する。粒子の属性としては、例えば大きさ、質量、速度、電荷、磁化などが挙げられる。
【００１８】
通信部１２４は、並列分散処理制御部１２０の制御により、自ノードに割り当てられた粒子の初期データを受信して保持部１２１に保持させる。また、通信部１２４は、並列分散処理制御部１２０の制御により、他の計算ノード１１０との間で第１計算部１２２および第２計算部１２３による計算に必要なデータを相互に送受信する。具体的には、自ノードの第１計算部１２２および第２計算部１２３による計算に必要なデータを他ノードから受信する。そして、保持部１２１に保持されている第１計算部１２２および第２計算部１２３の計算結果をその計算結果が必要な他ノードに送信する。
【００１９】
＜力マトリクスに基づく粒子の割り当ておよび計算＞
力分割法では、粒子間に働く相互作用力の計算が分散処理により実行される。本実施形態では、この粒子間に働く相互作用力の計算とは別に、各粒子の挙動の計算についても分散処理により実行される。すなわち、本実施形態では、粒子間に働く相互作用力の計算と各粒子の挙動の計算とが個別のアルゴリズムにより分散処理される。したがって、力分割法による並列分散処理では、各計算ノード１１０に対し、挙動計算の対象である粒子が割り当てられ、かつ相互作用力の計算の対象である粒子の組み合わせが割り当てられる。
【００２０】
この力分割法では、各計算ノード１１０は、まず、自ノードに割り当てられた粒子の組み合わせに関して、その粒子間に働く相互作用力を計算する。そして、粒子ごとの相互作用力の計算結果が、個々の粒子が割り当てられている各計算ノード１１０に集められる。次に、各計算ノード１１０は、取得した自ノードに割り当てられている粒子に働く相互作用力の総和を計算し、この総和値を用いて、この粒子の挙動を計算する。
【００２１】
ここで、各計算ノード１１０に対する、挙動計算の対象である粒子の割り当て、および相互作用力の計算の対象である粒子の組み合わせの割り当ては、力マトリクスに基づいて行われる。力マトリクスとは、各計算ノード１１０と挙動計算の対象である粒子との対応関係（割り当て）、および各計算ノード１１０と相互作用力の計算の対象である粒子の組み合わせとの対応関係（割り当て）を記述するデータ構造である。
【００２２】
図４は、力マトリクスの例を示す図である。
図４に示す力マトリクスは、３２個の粒子（粒子番号０〜３１）を１６の計算ノード１１０（ノード番号０〜１５）に割り当てた例を示している。例えば、ノード番号０の計算ノード１１０には粒子番号０、１の２つの粒子が割り当てられている。力マトリクスでは、行および列の一方に相互作用力を受ける粒子が登録され、他方に当該相互作用力を作用させる粒子が登録され、各粒子の行と列の交点を含む領域に当該相互作用力を計算する計算ノードが登録される。
【００２３】
図４の力マトリクスにおいて、縦方向のノード番号ｉおよび粒子番号と横方向のノード番号ｊおよび粒子番号は、相互作用力を計算する際の粒子の組み合わせを示す。より詳細には、ノード番号ｉに割り当てられた粒子がノード番号ｊに割り当てられた粒子から受ける相互作用力が計算される。そして、縦横ノード４個分のマス目は、該当する組み合わせの粒子の相互作用力を計算する計算ノード１１０を示す。具体的には、例えばノード＃６（ノード番号６の計算ノード１１０）は、
・ノード番号４に割り当てられた２個の粒子とノード番号２、６、１０、１４に割り当てられた８個の粒子の相互作用力、
・ノード番号５に割り当てられた２個の粒子とノード番号２、６、１０、１４に割り当てられた８個の粒子の相互作用力、
・ノード番号６に割り当てられた２個の粒子とノード番号２、６、１０、１４に割り当てられた８個の粒子の相互作用力、
・ノード番号７に割り当てられた２個の粒子とノード番号２、６、１０、１４に割り当てられた８個の粒子の相互作用力、
をそれぞれ計算する。このノード＃６において、ノード番号４に割り当てられた粒子番号８、９の粒子とノード番号２に割り当てられた粒子番号４、５の粒子の組み合わせでは、・粒子番号８の粒子に対して働く、粒子番号４の粒子による相互作用力、
・粒子番号８の粒子に対して働く、粒子番号５の粒子による相互作用力、
・粒子番号９の粒子に対して働く、粒子番号４の粒子による相互作用力、
・粒子番号９の粒子に対して働く、粒子番号５の粒子による相互作用力、
の４種類の相互作用力が計算される。したがって、ノード番号の組み合わせごとに４種類ずつの相互作用力が計算される。ただし、ノード番号６とノード番号６の組み合わせは２個の粒子が同一なので、粒子番号１２の粒子に対して働く粒子番号１３の粒子による相互作用力と、粒子番号１３の粒子に対して働く粒子番号１２の粒子による相互作用力の２つの相互作用力のみが求められる。すなわち、個々の計算ノード１１０は、６２（＝８×８−２）組の粒子の組み合わせについて相互作用力の計算を行うこととなる。
【００２４】
図５は、ノード＃６が相互作用力の計算を担当する粒子の組み合わせを示す。
なお、ノード番号６とノード番号６の組み合わせにおける２つの粒子間に働く相互作用力の大きさは同じ（反対方向）であるから、力の大きさの計算は１回だけ行うようにしても良い。
【００２５】
上記のように相互作用力の計算についての分散処理が行われた後、計算ノード１１０間で通信が行われ、各粒子に関する相互作用力の計算結果がその粒子を割り当てられた計算ノード１１０に集められる。図４の力マトリクスを参照すると、例えば、ノード番号６の計算ノード１１０に割り当てられている粒子番号１２、１３の粒子に対して働く相互作用力は、ノード＃４〜＃７の４つの計算ノード１１０により計算されている。同様に、ノード番号４の計算ノード１１０に割り当てられている粒子番号８、９の粒子に対して働く相互作用力、ノード番号５の計算ノード１１０に割り当てられている粒子番号１０、１１の粒子に対して働く相互作用力、ノード番号７の計算ノード１１０に割り当てられている粒子番号１４、１５の粒子に対して働く相互作用力は、いずれもノード＃４〜＃７の４つの計算ノード１１０により計算されている。したがって、図４の力マトリクスにおいて行方向（横方向）に並ぶ４つの計算ノード１１０（ノード＃４〜＃７）の間で通信を行うことで、各計算ノード１１０に、自ノードに割り当てられた粒子に関する相互作用力の計算結果が集まることとなる。図４の力マトリクスにおける他の行方向に並ぶ４つの計算ノード１１０の組（ノード＃０〜＃３、ノード＃８〜＃１１、ノード＃１２〜＃１５）についても同様である。
【００２６】
各計算ノード１１０は、上記のようにして自ノードに割り当てられた粒子に関する相互作用力の計算結果を収集し、収集した計算結果の総和値を用いて運動方程式を解き、粒子の挙動（移動後の位置）を計算する。そして、計算結果を、次の相互作用力の計算サイクルにおいて自ノードに割り当てられた粒子の情報を必要とする他の計算ノード１１０に配信する。例えば、ノード＃６で計算された粒子番号１２、１３の粒子の情報は、自ノード（ノード＃６）と共にこれらの粒子に対して働く相互作用力を計算するノード＃４、＃５、＃７と、これらの粒子から他の粒子に対して働く相互作用力を計算するノード＃２、＃１０、＃１４により必要とされる。したがって、図４の力マトリクスにおいて、ノード＃６を基準として、行方向に並ぶ他の計算ノード１１０（ノード＃４、＃５、＃７）と、列方向（縦方向）に並ぶ他の計算ノード１１０（ノード＃２、＃１０、＃１４）に、ノード＃６の計算結果が配信される。同様にして、各計算ノード１１０は、図４の力マトリクスにおいて、自ノードを基準として行方向に並ぶ他の計算ノード１１０および列方向に並ぶ他の計算ノード１１０に対して、自ノードの計算結果を配信する。
【００２７】
以上のように、力マトリクスを用いた力分割法による分散処理によれば、各計算ノード１１０は、自ノードを基準として、力マトリクスの行方向に並ぶ他の計算ノード１１０と列方向に並ぶ他の計算ノード１１０との間でのみ通信が行われる。図４に示した力マトリクスでは、各計算ノード１１０は、行方向に並ぶ３つと列方向に並ぶ３つの合計６つの計算ノード１１０とのみ通信を行えば良い。そのため、分散処理全体における通信に要するコストの割合が低減する。
【００２８】
＜マルチコア・プロセッサにおける粒子の割り当て＞
今日、１つのＣＰＵパッケージ内に複数のプロセッサコアを備えたマルチコア・プロセッサが存在する。マルチコア・プロセッサの各プロセッサコアは独立して動作するため、各々のプロセッサコアを、別個の計算ノード１１０として用いて良い。このマルチコア・プロセッサでは、多くの場合、複数のプロセッサコアが２次キャッシュ等のキャッシュメモリやメインメモリを共有する構成が採られる。この場合、１つのマルチコア・プロセッサ上のプロセッサコア間でデータ交換する場合、共有するメモリへの読み書きを介してデータの受け渡しが行われ、プロセッサ間通信を行う必要がない。この特徴を利用して、マルチコア・プロセッサにおけるプロセッサコアを力マトリクスのマス目に適切に配置すれば、分散処理における通信コストがさらに低減する。
【００２９】
具体的には、計算ノード１１０である各コアプロセッサに、挙動計算の対象である粒子を割り当て、かつ同じマルチコア・プロセッサ上の複数のプロセッサコアに、そのプロセッサコアに割り当てられた粒子に作用する相互作用力の計算対象である粒子の組み合わせを割り当てる。力マトリクスに基づいて表現すれば、相互作用力を受ける粒子を登録した行（または列）に沿って、同じマルチコア・プロセッサ上の複数のプロセッサコアが並ぶように、相互作用力の計算対象である粒子の組み合わせが割り当てられる。以下、４個のコアプロセッサが搭載されたクアッド・コアと２個のコアプロセッサが搭載されたデュアル・コアを例として、効率の良い力マトリクスのレイアウトについて説明する。
【００３０】
クアッド・コアは、１つのマルチコア・プロセッサ（以下、クアッド・コアＣＰＵ）上に４個のプロセッサコアを備える。そこで、この４個のプロセッサコアを、それぞれ１つの計算ノード１１０に割り当てる。これにより、１つのクアッド・コアＣＰＵを持つコンピュータ（例えば図２のコンピュータ１０）が４つの計算ノード１１０に対応する。例えば、図４に示した力マトリクスでは、１６個の計算ノード１１０が用いられているので、４つのクアッド・コアＣＰＵで１６個の計算ノード１１０全てに対応する。
【００３１】
図６は、クアッド・コアＣＰＵを用いる場合の力マトリクスのレイアウトの例を説明する図である。
図６に示す例では、力マトリクスの行方向に並ぶ４つの計算ノード１１０に、１つのクアッド・コアＣＰＵ上のプロセッサコアが割り当てられている。具体的には、クアッド・コアＣＰＵ＃０のプロセッサコアがノード＃０〜＃３に割り当てられ、クアッド・コアＣＰＵ＃１のプロセッサコアがノード＃４〜＃７に割り当てられ、クアッド・コアＣＰＵ＃２のプロセッサコアがノード＃８〜＃１１に割り当てられ、クアッド・コアＣＰＵ＃３のプロセッサコアがノード＃１２〜＃１５に割り当てられている。
【００３２】
このように構成すると、相互作用力の計算結果を各粒子が割り当てられた計算ノード１１０に集める際のデータのやり取りにおいて、プロセッサ間通信を行う必要がなくなる。図４を参照して説明したように、相互作用力の計算結果は、力マトリクスの行方向に並ぶ計算ノード１１０の間でのみやり取りされるからである。また、各計算ノード１１０による粒子の挙動計算の結果を他の計算ノード１１０に配信する際のデータのやり取りにおいても、計算結果を力マトリクスの行方向に並ぶ計算ノード１１０に渡す場合には、プロセッサ間通信を必要としない。
【００３３】
したがって、図６のようにプロセッサコアが割り当てられたクアッド・コアＣＰＵは、各計算ノード１１０による粒子の挙動計算の結果を他の計算ノード１１０に配信する際のデータのやり取りにおいて、計算結果を力マトリクスの列方向に並ぶ計算ノード１１０に渡す場合にのみ、プロセッサ間通信を行う。このため、分散処理全体における通信に要するコストの割合が一層低減する。
【００３４】
次に、デュアル・コアを用いる場合について説明する。
デュアル・コアは、１つのマルチコア・プロセッサ（以下、デュアル・コアＣＰＵ）上に２個のプロセッサコアを備える。そこで、この２個のプロセッサコアを、それぞれ１つの計算ノード１１０に割り当てる。これにより、１つのクアッド・コアＣＰＵを持つコンピュータ（例えば図２のコンピュータ１０）が２つの計算ノード１１０に対応する。図４に示した力マトリクスでは、１６個の計算ノード１１０が用いられているので、８つのクアッド・コアＣＰＵで１６個の計算ノード１１０全てに対応する。
【００３５】
図７は、デュアル・コアＣＰＵを用いる場合の力マトリクスのレイアウトの例を説明する図である。
図７に示す例では、力マトリクスの行方向に並ぶ２つの計算ノード１１０に、１つのデュアル・コアＣＰＵ上のプロセッサコアが割り当てられている。具体的には、デュアル・コアＣＰＵ＃０のプロセッサコアがノード＃０、＃１に割り当てられ、デュアル・コアＣＰＵ＃１のプロセッサコアがノード＃２、＃３に割り当てられ、デュアル・コアＣＰＵ＃２のプロセッサコアがノード＃４、＃５に割り当てられ、デュアル・コアＣＰＵ＃３のプロセッサコアがノード＃６、＃７に割り当てられ、デュアル・コアＣＰＵ＃４のプロセッサコアがノード＃８、＃９に割り当てられ、デュアル・コアＣＰＵ＃５のプロセッサコアがノード＃１０、＃１１に割り当てられ、デュアル・コアＣＰＵ＃６のプロセッサコアがノード＃１２、＃１３に割り当てられ、デュアル・コアＣＰＵ＃７のプロセッサコアがノード＃１４、＃１５に割り当てられている。
【００３６】
このように構成すると、相互作用力の計算結果を各粒子が割り当てられた計算ノード１１０に集める際のデータのやり取りのうち、図７でペアとなっている２つの計算ノード１１０の間でのデータのやり取りにおいて、プロセッサ間通信を行う必要がなくなる。また、各計算ノード１１０による粒子の挙動計算の結果を他の計算ノード１１０に配信する際のデータのやり取りにおいても、計算結果を力マトリクスの行方向に並ぶ計算ノード１１０のうち、ペアとなっている２つの計算ノード１１０の間でのデータのやり取りには、プロセッサ間通信を必要としない。
【００３７】
したがって、図７のようにプロセッサコアが割り当てられたデュアル・コアＣＰＵは、力マトリクスの行方向に並ぶ計算ノード１１０のうち、異なるデュアル・コアＣＰＵが割り当てられている計算ノード１１０の間のデータのやり取りと、計算結果を力マトリクスの列方向に並ぶ計算ノード１１０の間のデータのやり取りにおいてのみ、プロセッサ間通信を行う。このため、分散処理全体における通信に要するコストの割合が一層低減する。
【００３８】
なお、マルチコア・プロセッサの各プロセッサコアに対して、粒子及び粒子の組み合わせを割り当て、並列分散処理を実行させるための（すなわち、個々のプロセッサコアを個別の計算ノード１１０として動作させるための）具体的な方法としては、例えば、プログラムにおいて、どの計算をどのプロセッサコアで実行するかを指定しておくといった、マルチコア・プロセッサに対するプログラミングの手法として一般的な既存の方法を用いれば良い。
【００３９】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。例えば、上記の実施形態では、計算ノード１１０にクアッド・コアＣＰＵを用いた場合とデュアル・コアＣＰＵを用いた場合について、力マトリクスでのレイアウトを示して説明したが、計算ノード１１０に６つ以上のプロセッサコアを備えるマルチコア・プロセッサを用いても良い。その他、上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００４０】
【図１】本実施形態が適用される並列計算システムの全体構成を示す図である。
【図２】本実施形態の計算ノードを実現するコンピュータのハードウェア構成例を示す図である。
【図３】本実施形態の計算ノードの機能構成を示す図である。
【図４】本実施形態で用いられる力マトリクスの例を示す図である。
【図５】図４の力マトリクスにおいて、ノード＃６が相互作用力の計算を担当する粒子の組み合わせを示す図である。
【図６】本実施形態において、クアッド・コアＣＰＵを用いる場合の力マトリクスのレイアウトの例を説明する図である。
【図７】本実施形態において、デュアル・コアＣＰＵを用いる場合の力マトリクスのレイアウトの例を説明する図である。
【符号の説明】
【００４１】
１１０…計算ノード、１２０…並列分散処理制御部、１２１…保持部、１２２…第１計算部、１２３…第２計算部、１２４…通信部
【図１】
2010003156.tif 000003
【図２】
2010003156.tif 000004
【図３】
2010003156.tif 000005
【図４】
2010003156.tif 000006
【図５】
2010003156.tif 000007
【図６】
2010003156.tif 000008
【図７】
2010003156.tif 000009