(57)【要約】【課題】クラスタにおいて、外部記憶装置としてＨＤＤを用いる場合に比べ、並列計算の処理に要する時間を削減する。【解決手段】計算を行う複数の計算ノード１２０と、この複数の計算ノード１２０に接続されて複数の計算ノード１２０による並列計算を管理する管理ノード１１０と、管理ノード１１０に接続されて管理ノード１１０および複数の計算ノード１２０からアクセス可能な、半導体メモリを記憶媒体とするＳＳＤ１３０とを備える。管理ノード１１０は、処理対象のデータを個々の計算ノード１２０に割り当て、計算ノード１２０ごとの個別のデータファイルを作成してＳＳＤ１３０に書き込む。計算ノード１２０は、ＳＳＤ１３０にアクセスして自ノードに割り当てられたデータファイルおよびこのデータファイルを用いた計算において参照する他のデータファイルを読み込んで計算を行い、計算結果をＳＳＤ１３０に書き込む。【選択図】図１
2009087282.tif 000002
【特許請求の範囲】
【請求項１】
計算を行う複数の計算ノードと、
前記複数の計算ノードに接続され、当該複数の計算ノードによる並列計算を管理する管理ノードと、
前記管理ノードに接続され、当該管理ノードおよび前記複数の計算ノードからアクセス可能な、半導体メモリを記憶媒体とする外部記憶装置とを備え、
前記管理ノードは、処理対象のデータを個々の前記計算ノードに割り当て、当該計算ノードごとの個別のデータファイルを前記外部記憶装置に作成し、
前記計算ノードは、前記外部記憶装置にアクセスして自ノードに割り当てられた前記データファイルおよび当該データファイルを用いた計算において参照する他のデータファイルを読み込んで計算を行い、計算結果を前記外部記憶装置に出力することを特徴とする並列計算システム。
【請求項２】
前記管理ノードは、前記計算ノードごとに、計算に必要な前記データファイルを指定する指定情報を生成して前記外部記憶装置に保持させ、
前記計算ノードは、前記外部記憶装置にアクセスして前記指定情報に基づき自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込むことを特徴とする請求項１に記載の並列計算システム。
【請求項３】
前記管理ノードは、個々の前記計算ノードの計算に必要な前記データファイルを指定する指定情報を、当該計算ノードに割り当てたデータファイル内に記述し、
前記計算ノードは、前記外部記憶装置にアクセスして自ノードに割り当てられた前記データファイルを読み込み、当該データファイルに記述された前記指定情報に基づき、前記他のデータファイルを読み込むことを特徴とする請求項１に記載の並列計算システム。
【請求項４】
前記管理ノードは、解析対象である複数の粒子を前記複数の計算ノードに割り当て、当該粒子の位置情報および属性情報を含む前記データファイルを作成し、
前記計算ノードは、自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込み、自ノードに割り当てられた前記データファイルに対応する粒子の挙動解析を行うことを特徴とする請求項１に記載の並列計算システム。
【請求項５】
前記管理ノードは、解析対象である領域を複数の部分領域に分割して前記複数の計算ノードに割り当て、当該部分領域の要素情報を含む前記データファイルを作成し、
前記計算ノードは、自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込み、自ノードに割り当てられた前記データファイルに対応する部分領域に対する有限要素解析を行うことを特徴とする請求項１に記載の並列計算システム。
【請求項６】
前記複数の計算ノードは、各々、半導体メモリを記憶媒体とする外部記憶装置を備え、
前記計算ノードは、計算の実行中に作成される作業ファイルを前記外部記憶装置に保持させることを特徴とする請求項１に記載の並列計算システム。
【請求項７】
計算を行う複数の計算ノードと、
前記複数の計算ノードに接続され、当該複数の計算ノードによる並列計算を管理する管理ノードとを備え、
前記計算ノードおよび前記管理ノードは、各々、半導体メモリを記憶媒体とする外部記憶装置を備え、
前記管理ノードは、処理対象のデータを個々の前記計算ノードに割り当てて送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて計算を行い、計算の実行中に作成される作業ファイルを自ノードに備えた前記外部記憶装置に保持させることを特徴とする並列計算システム。
【請求項８】
前記管理ノードは、解析対象である複数の粒子を前記複数の計算ノードに割り当てて当該粒子のデータを送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて、自ノードに割り当てられた粒子の挙動解析を行い、解析処理の実行中に作成される作業ファイルを自ノードの前記外部記憶装置に保持させることを特徴とする請求項７に記載の並列計算システム。
【請求項９】
前記管理ノードは、解析対象である領域を複数の部分領域に分割して前記複数の計算ノードに割り当てて当該部分領域のデータを送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて、自ノードに割り当てられた部分領域に対する有限要素解析を行い、解析処理の実行中に作成される作業ファイルを自ノードの前記外部記憶装置に保持させることを特徴とする請求項７に記載の並列計算システム。
【請求項１０】
管理ノードが、処理対象のデータを複数の計算ノードに割り当て、当該計算ノードごとの個別のデータファイルを作成して、当該管理ノードに接続され半導体メモリを記憶媒体とする外部記憶装置に書き込み、
計算ノードが、前記外部記憶装置にアクセスし、自ノードに割り当てられた前記データファイルおよび当該データファイルを用いた計算において参照する他のデータファイルが存在するならば、当該データファイルを読み込み、
前記計算ノードが、前記外部記憶装置にアクセスし、読み込んだ前記データファイルを用いて計算した計算結果を書き込むことを特徴とする並列計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算システムおよび並列計算方法に関する。
【背景技術】
【０００２】
大規模解析等の膨大な計算を行う場合に、解析を複数のコンピュータで分散処理する並列計算が行われている。この種の並列計算は、例えば、複数のコンピュータをネットワークで接続したクラスタ上で、ＭＰＩ（Message-Passing Interface）等の並列ライブラリを用いた解析プログラムを実行することで実現される。この場合、コンピュータの外部記憶装置としては、ＨＤＤ（ハードディスクドライブ）が一般的に用いられている。また、複数のコンピュータを対象としたメモリシステムとして、複数個のプロセッサを有し、それらが通信、協調しながら並列に動作するマルチプロセッサシステムにおける仮想記憶管理方法がある。
【０００３】
特許文献１に記載された従来技術は、仮想記憶方式のマルチプロセッサのシステムにおいて、主記憶から追い出したページデータを外部記憶装置に書き出し、いずれのプロセッサで追い出したデータを必要とした場合でも、外部記憶から読込むものである。
【０００４】
【特許文献１】特開平３−２２３９４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、複数の計算ノードを接続して構成されたクラスタにおいて、外部記憶装置としてＨＤＤを用いる場合に比べ、並列計算の処理に要する時間を削減することができる並列計算システムおよび並列計算方法を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載の発明は、
計算を行う複数の計算ノードと、
前記複数の計算ノードに接続され、当該複数の計算ノードによる並列計算を管理する管理ノードと、
前記管理ノードに接続され、当該管理ノードおよび前記複数の計算ノードからアクセス可能な、半導体メモリを記憶媒体とする外部記憶装置とを備え、
前記管理ノードは、処理対象のデータを個々の前記計算ノードに割り当て、当該計算ノードごとの個別のデータファイルを前記外部記憶装置に作成し、
前記計算ノードは、前記外部記憶装置にアクセスして自ノードに割り当てられた前記データファイルおよび当該データファイルを用いた計算において参照する他のデータファイルを読み込んで計算を行い、計算結果を前記外部記憶装置に出力することを特徴とする並列計算システムである。
請求項２に記載の発明は、
前記管理ノードは、前記計算ノードごとに、計算に必要な前記データファイルを指定する指定情報を生成して前記外部記憶装置に保持させ、
前記計算ノードは、前記外部記憶装置にアクセスして前記指定情報に基づき自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込むことを特徴とする請求項１に記載の並列計算システムである。
請求項３に記載の発明は、
前記管理ノードは、個々の前記計算ノードの計算に必要な前記データファイルを指定する指定情報を、当該計算ノードに割り当てたデータファイル内に記述し、
前記計算ノードは、前記外部記憶装置にアクセスして自ノードに割り当てられた前記データファイルを読み込み、当該データファイルに記述された前記指定情報に基づき、前記他のデータファイルを読み込むことを特徴とする請求項１に記載の並列計算システムである。
請求項４に記載の発明は、
前記管理ノードは、解析対象である複数の粒子を前記複数の計算ノードに割り当て、当該粒子の位置情報および属性情報を含む前記データファイルを作成し、
前記計算ノードは、自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込み、自ノードに割り当てられた前記データファイルに対応する粒子の挙動解析を行うことを特徴とする請求項１に記載の並列計算システムである。
請求項５に記載の発明は、
前記管理ノードは、解析対象である領域を複数の部分領域に分割して前記複数の計算ノードに割り当て、当該部分領域の要素情報を含む前記データファイルを作成し、
前記計算ノードは、自ノードに割り当てられた前記データファイルおよび前記他のデータファイルを読み込み、自ノードに割り当てられた前記データファイルに対応する部分領域に対する有限要素解析を行うことを特徴とする請求項１に記載の並列計算システムである。
請求項６に記載の発明は、
前記複数の計算ノードは、各々、半導体メモリを記憶媒体とする外部記憶装置を備え、
前記計算ノードは、計算の実行中に作成される作業ファイルを前記外部記憶装置に保持させることを特徴とする請求項１に記載の並列計算システムである。
請求項７に記載の発明は、
計算を行う複数の計算ノードと、
前記複数の計算ノードに接続され、当該複数の計算ノードによる並列計算を管理する管理ノードとを備え、
前記計算ノードおよび前記管理ノードは、各々、半導体メモリを記憶媒体とする外部記憶装置を備え、
前記管理ノードは、処理対象のデータを個々の前記計算ノードに割り当てて送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて計算を行い、計算の実行中に作成される作業ファイルを自ノードに備えた前記外部記憶装置に保持させることを特徴とする並列計算システムである。
請求項８に記載の発明は、
前記管理ノードは、解析対象である複数の粒子を前記複数の計算ノードに割り当てて当該粒子のデータを送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて、自ノードに割り当てられた粒子の挙動解析を行い、解析処理の実行中に作成される作業ファイルを自ノードの前記外部記憶装置に保持させることを特徴とする請求項７に記載の並列計算システムである。
請求項９に記載の発明は、
前記管理ノードは、解析対象である領域を複数の部分領域に分割して前記複数の計算ノードに割り当てて当該部分領域のデータを送信し、
前記計算ノードは、前記管理ノードから受信したデータを用いて、自ノードに割り当てられた部分領域に対する有限要素解析を行い、解析処理の実行中に作成される作業ファイルを自ノードの前記外部記憶装置に保持させることを特徴とする請求項７に記載の並列計算システムである。
請求項１０に記載の発明は、
管理ノードが、処理対象のデータを複数の計算ノードに割り当て、当該計算ノードごとの個別のデータファイルを作成して、当該管理ノードに接続され半導体メモリを記憶媒体とする外部記憶装置に書き込み、
計算ノードが、前記外部記憶装置にアクセスし、自ノードに割り当てられた前記データファイルおよび当該データファイルを用いた計算において参照する他のデータファイルが存在するならば、当該データファイルを読み込み、
前記計算ノードが、前記外部記憶装置にアクセスし、読み込んだ前記データファイルを用いて計算した計算結果を書き込むことを特徴とする並列計算方法である。
【発明の効果】
【０００７】
以上のように構成された本発明によれば、次のような効果を奏する。
請求項１の発明によれば、半導体メモリを記憶媒体とする外部記憶装置にアクセスしてデータの読み書きを行うことにより、外部記憶装置としてＨＤＤを用いる場合に比べ、並列計算の処理に要する時間を削減することができる。
請求項２の発明によれば、管理ノードから計算ノードへの指定情報の通知を待つことなく、計算ノードが自ノードの計算に必要なデータが存在すれば直ちに計算を開始することができる。
請求項３の発明によれば、各計算ノードは自ノードに割り当てられたデータファイルから連鎖的に、計算に必要なデータファイルを得ることができる。
請求項４の発明によれば、本構成を採用しない場合に比べ、個別要素法による粒子の挙動解析を高速に行うことができる。
請求項５の発明によれば、本構成を採用しない場合に比べ、有限要素解析を高速に行うことができる。
請求項６の発明によれば、処理速度をほとんど損なうことなく、各計算ノードの処理における作業ファイルを保持することができる。
請求項７の発明によれば、半導体メモリを記憶媒体とする自ノードの外部記憶装置にアクセスしてデータの読み書きを行うことにより、本構成を採用しない場合に比べ、処理全体の高速化を図ることができる。
請求項８の発明によれば、本構成を採用しない場合に比べ、個別要素法による粒子の挙動解析を高速に行うことができる。
請求項９の発明によれば、本構成を採用しない場合に比べ、有限要素解析を高速に行うことができる。
請求項１０の発明によれば、半導体メモリを記憶媒体とする外部記憶装置にアクセスしてデータの読み書きを行うことにより、本構成を採用しない場合に比べ、処理全体の高速化を図ることができる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、実施形態）について詳細に説明する。
＜システム構成＞
図１は、本実施形態の並列計算システムの全体構成を示す図である。
図１に示す並列計算システム１００は、１台の管理ノード１１０と、複数台の計算ノード１２０と、管理ノード１１０に接続された外部記憶装置であるＳＳＤ（Solid State Drive）１３０とを備える。各ノード（管理ノード１１０および計算ノード１２０）は、ネットワーク接続されており、いわゆるクラスタコンピューティングを実現する。また各ノードは、パーソナルコンピュータやワークステーション等のコンピュータで実現される。ＳＳＤ１３０は、記憶媒体としてＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリ等の半導体メモリを用い、ＨＤＤ（ハードディスクドライブ）等と同様にコンピュータの外部記憶装置として使用される。ＳＳＤ１３０は、半導体メモリを記憶媒体とするため、データの読み書きの際に、ＨＤＤのようにヘッドを移動させるための時間やディスクの回転数を高めるのに必要な時間を要しない。
【０００９】
本実施形態では、並列計算システム１００による計算（解析処理）として、粒子の挙動解析を行う場合を例として説明する。具体的には、例えば電子写真方式による画像形成装置において画像形成に使用される画像形成材などのように、複数の粒子（トナーおよびキャリア粒子等）が混合された状態での粒子の振る舞いをシミュレーションして解析する場合に適用される。このような解析では、個別要素法や有限要素法が用いられる。なお、この粒子の挙動解析は、本実施形態が適用可能な処理の一例を示すに過ぎず、並列計算による分散処理が可能な種々の処理に適用できることは言うまでもない。
【００１０】
図２は、管理ノード１１０および計算ノード１２０を実現するコンピュータのハードウェア構成例を示す図である。
図２に示すコンピュータ１０は、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、記憶手段である主記憶装置（メインメモリ）１０ｂおよび外部記憶装置１０ｃを備える。外部記憶装置１０ｃとしては、一般に磁気ディスク装置（ＨＤＤ：Hard Disk Drive）が用いられるが、管理ノード１１０においてはＳＳＤ１３０が用いられる。また、図２のコンピュータ１０は、ネットワークを介して外部装置に接続するためのネットワークＩ／Ｆ（インターフェイス）１０ｄと、ディスプレイ装置へ表示出力を行うための表示機構１０ｅと、音声出力を行うための音声機構１０ｆとを備える。さらに、キーボードやマウス等の入力デバイス１０ｇを備える。ＣＰＵ１０ａと他の構成要素との間には、図示しないチップセットやブリッジ回路が介在している。
【００１１】
図２において、各構成要素は、システムバスや入出力バス等の各種のバスを介して接続される。例えば、ＣＰＵ１０ａと主記憶装置１０ｂの間は、システムバスやメモリバスを介して接続される。また、ＣＰＵ１０ａと外部記憶装置１０ｃ、ネットワークＩ／Ｆ１０ｄ、表示機構１０ｅ、音声機構１０ｆ、入力デバイス１０ｇ等との間は、ＰＣＩ（Peripheral Components Interconnect）、ＰＣＩ  Ｅｘｐｒｅｓｓ、シリアルＡＴＡ（AT Attachment）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）等の入出力バスを介して接続される。
【００１２】
なお、図２は、並列計算システム１００を構成する管理ノード１１０および計算ノード１２０を実現するのに好適なコンピュータのハードウェア構成を例示するに過ぎず、図示の構成に限定されないことは言うまでもない。例えば、計算ノード１２０の補助記憶装置として、外部記憶装置１０ｃの他に、フレキシブルディスクや光学ディスクをメディアとするドライブを設けたり、ＵＳＢメモリを設けたりしても良い。ＵＳＢメモリは、ＵＳＢを介してブリッジ回路に接続されることとなる。また、音声機構１０ｆを独立した構成とせず、チップセットの機能として備えるようにしても良い。
【００１３】
＜ノードの機能＞
図３は、管理ノード１１０の機能構成を示す図である。
図３に示すように、管理ノード１１０は、解析対象のデータを各計算ノード１２０に割り当てるデータ割り当て部１１１と、各計算ノード１２０による計算が完了した後に終了処理を行う終了処理部１１２とを備える。データ割り当て部１１１および終了処理部１１２は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００１４】
また、管理ノード１１０は、ＳＳＤ１３０を外部記憶装置（補助記憶手段）として用いる。解析対象である粒子情報の元データは、ＳＳＤ１３０に保持されているものとする。さらにＳＳＤ１３０は、計算ノード１２０からアクセスできるように設定（共有設定）されている。したがって、計算ノード１２０は、管理ノード１１０によるアクセス制御下で、管理ノード１１０に接続されているＳＳＤ１３０にアクセスして直接データの読み書きを行う。
【００１５】
データ割り当て部１１１は、ＳＳＤ１３０から解析対象である粒子情報のデータを読み込み、読み込んだデータを各計算ノード１２０に割り当てて、ＳＳＤ１３０にファイル出力する。これにより、ＳＳＤ１３０には、各計算ノード１２０に割り当てられたデータファイル（以下、粒子情報ファイル）が保持される。この粒子情報ファイルは、粒子の位置や属性など計算ノード１２０による計算に必要なデータを含み、計算ノード１２０が直接読み書きできる形式で保持されるものとする。データの割り当ては、例えば粒子を計算ノード１２０の数に応じて複数のグループに分け、各グループの粒子を計算ノード１２０に割り当てる粒子分割法によって行っても良い。また、粒子が存在する領域を計算ノード１２０の数に応じて複数の領域に分割し、分割された領域内に存在する粒子を計算ノード１２０に割り当てる領域分割法によって行っても良い。いずれの手法でも、計算ノード１２０の性能にばらつきがある場合には、個々の計算ノード１２０の間の性能差に応じて粒子の割り当てを偏重させても良い。
【００１６】
終了処理部１１２は、各計算ノード１２０による計算が終了したならば、システムユーザに解析終了を通知する。また、各計算ノード１２０の計算結果を解析結果として出力しても良い。詳しくは後述するが、本実施形態では各計算ノード１２０が自身の計算結果をＳＳＤ１３０に直接書き込む。したがって、終了処理部１１２は、各計算ノード１２０による計算が完了したことを認識した後、ＳＳＤ１３０に保持されている粒子情報のデータをそのまま解析結果とすれば良い。
【００１７】
図４は、計算ノード１２０の機能構成を示す図である。
図４に示すように、各計算ノード１２０は、それぞれ、解析対象のデータを読み込む読み込み部１２１と、計算処理を行う計算部１２２と、計算部１２２による計算結果を出力する出力部１２３とを備える。読み込み部１２１および出力部１２３は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行しネットワークＩ／Ｆ１０ｄを制御することで実現される。また、計算部１２２は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能である。このように、図４に示す計算ノード１２０の各機能ブロックは、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００１８】
読み込み部１２１は、管理ノード１１０に接続されているＳＳＤ１３０にアクセスし、自ノードの計算に必要なデータを読み込む。ここで、自ノードの計算に必要なデータとは、管理ノード１１０により自ノードに割り当てられたデータおよびこのデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータである。例えば、自ノードに割り当てられた粒子に近接し、電磁力の影響が無視できない粒子や接触の可能性がある粒子などのデータである。
【００１９】
計算部１２２は、読み込み部１２１により読み込まれたデータに基づき、自ノードに割り当てられた粒子の挙動を解析する。具体的には、粒子の現在位置と属性、粒子に作用する力に基づいて、粒子の位置がどのように変化するかを計算する。粒子の属性としては、例えば大きさ、質量、速度、電荷、磁化などが挙げられる。
【００２０】
出力部１２３は、管理ノード１１０に接続されているＳＳＤ１３０にアクセスし、計算部１２２による計算結果を書き込む。計算部１２２による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。したがって、出力部１２３は、計算部１２２による計算が行われるたびに計算結果をＳＳＤ１３０に書き込むこととなる。このとき、新たな計算結果を新たな粒子情報ファイルとして追加書き込みしても良いし、自ノードに割り当てられた粒子情報ファイルを最新の計算結果で上書きするようにしても良い。前者の場合は、途中の計算結果も履歴として残せるが、ＳＳＤ１３０の記憶容量を超えて書き込むことはできないので、全体のデータ量に応じて古い粒子情報ファイルから削除していく等の操作が必要になる場合もある。
【００２１】
＜並列計算システムの動作＞
次に、上記のように構成された並列計算システム１００の動作について説明する。
図５は、個別要素法により粒子の挙動解析を行う場合を例として、並列計算システム１００の全体動作を説明するフローチャートである。
図５に示すように、並列計算システム１００は、まず管理ノード１１０が計算ノード１２０の数を取得し（ステップ５０１）、解析対象である粒子のデータをＳＳＤ１３０から読み込む（ステップ５０２）。そして、データ割り当て部１１１が、この解析対象の粒子群を各計算ノード１２０に割り当て、計算ノード１２０ごとに粒子情報ファイルを生成して、ＳＳＤ１３０に格納する（ステップ５０３）。
【００２２】
ＳＳＤ１３０に格納される計算ノード１２０ごとの粒子情報ファイルは、ファイル名にノードＩＤおよびステップ番号を付与される。ノードＩＤとは、粒子情報ファイルが割り当てられた計算ノード１２０の識別情報である。ステップ番号とは、計算ノード１２０による何回目の計算ステップによる計算結果かを示す情報である。図６は、粒子情報ファイルのデータ構造の例を示す図である。図６に示す例では、粒子情報ファイルには、粒子を識別するための粒子ＩＤと共に、個々の粒子の位置情報（座標ｘ、ｙ、ｚ）と属性情報（半径、質量、速度、電荷、磁化）が記録されている。
【００２３】
ステップ５０４以降の動作は、各計算ノード１２０において個別に実行される動作である。
個々の計算ノード１２０では、まず、読み込み部１２１が、ＳＳＤ１３０にアクセスして自ノードの計算に必要な粒子情報ファイルが存在するかを調べる（ステップ５０４）。そして、必要な粒子情報ファイルが存在するならば、読み込み部１２１は、その粒子情報ファイルを読み込む（ステップ５０５）。
【００２４】
上述したように、計算ノード１２０の計算部１２２による計算には、自ノードに割り当てられた粒子情報ファイルのデータの他に、自ノードに割り当てられた粒子の挙動に影響を与える他の粒子のデータが必要である。そこで、各計算ノード１２０が計算に必要とする粒子情報ファイルの情報（すなわち、自ノードに割り当てられた粒子情報ファイルおよび自ノードに割り当てられた粒子の挙動に影響を与える他の粒子の粒子情報ファイルを特定する情報）を用意する必要がある。この情報をどのような形で用意するかは任意であるが、簡単な例としては、粒子情報ファイルとは別個のデータファイルを作成する方法と、各粒子情報ファイルに他の粒子情報ファイルの情報を記録する方法とが考えられる。
【００２５】
別個のデータファイルを作成する方法では、ステップ５０５で計算ノード１２０の読み込み部１２１は、まずデータファイルを参照して自ノードの計算に必要な粒子情報ファイルを特定し、その粒子情報ファイルを読み込む。各粒子情報ファイルに他の粒子情報ファイルの情報を記録する方法では、図６に示した粒子情報ファイルの内容に加えて、当該粒子情報ファイルが割り当てられたノードの計算に必要な他の粒子情報ファイルを特定する情報を記録しておく。そして、ステップ５０５で計算ノード１２０の読み込み部１２１は、自ノードに割り当てられた粒子情報ファイルを読み込み、当該粒子情報ファイルに記録されている情報に基づいて計算に必要な他の粒子情報ファイルを読み込む。
【００２６】
計算に必要な他の粒子情報ファイルを特定する情報としては、そのような他の粒子情報ファイルが割り当てられている計算ノード１２０のノードＩＤが用いられる。これにより、計算に必要な他の粒子情報ファイルは、計算ノード１２０単位で特定される。計算ノード１２０の読み込み部１２１は、まず自ノードに割り当てられた粒子情報ファイルを読み込み、次に上述した別ファイルまたは読み込んだ粒子情報ファイルに記録されている情報からノードＩＤを取得する。そして、そのノードＩＤがファイル名に付与されている粒子情報ファイルを検索して読み込むこととなる。
【００２７】
次に、計算ノード１２０の計算部１２２が、読み込み部１２１により読み込まれた粒子情報ファイルを用いて各粒子の挙動解析を行う。解析手法としては、既存の手法を用いて良い。具体的には例えば、まず各粒子について、磁気力（磁気的な相互作用力）、静電気力（静電気による相互作用力）、接触力（機械的な相互作用力）を計算し（ステップ５０６、５０７、５０８）、算出された各作用力の和を求める（ステップ５０９）。次に、ステップ５０９で求まった作用力の和と粒子の位置情報および属性情報に基づいて運動方程式を解き、各粒子の位置情報（座標）を計算する（ステップ５１０）。なお、ステップ５０６〜５０８の各計算は、個別に行われるので、図５と異なる順序で実行しても良いし、並列に行っても良い。
【００２８】
この後、計算ノード１２０の出力部１２３が、ＳＳＤ１３０にアクセスし、計算部１２２により算出された位置情報を含む粒子情報ファイルを書き込む（ステップ５１１）。粒子情報ファイルのファイル名には、予め設定された解析処理における計算の繰り返し回数のうち何回目の計算かを示す情報（計算ステップ）が記される。粒子情報ファイルの書き込みは、上述したように、ステップ５０６〜５１０の解析が行われるたびに追加するようにしても良いし、同一の粒子の粒子情報ファイルを上書きするようにしても良い。
【００２９】
計算ノード１２０によるステップ５０４〜５１１の処理は、解析の内容に応じて計算ステップが予め設定されており、各計算ノード１２０は、自身の計算ステップが設定数に達するまで同処理を繰り返す（ステップ５１２）。各計算ノード１２０の読み込み部１２１は、毎回、自ノードに割り当てられた粒子およびこの粒子の挙動に影響を与える他の粒子の粒子情報ファイルであって、次の計算に必要な計算結果が含まれたファイルを読み込むこととなる。なお、出力部１２３が粒子情報ファイルを上書きしている場合は、各粒子の粒子情報ファイルは１つしか存在しないため、その粒子情報ファイルを読み込めば良い。
【００３０】
各計算ノード１２０は、計算ステップが設定数に到達したならば、処理を終了する（ステップ５１２）。管理ノード１１０では、全ての計算ノード１２０において計算ステップが設定数に到達したならば、終了処理部１１２が、解析処理が終了したことを認識し、終了処理を行う（ステップ５１３）。終了処理としては、例えばシステムユーザに処理の終了を通知したり、ＳＳＤ１３０に保持されている粒子情報ファイルを解析結果として出力したりする。
【００３１】
具体例を挙げて、さらに説明する。
図７は、計算ノード１２０に粒子を割り当てた様子を示す図である。
図７に示す例では、３０００個の粒子が５００個ずつ６台の計算ノード１２０に割り当てられている。６台の計算ノード１２０には、ノードＩＤとして０から５までのシーケンシャルな番号が付与されている。粒子の種類は、キャリア（磁性体）とトナー（非磁性体）である。キャリアは１０００個、トナーは２０００個存在し、粒子ＩＤとして０から９９９までのシーケンシャルな番号がキャリアに付与され、１０００から２９９９までのシーケンシャルな番号がトナーに付与されている。粒子は種類ごとに分けて計算ノード１２０に割り当てられており、粒子０から粒子４９９までがノード０に、粒子５００から粒子９９９までがノード１に、粒子１０００から粒子１４９９までがノード２に、粒子１５００から粒子１９９９までがノード３に、粒子２０００から粒子２４９９までがノード４に、粒子２５００から粒子２９９９までがノード５に、それぞれ割り当てられている。
【００３２】
ここで、磁気力は磁性体であるキャリアのみに発生し、静電気力は電荷をもつトナーのみに発生する。また、接触力は全ての粒子で発生する。したがって、接触力を計算する場合、計算を開始するためには、全てのノードに割り当てられた粒子情報ファイル（直前の計算ステップの結果）が存在する必要がある。これに対し、例えば磁気力のみを計算する場合、計算を開始するためには、ノード０に割り当てられた粒子情報ファイルとノード１に割り当てられた粒子情報ファイル（直前の計算ステップの結果）が存在すれば良い。また、静電気力のみを計算する場合、計算を開始するためには、ノード２からノード５までの各ノードに割り当てられた粒子情報ファイル（直前の計算ステップの結果）が存在すれば良い。
【００３３】
＜並列計算システムの他の動作例＞
上記の動作例では、個別要素法により粒子の挙動解析を行う場合を例として説明した。しかし、本実施形態の並列計算システム１００は、上記の個別要素法に限定されず、複数の計算ノード１２０を用いて行われる種々の並列計算に適用できるものである。次に有限要素法を用いた並列計算の動作例を説明する。
【００３４】
図８は、有限要素解析を行う場合を例として、並列計算システム１００の全体動作を説明するフローチャートである。
図８に示すように、並列計算システム１００は、まず管理ノード１１０が計算ノード１２０の数を取得し（ステップ８０１）、解析対象である解析領域のデータをＳＳＤ１３０から読み込む（ステップ８０２）。そして、データ割り当て部１１１が、この解析対象の解析領域を部分領域に分割し（ステップ８０３）、分割した部分領域を各計算ノード１２０に割り当てて、計算ノード１２０ごとに部分領域の要素情報を含む領域情報ファイルを生成して、ＳＳＤ１３０に格納する（ステップ８０４）。
【００３５】
ステップ８０５以降の動作は、各計算ノード１２０において個別に実行される。
個々の計算ノード１２０では、まず、読み込み部１２１が、ＳＳＤ１３０にアクセスして自ノードの計算に必要な領域情報ファイルが存在するかを調べる（ステップ８０５）。そして、必要な領域情報ファイルが存在するならば、読み込み部１２１は、その領域情報ファイルを読み込む（ステップ８０６）。自ノードに割り当てられた領域情報ファイルの他に、自ノードに割り当てられた領域の解析に必要な他の領域（隣接領域）の領域情報ファイルを読み込むのは、図５に示した動作の場合と同様である。
【００３６】
次に、計算ノード１２０の計算部１２２が、読み込み部１２１により読み込まれた領域情報ファイルを用いて各部分領域に対する有限要素解析を行う。解析手法としては、既存の手法を用いて良い。具体的には例えば、まず各部分領域に関して、要素情報に基づいて部分領域全体行列を作成する（ステップ８０７）。次に、隣接領域の要素情報に基づいて境界条件を設定する（ステップ８０８）。そして、連立方程式を解き、節点解を算出する（ステップ８０９）。
【００３７】
この後、計算ノード１２０の出力部１２３が、ＳＳＤ１３０にアクセスし、計算部１２２により算出された解析結果を含む領域情報ファイルを書き込む（ステップ８１０）。各計算ノード１２０におけるステップ８０７〜８０９の解析は、解が収束するまで繰り返し実行される（ステップ８１１）。管理ノード１１０は、ＳＳＤ１３０に書き込まれた領域情報ファイルに基づき、全ての計算ノード１２０において解が収束したならば、解析処理が終了したことを認識し、終了処理を行う（ステップ８１２）。
【００３８】
＜他の実施形態＞
上記の実施形態では、並列計算システム１００を構成するノードのうち管理ノード１１０のみがＳＳＤ１３０を備える構成とした。これに対し、図９に示すように、管理ノード１１０と共に各計算ノード１２０も外部記憶装置としてＳＳＤ１４０を備える構成を採っても良い。以下、各計算ノード１２０にもＳＳＤ１４０を設けた実施形態を説明する。本実施形態においても、並列計算システム１００による計算（解析処理）として、粒子の挙動解析を行う場合を例として説明する。
【００３９】
本実施形態の管理ノード１１０および計算ノード１２０は、先の実施形態と同様に、例えば図２に示したコンピュータ１０により実現される。ただし、本実施形態では上述したように管理ノード１１０と計算ノード１２０の双方において、外部記憶装置１０ｃとして磁気ディスク装置ではなくＳＳＤ１３０、１４０が設けられる。
【００４０】
＜ノードの機能＞
図１０は、管理ノード１１０の機能構成を示す図である。
図１０に示すように、管理ノード１１０は、解析対象のデータを各計算ノード１２０に割り当てるデータ割り当て部１１１と、各計算ノード１２０による計算結果を受け取って解析対象のデータを更新するデータ更新部１１３と、各計算ノード１２０による計算が完了した後に終了処理を行う終了処理部１１２とを備える。データ割り当て部１１１、データ更新部１１３および終了処理部１１２は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能であり、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００４１】
データ割り当て部１１１は、ＳＳＤ１３０から解析対象である粒子情報のデータを読み込み、読み込んだデータを各計算ノード１２０に割り当て、割り当てたデータを各計算ノード１２０に送信する。計算ノード１２０に送られるデータには、粒子の位置や属性など計算ノード１２０による計算に必要なデータを含む。データの割り当ては、例えば粒子分割法や領域分割法などの既存の手法にて行う。また、データ割り当て部１１１は、各計算ノード１２０に対して、割り当てたデータと共に、このデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータを送信する。この他の粒子のデータは、各計算ノード１２０が粒子の挙動解析を行う上で必要なデータ（計算に必要なデータ）である。
【００４２】
データ更新部１１３は、各計算ノード１２０の計算結果を受信して解析結果としてまとめ、ＳＳＤ１３０に保持されている粒子情報を更新する。ＳＳＤ１３０における粒子情報の更新は、解析結果を追加書き込みすることによって行っても良いし、現在の粒子情報を解析結果で上書きすることによって行っても良い。計算ノード１２０による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。したがって、データ更新部１１３は、計算ノード１２０から各計算ステップの計算結果を受信するたびに粒子情報の更新を行うこととなる。
【００４３】
終了処理部１１２は、各計算ノード１２０による計算ステップが予め設定された回数に到達したならば、システムユーザに解析終了を通知する。また、最終的な解析結果（更新された情報）を出力しても良い。本実施形態では各計算ノード１２０の計算結果をデータ更新部１１３がまとめて解析結果としてＳＳＤ１３０に書き込む。したがって、終了処理部１１２は、解析結果を出力する場合、ＳＳＤ１３０に保持されている粒子情報のデータをそのまま出力すれば良い。
【００４４】
図１１は、計算ノード１２０の機能構成を示す図である。
図１１に示すように、各計算ノード１２０は、それぞれ、管理ノード１１０から解析対象のデータを受け付ける受け付け部１２４と、計算処理を行う計算部１２２と、計算部１２２による計算結果を管理ノード１１０へ送信する送信部１２５とを備える。受け付け部１２４および送信部１２５は、例えば図２に示したコンピュータ１０において、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行しネットワークＩ／Ｆ１０ｄを制御することで実現される。また、計算部１２２は、主記憶装置１０ｂに読み込まれたプログラムをＣＰＵ１０ａが実行することで実現される機能である。このように、図１１に示す計算ノード１２０の各機能ブロックは、ソフトウェアとハードウェア資源とが協働して実現される手段である。
【００４５】
受け付け部１２４は、管理ノード１１０から送信された自ノードの計算に必要なデータを受け付ける。ここで、自ノードの計算に必要なデータとは、上述したように管理ノード１１０により自ノードに割り当てられたデータおよびこのデータに対応する粒子（自ノードに割り当てられた粒子）の挙動に影響を与える他の粒子のデータである。
【００４６】
計算部１２２は、受け付け部１２４により受け付けたデータに基づき、自ノードに割り当てられた粒子の挙動を解析する。計算部１２２は、解析のための計算の実行中に作成される作業ファイルをＣＰＵ１０ａの内部メモリや主記憶装置１０ｂに保持するだけでなく、ＳＳＤ１４０にも保持させる。
【００４７】
送信部１２５は、計算部１２２による計算結果を管理ノード１１０へ送信する。上述したように、計算部１２２による粒子の挙動解析のための計算は、通常、複数回の計算ステップによって行われる。したがって、送信部１２５は、計算部１２２による計算が行われるたびに計算結果を管理ノード１１０へ送信することとなる。
【００４８】
＜並列計算システムの動作＞
次に、本実施形態の並列計算システム１００の動作について説明する。
図１２は、個別要素法により粒子の挙動解析を行う場合を例として、並列計算システム１００の全体動作を説明するフローチャートである。
図１２に示すように、並列計算システム１００は、まず管理ノード１１０が計算ノード１２０の数を取得し（ステップ１２０１）、解析対象である粒子のデータをＳＳＤ１３０から読み込む（ステップ１２０２）。そして、データ割り当て部１１１が、この解析対象の粒子群を各計算ノード１２０に割り当て、割り当てた粒子のデータを各計算ノード１２０に送信する（ステップ１２０３）。送信されたデータは、各計算ノード１２０の受け付け部１２４により受け付けられ、計算部１２２に渡される。
【００４９】
ステップ１２０４〜１２０９の動作は、各計算ノード１２０において個別に実行される動作である。
各計算ノード１２０では、計算部１２２が、まず各粒子について、磁気力（磁気的な相互作用力）、静電気力（静電気による相互作用力）、接触力（機械的な相互作用力）を計算する（ステップ１２０４、１２０５、１２０６）。このとき、計算された磁気力、静電気力、接触力は、それぞれ作業ファイルとして出力されＳＳＤ１４０に保持される。次に計算部１２２は、ＳＳＤ１４０から作業ファイルとして保持されている磁気力、静電気力、接触力を読み込み、各作用力の和を求める（ステップ１２０７）。そして、ステップ１２０７で求まった作用力の和と粒子の位置情報および属性情報に基づいて運動方程式を解き、各粒子の位置情報（座標）を計算する（ステップ１２０８）。計算部１２２の計算が終了すると、送信部１２５が管理ノード１１０に計算が終了したことを通知する（ステップ１２０９）。
【００５０】
管理ノード１１０のデータ更新部１１３は、全ての計算ノード１２０から計算終了の通知を受け付けると、次に各計算ノード１２０から計算結果を受信し、ステップ１２０２でＳＳＤ１３０から読み込んだデータを更新する(ステップ１２１０、１２１１)。そして、各計算ノード１２０による次の計算ステップに用いるために、更新したデータを各計算ノード１２０に送信する（ステップ１２１２）。全ての計算ノード１２０に更新したデータを送信した後、データ更新部１１３は、各計算ノード１２０の計算結果をＳＳＤ１３０に書き込む（ステップ１２１３、１２１４）。以下、各計算ノード１２０の計算ステップが予め設定された回数に達するまでステップ１２０４〜ステップ１２１４の処理を繰り返す（ステップ１２１５）。そして、計算ステップが設定数に到達したならば、終了処理部１１２が、ステップ１２１４で出力された計算結果を解析結果として終了処理を行う（ステップ１２１６）。
【００５１】
＜並列計算システムの他の動作例＞
本実施形態においても、上記の個別要素法による粒子の挙動解析に限定することなく、複数の計算ノード１２０を用いて行われる種々の並列計算に適用することができる。次に有限要素法を用いた並列計算の動作例を説明する。
【００５２】
図１３は、有限要素解析を行う場合を例として、並列計算システム１００の全体動作を説明するフローチャートである。
図１３に示すように、並列計算システム１００は、まず管理ノード１１０が計算ノード１２０の数を取得し（ステップ１３０１）、解析対象である解析領域のデータをＳＳＤ１３０から読み込む（ステップ１３０２）。そして、データ割り当て部１１１が、この解析対象の解析領域を部分領域に分割し（ステップ１３０３）、分割した部分領域を各計算ノード１２０に割り当てて、割り当てた部分領域のデータを各計算ノード１２０に送信する（ステップ１３０４）。また、データ割り当て部１１１は、各計算ノード１２０に対して、割り当てた部分領域に隣接する部分領域（隣接領域）のデータを送信する（ステップ１３０５）。
【００５３】
ステップ１３０６〜１３０８の動作は、各計算ノード１２０において個別に実行される動作である。
各計算ノード１２０では、計算部１２２が、まず各部分領域に関して、要素情報に基づいて部分領域全体行列を作成する（ステップ１３０６）。次に、隣接領域の要素情報に基づいて境界条件を設定する（ステップ１３０７）。そして、連立方程式を解き、節点解を算出する（ステップ１３０８）。このとき、各ステップで得られる計算結果（部分領域全体行列、境界条件、節点解）は、それぞれ作業ファイルとして出力され自ノードのＳＳＤ１４０に保持される。計算部１２２の計算が終了すると、送信部１２５が管理ノード１１０に計算結果を送信する。
【００５４】
管理ノード１１０のデータ更新部１１３は、全ての計算ノード１２０から計算結果を受信して集め（ステップ１３０９）、解析結果としてＳＳＤ１３０に書き込む（ステップ１３１０）。管理ノード１１０および各計算ノード１２０は、解析結果の解が収束するまでステップ１３０５〜ステップ１３１０の動作を繰り返す（ステップ１３１１）。そして、全ての計算ノード１２０における解析結果の解が収束したならば、管理ノード１１０が終了処理を行う（ステップ１３１２）。
【図面の簡単な説明】
【００５５】
【図１】本実施形態の並列計算システムの全体構成を示す図である。
【図２】本実施形態の管理ノードおよび計算ノードを実現するコンピュータのハードウェア構成例を示す図である。
【図３】本実施形態の管理ノードの機能構成を示す図である。
【図４】本実施形態の計算ノードの機能構成を示す図である。
【図５】個別要素法により粒子の挙動解析を行う場合を例として、並列計算システムの全体動作を説明するフローチャートである。
【図６】本実施形態で用いられる粒子情報ファイルのデータ構造の例を示す図である。
【図７】計算ノードに粒子を割り当てた様子を示す図である。
【図８】有限要素解析を行う場合を例として、並列計算システムの全体動作を説明するフローチャートである。
【図９】本発明の他の実施形態による並列計算システムの構成を示す図である。
【図１０】本実施形態の管理ノードの機能構成を示す図である。
【図１１】本実施形態の計算ノードの機能構成を示す図である。
【図１２】個別要素法により粒子の挙動解析を行う場合を例として、並列計算システムの全体動作を説明するフローチャートである。
【図１３】有限要素解析を行う場合を例として、並列計算システムの全体動作を説明するフローチャートである。
【符号の説明】
【００５６】
１００…並列計算システム、１１０…管理ノード、１１１…データ割り当て部、１１２…終了処理部、１１３…データ更新部、１２０…計算ノード、１２１…読み込み部、１２２…計算部、１２３…出力部、１２４…受け付け部、１２５…送信部、１３０、１４０…ＳＳＤ（Solid State Drive）
【図１】
2009087282.tif 000003
【図２】
2009087282.tif 000004
【図３】
2009087282.tif 000005
【図４】
2009087282.tif 000006
【図５】
2009087282.tif 000007
【図６】
2009087282.tif 000008
【図７】
2009087282.tif 000009
【図８】
2009087282.tif 000010
【図９】
2009087282.tif 000011
【図１０】
2009087282.tif 000012
【図１１】
2009087282.tif 000013
【図１２】
2009087282.tif 000014
【図１３】
2009087282.tif 000015