JP2005346563A - 並列処理システムおよび並列処理方法 - Google Patents
並列処理システムおよび並列処理方法 Download PDFInfo
- Publication number
- JP2005346563A JP2005346563A JP2004167409A JP2004167409A JP2005346563A JP 2005346563 A JP2005346563 A JP 2005346563A JP 2004167409 A JP2004167409 A JP 2004167409A JP 2004167409 A JP2004167409 A JP 2004167409A JP 2005346563 A JP2005346563 A JP 2005346563A
- Authority
- JP
- Japan
- Prior art keywords
- parallel processing
- computer
- parallel
- network
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
【解決手段】 プライベートIPアドレスで定義されるネットワークをそれぞれ1つの並列計算機1、3、5、〜とし、並列計算機内の計算機1a、1b、1c、・・・、3a、3b、3c、・・・、5a、5b、5c、・・・、〜は、システムの構成に応じてサーバノードまたは計算ノードとして動作し、ネットワークを接続する接続計算機2、4、6、〜は、上位の並列計算機内では計算ノード2a、4a、6a、〜、下位の並列計算機内ではサーバノード2b、4b、6b〜として動作し、並列計算機間の通信は接続計算機内部で計算ノード2a、4a、6a、〜とサーバノード2b、4b、6b、〜の間でプロセス間通信する。
【選択図】 図1
Description
近年、これに加えてグリッドコンピューティングのように、計算機ネットワークに接続されたあらゆる計算機を計算リソースにして、並列シミュレーションを実行しようという試みが始まってきた。
並列処理プログラムを記述するプログラミング言語としては、世界標準の規格であるMPI(Message Passing Interface)通信ライブラリの実装の1つであるmpich(米国アルゴンヌ国立研究所開発のフリーソフトウェア)が最も広く使用されている。
上述のmpichで記述された並列処理プログラムを実行するとき、並列化されたプロセスを実行する全計算機は、IPアドレスにより相互に認識されていなければならない。すなわち、4台の計算機(これをPC0、PC1、PC2、PC3とする)からなる並列計算機で並列処理プログラムを実行するとき、すべての計算機PC0、PC1、PC2、PC3は、自身を含めた全ての計算機PC0、PC1、PC2、PC3のIPアドレスを認識していなければならない。これは、mpichでは並列処理用関数の初期化の段階で、全計算機間の通信のために相互にソケットを張り合うという処理の実行が必要であるからである。
従来の並列計算機に関する先行技術としては、1台の計算機を複数のプロセッサで構成した並列計算機で、そのプロセッサ間通信のレイティング性能改善等で並列処理の向上を図る技術などがある(例えば、特許文献1参照)。
しかし、この発明が課題としている問題に対しては、これを解決する先行例は存在しない。
通常、計算機ネットワークは、複数のサブネットワークがゲートウェイを介して接続したシステムである。各サブネットワーク内部における計算機間の通信においては、通信相手の計算機をそのサブネットワーク内でのみ通用する各計算機固有のプライベートIPアドレスにより認識され、計算機間通信が行われる。あるサブネットワーク内の計算機から別のサブネットワーク内の計算機への通信は、ゲートウェイとなる計算機で適切なルーティング設定をするなど、ネットワーク設定をすることにより行うことができる。
例えば、2つのサブネットワーク100、300は、接続計算機200を介して接続しているが、これら2つのサブネットワーク同士は接続計算機200を除いて相互にIPアドレスによる認識ができない。PCクラスタ(PCによる分散並列計算機)も同様である。残りの計算ノードはPCクラスタ内部のプライベートIPアドレスしかもたない。すなわち、サブネットワーク300上の計算機は、PCクラスタのサーバノード600についてはIPアドレスを認識しているが、計算ノードのIPアドレスは認識していない。
もちろん、ネットワーク設定を適切に行ってIPアドレスを認識させることにより、他のサブネットワーク上の計算機も計算リソースとして使用可能である。
例えば図17で、サブネットワーク700のある計算機とサブネットワーク900のある計算機の間のソケットをはる場合、サブネットワーク300、100、500を経由しているため、この間のネットワーク設定、例えばルーティング設定・セキュリティの問題などをクリアにしておかなければならない。ネットワークの観点からみた計算機同士の距離が離れれば離れるほど、上記ネットワーク設定が煩雑になる。現実問題として考えると、セキュリティ上の問題からこのような、あちこちに分散した計算機間の全ての通信は、許可されない場合が多い。
また、並列処理に使う計算機の数が増えれば増えるほどソケットの数も増加してしまう、という問題も発生する。
このようなシミュレーションの代表的な例として、モンテカルロシミュレーションがある。図18に、モンテカルロシミュレーションを並列計算機で実行する場合の一般的な方法の概略を示す。モンテカルロシミュレーションでは、数多くのシミュレーションケースを完全に独立に実行できるので、ある1つの計算機PC0がサーバとなり、他の全ての計算機PC1、PC2、PC3にシミュレーションケースを与え、これら計算機PC1、PC2、PC3が与えられたケースを実行し、その結果を計算機PC0に返す。計算機PC0では、全ケースの結果をまとめて分析・評価する、ということができる。
このような場合、計算機PC0は他の全ての計算機PC1、PC2、PC3と通信が必要であるが、計算機PC1と計算機PC2の間、計算機PC2と計算機PC3の間、計算機PC3と計算機PC1の間には通信が発生しないので、ソケットをはる必要がない。
図17の例では、サブネットワーク100、300、500、900は、それぞれIPアドレス192.168.10.xxx/192.168.20.xxx/192.168.30.xxx/192.168.40.xxxを持っているとしたが、例えばサブネットワーク300、500が同一のIPアドレス、例えば192.168.100.xxxをもっている可能性もある。したがって、計算リソースの候補となる計算機のIPアドレスが、他の計算機のIPアドレスと重複していないかを必ず調査しなければならず、重複していた場合には、この計算機を計算リソースとして使用することはできないという問題がある。
図1は、この発明を実施するための実施の形態1における並列処理システムのブロック図であり、図17に示した一般的な計算機ネットワークと同一の構成をもつ。図17の計算機ネットワーク全体は、サブネットワーク100、300、500、700、900がゲートウェイ200、400、600、800を介して接続したネットワークである。この発明では、個々のサブネットワークを並列計算機として動作させるので、必要に応じて並列計算機と記述する。例えば、図1の並列処理システムでは、図17のサブネットワーク100、300、500、700、900に対応して、並列計算機1、3、5、7、9をもつ。
図1において、並列計算機1は、サーバノード1aと、複数の計算ノード1b、1c、1dと、ネットワーク接続計算機2、4からなり、この接続計算機2、4で並列計算機3、5に接続されている。さらに、並列計算機3、5は、ネットワーク接続計算機6、8で並列計算機7、9に接続されている。接続計算機2、4、6、8は、それぞれ1つの計算機であり、その内部で、上位の並列計算機で実行する第1の並列処理プログラムと、下位の並列計算機で実行する第2の並列処理プログラムの2つの並列処理プログラムが実行される。そして、第1の並列処理プログラムでは計算ノードとして動作し、下位の並列計算機において実行する並列処理プログラムではサーバノードとして動作する。したがって、これら接続計算機2、4、6、8は、上位並列計算機から見たときには計算ノード2a、4a、6a、8a、下位並列計算機から見たときにはサーバノード2b、4b、6b、8bのように必要に応じて表す。
このように、この発明の並列処理システムは、プライベートIPアドレスで定義され分割されるサブネットワークをそれぞれ1つの並列計算機とみなして、これら並列計算機を階層構造で接続した構成をとるシステムである。なお、PCクラスタもプライベートIPアドレスで定義されるシステムであるので一つのサブネットワークとみなすことができる。
ここで、この発明の並列処理方法を適用する実際の並列処理プログラムでは、その計算機が並列処理システムのどの位置にあるかによって、4つの関数main_server(メインサーバ)/cluster_server(クラスタサーバ)/cluster_client(クラスタクライアント)/single_client(シングルクライアント)のいずれかを実行する。各並列計算機で実行する並列処理プログラムは、これら4つの関数を適切に組み合わせることにより、任意の階層構造をもつ並列処理システムに適用することができる。
図2における並列計算機1が実行するプログラムの例を図3に、並列計算機3が実行するプログラムの例を図4に示す。図3、4では、並列計算機1、3内の各計算機における実行命令を、その計算機のランク(my_rank)と接続計算機であるのかの情報(cluster_flag)にもとづいて示している。ここでランクとは、MPI並列処理プログラムにおいて、並列計算機全体の中で自計算機が何番目の計算機であるかを識別する整数である。
図3では、並列計算機1の各計算機において、ランクが0(ゼロ)の計算機はmain_serverを実行し、ランクが0(ゼロ)でない計算機については、クラスタフラグが1の計算機はcluster_clientを実行し、その他の計算機はsingle_clientを実行するということを表している(以降、この処理を並列処理プログラムMPI#1という)。すなわち、並列計算機1では、計算機PC1aがmain_serverを実行し、計算機PC2aがcluster_clientを実行し、計算機PC1b、PC1cがsingle_clientを実行する。図4では、並列計算機1に対し下位にある並列計算機3の各計算機において、ランクが0(ゼロ)の計算機はcluster_severを実行し、その他の計算機はsingle_clientを実行するということを表している(以降、この処理を並列処理プログラムMPI#2という)。すなわち、並列計算機3では、計算機PC2bがcluster_serverを実行し、計算機PC3a、PC3b、PC3cがsingle_clientを実行する。
なお、計算機PC1aにランク0、接続計算機PC2aにクラスタフラグ1、接続計算機PC2bにランク0が予め付与されているものとする。実際には、MPI#1を起動する計算機が計算機PC1aであり、起動時に自動的にMPI#1におけるランク0となる。また、MPI#2に関しては、接続計算機PC2bがMPI#2を起動することになるので、接続計算機PC2bが自動的にMPI#2におけるランク0となる。クラスタフラグについては、上位の並列計算機における接続計算機がフラグ1、非接続計算機がフラグ0となるよう設定する。
メインサーバ:この並列処理システムの最上位の並列計算機におけるサーバノードで実行する。並列シミュレーション全体を管理する。
クラスタサーバ:並列計算機を接続する計算機で実行する。下位の並列計算機における並列処理プログラム内で実行され、この並列処理プログラムでのシミュレーションを管理するとともに、上位の並列処理プログラムとデータ通信を行う。
クラスタクライアント:並列計算機を接続する計算機で実行する。上位の並列計算機における並列処理プログラム内で実行され、下位の並列処理プログラムとデータ通信を行う。
シングルクライアント:全並列計算機の末端ノードで実行する。シミュレーションケースを実行する。
ここで、「UDP/IPソケット通信」と記述したが、これはMPI#1とMPI#2の間のデータ通信方法の1例である。MPI#1とMPI#2の通信方法はUDP/IPに限定する必要はなく、例えばTCP/IP通信でもよい。以下では、UDP/IP通信を使用していると仮定して記述する。
また、下位の並列計算機3で実行する並列処理プログラムMPI#2は、図5(b)に示す実行タイプ判定手順、初期化手順、クラスタサーバ実行手順およびシングルクライアント実行手順から成る。実行タイプ判定手順により、自計算機が階層構造のどの位置にいるかに応じて、どの実行手順(クラスタサーバ実行手順/シングルクライアント実行手順)を実行するかを判定する。そして、初期化手順により、各種定数の初期化、必要に応じてUDP/IPソケット通信用のソケットを生成し、実行タイプ判定手順の結果に従い、2つの実行手順のいずれかを実行する。
並列処理システムが図2の2階層でなくさらに下位に並列計算機がある場合には、中位の並列計算機の並列処理プログラムMPI#3は、図5(c)に示すように図5(b)の構成にクラスタクライアント実行手順を加えた構成となる。
上記4つの実行手順の詳細について、以下で説明する。
シミュレーション条件データ生成手段10は、全シミュレーションで共通の条件データを生成する機能を持つ。ここで生成されたシミュレーション条件データはシミュレーション条件データ送信手段11により、クラスタクライアントおよびシングルクライアントにブロードキャスト送信される。
制御信号送信手段12は、シミュレーションの中断信号、終了信号などの実行制御するための信号を、クラスタクライアントおよびシングルクライアントに送信する機能をもつ。
シミュレーション共通データ生成手段13は、ループごとに共通に使用する共通データを生成する機能をもつ。ここで生成されたシミュレーション共通データは、シミュレーション共通データ送信手段14により、クラスタクライアントおよびシングルクライアントにブロードキャスト送信される。
ここで、上記「ループ」について簡単に説明する。全シミュレーションケースは複数の組に分割でき、その組ごとに共通のデータを持っている。「ループ」とはこの分割した組をさす。
シミュレーションケース生成手段15は、ループごとにシングルクライアントに実行させる全シミュレーションケースを生成する機能を持つ。ここで生成されたシミュレーションケースは、シミュレーションケース送信手段16により、クラスタクライアントおよびシングルクライアントに送信される。
シミュレーション結果受信手段17は、クラスタクライアントおよびシングルクライアントから送信されたシミュレーション結果を受信する。
ループ終了判定手段18は、シミュレーションケース生成手段15が生成したそのループで実行する全ケースの結果が、シミュレーション結果受信手段17により受信が完了したかを判定する。
シミュレーション終了判定手段19は、全ループが完了し、全てのシミュレーションが終了したかを判定する。
シミュレーション結果保存手段20は、シミュレーション結果受信手段17が受信したシミュレーション結果を保存する。
シミュレーション結果評価手段21は、シミュレーション結果保存手段20に保存されたシミュレーション結果を評価する。
シミュレーション条件データ受信手段23は、メインサーバ(PC1a)からブロードキャスト送信されたシミュレーション条件データを受信する。ここで受信したシミュレーション条件データは、シミュレーション条件データ送信手段24により、UDP/IP通信によりクラスタサーバ(PC2b)に送信される。
メッセージ受信手段25は、メインサーバ(PC1a)から送信されたメッセージを受信する。ここで受信したメッセージは、メッセージタイプ判定手段26により、シミュレーションケース/終了/中断のいずれであるかが判定される。
シミュレーションケース送信手段27は、メッセージタイプ判定手段26で判定した結果がシミュレーションケースであるときに、メッセージ受信手段25で受信したメッセージをUDP/IP通信によりクラスタサーバ(PC2b)に送信する。制御信号送信手段28は、メッセージタイプ判定手段26で判定した結果が終了/中断であるときに、終了信号/中断信号をUDP/IP通信によりクラスタサーバ(PC2b)に送信する。
シミュレーション共通データ受信手段29は、メッセージタイプ判定手段26で判定した結果が中断であるときに、制御信号送信手段28が中断信号を送信終了後、メインサーバ(PC1a)からブロードキャスト送信されたシミュレーション共通データを受信する。ここで受信したシミュレーション共通データは、シミュレーション共通データ送信手段30により、UDP/IP通信によりクラスタサーバ(PC2b)に送信される。
シミュレーション結果受信手段31は、下位の並列計算機3で実行したシミュレーション結果を、UDP/IP通信によりクラスタサーバ(PC2b)から受信する。ここで受信したシミュレーション結果は、シミュレーション結果送信手段32により、メインサーバ(PC1a)に送信される。
シミュレーション条件データ受信手段34は、クラスタクライアント(PC2a)から送信されたシミュレーション条件データをUDP/IP通信により受信する。ここで受信したシミュレーション条件データは、シミュレーション条件データ送信手段35により、シングルクライアントにブロードキャスト送信される。
メッセージ受信手段36は、クラスタクライアント(PC2a)から送信されたメッセージをUDP/IP通信により受信する。ここで受信したメッセージは、メッセージタイプ判定手段37により、シミュレーションケース/終了/中断のいずれであるかが判定される。
シミュレーションケース送信手段38は、メッセージタイプ判定手段37で判定した結果がシミュレーションケースであるときに、メッセージ受信手段36で受信したメッセージをシングルクライアントに送信する。制御信号送信手段39は、メッセージタイプ判定手段37で判定した結果が終了/中断であるときに、終了信号/中断信号をシングルクライアントにブロードキャスト送信する。
シミュレーション共通データ受信手段40は、メッセージタイプ判定手段37で判定した結果が中断であるときに、制御信号送信手段39が中断信号を送信終了後、クラスタクライアント(PC2a)から送信されたシミュレーション共通データをUDP/IP通信により受信する。ここで受信したシミュレーション共通データは、シミュレーション共通データ送信手段41により、シングルクライアントにブロードキャスト送信される。
シミュレーション結果受信手段42は、シングルクライアントで実行したシミュレーション結果を受信する。ここで受信したシミュレーション結果は、シミュレーション結果保存手段43により保存される。
全結果受信判定手段45は、メッセージ受信手段36で受信した全シミュレーションケースの結果が、シミュレーション受信手段42により受信が完了したかを判定する。
シミュレーション結果送信手段44は、全結果受信判定手段45で判定した結果が、全結果を受信済みであるときに、シミュレーション結果保存手段43に保存されているシミュレーション結果をUDP/IP通信によりクラスタクライアント(PC2a)に送信する。
シミュレーション条件データ受信手段47は、メインサーバまたはクラスタサーバからブロードキャスト送信されたシミュレーション条件データを受信する。
メッセージ受信手段48は、メインサーバまたはクラスタサーバから送信されたメッセージを受信する。ここで受信したメッセージは、メッセージタイプ判定手段49により、シミュレーションケース/終了/中断のいずれであるかが判定される。
シミュレーション実行手段50は、メッセージタイプ判定手段49で判定した結果がシミュレーションケースであるときに、メッセージ受信手段48で受信したシミュレーションケースを実行する。ここで実行したシミュレーション結果は、シミュレーション結果送信手段51により、メインサーバまたはクラスタサーバに送信される。
シミュレーション共通データ受信手段52は、メッセージタイプ判定手段49で判定した結果が中断であるときに、メインサーバまたはクラスタサーバからブロードキャスト送信されたシミュレーション共通データを受信する。
全シミュレーションで共通のシミュレーション条件データ(Condition_data)を生成し(ステップST100)、生成したデータを並列計算機1でブロードキャスト送信する(ステップST101)。この後、並列計算機1で中断信号をブロードキャスト送信し(ステップST102)、シミュレーションループに入る。
ループの最初に、ループごとに共通に使用するシミュレーション共通データ(Bcast_data)を生成し(ステップST103)、生成したデータを並列計算機1でブロードキャスト送信する(ステップST104)。
つぎに、このループで実行するシミュレーションケースを生成する(ステップST105)。生成したシミュレーションケースのうち、計算ノード数に応じて数が決まる最初の複数のシミュレーションケースを全計算ノードに送信する(ステップST106)。送信するシミュレーションケースは計算機ごとに異なり、1つの計算ノードに複数まとめて送信してもよい。つぎに、計算ノードからシミュレーション結果が送信されてくるのを待ち、受信し(ステップST107)、受信したシミュレーション結果を保存する(ステップST108)。
このループでシミュレーションする全ケースのシミュレーション結果が受信済みかを判定し(ステップST109)、受信済みでなければ全ケースを送信済みかを判定する(ステップST110)。全ケース送信済みであれば、シミュレーション結果受信待ち(ステップST107)に戻る。全ケース送信済みでなければ、直前にシミュレーション結果を送信してきた計算ノードに次ケースを送信し(ステップST111)、シミュレーション結果受信待ち(ステップST107)に戻る。
また、このループでシミュレーションする全ケースのシミュレーション結果が受信済みかの判定(ステップST109)で、全ケース受信済みであれば、このループの全受信結果の評価を行い(ステップST112)、シミュレーションを終了するかを判定する(ステップST113)。判定した結果が終了であるときには、並列計算機1で終了信号をブロードキャスト送信し(ステップST114)、最終結果を評価し(ステップST115)、シミュレーションを終了する。
また、シミュレーション終了判定(ステップST113)で判定した結果が終了でないときには、並列計算機1で中断信号をブロードキャスト送信し(ステップST116)、シミュレーション共通データ生成(ステップST103)に戻る。
まず、メインサーバからブロードキャスト送信されたシミュレーション条件データ(Condition_data)を受信し(ステップST200)、受信したデータをクラスタサーバに送信する(ステップST201)。
つぎに、メインサーバからのメッセージを待ち、受信する(ステップST202)。受信したメッセージのメッセージタイプが、シミュレーションケース/終了/中断のいずれであるかを判定する(ステップST203)。メッセージタイプの判定結果が終了であるときには、終了信号をクラスタサーバに送信し(ステップST204)、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、受信したシミュレーションケースをクラスタサーバに送信する(ステップST205)。送信後、クラスタサーバからシミュレーション結果が送信されてくるのを待ち、受信し(ステップST206)、受信したシミュレーション結果をメインサーバに送信する(ステップST207)。そして、つぎのメッセージ受信待ち(ステップST202)に戻る。
メッセージタイプの判定結果が中断であるときには、中断信号をクラスタサーバに送信する(ステップST208)。送信後、メインサーバからシミュレーション共通データ(Bcast_data)がブロードキャスト送信されてくるのを待ち、受信し(ステップST209)、受信したデータをクラスタサーバに送信する(ステップST210)。そして、つぎのメッセージ受信待ち(ステップST202)に戻る。
まず、クラスタクライアントから送信されたシミュレーション条件データ(Condition_data)を受信し(ステップST300)、受信したデータを並列計算機3でブロードキャスト送信する(ステップST301)。
つぎに、クラスタクライアントからのメッセージを待ち、受信する(ステップST302)。受信したメッセージのメッセージタイプが、シミュレーションケース/終了/中断のいずれであるかを判定する(ステップST303)。メッセージタイプの判定結果が終了であるときには、並列計算機3で終了信号をブロードキャスト送信し(ステップST304)、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、受信したシミュレーションケースのうち、計算ノード数に応じて数が決まる最初の複数のシミュレーションケースを全計算ノードに送信する(ステップST305)。送信するシミュレーションケースは計算機ごとに異なり、1つの計算ノードに複数まとめて送信してもよい。つぎに、計算ノードからシミュレーション結果が送信されてくるのを待ち、受信し(ステップST306)、受信したシミュレーション結果を保存する(ステップST307)。
クラスタクライアントから受信した全ケースのシミュレーション結果が受信済みかを判定し(ステップST308)、受信済みでなければ全ケースを送信済かを判定する(ステップST310)。全ケース送信済みであれば、シミュレーション結果受信待ち(ステップST306)に戻る。全ケース送信済みでなければ、直前にシミュレーション結果を送信してきた計算ノードに次ケースを送信し(ステップST311)、シミュレーション結果受信待ち(ステップST306)に戻る。
また、クラスタクライアントから受信した全ケースのシミュレーション結果が受信済みかの判定(ステップST308)で、全ケース受信済みであれば、保存したシミュレーション結果をクラスタクライアントに送信する(ステップST309)。そして、つぎのメッセージ受信待ち(ステップST302)に戻る。
メッセージタイプの判定結果が中断であるときには、並列計算機3で中断信号をブロードキャスト送信する(ステップST312)。送信後、クラスタクライアントからシミュレーション共通データ(Bcast_data)が送信されてくるのを待ち、受信し(ステップST313)、受信したデータを並列計算機3でブロードキャスト送信する(ステップST314)。そして、つぎのメッセージ受信待ち(ステップST302)に戻る。
並列計算機1ではメインサーバから、並列計算機3ではクラスタサーバからブロードキャスト送信されたシミュレーション条件データ(Condition_data)を受信する(ステップST400)。
つぎに、メッセージを待ち、受信する(ステップST401)。受信したメッセージのメッセージタイプがシミュレーションケース/終了/中断のいずれかであるかを判定する(ステップST402)。メッセージタイプの判定結果が終了であるときには、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、シミュレーションを実行し(ステップST403)、シミュレーション結果を、並列計算機1のシングルクライアントであればメインサーバに、並列計算機3のシングルクライアントであればクラスタサーバに送信する(ステップST404)。そして、つぎのメッセージ受信待ち(ステップST401)に戻る。
メッセージタイプの判定結果が中断であるときには、シミュレーション共通データ(Bcast_data)がブロードキャスト送信されてくるのを待ち、受信する(ステップST405)。そして、つぎのメッセージ受信待ち(ステップST401)に戻る。
図14において、上位の並列計算機1で実行する並列処理プログラムをMPI#1とし、下位の並列計算機3で実行する並列処理プログラムをMPI#2とする。並列計算機1は、メインサーバPC1a、末端の計算ノードとなるシングルクライアントPC1b、PC1c、接続計算機2でクラスタクライアントとなるPC2aからなる。並列計算機3は、接続計算機2でクラスタサーバとなるPC2b、末端の計算ノードとなるシングルクライアントPC3a、PC3b、PC3cからなる。
まず、シミュレーションのメイン部分を開始する前に、全シミュレーションで共通のシミュレーション条件データを並列計算機1と並列計算機3のすべての計算機に送信する。これは、つぎのようにして行う。並列処理プログラムMPI#1で、メインサーバPC1aがシミュレーション条件データを生成し(図中のA)、ブロードキャストする(図中のB)。クラスタクライアントPC2aは、このシミュレーション条件データを並列処理プログラムMPI#2にUDP/IP通信により送信する(図中のC)。並列処理プログラムMPI#2では、クラスタサーバPC2bがこのシミュレーション条件データをUDP/IP通信により受信し、受信したデータをブロードキャストする(図中のD)。これで、シミュレーション条件データは全シングルクライアントに送信されたことになる。シミュレーションのメイン部分終了後、上位の並列計算機1のメインサーバPC1aが全シミュレーション結果を評価し、終了する。メインサーバPC1aを除く全計算機は、シミュレーションのメイン部分終了後、終了する。
まず、各ループの最初に、ループごとに共通に使用するシミュレーション共通データを並列計算機1と並列計算機3の全ての計算機に送信する。並列処理プログラムMPI#1で、メインサーバPC1aがシミュレーション共通データを生成し(図中のE)、ブロードキャストする(図中のF)。クラスタクライアントPC2aは、このシミュレーション共通データを並列処理プログラムMPI#2にUDP/IP通信により送信する(図中のG)。並列処理プログラムMPI#2では、クラスタサーバPC2bがこのシミュレーション共通データをUDP/IP通信により受信し、受信したデータをブロードキャストする(図中のH)。これでシミュレーション共通データは、全シングルクライアントに送信されたことになる。そして、このループのシミュレーション実行に入る。
メインサーバPC1aは、このループで実行する全シミュレーションケースを生成し(図中のI)、最初のシミュレーションケースを各計算ノードPC1b、PC1c、PC2aに送信する(図中のJ)。送信後、これらの結果が計算ノードから送信されてくるのを待つ。
シングルクライアントPC1b、PC1cは、シミュレーションケースを受信し、シミュレーションを実行し、シミュレーション結果をメインサーバPC1aに送信する(図中のK)。送信後、つぎのシミュレーションケースが送信されてくるのを待つ。
クラスタクライアントPC2aは、シミュレーションケースを受信し、これを並列処理プログラムMPI#2にUDP/IP通信により送信する(図中のL)。送信後、これらのシミュレーション結果が並列処理プログラムMPI#2からUDP/IP通信により送信されてくるのを待つ。シミュレーション結果を受信したら、これをメインサーバPC1aに送信する(図中のN)。
メインサーバPC1aは、シミュレーション結果を計算ノードから受信したら、もしこのループで実行する全シミュレーションケースを計算ノードに送信済みでなければ、シミュレーション結果を送信してきた計算ノードに、つぎのシミュレーションケースを送信する(図中のO)。
並列処理プログラムMPI#1は、メインサーバPC1aがループの全シミュレーション結果を受信するまで前述の動作を繰り返す(図中のP)。そして、全シミュレーション結果受信後、次のループに入る。
クラスタサーバPC2bは、シミュレーションケースを並列処理プログラムMPI#1からUDP/IP通信により受信し、このうち最初のシミュレーションケースを各計算ノードPC3a、PC3b、PC3cに送信する(図中のQ)。
シングルクライアントPC3a、PC3b、PC3cは、シミュレーションケースを受信し、シミュレーションを実行し、シミュレーション結果をクラスタサーバPC2bに送信する(図中のR)。送信後、つぎのシミュレーションケースが送信されてくるのを待つ。
クラスタサーバPC2bは、シミュレーション結果を計算ノードから受信したら、もしMPI#1からUDP/IP通信により送信されてきた全シミュレーションケースを計算ノードに送信済みでなければ、シミュレーション結果を送信してきた計算ノードに、つぎのシミュレーションケースを送信する(図中のS)。
並列処理プログラムMPI#2は、MPI#1からUDP/IP通信により送信されてきた全シミュレーションケース終了まで上記を繰り返す(図中のT)。終了後、全シミュレーション結果をUDP/IP通信により並列処理プログラムMPI#1に送信する(図中のM)。送信後、つぎのシミュレーションケースがMPI#1から送信されてくるのを待つ。
並列処理プログラムMPI#2は、並列処理プログラムMPI#1から送信されてきたシミュレーションケースを実行し結果を返すだけである。したがって、並列処理プログラムMPI#2は、並列処理プログラムMPI#1のループとは関係なく動作する。
また、上記のプロセス間通信を行うようにしたことで、独立した2つの並列処理プログラムを協調させて実行することができる。
また、サブネットワーク同士を接続する計算機を、各サブネットワークで構成される2つの並列計算機双方に属するノードとして位置付けるようにしたので、2つの並列計算機の階層的構成が可能となる。
実施の形態1では、独立に実行可能な複数のシミュレーションケースを扱うシミュレーションであり、各ケースを末端ノードの計算機が実行した。実施の形態2では、図16に示すようなシミュレーション対象を複数の領域に分割して並列処理する熱、流体、電気などの時間とともに状態変化する現象解析を行う並列シミュレーションについて説明する。
図16において、シミュレーション対象は、領域11〜領域33の9つの領域からなるものとして、それぞれ1つの領域を1つの計算ノードがシミュレーションを実行する。領域23については、さらに詳細なシミュレーションが必要な領域で領域23−11〜23−33の9つの領域からなる。そして、図において隣接する各領域間の矢印は、領域間でデータの授受が必要なことを示している。
このようなシミュレーション対象では、領域23以外の領域については、並列計算機1の各計算ノード(図19のPC11、PC12・・・、PC19)は、担当する領域のある時間刻みのシミュレーションを実行し、隣接する領域を担当する計算ノードとの間でデータ授受し、次の時間刻みのシミュレーションに移る。時間刻みの管理など、シミュレーション全体の管理は、サーバノード(図19のPC10)で行う。領域23については、下位の並列計算機3が担当する。並列計算機3の各計算ノード(図19のPC31、PC32・・・、PC39)は、細分化された領域21−11〜21−33のうち、担当する領域のある時間刻みのシミュレーションを実行し、隣接する領域を担当する計算ノードとの間でデータ授受し、次の時間刻みのシミュレーションに移る。
接続計算機(図19のPC16=PC30)において、各時間刻みで以下の動作を行うことにより、並列計算機1と並列計算機3の協調動作を実現する。並列計算機1内では(図19のPC16)、隣接する領域(図16の領域13、22、33)の結果をUDP/IP通信により並列計算機3に送信する。並列計算機3内では(図19のPC30)、並列計算機3で実行した結果をUDP/IP通信により並列計算機1に送信する。これら送受信が完了後、次の時間刻みに移る。
Claims (12)
- 第1の並列処理プログラムを実装した第1のネットワークに収容され、シミュレーション全体を管理する1つの計算機メインサーバと、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、第2の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第1のネットワークと第2のネットワーク双方に属する接続計算機クラスタクライアントを含む第1の並列計算機と、前記第2の並列処理プログラムを実装した前記第2のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第2の並列処理プログラムでサーバとして動作するとともに前記第1の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバを含む第2の並列計算機を備える並列処理システム。
- 前記第1のネットワーク内ではクラスタクライアントとして位置付けされ、前記第2のネットワーク内ではクラスタサーバとして位置付けされた、前記第1のネットワークと前記第2のネットワークを接続する接続計算機は、クラスタクライアントとクラスタサーバが有する機能により、前記第1の並列処理プログラムと前記第2の並列処理プログラム間のプロセス間通信を行うことを特徴とする請求項1記載の並列処理システム。
- 前記第1の並列計算機と前記第2の並列計算機は、それぞれプライベートIPアドレスで定義されるネットワークであることを特徴とする請求項1記載の並列処理システム。
- 前記第1の並列計算機で動作する並列処理プログラムと前記第2の並列計算機で動作する並列処理プログラムは、それぞれ独立して実行し、それぞれの並列処理プログラムが処理したデータをデータ通信することで協調動作することを特徴とする請求項1記載の並列処理システム。
- 前記並列処理システムは、前記並列計算機を構成する前記ネットワークの接続形態に基づく階層構造を有することを特徴とする請求項1記載の並列処理システム。
- 第1の並列処理プログラムを実装した第1のネットワークに収容され、シミュレーション全体を管理する1つの計算機メインサーバと、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、第2の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第1のネットワークと第2のネットワーク双方に属する接続計算機クラスタクライアントを含む第1の並列計算機と、前記第2の並列処理プログラムを実装した前記第2のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第2の並列処理プログラムでサーバとして動作するとともに前記第1の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバと、第3の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第2のネットワークと第3のネットワーク双方に属する接続計算機クラスタクライアントを含む第2の並列計算機と、前記第3の並列処理プログラムを実装した第3のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第3の並列処理プログラムでサーバとして動作するとともに前記第2の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバを含む第3の並列計算機を備える並列処理システム。
- 請求項6の並列処理システムにおいて、前記第1の並列計算機と、ネットワークの階層構造に基づいて設けられた複数の前記第2の並列計算機と、前記第2の並列計算機のいずれかに接続された複数の第3の並列計算機を備える並列処理システム。
- 複数のネットワークが階層的に接続され、それぞれのネットワークが、メインサーバ、クラスタサーバ、クラスタクライアントまたはシングルクライアントとして動作する複数の計算機からなる並列計算機を構成し、ネットワークの階層構造に応じてこれら複数の並列計算機が任意の階層構造をもって接続されていることを特徴とする並列処理システム。
- 第1のネットワークに収容される計算機に対しメインサーバまたはシングルクライアントまたはクラスタクライアントのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するメインサーバ実行手順と、シングルクライアント実行手順と、クラスタクライアント実行手順を有する第1の並列処理方法と、第2のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順を有する第2の並列処理方法とを備え、前記第1の並列処理方法と前記第2の並列処理方法の間でプロセス間通信を行う並列処理方法。
- 前記初期化手順は、前記第1の並列処理方法と前記第2の並列処理方法の間でプロセス間通信を行うための通信ソケット生成する手順を含むことを特徴とする請求項7記載の並列処理方法。
- 第1のネットワークに収容される計算機に対しメインサーバまたはシングルクライアントまたはクラスタクライアントのいずれかの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するメインサーバ実行手順と、シングルクライアント実行手順と、クラスタクライアント実行手順を有する第1の処理方法と、第2のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバまたはクラスタクライアントのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順と、クラスタクライアント実行手順を有する第2の並列処理方法と、第3のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバのいずれかの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順を有する第3の処理方法とを備え、第1の並列処理方法と第2の並列処理方法との間および第2の並列処理方法と第3の並列処理方法との間でプロセス間通信を行う並列処理方法。
- 請求項11の並列処理方法において、前記第2の並列処理方法はネットワークの階層構造に対応して複数備えることを特徴とする並列処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004167409A JP2005346563A (ja) | 2004-06-04 | 2004-06-04 | 並列処理システムおよび並列処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004167409A JP2005346563A (ja) | 2004-06-04 | 2004-06-04 | 並列処理システムおよび並列処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005346563A true JP2005346563A (ja) | 2005-12-15 |
Family
ID=35498859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004167409A Pending JP2005346563A (ja) | 2004-06-04 | 2004-06-04 | 並列処理システムおよび並列処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005346563A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008198025A (ja) * | 2007-02-14 | 2008-08-28 | Fujitsu Ltd | 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法 |
JP2015222476A (ja) * | 2014-05-22 | 2015-12-10 | 富士通株式会社 | 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法 |
CN110569252A (zh) * | 2018-05-16 | 2019-12-13 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
-
2004
- 2004-06-04 JP JP2004167409A patent/JP2005346563A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008198025A (ja) * | 2007-02-14 | 2008-08-28 | Fujitsu Ltd | 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法 |
US8495090B2 (en) | 2007-02-14 | 2013-07-23 | Fujitsu Limited | Storage medium containing parallel process control program, parallel processs control system, and parallel process control method |
JP2015222476A (ja) * | 2014-05-22 | 2015-12-10 | 富士通株式会社 | 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法 |
CN110569252A (zh) * | 2018-05-16 | 2019-12-13 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
CN110569252B (zh) * | 2018-05-16 | 2023-04-07 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112104517B (zh) | 一种基于区块链网络的数据处理方法及相关装置 | |
US9544362B2 (en) | System and method for processing information via networked computers including request handlers, process handlers, and task handlers | |
KR101455434B1 (ko) | 에지 라우팅을 갖는 피어-투-피어 협업 시스템 | |
Mikic-Rakic et al. | Improving availability in large, distributed component-based systems via redeployment | |
JPWO2020202126A5 (ja) | ||
US20080155520A1 (en) | Peer-to-peer overlay graph construction | |
CN103973785B (zh) | 一种基于p2p的日志读取系统及其方法 | |
US20180176178A1 (en) | System for mediating connection | |
CA3152892A1 (en) | Method and system for distributed edge cloud computing | |
JP2024010228A (ja) | ランダム差動リレー及びネットワークコーディングのシステム及び方法 | |
CN110324415B (zh) | 一种对等网络的路由实现方法、装置、设备和介质 | |
JP2005346563A (ja) | 並列処理システムおよび並列処理方法 | |
Porras et al. | Dynamic resource management and cyber foraging | |
Budakoti et al. | IoT gateway middleware for SDN managed IoT | |
CN112491935A (zh) | 一种用于区块链的水波式广播方法及系统 | |
Khan et al. | Software architecture and algorithm for reliable RPC for geo-distributed mobile computing systems | |
JP2002354019A (ja) | 通信装置、宛先変更装置、通信方法及び通信制御プログラム | |
JPWO2015004859A1 (ja) | 通信端末 | |
US11310310B2 (en) | Communication device for peer-to-peer communication and a communication network using the same | |
US8397094B2 (en) | Node-to-node synchronizing apparatus, node-to-node synchronizing method, and computer product | |
KR101730403B1 (ko) | 네트워크 경로를 관리하는 방법 및 이를 수행하는 네트워크 엔티티 | |
KR20150112127A (ko) | M2m 컴포넌트에서의 로컬 자원 공유 방법 및 장치 | |
CN114124957B (zh) | 一种应用于机器人的分布式节点互联方法 | |
Rahman | Secure Lifecycle Management of BLE Nodes | |
US20230044281A1 (en) | Protocol state fuzzing method and system for security of distributed software-defined network control plane |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061107 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071015 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080715 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081111 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090310 |