(57)【要約】【課題】並列計算機のネットワーク性能をシミュレーションによって評価する際に、作業負担の軽減と通信のタイミングの正確な再現とを両立させる。【解決手段】設計情報記憶手段１ａは、評価対象のネットワークを定義した設計情報を記憶する。評価情報記憶手段１ｂは、評価対象のネットワークの評価結果を示す評価情報を記憶する。通信データ取得手段１ｃは、複数の計算ノード２ａ，２ｂ，２ｃを用いて複数のプロセスを実行させたときに、計算ノード２ａ，２ｂ，２ｃによって出力される通信データを取得する。設計評価手段１ｄは、取得した通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて評価情報を更新する。通信データ転送手段１ｅは、取得した通信データを宛先の計算ノードに対して転送する。【選択図】図１
2008242757.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するコンピュータで実行されるネットワーク性能評価プログラムにおいて、
前記コンピュータを、
複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得する通信データ取得手段、
評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新する設計評価手段、
前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送する通信データ転送手段、
として機能させることを特徴とするネットワーク性能評価プログラム。
【請求項２】
前記通信データ取得手段が取得する前記通信データには、送信元の計算ノードが前記通信データを出力するまでに要した演算時間の情報が付加されており、
前記設計評価手段は、前記演算時間に基づいて前記通信データが出力されたタイミングを特定し、特定したタイミングに応じた通信のシミュレーションを行う、
ことを特徴とする請求項１記載のネットワーク性能評価プログラム。
【請求項３】
前記演算時間は、送信元の計算ノードが要した実演算時間であり、
前記設計評価手段は、所定の関数を用いて前記実演算時間を仮想演算時間に変換し、前記仮想演算時間に基づいて前記通信データが出力されたタイミングを特定する、
ことを特徴とする請求項２記載のネットワーク性能評価プログラム。
【請求項４】
前記評価情報には、前記計算ノードの負荷状態を示す情報が更に含まれており、
前記設計評価手段は、前記演算時間に基づいて個々の前記計算ノードの負荷状態を計算し、得られた計算結果を前記評価情報に反映させる、
ことを特徴とする請求項２記載のネットワーク性能評価プログラム。
【請求項５】
前記設計情報には、前記評価対象のネットワーク内の故障箇所と故障時刻とを示す故障情報が含まれており、
前記設計評価手段は、前記故障情報が示す前記故障時刻以降は前記故障箇所を迂回するように通信のシミュレーションを行う、
ことを特徴とする請求項１記載のネットワーク性能評価プログラム。
【請求項６】
複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するネットワーク性能評価装置において、
複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得する通信データ取得手段と、
評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新する設計評価手段と、
前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送する通信データ転送手段と、
を有することを特徴とするネットワーク性能評価装置。
【請求項７】
複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するコンピュータによるネットワーク性能評価方法において、
通信データ取得手段が、複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得するステップと、
設計評価手段が、評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新するステップと、
通信データ転送手段が、前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送するステップと、
を有することを特徴とするネットワーク性能評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク性能評価プログラム、ネットワーク性能評価装置およびネットワーク性能評価方法に関し、特に複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するネットワーク性能評価プログラム、ネットワーク性能評価装置およびネットワーク性能評価方法に関する。
【背景技術】
【０００２】
近年、ハードウェア技術の進歩に伴い、演算装置の処理能力が飛躍的に向上している。一方で、大規模な科学技術計算や大量のマルチメディアデータの処理など、１つの演算装置の処理能力を大きく超える処理能力を必要とする処理も依然として存在する。このような処理を行う場合、一般に並列計算機が用いられる。並列計算機は、演算装置を備える複数の計算ノードと計算ノード間を結合するネットワークとから構成される計算機または計算機システムである。並列計算機では、計算ノードで実行される個々のプロセスが他のプロセスと通信を行いながら処理を進める。複数のプロセスが並列に実行されるため、大規模な計算の処理時間が大幅に短縮される。
【０００３】
ここで、並列計算機の処理能力は、ネットワークの設計に大きく依存する。なぜならば、プロセス間の通信が非効率であると、通信時間が増大して演算時間の割合が相対的に低下するからである。このことは、並列計算機が大規模になるほど、すなわち、計算ノードの数が多くなるほど顕著となる。一方で、最適なネットワークを設計するためには、さまざまな設計要素を考慮する必要がある。例えば、計算ノード間の接続関係などの物理的要素や、通信経路の決定方法（ルーティングアルゴリズム）などの機能的要素を考慮する必要がある。また、ネットワークの設計が最適か否かは、実行する並列プログラムの性質にも依存する。
【０００４】
このため、並列計算機を開発する際には、最適なネットワークの設計を見出すために、ネットワークの設計を行って性能評価を行い、評価結果に基づいて設計を修正するという作業を繰り返し行う必要がある。この点、従来は、並列計算機の試作機を作成することで、ネットワークの性能を評価していた。すなわち、試作機で並列プログラムを実行させ、ルータなどで通信状況を監視することで、通信の効率性を確認していた（例えば、特許文献１参照）。しかし、開発する並列計算機が大規模である場合、試作機を作成する作業負担が非常に大きく、この評価方法を用いることは現実的でない。
【０００５】
そこで現在は、シミュレーションによるネットワークの性能評価が一般的に行われている。具体的には、例えば、以下の２つの評価方法が知られている。第１の評価方法は、並列計算機のすべての構成要素をシミュレーションプログラムによって仮想的に再現し、単体計算機上で通信のシミュレーションを行う方法である。この評価方法では、各構成要素の物理的性能や機能をシミュレーションプログラムによって忠実に再現できれば、試作機を用いた場合と同等の正確な評価結果を得ることができる。第２の評価方法は、並列計算機の各構成要素の設計情報を入力しておき、設計情報に基づいて確率統計的に通信のシミュレーションを行う方法である（例えば、特許文献２参照）。この評価方法は簡易的な方法であり、迅速かつ容易にネットワークの性能を評価することができる。
【特許文献１】特開平１１−２８４６９１号公報
【特許文献２】特開２０００−１０５７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来のシミュレーションによる評価方法では、以下の問題がある。上記第１の評価方法では、シミュレーションプログラムを作成する作業負担が非常に大きいという問題がある。これは、再現すべき構成要素の数が多いことに加え、作成したシミュレーションプログラム自体が正しいことを検証する作業も必要となるからである。更に、本来は複数の計算ノードで並列に実行させるべき処理を単体計算機上で再現するため、シミュレーションに要する時間が大きくなるという問題もある。上記第２の評価方法では、評価結果が正確性に欠けるという問題がある。これは、ネットワークの性能は、通信が発生するタイミングに大きく依存するにも拘わらず、このタイミングが正確に再現されていないからである。
【０００７】
本発明はこのような点に鑑みてなされたものであり、並列計算機のネットワーク性能をシミュレーションによって評価する際に、作業負担の軽減と通信のタイミングの正確な再現とを両立できるネットワーク性能評価プログラム、ネットワーク性能評価装置およびネットワーク性能評価方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記課題を解決するために、図１に示すネットワーク性能評価プログラムが提供される。本発明に係るネットワーク性能評価プログラムは、複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するものである。本発明に係るネットワーク性能評価プログラムを実行するコンピュータ１は、設計情報記憶手段１ａ、評価情報記憶手段１ｂ、通信データ取得手段１ｃ、設計評価手段１ｄおよび通信データ転送手段１ｅを有する。
【０００９】
設計情報記憶手段１ａは、評価対象のネットワークを定義した設計情報を記憶する。評価情報記憶手段１ｂは、評価対象のネットワークの評価結果を示す評価情報を記憶する。通信データ取得手段１ｃは、複数の計算ノード２ａ，２ｂ，２ｃを用いて複数のプロセスを実行させたときに、計算ノード２ａ，２ｂ，２ｃによって出力される通信データを取得する。設計評価手段１ｄは、設計情報記憶手段１ａを参照して、通信データ取得手段１ｃが取得した通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて評価情報記憶手段１ｂが記憶する評価情報を更新する。通信データ転送手段１ｅは、通信データ取得手段１ｃが取得した通信データを、宛先の計算ノードに対して転送する。
【００１０】
このようなネットワーク性能評価プログラムを実行するコンピュータ１によれば、通信データ取得手段１ｃにより、複数の計算ノード２ａ，２ｂ，２ｃを用いて複数のプロセスを実行させたときに、計算ノード２ａ，２ｂ，２ｃによって出力される通信データが取得される。設計評価手段１ｄにより、取得された通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションが行われ、得られたシミュレーション結果に基づいて評価情報が更新される。通信データ転送手段１ｅにより、取得された通信データが、宛先の計算ノードに対して転送される。
【００１１】
また、上記課題を解決するために、複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するネットワーク性能評価装置において、複数の計算ノードを用いて複数のプロセスを実行させたときに、計算ノードによって出力される通信データを取得する通信データ取得手段と、評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、通信データ取得手段が取得した通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する評価対象のネットワークの評価結果を示す評価情報を更新する設計評価手段と、通信データ取得手段が取得した通信データを、宛先の計算ノードに対して転送する通信データ転送手段と、を有することを特徴とするネットワーク性能評価装置が提供される。
【００１２】
このようなネットワーク性能評価装置によれば、通信データ取得手段により、複数の計算ノードを用いて複数のプロセスを実行させたときに、計算ノードによって出力される通信データが取得される。設計評価手段により、取得された通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションが行われ、得られたシミュレーション結果に基づいて評価情報が更新される。通信データ転送手段により、取得された通信データが、宛先の計算ノードに対して転送される。
【００１３】
また、上記課題を解決するために、複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するコンピュータによるネットワーク性能評価方法において、通信データ取得手段が、複数の計算ノードを用いて複数のプロセスを実行させたときに、計算ノードによって出力される通信データを取得するステップと、設計評価手段が、評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、通信データ取得手段が取得した通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する評価対象のネットワークの評価結果を示す評価情報を更新するステップと、通信データ転送手段が、通信データ取得手段が取得した通信データを、宛先の計算ノードに対して転送するステップと、を有することを特徴とするネットワーク性能評価方法が提供される。
【００１４】
このようなネットワーク性能評価方法によれば、複数の計算ノードを用いて複数のプロセスを実行させたときに、計算ノードによって出力される通信データが取得される。次に、取得された通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションが行われ、得られたシミュレーション結果に基づいて評価情報が更新される。そして、取得された通信データが、宛先の計算ノードに対して転送される。
【発明の効果】
【００１５】
本発明では、計算ノードに並列処理を行うプロセスを実際に実行させ、プロセス間で送受信される通信データを通信の途中で取得し、取得した通信データに基づいて仮想的なネットワークの性能評価を行うこととした。これにより、シミュレーションの準備の作業負担が大きく軽減されると共に、シミュレーションに要する時間が短縮される。また、実際に発生した通信のタイミングに応じた正確な評価結果を得ることができる。更に、通信ログなどの中間データを用いずにリアルタイムにシミュレーションを行えるため、膨大なデータを保持する必要がない。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示すコンピュータ１は、複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するものである。コンピュータ１は、ネットワーク３を介して、プロセスを実行する計算ノード２ａ，２ｂ，２ｃと接続されている。コンピュータ１は、設計情報記憶手段１ａ、評価情報記憶手段１ｂ、通信データ取得手段１ｃ、設計評価手段１ｄおよび通信データ転送手段１ｅを有する。
【００１７】
設計情報記憶手段１ａには、評価対象のネットワークを定義した設計情報が格納される。設計情報には、例えば、ネットワークの物理構成を示す情報と機能を示す情報とが含まれる。ネットワークの物理構成としては、例えば、計算ノード間を接続するリンクの構造（トポロジー）や各リンクの通信速度、通信バッファの配置および容量などが定義される。ネットワークの機能としては、例えば、ルーティングアルゴリズムや通信プロトコルなどが定義される。
【００１８】
評価情報記憶手段１ｂには、評価対象のネットワークの評価結果を示す評価情報が格納される。評価情報には、例えば、各リンクの通信時間の平均や稼働率の平均、各通信バッファの平均長および最大長などを示す情報が含まれる。
【００１９】
通信データ取得手段１ｃは、計算ノード２ａ，２ｂ，２ｃ間でネットワーク３を介して送受信される通信データを取得する。ここで、コンピュータ１が通信データを取得できるようにするには、さまざまな方法が考えられる。例えば、計算ノード２ａ，２ｂ，２ｃによって出力される通信データが必ずコンピュータ１を経由するように、ネットワーク３を構築する方法がある。また、計算ノード２ａ，２ｂ，２ｃまたはネットワーク３内の通信装置が、通信データの宛先アドレスを一時的にコンピュータ１のアドレスに書き換える方法がある。
【００２０】
設計評価手段１ｄは、設計情報記憶手段１ａを参照して、通信データ取得手段１ｃが取得した通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションを行う。通信のシミュレーションでは、通信が発生したタイミングや通信経路が特定されて、各通信バッファでの送信待ち時間などが計算される。そして、設計評価手段１ｄは、得られたシミュレーション結果に基づいて、評価情報記憶手段１ｂに格納された評価情報を更新する。
【００２１】
通信データ転送手段１ｅは、通信データ取得手段１ｃが取得した通信データを、宛先の計算ノードに対して転送する。ここで、通信データの宛先アドレスが一時的にコンピュータ１のアドレスに書き換えられていた場合には、通信データ転送手段１ｅは、宛先アドレスを本来の宛先となる計算ノードのアドレスに書き換える。
【００２２】
このようなコンピュータ１によれば、通信データ取得手段１ｃにより、複数の計算ノード２ａ，２ｂ，２ｃを用いて複数のプロセスを実行させたときに、計算ノード２ａ，２ｂ，２ｃによって出力される通信データが取得される。設計評価手段１ｄにより、取得された通信データを評価対象のネットワークで伝送する場合の通信のシミュレーションが行われ、得られたシミュレーション結果に基づいて評価情報が更新される。通信データ転送手段１ｅにより、取得された通信データが、宛先の計算ノードに対して転送される。
【００２３】
これにより、シミュレーションの準備の作業負担が大きく軽減されると共に、シミュレーションに要する時間が短縮される。また、実際に発生した通信のタイミングに応じた正確な評価結果を得ることができる。更に、通信ログなどの中間データを用いずにリアルタイムにシミュレーションを行えるため、膨大なデータを保持する必要がない。
【００２４】
以下、本実施の形態を図面を参照して詳細に説明する。
［第１の実施の形態］
図２は、第１の実施の形態のシステム構成を示す図である。図２に示すシミュレーションシステムは、シミュレーションサーバ１００、８台の計算ノード２００，２００ａ，・・・，２００ｇおよびネットワーク２０で構成される。シミュレーションサーバ１００および計算ノード２００，２００ａ，・・・，２００ｇは、ネットワーク２０を介して相互に通信が可能である。
【００２５】
シミュレーションサーバ１００は、並列計算機のネットワーク性能を評価するためのシミュレーションを行うサーバコンピュータである。シミュレーションサーバ１００は、計算ノード２００，２００ａ，・・・，２００ｇが送信したメッセージを受信する。シミュレーションサーバ１００は、受信したメッセージに基づいて通信のシミュレーションをリアルタイムに行う。そして、シミュレーションサーバ１００は、メッセージに含まれている本来の宛先ノードの宛先ノード番号に従って、受信したメッセージを転送する。
【００２６】
計算ノード２００，２００ａ，・・・，２００ｇは、それぞれプロセスを実行するコンピュータである。計算ノード２００，２００ａ，・・・，２００ｇには、処理内容を定義した並列プログラムが予め配置されている。計算ノード２００，２００ａ，・・・，２００ｇは、処理の開始が指示されると、並列プログラムに基づいてプロセスを生成し実行する。
【００２７】
ここで、計算ノード２００，２００ａ，・・・，２００ｇには、それぞれ一意なノード番号が予め付与されている。個々のプロセスは、他のプロセスと通信を行う場合、宛先ノード番号を指定して通信データを出力する。すると、計算ノード２００，２００ａ，・・・，２００ｇは、プロセスによって出力された通信データに宛先ノード番号を付加し、メッセージとしてシミュレーションサーバ１００に送信する。
【００２８】
また、計算ノード２００，２００ａ，・・・，２００ｇは、シミュレーションサーバ１００が転送したメッセージを受信すると、メッセージに含まれる通信データをプロセスに渡す。これにより、プロセス間で通信データの受け渡しが行われ並列処理が進められる。
【００２９】
次に、シミュレーションサーバ１００および計算ノード２００，２００ａ，・・・，２００ｇのハードウェア構成について説明する。
図３は、シミュレーションサーバのハードウェア構成を示す図である。シミュレーションサーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５および通信インタフェース１０６が接続されている。
【００３０】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データの少なくとも一部が一時的に格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。また、ＨＤＤ１０３には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００３１】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。通信インタフェース１０６は、ネットワーク２０に接続されている。
【００３２】
計算ノード２００，２００ａ，・・・，２００ｇも、シミュレーションサーバ１００と同様のハードウェア構成によって実現できる。以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００３３】
次に、シミュレーションサーバ１００および計算ノード２００，２００ａ，・・・，２００ｇのモジュール構成について説明する。
図４は、シミュレーションサーバの機能を示すブロック図である。シミュレーションサーバ１００は、物理設計情報記憶部１１０、機能設計情報記憶部１２０、評価情報記憶部１３０、ＭＰＩ通信部１４０、ＭＰＩ命令変換部１５０、シミュレーション部１６０および評価結果表示部１７０を有する。ＭＰＩ通信部１４０は、ネットワーク２０を介して計算ノード２００，２００ａ，・・・，２００ｇと通信を行うことができる。評価結果表示部１７０は、モニタ１１に各種情報を表示することができる。
【００３４】
物理設計情報記憶部１１０には、性能評価の対象とするネットワークの設計情報のうち、物理的要素に関する設計情報が格納される。具体的には、ネットワークのトポロジーを示す情報、ネットワークを構成する各リンクの通信帯域および遅延時間を示す情報、送信待ちのメッセージを一時的に格納しておく通信バッファの記憶容量および管理方法を示す情報などが格納される。これら設計情報は、利用者がシミュレーション前に作成し、物理設計情報記憶部１１０に格納しておく。
【００３５】
機能設計情報記憶部１２０には、性能評価の対象とするネットワークの設計情報のうち、機能的要素に関する設計情報が格納される。具体的には、通信経路を決定するためのルーティングアルゴリズムを示す情報、メッセージの送受信に用いられる通信プロトコルを示す情報などが格納される。このような機能は、実際の並列計算機では通常、ソフトウェア単独またはソフトウェアとハードウェアの組み合わせによって実現されるものである。これら設計情報は、利用者がシミュレーション前に作成し、機能設計情報記憶部１２０に格納しておく。
【００３６】
評価情報記憶部１３０は、物理設計情報記憶部１１０および機能設計情報記憶部１２０に格納された設計情報で定義されるネットワークの性能評価の結果を示す評価情報が格納される。具体的には、各リンクの稼働率および平均遅延時間を示す情報、各通信バッファの平均長および最大長を示す情報などが格納される。また、評価情報記憶部１３０には、計算ノード２００，２００ａ，・・・，２００ｇの負荷状態を示す情報も格納される。
【００３７】
評価情報記憶部１３０に格納された評価情報は、シミュレーションの進行に伴ってシミュレーション部１６０によって順次更新される。シミュレーションが終了した時点の評価情報が、最終的な性能評価の結果を示す。
【００３８】
ＭＰＩ通信部１４０は、ＭＰＩ（Message Passing Interface）の仕様に従って、計算ノード２００，２００ａ，・・・，２００ｇとの間でメッセージを送受信する。ＭＰＩとは、メッセージを送受信する際にプログラムから呼び出すことが可能な関数を定義した規格である。例えば、１つの計算ノードに対してメッセージを送信するための関数や、複数の計算ノードに対して同時にメッセージを送信するための関数などが定義されている。ＭＰＩの仕様は、標準化団体のＭＰＩフォーラムによって管理されている。
【００３９】
ここで、計算ノード２００，２００ａ，・・・，２００ｇとの間で送受信するメッセージには、プロセスが出力する通信データに加えて、追加情報とＭＰＩヘッダとが含まれている。追加情報およびＭＰＩヘッダについては、後で詳細に説明する。
【００４０】
ＭＰＩ通信部１４０は、計算ノード２００，２００ａ，・・・，２００ｇからメッセージを受信すると、メッセージからＭＰＩヘッダを分離して、ＭＰＩ命令変換部１５０に渡す。また、ＭＰＩ通信部１４０は、ＭＰＩ命令変換部１５０から、追加情報と通信データとからなるデータを受け取ると、ＭＰＩヘッダを付加して、宛先となる計算ノードに対して送信する。このようなＭＰＩ通信部１４０の機能は、一般的に入手可能なＭＰＩライブラリを実行することで実現できる。
【００４１】
ＭＰＩ命令変換部１５０は、ＭＰＩ通信部１４０とシミュレーション部１６０との間でデータの中継を行う。具体的には、ＭＰＩ命令変換部１５０は、ＭＰＩ通信部１４０からＭＰＩヘッダが分離された後のメッセージを受け取ると、更に追加情報を分離し、シミュレーション部１６０に渡す。また、ＭＰＩ命令変換部１５０は、シミュレーション部１６０から通信データを受け取ると、追加情報を付加して、ＭＰＩ通信部１４０に渡す。
【００４２】
シミュレーション部１６０は、利用者の操作入力によってシミュレーションの開始が指示されると、ＭＰＩ命令変換部１５０から受け取るデータに基づいて、通信のシミュレーションを行う。シミュレーション部１６０は、利用者の操作入力によってシミュレーションの終了が指示されると、シミュレーションを停止する。シミュレーション部１６０は、仮想通信特定部１６１および仮想負荷計算部１６２を有する。
【００４３】
仮想通信特定部１６１は、物理設計情報記憶部１１０および機能設計情報記憶部１２０に格納された設計情報に基づいて、ＭＰＩ命令変換部１５０から受け取った通信データを伝送する、仮想的な通信内容を特定する。例えば、仮想通信特定部１６１は、仮想的な通信の発生タイミングと通信経路とを特定する。
【００４４】
仮想負荷計算部１６２は、仮想通信特定部１６１が特定した仮想的な通信内容と、物理設計情報記憶部１１０および機能設計情報記憶部１２０に格納された設計情報とに基づいて、各リンクの負荷状態をリアルタイムに計算する。例えば、仮想負荷計算部１６２は、各時点における各リンクでの通信状況を特定し、リンクの稼働率や衝突の発生によって送信待ちとなっている通信データの量を計算する。
【００４５】
そして、仮想負荷計算部１６２は、計算結果に基づいて、評価情報記憶部１３０に格納された評価情報を順次更新する。なお、通信バッファの平均長や各リンクの稼働率など平均値を示す指標については、全シミュレーション時間の平均値を評価情報記憶部１３０に格納してもよいし、時系列変化を把握できるように所定の期間毎の平均値を評価情報記憶部１３０に格納してもよい。
【００４６】
また、仮想負荷計算部１６２は、仮想通信特定部１６１によって特定された通信の発生タイミングに基づいて、計算ノード２００，２００，２００ａ，・・・，２００ｇの負荷状態を推計する。そして、仮想負荷計算部１６２は、推計結果をネットワーク性能の評価結果と併せて、評価情報記憶部１３０に格納する。
【００４７】
評価結果表示部１７０は、シミュレーションが終了すると、評価情報記憶部１３０から評価情報を取得する。そして、評価結果表示部１７０は、グラフなどの可視化データを生成し、モニタ１１に表示する。
【００４８】
図５は、第１の実施の形態の計算ノードの機能を示すブロック図である。計算ノード２００は、プログラム記憶部２１０、ＭＰＩ通信部２２０、ＭＰＩ命令変換部２３０およびプログラム実行部２４０を有する。ＭＰＩ通信部２２０は、ネットワーク２０を介してシミュレーションサーバ１００および他の計算ノード２００ａ，・・・，２００ｇと通信を行うことができる。
【００４９】
プログラム記憶部２１０には、並列処理の処理内容を定義した並列プログラムが格納される。並列プログラムは、利用者によって予め作成されて、プログラム記憶部２１０に格納される。
【００５０】
ＭＰＩ通信部２２０は、ＭＰＩの仕様に従って、シミュレーションサーバ１００との間でメッセージを送受信する。具体的には、ＭＰＩ通信部２２０は、シミュレーションサーバ１００からメッセージを受信すると、メッセージからＭＰＩヘッダを分離して、ＭＰＩ命令変換部２３０に渡す。また、ＭＰＩ通信部２２０は、ＭＰＩ命令変換部２３０から追加情報と通信データとからなるデータを受け取ると、ＭＰＩヘッダを付加して、シミュレーションサーバ１００に対して送信する。このようなＭＰＩ通信部２２０の機能は、一般的に入手可能なＭＰＩライブラリを実行することで実現できる。
【００５１】
ＭＰＩ命令変換部２３０は、ＭＰＩ通信部２２０とプログラム実行部２４０との間でデータの中継を行う。具体的には、ＭＰＩ命令変換部２３０は、ＭＰＩ通信部２２０からＭＰＩヘッダが分離された後のメッセージを受け取ると、更に追加情報を分離し、プログラム実行部２４０に渡す。また、ＭＰＩ命令変換部２３０は、プログラム実行部２４０から通信データを受け取ると、追加情報を付加して、ＭＰＩ通信部２２０に渡す。
【００５２】
プログラム実行部２４０は、処理の開始の指示があると、プログラム記憶部２１０から並列プログラムを取得する。そして、プログラム実行部２４０は、取得した並列プログラムに基づいてプロセスを実行する。プログラム実行部２４０は、プロセスの実行中に通信データが出力されると、通信データをＭＰＩ命令変換部２３０に渡す。また、ＭＰＩ命令変換部２３０から通信データを受け取ると、受け取った通信データを処理に利用する。プログラム実行部２４０は、処理の終了の指示があると、処理を停止する。
【００５３】
計算ノード２００ａ，・・・，２００ｇも、計算ノード２００と同様のモジュール構成によって実現できる。
次に、シミュレーションサーバ１００で用いられる設計情報の例について説明する。
【００５４】
図６は、ネットワークのトポロジーの例を示す模式図である。図６に示すトポロジーは、１辺の長さが４の２次元メッシュネットワークのトポロジー例である。１辺の長さが４の２次元メッシュネットワークは、１６個のノードと２４個のリンクで構成される。それぞれのノードには、０から１５までの一意なノード番号が付与されている。
【００５５】
ノード番号０，２，５，７，８，１０，１３，１５のノードは、それぞれ計算ノード２００，２００ａ，・・・，２００ｇに対応する。ノード番号１，３，４，６，９，１１，１２，１４のノードは、ルータに相当する。計算ノード２００から計算ノード２００ａへ最短経路で通信を行う場合、ノード番号１に相当するルータを経由することになる。このようにして、演算を行わないノードは仮想的に定義されるため、シミュレーションを行うために実際のルータを用意する必要はない。
【００５６】
このようなネットワークのトポロジーは、物理設計情報記憶部１１０に格納される設計情報によって定義される。
図７は、リンク情報テーブルのデータ構造例を示す図である。図７に示すリンク情報テーブル１１１は、物理設計情報記憶部１１０に格納されている。リンク情報テーブル１１１に格納されるリンク情報は、図６に示した２次元メッシュ型ネットワークのトポロジーと各リンクの通信能力とを定義した設計情報である。
【００５７】
リンク情報テーブル１１１には、出力ノードを示す項目、出力ポートを示す項目、入力ノードを示す項目、入力ポートを示す項目、バンド幅を示す項目、遅延時間を示す項目および備考の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
【００５８】
出力ノードを示す項目には、リンクの起点となるノードのノード番号が設定される。出力ポートを示す項目には、起点となるノードから見たときのリンクの方向を示すポート番号が設定される。具体的には、図６においてＸ軸の正方向のポート番号は０、Ｙ軸の正方向のポート番号は１、Ｘ軸の負方向のポート番号は２、Ｙ軸の負方向のポート番号は３である。
【００５９】
入力ノードを示す項目には、リンクの終点となるノードのノード番号が設定される。入力ポートを示す項目には、終点となるノードから見たときのリンクの方向を示すポート番号が設定される。ポート番号の意味は、出力ポートのポート番号と同じである。
【００６０】
バンド幅を示す項目には、リンクの通信帯域を示す数値が設定される。バンド幅の単位はＭｂｐｓ（Mega bit per second）である。遅延時間を示す項目には、起点となるノードから終点となるノードへ信号を伝送するために要する時間を示す数値が設定される。遅延時間の単位はｎｓ（nano second）である。備考を示す項目には、バンド幅および遅延時間以外の物理的な通信条件が設定される。例えば、シミュレーション開始後にリンクが故障する場合、故障時間が設定される。
【００６１】
リンク情報テーブル１１１には、使用可能なすべてのリンクについての情報が格納される。一部のリンクを使用不可とする場合は、リンク情報テーブル１１１からそのリンクの情報を削除すればよい。また、リンクの情報は片方向ずつ設定できる。従って、片方向通信しか行えないリンクを定義することもできる。
【００６２】
リンク情報テーブル１１１に格納される情報は、予め利用者によって定義される。例えば、出力ノードが“１”、出力ポートが“１”、入力ノードが“５”、入力ポートが“３”、バンド幅が“１００”、遅延時間が“１０”、備考が“ｆａｉｌ＠１５００”という情報が格納される。これは、ノード番号が１のルータからノード番号が５の計算ノードへのリンクは、通信帯域が１００Ｍｂｐｓ、遅延時間が１０ｎｓであり、シミュレーション開始から１５００秒後に故障が発生することを示している。
【００６３】
図８は、経路決定処理の例を示すフローチャートである。図８に示す経路決定方法は、図６に示した２次元メッシュ型ネットワークに適用可能なルーティングアルゴリズムの例である。このルーティングアルゴリズムを実現するプログラムが、予め利用者によって作成され、機能設計情報記憶部１２０に格納されている。以下、仮想通信特定部１６１がルーティングアルゴリズムに従って通信経路を特定する処理を、図８のステップ番号に沿って説明する。
【００６４】
［ステップＳ１２１］仮想通信特定部１６１は、２次元メッシュ型ネットワークの１辺の長さＬ、現在のノード番号Ｃ、宛先ノード番号Ｔを設定する。現在のノード番号Ｃは、初期値として送信元ノード番号を設定する。
【００６５】
［ステップＳ１２２］仮想通信特定部１６１は、現在のノードのＹ座標が宛先ノードのＹ座標よりも大きいか否か判断する。すなわち、現在のノード番号Ｃを１辺の長さＬで割った値（小数点以下は切り捨てる。以下同じ。）が、宛先ノード番号Ｔを１辺の長さＬで割った値より大きいという条件を満たすか否か判断する。条件を満たす場合には、処理がステップＳ１２３に進められる。条件を満たさない場合には、処理がステップＳ１２４に進められる。
【００６６】
［ステップＳ１２３］仮想通信特定部１６１は、現在のノードをＹ軸の負方向に１つ移動させる。すなわち、現在のノード番号Ｃを１辺の長さＬだけ減じる。その後、処理がステップＳ１２２に進められる。
【００６７】
［ステップＳ１２４］仮想通信特定部１６１は、現在のノードのＹ座標が宛先ノードのＹ座標よりも小さいか否か判断する。すなわち、現在のノード番号Ｃを１辺の長さＬで割った値が、宛先ノード番号Ｔを１辺の長さＬで割った値より小さいという条件を満たすか否か判断する。条件を満たす場合には、処理がステップＳ１２５に進められる。条件を満たさない場合、すなわち、現在のノードのＹ座標と宛先ノードのＹ座標とが同一である場合、処理がステップＳ１２６に進められる。
【００６８】
［ステップＳ１２５］仮想通信特定部１６１は、現在のノードをＹ軸の正方向に１つ移動させる。すなわち、現在のノード番号Ｃに１辺の長さＬを加える。その後、処理がステップＳ１２４に進められる。
【００６９】
［ステップＳ１２６］仮想通信特定部１６１は、現在のノードのＸ座標が宛先ノードのＸ座標よりも大きいか否か判断する。すなわち、現在のノード番号Ｃが、宛先ノード番号Ｔより大きいという条件を満たすか否か判断する。条件を満たす場合には、処理がステップＳ１２７に進められる。条件を満たさない場合には、処理がステップＳ１２８に進められる。
【００７０】
［ステップＳ１２７］仮想通信特定部１６１は、現在のノードをＸ軸の負方向に１つ移動させる。すなわち、現在のノード番号Ｃを１だけ減じる。その後、処理がステップＳ１２６に進められる。
【００７１】
［ステップＳ１２８］仮想通信特定部１６１は、現在のノードのＸ座標が宛先ノードのＸ座標よりも小さいか否か判断する。すなわち、現在のノード番号Ｃが、宛先ノード番号Ｔより小さいという条件を満たすか否か判断する。条件を満たす場合には、処理がステップＳ１２９に進められる。条件を満たさない場合、すなわち、現在のノードと宛先ノードが同一である場合には、処理が終了する。
【００７２】
［ステップＳ１２９］仮想通信特定部１６１は、現在のノードをＸ軸の正方向に１つ移動させる。すなわち、現在のノード番号Ｃに１を加える。その後、処理がステップＳ１２８に進められる。
【００７３】
このようにして、仮想通信特定部１６１は、まず現在のノードのＹ座標と宛先ノードのＹ座標とが一致するように現在のノードを移動させる。その後、現在のノードのＸ座標と宛先ノードのＸ座標とが一致するように現在のノードを移動させる。現在のノードが辿った経路が通信経路となる。
【００７４】
次に、以上のような構成およびデータ構造を備えるシミュレーションシステムにおいて実行される処理の詳細について説明する。以下、計算ノード２００がメッセージを出力する処理、シミュレーションサーバ１００がメッセージを受信してからメッセージを転送するまでの処理、計算ノード２００がメッセージを受け付ける処理の順に説明する。
【００７５】
図９は、メッセージ出力処理の手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］プログラム実行部２４０は、プロセスの実行中に他のプロセスとの間で通信を行う必要が生じると、通信データと宛先ノード番号とをＭＰＩ命令変換部２３０に渡す。なお、この処理は、ＭＰＩライブラリが提供するＭＰＩ関数の呼び出しとして実現できる。
【００７６】
［ステップＳ１２］ＭＰＩ命令変換部２３０は、前回ＭＰＩ関数が呼び出された時刻からの経過時間を計測し、計測した経過時間に所定の係数を掛けた値を演算時間とする。すなわち、演算時間には通信に要する時間が含まれない。ここで、所定の係数は、実時間をシミュレーションのための仮想時間に変換する係数である。実時間に代えて仮想時間を用いるのは、計算ノード間の演算能力の違いを吸収すると共に、演算時間とシミュレーションによって計算される通信時間との間の整合性をとるためである。所定の係数は、計算ノード毎に予め設定される。
【００７７】
［ステップＳ１３］ＭＰＩ命令変換部２３０は、通信データに追加情報を付加する。追加情報には、プログラム実行部２４０から受け取った宛先ノード番号とステップＳ１２で計算した演算時間とが含まれる。そして、ＭＰＩ命令変換部２３０は、追加情報と通信データとからなるデータを、ＭＰＩ通信部２２０に渡す。
【００７８】
［ステップＳ１４］ＭＰＩ通信部２２０は、ＭＰＩ命令変換部２３０から受け取ったデータに、更にＭＰＩヘッダを付加する。ＭＰＩヘッダには、宛先ノード番号としてのシミュレーションサーバ１００のアドレスと、送信元ノード番号としての計算ノード２００のノード番号とが含まれる。
【００７９】
［ステップＳ１５］ＭＰＩ通信部２２０は、ステップＳ１４で作成された、ＭＰＩヘッダ、追加情報、通信データからなるデータを、メッセージとしてネットワーク２０に出力する。
【００８０】
このようにして、計算ノード２００は、実行中のプロセスによって通信データが生成されると、通信データに追加情報とＭＰＩヘッダとを付加して、シミュレーションサーバ１００にメッセージを送信する。これにより、メッセージがシミュレーションサーバ１００に届けられる。
【００８１】
図１０は、出力時のメッセージのデータ構造例を示す図である。図１０に示すメッセージは、図９に示したメッセージ出力処理によって計算ノード２００から出力されるメッセージである。メッセージの先頭にはＭＰＩヘッダが配置される。ＭＰＩヘッダの次に追加情報が配置される。そして、メッセージの末尾に通信データが配置される。
【００８２】
ＭＰＩヘッダには、メッセージの直接の宛先であるシミュレーションサーバ１００のアドレスと、送信元ノードである計算ノード２００のノード番号とが含まれる。ＭＰＩヘッダは、ネットワーク２０を介してメッセージをシミュレーションサーバ１００に届けるために必要となる情報である。追加情報には、本来の宛先ノードのノード番号と、計算ノード２００が前回の通信から要した演算時間（仮想時間）とが含まれる。
【００８３】
なお、計算ノード２００がメッセージを出力する処理について説明したが、他の計算ノード２００ａ，・・・，２００ｇがメッセージを出力する処理についても同様である。
図１１は、メッセージ中継処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８４】
［ステップＳ２１］ＭＰＩ通信部１４０は、計算ノード２００，２００ａ，・・・，２００ｇが出力したメッセージを受信する。
［ステップＳ２２］ＭＰＩ通信部１４０は、ステップＳ２１で受信したメッセージからＭＰＩヘッダを分離する。そして、ＭＰＩ通信部１４０は、追加情報と通信データとからなるデータと、ＭＰＩヘッダに含まれていた送信元ノード番号とを、ＭＰＩ命令変換部１５０に渡す。
【００８５】
［ステップＳ２３］ＭＰＩ命令変換部１５０は、ＭＰＩ通信部１４０から受け取ったデータから更に追加情報を分離する。そして、ＭＰＩ命令変換部１５０は、通信データ、追加情報に含まれていた宛先ノード番号と演算時間、ＭＰＩ通信部１４０から受け取った送信元ノード番号を、シミュレーション部１６０に渡す。
【００８６】
［ステップＳ２４］シミュレーション部１６０は、ＭＰＩ命令変換部１５０から受け取ったデータを仮想通信特定部１６１に渡す。仮想通信特定部１６１は、物理設計情報記憶部１１０および機能設計情報記憶部１２０に格納された設計情報を参照して、仮想的な通信内容を特定する。具体的には、仮想通信特定部１６１は、それまでの演算時間および通信時間の累積と、新たに受け取った演算時間とに基づいて、通信が発生したタイミングを特定する。また、仮想通信特定部１６１は、送信元ノード番号と宛先ノード番号とに基づいて通信経路を特定する。
【００８７】
［ステップＳ２５］仮想負荷計算部１６２は、ステップＳ２４で仮想通信特定部１６１が特定した仮想的な通信内容に基づいて、各タイミングにおける各リンクの仮想的な負荷状態を計算する。例えば、仮想負荷計算部１６２は、リンクの通信状況や衝突の発生によって送信待ちとなっている通信データの量などを計算する。また、仮想負荷計算部１６２は、仮想通信特定部１６１が特定した仮想的な通信内容に対応する通信時間を計算する。
【００８８】
［ステップＳ２６］仮想負荷計算部１６２は、ステップＳ２５で計算した仮想的な負荷状態に応じて、評価情報記憶部１３０に格納された評価情報を更新する。例えば、仮想負荷計算部１６２は、各リンクの稼働率や各通信バッファの平均長などを更新する。その後、仮想負荷計算部１６２は、ステップＳ２５で計算した通信時間をシミュレーション部１６０に渡す。シミュレーション部１６０は、演算時間と通信時間の合計、通信データ、宛先ノード番号、送信元ノード番号を、ＭＰＩ命令変換部１５０に渡す。
【００８９】
［ステップＳ２７］ＭＰＩ命令変換部１５０は、通信データに追加情報を付加する。追加情報には、シミュレーション部１６０から受け取った演算時間と通信時間の合計と送信元ノード番号とが含まれる。そして、ＭＰＩ命令変換部１５０は、追加情報と通信データとからなるデータを、ＭＰＩ通信部１４０に渡す。
【００９０】
［ステップＳ２８］ＭＰＩ通信部１４０は、ＭＰＩ命令変換部１５０から受け取ったデータに、更にＭＰＩヘッダを付加する。ＭＰＩヘッダには、シミュレーション部１６０から受け取った宛先ノード番号と、送信元ノード番号としてのシミュレーションサーバ１００のアドレスとが含まれる。
【００９１】
［ステップＳ２９］ＭＰＩ通信部１４０は、ステップＳ２８で作成された、ＭＰＩヘッダ、追加情報、通信データからなるデータを、メッセージとしてネットワーク２０に出力する。
【００９２】
このようにして、シミュレーションサーバ１００は、計算ノード２００，２００ａ，・・・，２００ｇからメッセージを受信すると、送信元ノード番号、本来の宛先ノードのノード番号、仮想的な演算時間、通信データを用いて、通信のシミュレーションを行う。そして、シミュレーションサーバ１００は、通信データに追加情報とＭＰＩヘッダとを付加して、本来の宛先ノードに対して送信する。これにより、メッセージが本来の宛先ノードに届けられる。
【００９３】
図１２は、中継時のメッセージのデータ構造例を示す図である。図１２に示すメッセージは、図１１に示したメッセージ中継処理によってシミュレーションサーバ１００から出力されるメッセージである。メッセージの先頭にはＭＰＩヘッダが配置される。ＭＰＩヘッダの次に追加情報が配置される。そして、メッセージの末尾に通信データが配置される。
【００９４】
ＭＰＩヘッダには、宛先ノードのノード番号と、送信元ノードであるシミュレーションサーバ１００のノード番号とが含まれる。ＭＰＩヘッダは、ネットワーク２０を介してメッセージを宛先ノードに届けるために必要となる情報である。追加情報には、本来の送信元ノードのノード番号と、送信元ノードが要した演算時間（仮想時間）とシミュレーションによって計算された通信時間（仮想時間）の合計時間とが含まれる。
【００９５】
図１３は、メッセージ受付処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］ＭＰＩ通信部２２０は、シミュレーションサーバ１００が出力したメッセージを受信する。
【００９６】
［ステップＳ３２］ＭＰＩ通信部２２０は、ステップＳ３１で受信したメッセージからＭＰＩヘッダを分離する。そして、ＭＰＩ通信部２２０は、追加情報と通信データとからなるデータをＭＰＩ命令変換部２３０に渡す。
【００９７】
［ステップＳ３３］ＭＰＩ命令変換部２３０は、ＭＰＩ通信部２２０から受け取ったデータから更に追加情報を分離する。そして、ＭＰＩ命令変換部２３０は、通信データをプログラム実行部２４０に渡す。
【００９８】
［ステップＳ３４］プログラム実行部２４０は、ＭＰＩ命令変換部２３０から通信データを受け取ると、実行中のプロセスへその旨を通知する。以降、プロセスは通信データを利用することができる。
【００９９】
このようにして、計算ノード２００は、シミュレーションサーバ１００からメッセージを受信すると、メッセージに含まれる通信データを抽出し実行中のプロセスに通知する。ここで、メッセージのＭＰＩヘッダおよび追加情報に含まれる情報もＲＡＭなどに格納しておくことで、実行中のプロセスがこれらの利用することも可能である。また、シミュレーションの終了後に計算ノード２００の管理者が利用することも可能である。なお、計算ノード２００がメッセージを受け付ける処理について説明したが、他の計算ノード２００ａ，・・・，２００ｇがメッセージを受け付ける処理についても同様である。
【０１００】
ここで、プロセスからは、シミュレーションサーバ１００を経由せずに、他のプロセスと直接通信データを送受信しているように見える。従って、計算ノード２００，２００ａ，・・・，２００ｇには、実際に並列計算機で使用する並列プログラムを配置することができ、シミュレーションのために用意したプログラムを配置する必要はない。
【０１０１】
次に、シミュレーションによって得られる評価結果の例および得られた評価結果の表示例について説明する。
図１４は、評価情報テーブルのデータ構造例を示す図である。図１４に示す評価情報テーブル１３１は、シミュレーションサーバ１００の評価情報記憶部１３０に格納されている。評価情報テーブル１３１に格納された評価情報は、図６に示した２次元メッシュ型ネットワークの評価結果である。
【０１０２】
評価情報テーブル１３１には、ノードを示す項目、演算時間を示す項目、ポート番号を示す項目、バッファ最大長を示す項目、バッファ平均長を示す項目、稼働率を示す項目および平均遅延を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
【０１０３】
ノードを示す項目には、リンクの起点となるノードのノード番号が設定される。演算時間を示す項目には、起点となるノードの累積の演算時間が設定される。演算時間の単位は秒である。この演算時間は、前述の仮想的な時間である。なお、ルータに相当するノードの場合、演算時間を示す項目は空欄となる。ポート番号を示す項目には、起点となるノードから見たときのリンクの方向を示すポート番号が設定される。
【０１０４】
バッファ最大長を示す項目には、通信バッファに格納された通信データの量の最大値、すなわち、リンクの手前で送信待ち状態になっている通信データの量の最大値が設定される。バッファ平均長を示す項目には、通信バッファに格納された通信データの量の全シミュレーション時間を通した平均値が設定される。バッファ最大長およびバッファ平均長の単位はバイトである。
【０１０５】
稼働率を示す項目には、全シミュレーション時間に対するリンクが使用されていた時間の割合が設定される。平均遅延を示す項目には、リンクの起点となるノードから終点となるノードへ信号を伝送する際の遅延時間の平均値が設定される。平均遅延の単位はｎｓ（nano second）である。
【０１０６】
評価情報テーブル１３１に格納される評価情報は、シミュレーションサーバ１００の仮想負荷計算部１６２によって適宜更新される。例えば、ノードが“０”、演算時間が“１００”、ポート番号が“０”、バッファ最大長が“８”、バッファ平均長が“２”、稼働率が“２１％”、平均遅延が“１０”という情報が格納される。これは、ノード番号が０の計算ノードからノード番号が１のルータへのリンクは、稼働率が２１％、平均の遅延時間が１０ｎｓであり、リンクの手前で最大８バイト、平均２バイトの通信データが滞留したことを示している。
【０１０７】
図１５は、評価結果の表示画面例を示す図である。図１５に示す表示画面３０は、シミュレーションサーバ１００の評価結果表示部１７０によってモニタ１１に表示される画面である。表示画面３０は、統計値表示領域３１およびグラフ表示領域３２を有する。
【０１０８】
統計値表示領域３１には、評価結果としての各種統計値がテーブル化されて表示される。統計値表示領域３１では、統計値の種類毎にタブが設けられており、利用者がタブを１つ選択すると、選択されたタブに対応する種類の統計値が表示される。
【０１０９】
グラフ表示領域３２には、各計算ノードの演算時間、通信時間および待ち時間の比率を示す棒グラフが表示される。累積の通信時間は、各リンクの稼働率などに基づいて計算することができる。待ち時間は、通信データを出力した後、他の計算ノードから通信データを受け取るまでに待つ時間である。累積の待ち時間は、全シミュレーション時間から累積の演算時間と累積の通信時間とを除くことで計算することができる。
【０１１０】
このようなシミュレーションシステムを用いることにより、並列計算機の計算ノードは実際の計算機および並列プログラムによって実現し、ネットワークのみをシミュレーションサーバによって仮想的に実現することができる。このため、並列計算機のすべての構成要素をシミュレーションプログラムで実現する場合と比べて、シミュレーションの準備の作業負担が大きく軽減される。
【０１１１】
また、シミュレーションに要する時間が大きく短縮される。また、実際に発生した通信のタイミングに応じた正確な評価結果を得ることができる。更に、通信ログなどの中間データを用いずにリアルタイムにシミュレーションを行えるため、膨大なデータを保持する必要がない。
【０１１２】
従って、複数種類のネットワークの性能評価を行う場合でも、迅速かつ容易に各ネットワークの評価結果を得ることができ、並列計算機のネットワークの設計が容易となる。
［第２の実施の形態］
次に、第２の実施の形態について説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１１３】
図１６は、第２の実施の形態のシステム構成を示す図である。図１６に示すシミュレーションシステムは、シミュレーションサーバ１００ａ，１００ｂ、８台の計算ノード２００，２００ａ，・・・，２００ｇおよびネットワーク２０で構成される。シミュレーションサーバ１００ａ，１００ｂおよび計算ノード２００，２００ａ，・・・，２００ｇは、ネットワーク２０を介して相互に通信が可能である。
【０１１４】
シミュレーションサーバ１００ａ，１００ｂは、第１の実施の形態のシミュレーションサーバ１００と同様、並列計算機のネットワーク性能を評価するためのシミュレーションを行うサーバコンピュータである。ただし、第２の実施の形態では、２台のシミュレーションサーバ１００ａ，１００ｂが分散してシミュレーションを行う。
【０１１５】
すなわち、８台の計算ノード２００，２００ａ，・・・，２００ｇが出力するメッセージを、２台のシミュレーションサーバ１００ａ，１００ｂで分担して受信する。例えば、計算ノード２００，２００ａ，・・・，２００ｇのうち特定の４台が出力するメッセージをシミュレーションサーバ１００ａが受信し、他の４台が出力するメッセージをシミュレーションサーバ１００ｂが受信するようにする。
【０１１６】
ここで、シミュレーションサーバ１００ａ，１００ｂが行うシミュレーションの手順は、第１の実施の形態のシミュレーションサーバ１００と基本的に同じである。ただし、２台のシミュレーションサーバ１００ａ，１００ｂの間で通信を行い、シミュレーションの内容を適宜同期させる必要がある。特に、処理対象とすべき通信内容を処理せずにシミュレーションを進めてしまうことによる矛盾を防止するために、シミュレーションでの仮想的な経過時間を同期させる必要がある。
【０１１７】
このようにシミュレーションプログラム間で同期を行いながら分散して行うシミュレーションは、分散シミュレーションと呼ばれる。分散シミュレーションの技術の例として、並列離散イベント駆動型シミュレーション（ＰＤＥＳ：Parallel Discrete Event Simulation）が知られている。ＰＤＥＳなどの同期方法を用いることで、２台のシミュレーションサーバ１００ａ，１００ｂによる分散シミュレーションを実現できる。
【０１１８】
このようなシミュレーションシステムを用いることにより、第１の実施の形態と同様の効果を得ることができる。更に、第２の実施の形態のシミュレーションシステムを用いることにより、シミュレーションの負荷を分散させることができる。従って、計算ノード数が大きい大規模な並列計算機のシミュレーションも迅速に行うことができる。
【０１１９】
なお、第２の実施の形態では、２台のシミュレーションサーバを用いることとしたが、３台以上のシミュレーションサーバを用いるようにしてもよい。
［第３の実施の形態］
次に、第３の実施の形態について説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１２０】
図１７は、第３の実施の形態のシステム構成を示す図である。図１７に示すシミュレーションシステムは、シミュレーションサーバ１００、４台の計算ノード３００，３００ａ，・・・，３００ｃおよびネットワーク２０で構成される。シミュレーションサーバ１００および計算ノード３００，３００ａ，・・・，３００ｃは、ネットワーク２０を介して相互に通信が可能である。
【０１２１】
計算ノード３００，３００ａ，・・・，３００ｃは、第１の実施の形態の計算ノード２００，２００ａ，・・・，２００ｇと同様、プロセスを実行するコンピュータである。ただし、第３の実施の形態では、各計算ノードが２つのプロセスを時分割で実行する。
【０１２２】
図１８は、第３の実施の形態の計算ノードの機能を示すブロック図である。計算ノード３００は、プログラム記憶部３１０、ＭＰＩ通信部３２０、ＭＰＩ命令変換部３３０および実行制御部３４０を有する。
【０１２３】
実行制御部３４０は、プログラム実行部３４１，３４２を有する。実行制御部３４０は、処理の開始の指示があると、プログラム記憶部３１０から並列プログラムを取得する。そして、実行制御部３４０は、取得した並列プログラムに基づいてプログラム実行部３４１，３４２にそれぞれプロセスを実行させる。２つのプロセスは、１つのＣＰＵによって時分割に実行される。
【０１２４】
ここで、プログラム実行部３４１，３４２には、それぞれ個別にノード番号が割り当てられている。これは、本来２つの計算ノードで実現すべき機能を１つの計算ノードで実現しているためである。
【０１２５】
プログラム記憶部３１０、ＭＰＩ通信部３２０およびＭＰＩ命令変換部３３０の機能は、図５に示した第１の実施の形態のプログラム記憶部２１０、ＭＰＩ通信部２２０およびＭＰＩ命令変換部２３０と基本的に同じである。
【０１２６】
ただし、ＭＰＩ命令変換部３３０は、メッセージに含まれていた通信データをプログラム実行部３４１，３４２のいずれに渡すか、宛先ノード番号に基づいて判断する。また、ＭＰＩ命令変換部３３０は、演算時間を計算する際、２つのプロセスが時分割で実行されていることを考慮して、各プロセスの実質的な演算時間を計算する。例えば、ＭＰＩ命令変換部３３０は、実際の経過時間の半分に所定の係数を掛けたものを、各プロセスの演算時間とする。
【０１２７】
計算ノード３００ａ，・・・，３００ｃも、計算ノード３００と同様のモジュール構成によって実現できる。
このようなシミュレーションシステムを用いることにより、第１の実施の形態と同様の効果を得ることができる。更に、第３の実施の形態のシミュレーションシステムを用いることにより、設計上の計算ノード数より少ない数の計算機でシミュレーションを実行することができる。従って、計算ノード数が大きい大規模な並列計算機のシミュレーションの作業負担をより軽減することができる。
【０１２８】
なお、第３の実施の形態では、各計算ノードで２つのプロセスを実行することとしたが、３つ以上のプロセスを実行するようにしてもよい。
［第４の実施の形態］
次に、第４の実施の形態について説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１２９】
図１９は、第４の実施の形態のシステム構成を示す図である。図１９に示すシミュレーションシステムは、８台の計算ノード４００，４００ａ，・・・，４００ｇおよびネットワーク２０で構成される。計算ノード４００，４００ａ，・・・，４００ｇは、ネットワーク２０を介して相互に通信が可能である。
【０１３０】
計算ノード４００，４００ａ，・・・，４００ｇは、それぞれプロセスを実行すると共に、ネットワーク性能を評価するためのシミュレーションを分散して行うコンピュータである。すなわち、第２の実施の形態のシミュレーションサーバの数を計算ノードの数と同じにし、各シミュレーションサーバが備える機能を各計算ノード上で実現するようにしたものである。
【０１３１】
図２０は、第４の実施の形態の計算ノードの機能を示すブロック図である。計算ノード４００は、プログラム記憶部４１０、物理設計情報記憶部４２０、機能設計情報記憶部４３０、評価情報記憶部４４０、プログラム実行部４５０、ＭＰＩ通信部４６０、ＭＰＩ命令変換部４７０およびシミュレーション部４８０を有する。
【０１３２】
ＭＰＩ命令変換部４７０は、プログラム実行部４５０、ＭＰＩ通信部４６０およびシミュレーション部４８０の間でデータの中継を行う。具体的には、ＭＰＩ命令変換部４７０は、ＭＰＩ通信部４６０からＭＰＩヘッダが分離された後のメッセージを受け取ると、更に追加情報を分離し、プログラム実行部４５０に渡す。また、ＭＰＩ命令変換部４７０は、プログラム実行部４５０から通信データを受け取ると、シミュレーション部４８０に渡す。その後、シミュレーション部４８０から通信データを受け取ると、追加情報を付加して、ＭＰＩ通信部４６０に渡す。
【０１３３】
プログラム記憶部４１０およびプログラム実行部４５０の機能は、図５に示した第１の実施の形態のプログラム記憶部２１０およびプログラム実行部２４０と同じである。物理設計情報記憶部４２０、機能設計情報記憶部４３０、評価情報記憶部４４０、ＭＰＩ通信部４６０およびシミュレーション部４８０の機能は、図４に示した第１の実施の形態の物理設計情報記憶部１１０、機能設計情報記憶部１２０、評価情報記憶部１３０、ＭＰＩ通信部１４０およびシミュレーション部１６０と基本的に同じである。
【０１３４】
ただし、シミュレーション部４８０は、ネットワーク２０を介して計算ノード４００ａ，・・・，４００ｇとの間で通信を行い、シミュレーションの内容を適宜同期させる。すなわち、前述の第２の実施の形態で説明した通り、ＰＤＥＳなどの同期方法を用いて、シミュレーションでの仮想的な経過時間などを同期させる。
【０１３５】
計算ノード４００ａ，・・・，４００ｇも、計算ノード４００と同様のモジュール構成によって実現できる。
次に、計算ノード４００がメッセージを出力する処理について説明する。
【０１３６】
図２１は、メッセージ直接送信処理の手順を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］プログラム実行部４５０は、プロセスの実行中に他のプロセスとの間で通信を行う必要が生じると、通信データと宛先ノード番号とをＭＰＩ命令変換部４７０に渡す。
【０１３７】
［ステップＳ４２］ＭＰＩ命令変換部４７０は、前回ＭＰＩ関数が呼び出された時刻からの経過時間を計測し、計測した経過時間に所定の係数を掛けた値を演算時間とする。そして、ＭＰＩ命令変換部４７０は、通信データ、宛先ノード番号、演算時間を、シミュレーション部４８０に渡す。
【０１３８】
［ステップＳ４３］シミュレーション部４８０は、ＭＰＩ命令変換部４７０から受け取ったデータを仮想通信特定部４８１に渡す。仮想通信特定部４８１は、物理設計情報記憶部１１０および機能設計情報記憶部１２０に格納された設計情報を参照して、仮想的な通信内容を特定する。なお、通信内容を特定する際に用いる送信元ノード番号は、計算ノード４００に割り当てられたノード番号である。
【０１３９】
［ステップＳ４４］仮想負荷計算部４８２は、ステップＳ４３で仮想通信特定部４８１が特定した仮想的な通信内容に基づいて、各タイミングにおける各リンクの仮想的な負荷状態を計算する。また、仮想負荷計算部４８２は、仮想通信特定部４８１が特定した仮想的な通信内容に対応する通信時間を計算する。
【０１４０】
［ステップＳ４５］仮想負荷計算部４８２は、ステップＳ４４で計算した仮想的な負荷状態に応じて、評価情報記憶部４４０に格納された評価情報を更新する。その後、仮想負荷計算部４８２は、ステップＳ４４で計算した通信時間をシミュレーション部４８０に渡す。シミュレーション部４８０は、演算時間と通信時間の合計をＭＰＩ命令変換部４７０に渡す。
【０１４１】
［ステップＳ４６］ＭＰＩ命令変換部４７０は、通信データに追加情報を付加する。追加情報には、シミュレーション部４８０から受け取った演算時間と通信時間の合計が含まれる。そして、ＭＰＩ命令変換部４７０は、追加情報と通信データとからなるデータと、プログラム実行部４５０から受け取った宛先ノード番号を、ＭＰＩ通信部４６０に渡す。
【０１４２】
［ステップＳ４７］ＭＰＩ通信部４６０は、ＭＰＩ命令変換部４７０から受け取ったデータに、更にＭＰＩヘッダを付加する。ＭＰＩヘッダには、ＭＰＩ命令変換部４７０から受け取った宛先ノード番号と、送信元ノード番号としての計算ノード４００のノード番号とが含まれる。
【０１４３】
［ステップＳ４８］ＭＰＩ通信部４６０は、ステップＳ４７で作成された、ＭＰＩヘッダ、追加情報、通信データからなるデータを、メッセージとしてネットワーク２０に出力する。
【０１４４】
このようにして、計算ノード４００は、実行中のプロセスによって通信データが生成されると、まず通信のシミュレーションを行う。その後、通信データに追加情報とＭＰＩヘッダとを付加して、宛先ノードに対してメッセージを送信する。
【０１４５】
図２２は、直接送信時のメッセージのデータ構造例を示す図である。図２２に示すメッセージは、図２１に示したメッセージ直接送信処理によって計算ノード４００から出力されるメッセージである。メッセージの先頭にはＭＰＩヘッダが配置される。ＭＰＩヘッダの次に追加情報が配置される。そして、メッセージの末尾に通信データが配置される。
【０１４６】
ＭＰＩヘッダには、宛先ノードのノード番号と、送信元ノードである計算ノード４００のノード番号とが含まれる。ＭＰＩヘッダは、ネットワーク２０を介してメッセージを宛先ノードに届けるために必要となる情報である。追加情報には、計算ノード４００が前回の通信から要した演算時間（仮想時間）が含まれる。
【０１４７】
このようなシミュレーションシステムを用いることにより、第１の実施の形態と同様の効果を得ることができる。更に、第４の実施の形態のシミュレーションシステムを用いることにより、シミュレーションの負荷をより分散させることができ、大規模な並列計算機のシミュレーションも迅速に行うことができる。また、シミュレーションサーバを別個に用意する必要がなくなり、並列計算機に必要な最小限の台数の計算機でシミュレーションを行うことができる。
【０１４８】
なお、本実施の形態では、ＭＰＩの仕様に基づいてメッセージを送受信することとしたが、他の通信方法を用いてメッセージを送受信するようにしてもよい。
また、本実施の形態では、演算時間に関して、実時間を仮想時間に変換する処理を計算ノード側で行うこととしたが、シミュレーションサーバ側で行うようにしてもよい。この場合、計算ノードからシミュレーションサーバに送られるメッセージには、実時間の演算時間が含まれることになる。
【０１４９】
また、本実施の形態では、ＭＰＩ関数の呼び出し間隔を用いて、計算ノードの演算時間を計算することとしたが、他の方法で演算時間を計算してもよい。例えば、各プロセスへのＣＰＵの割り当て状況を監視して、演算時間を計算するようにしてもよい。
【０１５０】
以上、本発明のネットワーク性能評価プログラム、ネットワーク性能評価装置およびネットワーク性能評価方法を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１５１】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、各シミュレーションサーバや各計算ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５３】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１５４】
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するコンピュータで実行されるネットワーク性能評価プログラムにおいて、
前記コンピュータを、
複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得する通信データ取得手段、
評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新する設計評価手段、
前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送する通信データ転送手段、
として機能させることを特徴とするネットワーク性能評価プログラム。
【０１５５】
（付記２）  前記通信データ取得手段が取得する前記通信データには、送信元の計算ノードが前記通信データを出力するまでに要した演算時間の情報が付加されており、
前記設計評価手段は、前記演算時間に基づいて前記通信データが出力されたタイミングを特定し、特定したタイミングに応じた通信のシミュレーションを行う、
ことを特徴とする付記１記載のネットワーク性能評価プログラム。
【０１５６】
（付記３）  前記演算時間は、送信元の計算ノードが要した実演算時間であり、
前記設計評価手段は、所定の関数を用いて前記実演算時間を仮想演算時間に変換し、前記仮想演算時間に基づいて前記通信データが出力されたタイミングを特定する、
ことを特徴とする付記２記載のネットワーク性能評価プログラム。
【０１５７】
（付記４）  前記評価情報には、前記計算ノードの負荷状態を示す情報が更に含まれており、
前記設計評価手段は、前記演算時間に基づいて個々の前記計算ノードの負荷状態を計算し、得られた計算結果を前記評価情報に反映させる、
ことを特徴とする付記２記載のネットワーク性能評価プログラム。
【０１５８】
（付記５）  前記設計情報には、前記評価対象のネットワーク内の故障箇所と故障時刻とを示す故障情報が含まれており、
前記設計評価手段は、前記故障情報が示す前記故障時刻以降は前記故障箇所を迂回するように通信のシミュレーションを行う、
ことを特徴とする付記１記載のネットワーク性能評価プログラム。
【０１５９】
（付記６）  前記設計情報には、送信元の計算ノードと宛先の計算ノードとから通信経路を決定する方法を定義した経路決定情報が含まれており、
前記設計評価手段は、通信のシミュレーションの際に前記経路決定情報を用いて通信経路を決定する、
ことを特徴とする付記１記載のネットワーク性能評価プログラム。
【０１６０】
（付記７）  複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するネットワーク性能評価装置において、
複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得する通信データ取得手段と、
評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新する設計評価手段と、
前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送する通信データ転送手段と、
を有することを特徴とするネットワーク性能評価装置。
【０１６１】
（付記８）  前記通信データ取得手段が取得する前記通信データには、送信元の計算ノードが前記通信データを出力するまでに要した演算時間の情報が付加されており、
前記設計評価手段は、前記演算時間に基づいて前記通信データが出力されたタイミングを特定し、特定したタイミングに応じた通信のシミュレーションを行う、
ことを特徴とする付記７記載のネットワーク性能評価装置。
【０１６２】
（付記９）  前記演算時間は、送信元の計算ノードが要した実演算時間であり、
前記設計評価手段は、所定の関数を用いて前記実演算時間を仮想演算時間に変換し、前記仮想演算時間に基づいて前記通信データが出力されたタイミングを特定する、
ことを特徴とする付記８記載のネットワーク性能評価装置。
【０１６３】
（付記１０）  前記評価情報には、前記計算ノードの負荷状態を示す情報が更に含まれており、
前記設計評価手段は、前記演算時間に基づいて個々の前記計算ノードの負荷状態を計算し、得られた計算結果を前記評価情報に反映させる、
ことを特徴とする付記８記載のネットワーク性能評価装置。
【０１６４】
（付記１１）  前記設計情報には、前記評価対象のネットワーク内の故障箇所と故障時刻とを示す故障情報が含まれており、
前記設計評価手段は、前記故障情報が示す前記故障時刻以降は前記故障箇所を迂回するように通信のシミュレーションを行う、
ことを特徴とする付記７記載のネットワーク性能評価装置。
【０１６５】
（付記１２）  前記設計情報には、送信元の計算ノードと宛先の計算ノードとから通信経路を決定する方法を定義した経路決定情報が含まれており、
前記設計評価手段は、通信のシミュレーションの際に前記経路決定情報を用いて通信経路を決定する、
ことを特徴とする付記８記載のネットワーク性能評価装置。
【０１６６】
（付記１３）  複数のプロセスを並列に実行する並列計算機のネットワーク性能を評価するコンピュータによるネットワーク性能評価方法において、
通信データ取得手段が、複数の計算ノードを用いて前記複数のプロセスを実行させたときに、前記計算ノードによって出力される通信データを取得するステップと、
設計評価手段が、評価対象のネットワークを定義した設計情報を記憶する設計情報記憶手段を参照して、前記通信データ取得手段が取得した前記通信データを前記評価対象のネットワークで伝送する場合の通信のシミュレーションを行い、得られたシミュレーション結果に基づいて、評価情報記憶手段が記憶する前記評価対象のネットワークの評価結果を示す評価情報を更新するステップと、
通信データ転送手段が、前記通信データ取得手段が取得した前記通信データを、宛先の計算ノードに対して転送するステップと、
を有することを特徴とするネットワーク性能評価方法。
【０１６７】
（付記１４）  前記通信データ取得手段が取得する前記通信データには、送信元の計算ノードが前記通信データを出力するまでに要した演算時間の情報が付加されており、
前記評価情報を更新するステップで、前記設計評価手段が、前記演算時間に基づいて前記通信データが出力されたタイミングを特定し、特定したタイミングに応じた通信のシミュレーションを行う、
ことを特徴とする付記１３記載のネットワーク性能評価方法。
【０１６８】
（付記１５）  前記演算時間は、送信元の計算ノードが要した実演算時間であり、
前記評価情報を更新するステップで、前記設計評価手段が、所定の関数を用いて前記実演算時間を仮想演算時間に変換し、前記仮想演算時間に基づいて前記通信データが出力されたタイミングを特定する、
ことを特徴とする付記１４記載のネットワーク性能評価方法。
【０１６９】
（付記１６）  前記評価情報には、前記計算ノードの負荷状態を示す情報が更に含まれており、
前記評価情報を更新するステップで、前記設計評価手段が、前記演算時間に基づいて個々の前記計算ノードの負荷状態を計算し、得られた計算結果を前記評価情報に反映させる、
ことを特徴とする付記１４記載のネットワーク性能評価方法。
【０１７０】
（付記１７）  前記設計情報には、前記評価対象のネットワーク内の故障箇所と故障時刻とを示す故障情報が含まれており、
前記評価情報を更新するステップで、前記設計評価手段が、前記故障情報が示す前記故障時刻以降は前記故障箇所を迂回するように通信のシミュレーションを行う、
ことを特徴とする付記１３記載のネットワーク性能評価方法。
【０１７１】
（付記１８）  前記設計情報には、送信元の計算ノードと宛先の計算ノードとから通信経路を決定する方法を定義した経路決定情報が含まれており、
前記評価情報を更新するステップで、前記設計評価手段が、通信のシミュレーションを行う際に前記経路決定情報を用いて通信経路を決定する、
ことを特徴とする付記１３記載のネットワーク性能評価方法。
【図面の簡単な説明】
【０１７２】
【図１】本実施の形態の概要を示す図である。
【図２】第１の実施の形態のシステム構成を示す図である。
【図３】シミュレーションサーバのハードウェア構成を示す図である。
【図４】シミュレーションサーバの機能を示すブロック図である。
【図５】第１の実施の形態の計算ノードの機能を示すブロック図である。
【図６】ネットワークのトポロジーの例を示す模式図である。
【図７】リンク情報テーブルのデータ構造例を示す図である。
【図８】経路決定処理の例を示すフローチャートである。
【図９】メッセージ出力処理の手順を示すフローチャートである。
【図１０】出力時のメッセージのデータ構造例を示す図である。
【図１１】メッセージ中継処理の手順を示すフローチャートである。
【図１２】中継時のメッセージのデータ構造例を示す図である。
【図１３】メッセージ受付処理の手順を示すフローチャートである。
【図１４】評価情報テーブルのデータ構造例を示す図である。
【図１５】評価結果の表示画面例を示す図である。
【図１６】第２の実施の形態のシステム構成を示す図である。
【図１７】第３の実施の形態のシステム構成を示す図である。
【図１８】第３の実施の形態の計算ノードの機能を示すブロック図である。
【図１９】第４の実施の形態のシステム構成を示す図である。
【図２０】第４の実施の形態の計算ノードの機能を示すブロック図である。
【図２１】メッセージ直接送信処理の手順を示すフローチャートである。
【図２２】直接送信時のメッセージのデータ構造例を示す図である。
【符号の説明】
【０１７３】
１  コンピュータ
１ａ  設計情報記憶手段
１ｂ  評価情報記憶手段
１ｃ  通信データ取得手段
１ｄ  設計評価手段
１ｅ  通信データ転送手段
２ａ，２ｂ，２ｃ  計算ノード
３  ネットワーク
【図１】
2008242757.tif 000003
【図２】
2008242757.tif 000004
【図３】
2008242757.tif 000005
【図４】
2008242757.tif 000006
【図５】
2008242757.tif 000007
【図６】
2008242757.tif 000008
【図７】
2008242757.tif 000009
【図８】
2008242757.tif 000010
【図９】
2008242757.tif 000011
【図１０】
2008242757.tif 000012
【図１１】
2008242757.tif 000013
【図１２】
2008242757.tif 000014
【図１３】
2008242757.tif 000015
【図１４】
2008242757.tif 000016
【図１５】
2008242757.tif 000017
【図１６】
2008242757.tif 000018
【図１７】
2008242757.tif 000019
【図１８】
2008242757.tif 000020
【図１９】
2008242757.tif 000021
【図２０】
2008242757.tif 000022
【図２１】
2008242757.tif 000023
【図２２】
2008242757.tif 000024