(57)【要約】【課題】  任意のタスク構成および任意の計算機構成に対してシミュレーション結果を導出可能なシミュレータまたはシミュレーション方法を提供する。【解決手段】  シミュレータ１０は、シミュレーション対象１００を特定するためのハードウエアファイルおよびタスクファイルを外部から入力してシミュレーションを実行する。シミュレーション１０は、シミュレーション結果として、計算ノードおよびネットワークの処理状態を示すログファイルを出力する。【選択図】        図１
2006350657.tif 000002
【特許請求の範囲】
【請求項１】
互いにデータ転送可能に接続された複数のコンピュータに対して、一のタスクの処理が他のタスクの処理結果に依存する依存構造を有する複数のタスクを分散処理させる分散処理システムのシミュレータであって、
前記複数のタスク、当該複数のタスクの前記依存構造を示す依存構造データ、前記複数のコンピュータに対する前記複数のタスクの割当てを示すタスク割当データ、前記複数のタスクを処理する前記複数のコンピュータの各々の処理能力を示す処理能力データ、および各コンピュータ間のデータ転送能力を示す転送能力データを入力する入力手段と、
該入力手段に入力されたデータを記憶する記憶手段と、
該記憶手段に記憶されている前記処理能力データおよび前記転送能力データに基づいて、前記複数のコンピュータの各々に割当てられたタスクの処理をシミュレーションする、前記複数のコンピュータの各々に対応した複数のシミュレーションノードと、
前記記憶手段に記憶されているタスク割当データおよび依存構造データに基づいて、前記複数のシミュレーションノードにタスクを割当てるタスク割当手段と、
該タスク割当手段が割当てた各タスクを前記シミュレーションノードの各々が実行したときの前記シミュレーションノードのタスク処理時間を演算する演算手段と、
前記タスク処理時間を出力する出力手段とを備えることを特徴とする、分散処理システムのシミュレータ。
【請求項２】
前記複数のシミュレーションノードの各々によるタスク処理の終了を判別する判別手段と、
前記タスク処理時間を計時する計時手段とをさらに備えることを特徴とする、請求項１に記載の分散処理システムのシミュレータ。
【請求項３】
前記タスク割当手段は、前記一のタスクの処理に必要とされる他のすべてのタスクの処理結果が当該一のタスクを処理するシミュレーションノードに蓄積される時点で、当該一のタスクを当該シミュレーションノードに割当てることを特徴とする、請求項１または請求項２に記載の分散処理システムのシミュレータ。
【請求項４】
互いにデータ転送可能に接続された複数のコンピュータに対して、一のタスクの処理が他のタスクの処理結果に依存する依存構造を有する複数のタスクを分散処理させる分散処理システムのシミュレーション方法であって、
前記複数のタスク、当該複数のタスクの前記依存構造を示す依存構造データ、前記複数のコンピュータに対する前記複数のタスクの割当てを示すタスク割当データ、前記複数のタスクを処理する前記複数のコンピュータの各々の処理能力を示す処理能力データ、および各コンピュータ間のデータ転送能力を示す転送能力データを入力する入力ステップと、
該入力ステップによって入力されたデータを記憶する記憶ステップと、
該記憶ステップによって記憶された前記処理能力データおよび前記転送能力データに基づいて、前記複数のコンピュータの各々に割当てられたタスクの処理をシミュレーションする、前記複数のコンピュータの各々に対応した複数のシミュレーションノードに対して、前記記憶手段に記憶されているタスク割当データおよび依存構造データに基づいて、タスクを割当てるタスク割当ステップと、
該タスク割当ステップが割当てた各タスクを前記シミュレーションノードの各々が実行したときの前記シミュレーションノードのタスク処理時間を演算する演算ステップと、
前記タスク処理時間を出力する出力ステップとを備えることを特徴とする、分散処理システムのシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システムのシミュレータおよびシミュレーション方法に関し、特に、グリッドコンピューティングシステムに代表される分散処理システムの処理をシミュレーションするためのシミュレータおよびシミュレーション方法に関する。
【背景技術】
【０００２】
グリッドコンピューティング（grid computing）は、ＬＡＮ（Local Area Network）やインターネットなどのネットワーク上の様々な場所にある複数の計算機を、仮想的に１つの高性能な計算機として利用する技術である（特許文献１）。個々の計算機の性能が低くても、グリッドコンピューティングによって、複数の計算機を仮想的に統合して各計算機に協調作業を行なわせることで、高速で大量の計算をスーパーコンピュータ並みにすることが可能となる。
【０００３】
しかしながら、仮想的に統合される各計算機の処理速度はまちまちで、各計算機で処理が終了する時間を見積もることは困難である。このため、現在は、処理終了時間を見積もる必要がないジョブを分散処理している。
【０００４】
非特許文献１および２には、待ち行列モデルを処理単位に適用して単位時間ごとのグリッド中の計算機、ネットワークの処理状態を逐次出力するシミュレータについて開示されている。
【０００５】
これらの文献では、単純な計算プログラムをネットワーク上に分散した計算機上で実行する分散計算システムにおいて、与えられたプログラムの計算量および単純なネットワーク構造に対する性能評価を事前に行なうことが可能な性能評価方法が提案されている。この手法では、ネットワーク上の計算機間のデータ転送待ち時間を待ち行列理論に従って予測し、ネットワーク遅延を含めた性能予測を行なう。
【特許文献１】特開２００５−７０８９６号公報
【非特許文献１】竹房あつ子，合田憲人，中田秀基，小川宏高，松岡聡，佐藤三久，関口智嗣，長嶋雲兵，「グローバルコンピューティングシステムのシミュレーションによる評価」，情報処理学会論文誌，Ｖｏｌ．４０，Ｎｏ．５，１９９９年５月，ｐ．２１９２−２２０２
【非特許文献２】竹房あつ子，合田憲人，中田秀基，松岡聡，長嶋雲兵，「グローバルコンピューティングシステムのシミュレータの概要」，情報処理学会研究報告，Ｖｏｌ．９９，Ｎｏ．２１，１９９９年３月，ｐ．３１−３６
【発明の開示】
【発明が解決しようとする課題】
【０００６】
グリッドコンピューティングにおいて、複数のタスクが互いに関連し合い、一のタスクの処理結果を利用しないことには処理を開始できないような依存型タスクが存在するような場合には、各タスクの処理時間が重要になる。
【０００７】
ところが、従来のシミュレータでは、シミュレーションの対象となるタスク構成および分散処理する各計算機の処理能力に関するデータ自体がシミュレータのシミュレーションプログラム自体に組み込まれていたために、任意のタスク構成、任意の計算機構成に対応するシミュレーションをすることができないという問題があった。
【０００８】
すなわち、計算量が予め把握できるような単純なジョブではなくて、複数からなるそれぞれのタスクが依存構造をもつようなジョブの場合には、事前にシミュレーションすることができない。
【０００９】
本発明は、上記問題点を解決するためになされたものであり、その目的は、任意のタスク構成および任意の計算機構成に対してシミュレーション結果を導出可能なシミュレータまたはシミュレーション方法を提供することである。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明のある局面に従うと、互いにデータ転送可能に接続された複数のコンピュータに対して、一のタスクの処理が他のタスクの処理結果に依存する依存構造を有する複数のタスクを分散処理させる分散処理システムのシミュレータは、前記複数のタスク、当該複数のタスクの前記依存構造を示す依存構造データ、前記複数のコンピュータに対する前記複数のタスクの割当てを示すタスク割当データ、前記複数のタスクを処理する前記複数のコンピュータの各々の処理能力を示す処理能力データ、および各コンピュータ間のデータ転送能力を示す転送能力データを入力する入力手段と、該入力手段に入力されたデータを記憶する記憶手段と、該記憶手段に記憶されている前記処理能力データおよび前記転送能力データに従い、前記複数のコンピュータの各々に割当てられたタスクの処理をシミュレーションする、前記複数のコンピュータの各々に対応した複数のシミュレーションノードと、前記記憶手段に記憶されているタスク割当データおよび依存構造データに基づいて、前記複数のシミュレーションノードにタスクを割当てるタスク割当手段と、該タスク割当手段が割当てた各タスクを前記シミュレーションノードの各々が実行したときの前記シミュレーションノードのタスク処理時間を出力する出力手段とを備える。
【発明の効果】
【００１１】
本発明によれば、複数のタスク、当該複数のタスクの依存構造を示す依存構造データ、複数のコンピュータに対する前記複数のタスクの割当てを示すタスク割当データ、前記複数のタスクを処理する前記複数のコンピュータの各々の処理能力を示す処理能力データ、および各コンピュータ間のデータ転送能力を示す転送能力データを入力し、複数のシミュレーションノードによってシミュレーションするために、任意のタスク構成および任意の計算機構成に対してシミュレーション結果を導出可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しつつ、本発明の実施の形態について説明する。図１は、本実施の形態に係るシミュレータ１０の概念図である。
【００１３】
図１に示されるように、シミュレータ１０は、シミュレーション対象１００を特定するためのハードウエアファイルおよびタスクファイルを外部から入力してシミュレーションを実行する。シミュレーション１０は、シミュレーション結果として、計算ノードおよびネットワークの処理状態を示すログファイルを出力する。
【００１４】
ハードウエアファイルは、ハードウエア要素（実行環境）を示すファイルである。ハードウエア要素は、大きく計算機とネットワークとに分かれる。計算機は、クライアント、ゲートウェイ、計算ノード、データベースに分類される。このハードウエアファイルによって、評価対象となるグリッドコンピューティングシステムが特定される。
【００１５】
ハードウエアファイルは、分散処理に係る各計算機の計算能力を示すデータと、ネットワークを介して接続された各計算機間でのデータ転送能力を示すデータとを含む。計算機の計算能力は、たとえば、ｆｌｏｐｓ（Floating point number Operations Per Second）を単位とした計算速度で規定される。データ転送能力は、たとえば、各計算機同士を論理的に接続するネットワークの転送帯域（ｂｙｔｅ／ｓｅｃ）および遅延時間（ｓｅｃ）で規定される。
【００１６】
タスクファイルは、ジョブ要素(プログラム構造）を示すデータである。このファイルは、分散処理させるときの各タスクと、各タスクの依存構造を示すデータとを含む。たとえば、図１では、データ依存の方向が矢印で示されている。この矢印は、具体的には、タスクＩの処理にタスクＥ，Ｇ，Ｈの処理結果を必要とし、タスクＥの処理にタスクＢ，Ｃの処理結果を必要とし、タスクＢの処理にタスクＡの処理結果を必要とすることを示している。また、タスクＡについては、他のタスクの処理結果を必要とすることなく処理が可能であることを示している。以下、たとえば、タスクＩとタスクＧ，Ｈとの関係について、「タスクＩは、タスクＧ，Ｈの処理結果に依存している」という。
【００１７】
このような依存構造を有するタスクの具体例として、動画ファイルを分散処理によってフォーマット変換する例が挙げられる。たとえば、このようなタスクは、１つの動画ファイルを３つに分割するタスクＡと、３つの分割ファイルの各々を個別にフォーマット変換するタスクＢ〜Ｄと、変換後の分割ファイルを結合するタスクＥとに分けることができる。これは、タスクＥがタスクＢ〜Ｄに依存し、タスクＢ〜ＤがタスクＡに依存する例である。
【００１８】
シミュレータ１０は、仮想的なグリッドコンピューティングシステムおよびタスクから成るシミュレーション対象１００を実行し、各タスクの処理時間を出力する機能を備える。
【００１９】
図２は、シミュレータ１０の構成を示すブロック図である。シミュレータ１０は、ＣＰＵ（Central Processing Unit）によって構成される演算部１１、ＲＯＭ（Read Only Memory）１２、およびＲＡＭ（Random Access Memory）１３を備える。さらに、シミュレータ１０は、ハードウエアファイルおよびタスクファイルを入力するファイル入力部１４、およびシミュレーションの結果を外部に出力するシミュレーション結果出力部１５を備える。ファイル入力部１４は、たとえば、ＣＤ−ＲＯＭ等の記録媒体に記録されたデータを読み込む記録媒体入力部、有線通信若しくは無線通信のための通信インタフェース、またはキーボード等によって構成される。また、シミュレーション結果出力部１５は、たとえば、モニタへ画像を出力するためのデータ出力部やプリンタとの接続インタフェース等により構成される。
【００２０】
ＲＡＭ１３内には、ハードウエアファイル記憶部１３１と、タスクファイル記憶部１３２と、シミュレーション結果記憶部１３３とが設けられている。ファイル入力部１４に入力されたハードウエアファイルは、演算部１１の働きによってハードウエアファイル記憶部１３１に格納される。ファイル入力部１４に入力されたタスクファイルは、演算部１１の働きによってタスクファイル記憶部１３２に格納される。シミュレーション結果記憶部１３３には、シミュレーション結果が記憶される。
【００２１】
ＲＯＭ１２は、シミュレーションプログラム記憶部を構成する。ＲＯＭ１２には、複数の計算ノード１（１２１）、計算ノード２（１２２）、計算ノード３（１２３）、計算ノード４（１２４）と、各計算ノードにタスクを割当てる割当部１２７とが記憶されている。
【００２２】
計算ノード１２１〜１２４は、シミュレーション対象のグリッドコンピューティングシステムを構成する複数の計算機に対応している。計算ノード１２１〜１２４および割当部１２７は、シミュレーションプログラム内の特定の記述部分に対応するプログラムによって実現されている。
【００２３】
この実施の形態では、たとえば、複数の計算ノードとして、符号１２１〜１２４で示される４つの計算ノードの場合を例として説明する。なお、計算ノードの数はこれに限られるものではない。計算ノードの数は、外部から入力されるハードウエアファイルの定義に応じて４つ以上にもそれ未満にも変動する。
【００２４】
演算部１１は、ハードウエアファイル記憶部１３１からハードウエアファイルを読み出して、シミュレーションに係る計算ノードおよびネットワークのハードウエア要素を特定する。これによって、各計算ノードの計算能力と計算ノード間のデータ転送能力とが定義付けされる。
【００２５】
さらに、演算部１１は、タスクファイル記憶部１３１からタスクファイルを読み出して、シミュレーションに係る複数のタスクおよびそれら複数のタスクの依存構造を特定する。これにより、実行されるべきタスクの順序、各タスクの処理量、および依存関係にあるタスクを処理するために計算ノードへ送信されるタスク処理結果データの転送量が定義付けされる。
【００２６】
演算部１１は、シミュレーションの実行開始とともに、各タスクの処理終了時間を特定するためのタイマＴの計時を開始する。また、演算部１１は、割当部１２７を機能させて、各計算ノード１２１〜１２４に対してタスクを割当てさせる。割当部１２７は、計算ノードが１つのタスクの処理を終了する毎に、その計算ノードに新たなタスクを割当てる。
【００２７】
各計算ノード１２１〜１２４は、割当てられたタスクを処理し、そのタスクの処理量と計算ノードの計算能力とによって特定される処理時間が経過した段階で、割当てられたタスクの処理を終了する。さらに、その処理結果に依存するタスクが割当てられた計算ノードが存在する場合、その計算ノードへ処理結果が転送される。この場合の転送時間は、処理結果データの転送量と、データの送受信に係る計算ノード間の転送帯域と、転送遅延時間とによって特定される。
【００２８】
演算部１１は、各タスクの処理終了時刻を特定し、シミュレーション結果としてシミュレーション結果記憶部１３３に格納する。また、演算部１１は、シミュレーション結果記憶部１３３に格納したシミュレーション結果を読出して、シミュレーション結果出力部１５から出力する。これにより、シミュレーション結果がモニタ画面に表示され、あるいはプリントアウトされる。
【００２９】
図３は、ハードウエアファイル記憶部１３１に記憶されるハードウエアファイルと、タスクファイル記憶部１３２に記憶されるタスクファイルとを説明するための図である。
【００３０】
ハードウエアファイルは、各計算ノード間の帯域速度およびデータ転送時の遅延時間を定義したネットワークデータ１３１１と、各計算ノードの処理速度を定義した処理速度データ１３１２とから成る。
【００３１】
ネットワークデータ１３１１の「送信ノード」はデータを送信する側の計算ノードを示し、「受信ノード」はデータを受信する側の計算ノードを示している。「ｖ」は帯域速度（ｂｙｔｅ／ｓｅｃ）を示し、「ｄ」は遅延時間を示している。また「ｖ」および「ｄ」に附属する１〜４の数字は、図１に示される計算ノード１〜４に対応している。
【００３２】
図３に示されるネットワークデータ１３１１では、計算ノード１から計算ノード２方向でのネットワークの帯域速度がｖ１２（ｂｙｔｅ／ｓｅｃ）、遅延時間がｄ１２（ｓｅｃ）として定義されている。
【００３３】
処理速度データ１３１２の「ｅ」は、各計算ノードの処理速度（ＦＬＯＰＳ）を意味する。「ｅ」に附属する１〜４の数字は、図１に示される計算ノード１〜４に対応している。図３に示される処理速度データ１３１２では、計算ノード１の処理速度がｅ１（ＦＬＯＰＳ）、計算ノード２の処理速度がｅ２（ＦＬＯＰＳ）として定義されている。
【００３４】
ハードウエアファイル記憶部１３１に記憶されたハードウエアファイルは、ファイル入力部１４から新たなハードウエアファイルが入力されることによって上書き更新される。そのため、ハードウエア要素を適宜変更し、様々なグリッドコンピューティングシステムを想定したシミュレーションをすることが可能となる。
【００３５】
なお、ハードウエアファイル記憶部１３１に、複数のハードウエアファイルを記憶するための複数の領域を設け、前回、あるいはそれ以前のシミュレーションに用いたハードウエアファイルを保存できるようにしてもよい。また、ハードウエアファイル記憶部１３１に記憶された複数のハードウエアファイルの中から、操作者の操作に応じた所望のハードウエアファイルを演算部１１が選択するようにしてもよい。
【００３６】
タスクファイル１３２１は、各タスク自体（タスクの処理量を含む）のデータと、タスク依存構造を示すデータと、依存関係にあるタスクを処理するために計算ノードへ送信されるタスク処理結果データの転送量と、各タスクを処理する計算ノードを指定するデータとから成る。
【００３７】
タスクファイル１３２１の「タスク依存構造」は、最左列の各タスクが依存するタスク（タスクの処理結果）を示している。たとえば、タスクファイル１３２１において、タスクＢは、タスクＡの処理結果に依存し、タスクＥは、タスクＢ、Ｃの処理結果に依存し、タスクＩは、タスクＥ、Ｇ、Ｈの処理結果に依存する。
【００３８】
タスクファイル１３２１の「タスク処理計算ノード」欄は、タスク処理を実行する計算ノードを示しており、１〜４の数字は、図２に示される計算ノード１２１〜１２４のノード番号に対応している。このように、タスクファイルには、計算ノードとタスクとの関係が規定されている。
【００３９】
タスクファイル１３２１の「データ転送量」欄、たとえば「ｄ（Ａ，Ｂ）」は、タスクＢの処理のために転送される、タスクＡの処理結果データ量（ｂｙｔｅ）を示している。タスクＩは、タスクＥ，Ｇ，Ｈの処理結果に依存するタスクであるため、タスクＩの処理のために、タスクＥ，Ｇ，Ｈの処理結果データがタスクＩを処理する計算ノードに転送されることになる。
【００４０】
このときの処理結果データの転送量が、各々、ｄ（Ｅ，Ｉ），ｄ（Ｇ，Ｉ），ｄ（Ｈ，Ｉ）である。タスクファイル１３２１によれば、タスクＥは計算ノード１が、タスクＧは計算ノード３が、タスクＨは計算ノード４が、各々処理し、タスクＩは計算ノード１が処理する。このため、タスクＩを処理する計算ノード１に対して、計算ノード３からタスクＧの処理結果データが転送され、計算ノード４からタスクＨの処理結果が転送される。なお、タスクＥは計算ノード１自身が処理するため、タスクＥの処理結果が転送されることはない。そのため、タスクＩの処理終了時間が、タスクＥの処理結果を転送するための転送時間の影響を受けることはない。
【００４１】
タスクファイル記憶部１３２に記憶されたタスクファイル１３２１は、ファイル入力部１４から新たなタスクファイルが入力されることによって上書き更新される。そのため、ジョブ要素を適宜変更し、様々な構造のタスク、およびタスクと計算機との組合せを想定したシミュレーションをすることが可能となる。
【００４２】
なお、タスクファイル記憶部１３２に、複数のタスクファイルを記憶するための複数の領域を設け、前回、あるいはそれ以前のシミュレーションに用いたタスクファイルを保存できるようにしてもよい。また、タスクファイル記憶部１３２に記憶された複数のタスクファイルの中から、操作者の操作に応じた所望のタスクファイルを演算部１１が選択するようにしてもよい。
【００４３】
図４は、シミュレーション結果記憶部１３３に記憶されるログファイル１３３１を説明するための図である。ログファイル１３３１には、各タスクを処理した計算ノードのノード番号と、各タスクの処理終了時間とが記録される。ｔ１〜ｔ９は、先頭のタスクの処理を開始した時を基準時として、その基準時から最終のタスクの処理が終了するまでの間の累積値（時刻）である。したがって、ｔ９は、タスクの処理を開始してからすべてのタスクの処理を終えるまでの時間を示す。なお、このような処理時間のログに換えて、処理に要した時間を各タスク別に示してもよい。
【００４４】
次に、演算部１１が実行するシミュレーションの制御手順について、図５〜図７に示されるフローチャートおよび図８に示されるフラグを用いて説明する。たとえば、ここでは、図３に示されたタスクファイルおよびハードウエアファイルが読み込まれたことを想定して、説明する。
【００４５】
最初に、ハードウエアファイルが読み込まれ（Ｓ１）、続いて、タスクファイルが読み込まれる（Ｓ２）。両ファイルは、図２に示したように、ＲＡＭ１３に記憶されている。
【００４６】
次に、タスク処理時間を計時するためのタイマＴが初期化され（Ｓ３）、続いて、各計算ノードが初期化される（Ｓ４）。
【００４７】
次に、Ｓ２で読み込まれたタスクファイルが参照されて、先頭のタスクが対応する計算ノードに割当てられる（Ｓ５）。これにより、図３に従えば、先頭のタスクＡが計算ノード１に割当てられる。
【００４８】
次に、計算ノードを特定するためのｎが１にセットされる（Ｓ６）。続いて、ｎが予め定められた最大値（ＭＡＸ）であるか否かが判断される（Ｓ７）。図３の例では、計算ノードは１〜４のため、最大値は４である。Ｓ７がＳ６の次に実行されたときには、ｎ＝１であるため、ＮＯと判断され、計算ノードｎが起動しているか否かが判断される（Ｓ８）。
【００４９】
ｎ＝１のときには、計算ノード１の起動の有無が判断されることになる。計算ノードが起動しているか否かは、各計算ノードに対応して設けられた起動フラグのｏｎ／ｏｆｆで判別される。図８（Ａ）に起動フラグを示す。起動フラグがｏｎであれば起動しており、ｏｆｆであれば起動していないことを示す。起動フラグは、ＲＡＭ１３に記憶されている。
【００５０】
Ｓ８において、起動フラグがｏｎしている判断されたときには、該当する計算ノードｎのタスク処理が進められる。これにより、たとえば、計算ノード１によってタスクＡの処理が進められることになる。起動フラグがｏｆｆのとき（Ｓ８でＮＯ）には、後述する転送処理に移行する。
【００５１】
Ｓ９でタスク処理がされた後、当該タスクの処理が終了したか否かが判断される（Ｓ１０）。終了していないときには、転送処理に移行する。終了しているときには、Ｓ５で初期化されたタイマＴの現在の値が参照され、その値に基づいて、タスクの処理を終了した時刻が出力される（Ｓ１１）。この出力された時刻データは、図４に示したシミュレーション結果記憶部１３３に記憶される。
【００５２】
次に、計算ノードｎの起動フラグがｏｆｆにされる（Ｓ１２）。これにより、計算ノードｎがタスク処理をしていない状態（タスクがあれば処理を開始できる状態）であることが演算部１１によって把握可能となる。ただし起動フラグがｏｆｆになったからといって、直ちに、その計算ノードに次のタスクが割当てられる訳ではない。
【００５３】
たとえば、図３によれば、タスクＡを処理した計算ノード１の次のタスクはタスクＥであるが、タスクＥが他のタスクＢ，Ｃの処理結果に依存するために、計算ノード１は、タスクＢ，Ｃの処理結果を入手せずしては、次のタスクＥの処理を開始できない。そのため、計算ノード１に対して、タスクＡの処理終了のみを条件としてタスクＥが割当てられることはない。具体的には、計算ノード１の起動フラグがｏｆｆであり、かつ、タスクＢ，Ｃの処理結果が既に計算ノード１に転送済みであることを条件として、演算部１１（割当部１２７）は、計算ノード１に次のタスクＥを割当てる。
【００５４】
Ｓ１２の後、タスクの処理結果をデータ転送する必要があるか否かが判断される（Ｓ１３）。たとえば、図３によれば、タスクＢ，Ｃは、タスクＡの処理結果に依存するために、Ｓ１３でＹＥＳと判断され、データの転送元とデータの転送先とを特定するためのデータ転送フラグがｏｎに設定される（Ｓ１４）。図３の例では、タスクＡは計算ノード１により計算され、タスクＢは計算ノード２により計算され、タスクＣは計算ノード３により計算されるため、計算ノード１と計算ノード２との転送ルートを示すデータ転送フラグがｏｎに設定されるとともに、計算ノード１と計算ノード３との転送ルートを示すデータ転送フラグがｏｎに設定される。
【００５５】
図８（Ｂ）に、データ転送フラグを示す。図示するように、データ転送フラグは、データ転送元とデータ転送先との転送ルート別に用意されている。データ転送フラグは、ＲＡＭ１３に記憶されている。
【００５６】
Ｓ１４の後、あるいは、Ｓ８、Ｓ１０、Ｓ１３のいずれかでＮＯと判断された後、転送処理のサブルーチンが実行される（Ｓ１５）。転送処理は、データ転送フラグがｏｎしている転送ルート上で、定められたタスク処理結果を転送する処理である。詳細は、図７を用いて後述する。
【００５７】
転送処理の後、タイマＴの計時が進められ（Ｓ１６）、さらにｎに１が加算される（Ｓ１７）。そして、再度、Ｓ７に戻り、以下、同様の処理が繰り返される。処理の繰り返しにおいて、やがて、ｎがＭＡＸを超過したときには、Ｓ７でＹＥＳと判断されて、全ての計算ノードの起動フラグと転送フラグとがｏｆｆであるか否かが判断される（Ｓ１８）。いずれかの起動フラグまたは転送フラグがｏｎのときには、タスクの全処理が完了していないために、再度、Ｓ６に処理が戻る。一方、全ての計算ノードの起動フラグと転送フラグとがｏｆｆであると判断されたとき（Ｓ１８でＹＥＳ）には、処理が終了する。
【００５８】
図７を用いて、転送処理を説明する。転送処理は、図６のＳ１５で実行されるサブルーチンである。
【００５９】
最初に、データ転送先の計算ノードを特定するためのａが１に設定される（Ｓ１０１）。次に、ａが予め定められた最大値（ＭＡＸ）であるか否かが判断される（Ｓ１０２）。図３の例では、計算ノードは１〜４のため、最大値は４である。Ｓ１０２がＳ１０１の次に実行されたときには、ａ＝１であるため、ＮＯと判断され、計算ノードｎから計算ノードａへの転送ルートに対応するデータ転送フラグがｏｎしているか否かが判断される（Ｓ１０３）。
【００６０】
ここで、ｎは、たとえば、図６のＳ１４でデータ転送ありと判断されたときの計算ノードのノード番号である。たとえば、図３の例でいえば、計算ノード１によって先頭のタスクＡが実行されたときには、Ｓ１０３において、計算ノードｎ（＝１）から計算ノードａ（＝１）へのデータ転送フラグがｏｎしているか否かが判断されることになる。
【００６１】
このようなデータ転送フラグは規定されていないので、Ｓ１０３でＮＯと判断されて、ａに１が加算される（Ｓ１１１）。そして、再度、Ｓ１０２に進み、ＮＯと判断されて、Ｓ１０３に進む。このとき、Ｓ１０３では、計算ノードｎ（＝１）から計算ノードａ（＝２）へのデータ転送フラグがｏｎしているか否かが判断されることになる。
【００６２】
図３の例では、計算ノード２は、計算ノード１からタスクＡの計算結果を受けて、タスクＢを処理可能であり、Ｓ１４では、計算ノード１から計算ノード２への転送ルートに対応するデータ転送フラグがｏｎに設定されている。その結果、Ｓ１０３では、ＹＥＳと判断されて、計算ノードｎ（＝１）から計算ノードａ（＝２）へのネットワーク転送処理が実行される（Ｓ１０４）。これにより、計算ノード１から計算ノード２に対して、タスクＡの処理結果が転送される。また、図３の例の場合には、同様にして、ａがＳ１１１で更新され、その値が３になることによって、Ｓ１０４では、計算ノード１から計算ノード３に対してタスクＡの処理結果が転送されることになる。
【００６３】
Ｓ１０４でネットワーク転送処理が実行された後、データ転送が終了したか否かが判断される（Ｓ１０５）。データ転送中の場合には、Ｓ１１１に移行する。データ転送が終了すれば、そのデータ転送の転送ルートに対応するデータ転送フラグがｏｆｆに設定される（Ｓ１０６）。
【００６４】
次に、計算ノードについて、次に実行するべきタスクの起動条件が調べられて（Ｓ１０７）、次のタスクの処理を起動可能であるか否かが判断される（Ｓ１０８）。
【００６５】
図３の場合、演算部１１（割当部１２７）は、タスクＢを処理する計算ノード２の起動フラグがｏｆｆであり、かつ、計算ノード１から計算ノード２へのデータ転送を示すデータ転送フラグがＳ１０６において、ｏｎからｏｆｆに切換わった状態を判断することによって、計算ノード２がタスクＢを処理可能であると判断する。
【００６６】
したがって、起動条件は、起動の可否の判断に係る計算ノードの起動フラグがｏｆｆであり、かつ、その計算ノードに係る転送ルートに対応するデータ転送フラグがｏｆｆであり、かつ、その計算ノードが処理するタスクに必要な他のタスクの処理結果がその計算ノードに保持されていることである。
【００６７】
Ｓ１０８において、次のタスクを起動可能でないと判断された場合、Ｓ１１１に移行するが、起動可能であると判断されると、その計算ノードに対して、次のタスクが割当てられ、さらにタスクフラグ表が変更（更新）される（Ｓ１０９）。
【００６８】
タスクフラグ表は、たとえば、図８（Ａ）に示されている。タスクフラグ表には、たとえば、図８（Ａ）に示されるように、計算ノード別に今回のタスクおよび次回のタスクに対する起動フラグのｏｎ／ｏｆｆの状態が記録されている。このタスクフラグ表は、演算部１１（割当部１２７）が各計算ノードのタスク処理の進捗状況を管理するために用いられる。たとえば、Ｓ１０９では、新たなタスク、すなわち、次回のタスクが今回のタスクとして割当てられることになるため、タスク名が更新される。
【００６９】
Ｓ１０９の後、次のタスクの起動フラグがｏｎに設定され（Ｓ１１０）、これに伴い、タスクフラグ表の起動フラグの状態も更新される。次に、ａに１が加算され（Ｓ１１１）、再び、Ｓ１０２に戻る。やがて、Ｓ１０２でａがＭＡＸを超過すると判断されたときに、転送処理が終了して、図１６のＳ１６に移行する。
【００７０】
以上、説明したように、本実施の形態によれば、ハード要素を示すハードウエアファイルと、ジョブ要素を示すタスクファイルとを入力し、仮想的な複数の計算ノードによって、両ファイルによって想定される様々なグリッドコンピューティングシステムのシミュレーションが可能である。そのため、任意のタスク構成および任意の計算機構成に対してシミュレーション結果を導出可能となる。
【００７１】
その結果、非常に大規模な計算機資源を利用するグリッドコンピューティングシステムアプリケーションの開発を行なう際に事前に性能評価することが可能となり、プログラムの性能や計算機資源の利用効率を向上させることが可能となる。また、特定のアプリケーションに合わせた分散計算機システムを新たに設計する際に計算機ネットワーク設備への投資を最適化できる。
【００７２】
また、以上説明したシミュレータの処理機能は、プログラムでも実現される。たとえば、このプログラムはコンピュータで読取可能な記録媒体に格納される。
【００７３】
この記録媒体は、コンピュータの外部記憶装置に着脱自在に装着されて、そこに記録されたプログラムが該外部記憶装置を介して読取り可能な記録媒体である。このような記録媒体としては、ＦＤ（フレキシブルディスク）の他、ＣＤ−ＲＯＭ、ＭＯ（Magnetic Optical Disc）／ＭＤ（Mini Disc）／ＤＶＤ（Digital Versatile Disc）などの光ディスクのディスク系、ＩＣカード（メモリカードを含む）／光カードなどのカード系、マスクＲＯＭ、ＥＰＲＯＭ（Erasable and Programmable ROM）、ＥＥＰＲＯＭ(Electrically EPROM)、フラッシュＲＯＭなどによる半導体メモリが適用可能である。
【００７４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７５】
【図１】シミュレータの概念図である。
【図２】シミュレータの構成を示すブロック図である。
【図３】ハードウエアファイル記憶部に記憶されるハードウエアファイルと、タスクファイル記憶部に記憶されるタスクファイルとを説明するための図である。
【図４】シミュレーション結果記憶部に記憶されるログファイルを説明するための図である。
【図５】シミュレータの制御手順を説明するためのフローチャートである。
【図６】シミュレータの制御手順を説明するためのフローチャートである。
【図７】転送処理を説明するためのフローチャートである。
【図８】タスク起動フラグおよびデータ転送フラグを説明するための図である。である。
【符号の説明】
【００７６】
１０  シミュレータ、１１  演算部、１２  ＲＯＭ（シミュレーションプログラム記憶部）、１３  ＲＡＭ、１４  ファイル入力部、１５  シミュレーション結果出力部、１２７  割当部、１２１〜１２４  計算ノード、１３１  ハードウエアファイル記憶部、１３２  タスクファイル記憶部、１３３  シミュレーション結果記憶部。
【図１】
2006350657.tif 000003
【図２】
2006350657.tif 000004
【図３】
2006350657.tif 000005
【図４】
2006350657.tif 000006
【図５】
2006350657.tif 000007
【図６】
2006350657.tif 000008
【図７】
2006350657.tif 000009
【図８】
2006350657.tif 000010