この発明は、並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法に関する。
従来より、分散メモリ型の並列計算機システムにおいては、MPI(Message Passing Interface)といったデータ通信方式などを用いた並列プログラミングにより、与えられた処理を複数のプロセッサで分割して実行し、処理時間の短縮を図る並列処理が行なわれている。
例えば、特許文献1では、逐次プログラムの実行中に、並列実行が可能なループを検出し、自動的に当該逐次プログラムを並列化して、並列化処理を行うことができる技術を開示している。
また、一般的に、MPIなどを用いた並列プログラムでは、使用するノードをあらかじめ静的にリストに登録しておき、例えば、「N」ノード必要な演算の場合は、そのリストの先頭から順番に使用することになる。この場合、マスタノードとして「1」ノード、スレーブノードとして「N−1」ノードが割り付けられる。
マスタノードは、「演算」および「全体の制御」を行い、スレーブノードは「演算」のみを行う。基本的に、マスタノードは、並列プログラムのメインルーチンを実行する前処理として、スレーブノードを起動し、マスタノードと各スレーブノード間の通信を確立する作業を行う。この作業を「N−1」のノード全てに行った後、プログラムの同期を取って実行を開始する。さらに、マスタノードは、メインルーチンの実行終了時に後処理として、全てのスレーブノードの処理をクローズした後、マスタノードの処理をクローズし、全体の処理を終了する。
ところで、上記した従来の技術は、前処理や後処理などの「全体の制御」を1つのマスタノードが行うので、演算に必要とされるノード数が増えると、マスタノードの処理コストが非常に高くなるため、並列処理の性能が劣化するという問題点があった。
また、上記した従来技術では、ノードごとにデータを静的に割り付けて処理を行うので、1つのノードに処理が集中して演算コストが大きくなったり、ノード間でデータ通信を行なうことによって通信コストが大きくなったりするため、並列処理の性能が劣化するという問題点があった。
例えば、図36の(A)に示すように、10個(A〜J)の均等サイズのデータ群があり、これらのデータ群が、第一グループ(A、B)と、第二グループ(C、DおよびE)と、第三グループ(F、G、H、IおよびJ)に分かれているとする。そして、「演算」実行時において、データ通信は、それぞれのグループ内でのみ発生し、グループ間では(例えば、データ群Aとデータ群Cとの間では)、データ通信は発生しないとする。なお、図36は、従来技術の課題を説明するための図である。
ここで、通信コストを考慮してデータを割り付ける場合、データ通信の発生しないグループをそれぞれ1ノードずつに割り付けることが考えられる。すなわち、図36の(B)に示すように、第一グループ、第二グループおよび第三グループを各々1ノードずつに割り付けるとする。この場合、ノード間の通信は発生しないが、第三グループが割り振られたノードの演算コストは、第一グループおよび第二グループが割り振られたノードの演算コストに比べて大きくなり、第三グループが割り振られたノードが全体の性能を劣化させてしまうことになる。
また、演算コストを考慮してデータを割り付ける場合、10個(A〜J)の均等サイズのデータ群を10ノードそれぞれに均等に割り付けることが考えられる。すなわち、図36の(C)に示すように、10個(A〜J)の均等サイズのデータ群を順番に割り付けるとする。この場合、各ノードの演算コストに大きな偏りは発生しないが、同一グループのデータ群が別のノードに割り付けられるので通信が発生する。特に、この通信が同一スイッチ内のノードで発生するならばそれほど大きなコストにはならないが、離れた場所のスイッチ間で発生すると通信コストが大きくなる。図36の(C)に示すように、第一グループ(A、B)および第二グループ(C、DおよびE)は、それぞれ同一スイッチ内にあるノードに割り付けられているので、通信コストはそれほど大きくならないが、第三グループの「F」と「G〜J」と間では通信コストが大きくなり、これにより全体の性能を劣化させてしまうことになる。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、効率のよい並列処理が可能になる並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、請求項1に係る発明は、複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、当該並列処理を制御する並列処理制御方法を各ノードとしてのコンピュータに実行させる並列処理制御プログラムであって、前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持手順と、前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持手順と、前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持手順が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持手順が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御手順と、前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持手順が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御手順と、をコンピュータに実行させることを特徴とする。
また、請求項2に係る発明は、上記の発明において、前記最上位マスタノードとして設定されている場合に、前記並列処理に用いられるデータ群を演算コストおよび/または通信コストに基づいてグループ分けすることを指示する指示文が当該並列処理を行うプログラムに検出された際に、前記演算コストおよび/または通信コストが抑えられるように、前記指示文に記載される同一グループのデータ群をノードに割り付ける割り付け手順をさらにコンピュータに実行させることを特徴とする。
また、請求項3に係る発明は、上記の発明において、前記割り付け手順は、前記マスタノード接続構成情報保持手順が保持するマスタノード接続構成情報を参照して、前記同一グループのデータ群を同一サブクラスタ内のノードに割り付けることを特徴とする。
また、請求項4に係る発明は、上記の発明において、前記割り付け手順は、前記同一グループのデータ群のすべてを前記同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付けることを特徴とする。
また、請求項5に係る発明は、上記の発明において、前記収容ノード情報保持手順は、前記サブクラスタごとに収容されるノードすべての演算コストおよび/または通信コストをさらに保持し、前記割り付け手順は、前記収容ノード情報保持手順が保持する前記演算コストおよび/または通信コストをさらに参照して、前記同一グループのデータ群を割り付けることを特徴とする。
また、請求項6に係る発明は、上記の発明において、前記マスタノード接続構成情報保持手順は、前記マスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持し、前記割り付け手順は、前記マスタノード接続構成情報保持手順が保持する前記各サブクラスタ間の通信性能をさらに参照して、前記同一グループのデータ群を割り付けることを特徴とする。
また、請求項7に係る発明は、上記の発明において、各ノードにおいて、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストおよび/または通信コストを算出するコスト算出手順をさらにコンピュータに実行させ、前記収容ノード情報保持手順は、前記コスト算出手順が算出したノードすべての前記演算コストおよび/または通信コストを更新して保持することを特徴とする。
また、請求項8に係る発明は、上記の発明において、前記木構造のサブクラスタにおいて管理ノードとして設定されている場合に、前記木構造のサブクラスタにおけるすべてのノードの性能を所定の出力部に出力する性能出力手順をさらにコンピュータに実行させることを特徴とする。
また、請求項9に係る発明は、複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、各ノードが当該並列処理を制御する並列処理制御システムであって、前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持手段と、前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持手段と、前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持手段が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持手段が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御手段と、前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持手段が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御手段と、を備えたことを特徴とする。
また、請求項10に係る発明は、複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、各ノードが当該並列処理を制御する並列処理制御方法であって、前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持工程と、前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持工程と、前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持工程が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持工程が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御工程と、前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持工程が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御工程と、を含んだことを特徴とする。
請求項1、9または10の発明によれば、サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持し、木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持し、最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、収容ノード情報を参照して、最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、マスタノード接続構成情報を参照して、下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了し、木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、最上位マスタノードとの通信が確立された際に、収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、最上位マスタノードに処理の終了を通知するので、従来、1つのマスタノードで行なっていた前処理および後処理を、最上位のサブクラスタに設置した最上位マスタノードと下位サブクラスタごとに設置した下位マスタノードと間で分散して行なうことができ、効率のよい並列処理が可能になる。
また、請求項2の発明によれば、最上位マスタノードとして設定されている場合に、並列処理に用いられるデータ群を演算コストおよび/または通信コストに基づいてグループ分けすることを指示する指示文が当該並列処理を行うプログラムに検出された際に、演算コストおよび/または通信コストが抑えられるように、指示文に記載される同一グループのデータ群をノードに割り付けるので、演算コストおよび/または通信コストに基づいてグループ分けしたデータ群を、例えば、最上位にあるサブクラスタ内にあるノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
また、請求項3の発明によれば、マスタノード接続構成情報を参照して、同一グループのデータ群を同一サブクラスタ内のノードに割り付けるので、演算コストおよび/または通信コストに基づいてグループ分けしたデータ群を同一サブクラスタ内にあるノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
また、請求項4の発明によれば、同一グループのデータ群のすべてを同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付けるので、同一サブクラスタ内にあるノードに割り振られなかった同一グループのデータ群を、過剰な通信コストの発生することのない配下のサブクラスタ内のノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
また、請求項5の発明によれば、サブクラスタごとに収容されるノードすべての演算コストおよび/または通信コストをさらに収容ノード情報に保持し、保持する演算コストおよび/または通信コストをさらに参照して、同一グループのデータ群を割り付けるので、演算コストおよび/または通信コストに基づいてクラス分けしたデータ群を、同一サブクラスタの中でも、演算コストおよび/または通信コストが優れたノードに割り付けることができ、効率のよい並列処理が可能になる。
また、請求項6の発明によれば、マスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持し、当該各サブクラスタ間の通信性能をさらに参照して、同一グループのデータ群を割り付けるので、演算コストおよび/または通信コストに基づいてクラス分けしたデータ群を、通信性能が高いネットワークで接続されるサブクラスタ内にあるノードに割り付けることができ、効率のよい並列処理が可能になる。
また、請求項7の発明によれば、各ノードにおいて、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストおよび/または通信コストを算出し、算出したノードすべての演算コストおよび/または通信コストを収容ノード情報に更新して保持するので、更新された各ノードの演算コストおよび/または通信コストを参照することで、例えば、演算コストが増大しているノードの使用を回避するなど、次回のデータ群の割り付けの際に利用することができ、効率のよい並列処理が可能になる。
また、請求項8の発明によれば、木構造のサブクラスタにおいて管理ノードとして設定されている場合に、木構造のサブクラスタにおけるすべてのノードの性能を所定の出力部に出力するので、並列プログラムの実行者は、画面に表示されたすべてのノードの状況を参照して、例えば、処理能力の低下しているノードを検知するなど、迅速に各ノードの性能評価をすることができ、効率のよい並列処理が可能になる。
以下に添付図面を参照して、この発明に係る並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法を詳細に説明する。なお、以下では、この発明に係る並列処理制御プログラムを含んで構成されるノードを並列処理システムに適用した場合を実施例として説明する。また、以下では、実施例1におけるノードの構成および処理の手順、実施例1の効果を順に説明し、次に、実施例1と同様に、実施例2に係るノード、実施例3に係るノード、実施例4に係るノード、実施例5に係るノード、実施例6に係るノード、実施例7に係るノードについて順に説明し、最後に、他の実施例について説明する。
[実施例1におけるノードの概要および特徴]
まず最初に、図1および図2を用いて、実施例1におけるノードの主たる特徴を具体的に説明する。図1および図2は、実施例1におけるノードの概要および特徴を説明するための図である。
実施例1におけるノードは、複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、当該並列処理を制御することを概要とする。例えば、実施例1におけるノードは、図1に示すように、スイッチで連結される4つのノードからなるサブクラスタが、3層に分かれた木構造でネットワークを介して接続されて構成される並列処理システムにおいて、並列プログラムを実行する際に、当該並列プログラムによる並列処理を制御する。
なお、図1に示す並列処理システムでは、木構造の最上位(第一層)に位置するサブクラスタである第一サブクラスタにおいて、「ノード0〜ノード3」がスイッチを介して連結され、木構造の第二層に位置するサブクラスタである第二サブクラスタおよび第三サブクラスタにおいて、「ノード4〜ノード7」および「ノード8〜ノード11」がそれぞれスイッチを介して連結され、木構造の第三層に位置するサブクラスタである第四サブクラスタ、第五サブクラスタ、第六サブクラスタおよび第七サブクラスタにおいて、「ノード12〜ノード15」、「ノード16〜ノード19」、「ノード20〜ノード23」および「ノード24〜ノード27」がそれぞれスイッチを介して連結されている。
ここで、本発明は、効率のよい並列処理が可能になることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例1におけるノードは、サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する。
すなわち、図1に示すように、「ノード0」が第一サブクラスタのマスタノードとして設定されている場合に、「マスタノード:ノード0」は、第一サブクラスタに収容される自身(ノード0)および自身の制御下にある「スレーブノード:ノード1〜3」すべてを一意に識別する情報(例えば、IPアドレスなど)である収容ノード情報を保持する。また、「ノード4」が第二サブクラスタのマスタノードとして設定されている場合に、「マスタノード:ノード4」は、第二サブクラスタに収容される自身(ノード4)および自身の制御下にある「スレーブノード:ノード5〜7」すべてを一意に識別する情報(例えば、IPアドレスなど)である収容ノード情報を保持する。これと同様に、第三サブクラスタのマスタノードとして設定される「ノード8」、第四サブクラスタのマスタノードとして設定される「ノード12」、第五サブクラスタのマスタノードとして設定される「ノード16」、第六サブクラスタのマスタノードとして設定される「ノード20」、第七サブクラスタのマスタノードとして設定される「ノード24」においても、それぞれ収容ノード情報を保持する。
なお、マスタノードは、並列プログラム実行に際して、「演算処理」および「制御処理」を行なうノードであり、スレーブノードは、並列プログラム実行に際して、「演算処理」のみを行うノードである。
また、実施例1におけるノードは、木構造の最上位のサブクラスタにおいてオリジナルマスタノードとして設定されている場合に、オリジナルマスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持する。なお、「オリジナルマスタノード」は、特許請求の範囲に記載の「最上位マスタノード」に対応する。
すなわち、図1に示すように、木構造の最上位(第一層)にある第一サブクラスタのマスタノードとして設定されている「ノード0」は、下位のサブクラスタに設定された下位マスタノード(ノード4、ノード8、ノード12、ノード16、ノード20およびノード24)との接続構成の情報(マスタノード接続構成情報)を保持する。具体的には、オリジナルマスタノードである「ノード0」は、木構造の最上位にある第一サブクラスタの配下(木構造の第二層)には、第二層マスタノードである「ノード4」および「ノード8」それぞれが制御する2つのサブクラスタが接続され、第二層マスタノードである「ノード4」の配下(木構造の第三層)には、第三層マスタノードである「ノード12」および「ノード16」それぞれが制御する2つのサブクラスタが接続され、同じく第二層マスタノードである「ノード8」の配下(木構造の第三層)には、第三層マスタノードである「ノード20」および「ノード24」それぞれが制御する2つのサブクラスタが接続されるとする、マスタノード接続構成情報を保持する。
そして、実施例1におけるノードは、オリジナルマスタノードとして設定されている場合に、並列プログラム実行の前処理として、自身の収容ノード情報を参照して、最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、マスタノード接続構成情報を参照して、下位マスタノードそれぞれとの通信を確立する。すなわち、図2の(B)に示すように、オリジナルマスタノードである「ノード0」は、自身が保持する収容ノード情報を参照して、第一サブクラスタに収容されるスレーブノード(ノード1〜3)との通信を確立するとともに、図2の(A)に示すように、マスタノード接続構成情報を参照して、下位マスタノード(ノード4、ノード8、ノード12、ノード16、ノード20およびノード24)それぞれとの通信を確立する。
また、実施例1におけるノードは、下位マスタノードとして設定されている場合に、当該並列プログラム実行の前処理として、オリジナルマスタノードとの通信が確立された際に、自身が保持する収容ノード情報を参照して、自身のサブクラスタに収容されるスレーブノードとオリジナルマスタノードとの通信を確立する。例えば、図2の(B)に示すように、下位マスタノードのうち第二層マスタノードである「ノード4」は、自身が保持する収容ノード情報を参照して、第二サブクラスタに収容されるスレーブノード(ノード5〜7)とオリジナルマスタノードとの通信を確立する。
なお、第三サブクラスタ〜第七サブクラスタにおいても、下位マスタノード(ノード8、ノード12、ノード16、ノード20およびノード24)は、「ノード4」と同様に、自身のサブクラスタに収容されるスレーブノードとオリジナルマスタノードとの通信を確立する。
そして、実施例1におけるノードは、オリジナルマスタノードとして設定されている場合に、並列プログラム実行の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知する。ずなわち、図2の(C)に示すように、オリジナルマスタノードである「ノード0」は、自身も含めた第一サブクラスタに収容されるノードの「演算処理」が終了したかを監視し、終了を検知する。
また、実施例1におけるノードは、下位マスタノードとして設定されている場合に、下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、オリジナルマスタノードに処理の終了を通知する。例えば、図2の(C)に示すように、下位マスタノードのうち第二層マスタノードである「ノード4」は、自身も含めた第二サブクラスタに収容されるノードの「演算処理」が終了したかを監視し、終了を検知するとともに、オリジナルマスタノードに処理終了の通知を行なう。なお、第三サブクラスタ〜第七サブクラスタにおいても、下位マスタノード(ノード8、ノード12、ノード16、ノード20およびノード24)は、「ノード4」と同様に、自身も含めたサブクラスタに収容されるノードの「演算処理」が終了したかを監視し、終了を検知するとともに、オリジナルマスタノードに処理終了の通知を行なう。
そして、実施例1におけるノードは、オリジナルマスタノードとして設定されている場合に、下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する。すなわち、オリジナルマスタノードである「ノード0」は、図2の(C)に示すような「処理終了の通知」を、下位マスタノードすべてから受信した場合、前処理において確立していたすべてのノードとの通信を終了する。
このようなことから、実施例1におけるノードは、従来、1つのマスタノードで行なっていた前処理および後処理を、最上位のサブクラスタに設置したオリジナルマスタノードと下位サブクラスタごとに設置した下位マスタノードとの間で分散して行なうことができ、上記した主たる特徴の通り、効率のよい並列処理が可能になる。
[実施例1におけるオリジナルマスタノードの構成]
次に、図3、図5および図6を用いて、実施例1におけるオリジナルマスタノードを説明する。図3は、実施例1におけるオリジナルマスタノードの構成を示すブロック図であり、図5は、実施例1におけるマスタノード接続構成情報記憶部を説明するための図であり、図6は、実施例1におけるオリジナルマスタノードの収容ノード情報記憶部を説明するための図である。
図3に示すように、実施例1におけるオリジナルマスタノード10は、通信制御I/F部11と、記憶部12と、制御部13とから構成される。
通信制御I/F部11は、ネットワークを通じて送受信されるデータの転送を制御したり、記憶部12および制御部13との間におけるデータ転送を制御したりする。具体的には、並列プログラムの読み込み通知や「処理終了の通知」を受信して制御部13に転送したり、制御部13からの通信確立要求を転送したりする。
記憶部12は、制御部13による各種処理に用いるデータを記憶し、特に本発明に密接に関連するものとしては、図3に示すように、マスタノード接続構成情報記憶部12aと収容ノード情報記憶部12bとを備える。ここで、マスタノード接続構成情報記憶部12aは、特許請求の範囲に記載の「マスタノード接続構成情報保持手順」に対応し、収容ノード情報記憶部12bは、同じく「収容ノード情報保持手順」に対応する。
マスタノード接続構成情報記憶部12aは、オリジナルマスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持して記憶する。
具体的には、図5に示すように、マスタノード接続構成情報記憶部12aは、オリジナルマスタノード10として設定された「ノード0」に対して、木構造の第二層にあるマスタノードである「ノード4:2−master.0」および「ノード8:2―master.1」の2つが接続され、第二層マスタノードである「ノード4:2−master.0」に対して、木構造の第三層にあるマスタノードである「ノード12:3−master.0」および「ノード16:3−master.1」の2つが接続され、同じく第二層マスタノードである「ノード8:2―master.1」に対して、木構造の第三層にあるマスタノードである「ノード20:3−master.2」および「ノード24:3−master.3」の2つが接続されているとする、マスタノード接続構成情報を保持する。また、マスタノードそれぞれを、ネットワークにおいて一意に識別できる情報として「IPアドレス」も保持して記憶する。
収容ノード情報記憶部12bは、最上位サブクラスタに収容されるマスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持して記憶する。
具体的には、図6に示すように、収容ノード情報記憶部12bは、第一サブクラスタ(木構造の最上位にあるサブクラスタ)のオリジナルマスタノード10として設定された「ノード0」と、その制御下にある「スレーブノード:ノード1〜3」との4つからなるノードそれぞれを、ネットワークにおいて一意に識別できる「IPアドレス」と対応付けて記憶する。
制御部13は、通信制御I/F部11から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図3に示すように、通信制御部13aを備える。ここで、通信制御部13aは、特許請求の範囲に記載の「最上位マスタノード通信制御手順」に対応する。
通信制御部13aは、並列プログラム実行の前処理として、収容ノード情報記憶部12bが記憶する収容ノード情報を参照して、最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、マスタノード接続構成情報記憶部12aが記憶するマスタノード接続構成情報を参照して、下位マスタノードそれぞれとの通信を確立する。すなわち、通信制御部13aは、図6に示す収容ノード情報を参照して、第一サブクラスタに収容されるスレーブノード(ノード1〜3)との通信を確立する(図2の(B)参照)。それととともに、通信制御部13aは、図5に示すマスタノード接続構成情報を参照して、下位マスタノード(ノード4、ノード8、ノード12、ノード16、ノード20およびノード24)それぞれとの通信を確立する(図2の(A)参照)。
また、通信制御部13aは、下位マスタノードを介して、当該下位マスタノードが制御するスレーブノードすべてとの通信確立を検知する。
また、通信制御部13aは、並列プログラム実行の後処理として、最上位のサブクラスタに収容されるノードすべての処理の終了を検知する。すなわち、通信制御部13aは、図6に示す収容ノード情報を参照して、第一サブクラスタに収容されるノードすべての「演算処理」が終了したかを監視し、終了を検知する(図2の(C)参照)。
また、通信制御部13aは、下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する。すなわち、通信制御部13aは、図5に示すマスタノード接続構成情報にあるすべての下位マスタノードから、「処理終了の通知」を受信した場合、前処理において確立していたすべてのノードとの通信を終了する。
[実施例1における下位マスタノードの構成]
続いて、図4および図7を用いて、実施例1における下位マスタノードを説明する。図4は、実施例1における下位マスタノードの構成を示すブロック図であり、図7は、実施例1における下位マスタノードの収容ノード情報記憶部を説明するための図である。
図4に示すように、実施例1における下位マスタノード20は、通信制御I/F部21と、記憶部22と、制御部23とから構成される。
通信制御I/F部21は、ネットワークを通じて送受信されるデータの転送を制御したり、記憶部22および制御部23との間におけるデータ転送を制御したりする。具体的には、オリジナルマスタノード10からの通信確立要求を受信して制御部23に転送したり、制御部23から受信した「処理終了の通知」をオリジナルマスタノード10に転送したりする。
記憶部22は、制御部23による各種処理に用いるデータを記憶し、特に本発明に密接に関連するものとしては、図4に示すように、収容ノード情報記憶部22aを備える。ここで、収容ノード情報記憶部22aは、特許請求の範囲に記載の「収容ノード情報保持手順」に対応する。
収容ノード情報記憶部22aは、下位サブクラスタに収容されるマスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持して記憶する。
例えば、図7に示すように、収容ノード情報記憶部22aは、第二サブクラスタ(木構造の第二層にあるサブクラスタ)の下位マスタノード20として設定された「ノード4」と、その制御下にある「スレーブノード:ノード5〜7」との4つからなるノードそれぞれを、ネットワークにおいて一意に識別できる「IPアドレス」と対応付けて記憶する。
制御部23は、通信制御I/F部21から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図4に示すように、通信制御部23aを備える。ここで、通信制御部23aは、特許請求の範囲に記載の「下位マスタノード通信制御手順」に対応する。
通信制御部23aは、並列プログラム実行の前処理として、オリジナルマスタノード10との通信が確立された際に、収容ノード情報記憶部22aが記憶する収容ノード情報を参照して、自身のサブクラスタに収容されるスレーブノードとオリジナルマスタノードとの通信を確立する。例えば、第二層マスタノードである「ノード4」の通信制御部23aは、図7に示す収容ノード情報を参照して、第二サブクラスタに収容されるスレーブノード(ノード5〜7)とオリジナルマスタノードとの通信を確立する(図2の(B)参照)。
また、通信制御部23aは、並列プログラム実行の後処理として、収容するノードすべての処理の終了を検知するとともに、オリジナルマスタノード10に処理の終了を通知する。例えば、第二層マスタノードである「ノード4」の通信制御部23aは、図7に示す収容ノード情報を参照して、第二サブクラスタに収容されるノードの「演算処理」が終了したかを監視して終了を検知するとともに、オリジナルマスタノード10に処理終了の通知を行なう(図2の(C)参照)。
[実施例1におけるオリジナルマスタノードによる処理の手順]
次に、図8および図10を用いて、実施例1におけるオリジナルマスタノードによる処理を説明する。図8は、実施例1におけるオリジナルマスタノードの前処理の手順を説明するための図であり、図10は、実施例1におけるオリジナルマスタノードの後処理の手順を説明するための図である。
[実施例1におけるオリジナルマスタノードによる前処理の手順]
まず、実施例1におけるオリジナルマスタノード10は、並列処理システムにおいて並列プログラムが読み込まれると(ステップS801肯定)、マスタノード接続構成情報を参照して、下位マスタノードとの通信を確立する(ステップS802)。すなわち、通信制御部13aは、図5に示すマスタノード接続構成情報記憶部12aが記憶するマスタノード接続構成情報を参照して、下位マスタノード(ノード4、ノード8、ノード12、ノード16、ノード20およびノード24)それぞれとの通信を確立する(図2の(A)参照)。
そして、通信制御部13aは、収容ノード情報を参照して、自身のサブクラスタ内のスレーブノードとの通信を確立する(ステップS803)。すなわち、通信制御部13aは、図6に示す収容ノード情報記憶部12bが記憶する収容ノード情報を参照して、第一サブクラスタに収容されるスレーブノード(ノード1〜3)との通信を確立する(図2の(B)参照)。
続いて、通信制御部13aは、下位マスタノード20を介して、当該下位マスタノード20が制御するスレーブノードすべてとの通信確立を検知する(ステップS804)。例えば、下位マスタノード20として設定された「ノード4」を介して、スレーブノード(ノード5〜7)すべてとの通信確立を検知する。
そして、実施例1におけるオリジナルマスタノード10は、並列プログラムのメインルーチン実行を開始して(ステップS805)、処理を終了する。
[実施例1におけるオリジナルマスタノードによる後処理の手順]
まず、実施例1におけるオリジナルマスタノード10は、並列処理システムにおいて並列プログラムのメインルーチンが終了すると(ステップS1001肯定)、最上位のサブクラスタに収容されるノードすべての処理の終了を検知する(ステップS1002)。すなわち、通信制御部13aは、図6に示す収容ノード情報を参照して、第一サブクラスタに収容されるノードすべての「演算処理」が終了したかを監視し、終了を検知する(図2の(C)参照)。
そして、通信制御部13aは、すべての下位マスタノードから処理の終了通知を受信すると(ステップS1003肯定)、並列プログラムの全処理を終了して(ステップS1004)、処理を終了する。すなわち、通信制御部13aは、図6に示すマスタノード接続構成情報にあるすべての下位マスタノードから、「処理終了の通知」を受信した場合、前処理において確立していたすべてのノードとの通信を終了する。
[実施例1における下位マスタノードによる処理の手順]
次に、図9および図11を用いて、実施例1における下位マスタノードによる処理を説明する。図9は、実施例1における下位マスタノードの前処理の手順を説明するための図であり、図11は、実施例1における下位マスタノードの後処理の手順を説明するための図である。
[実施例1における下位マスタノードによる前処理の手順]
まず、実施例1における下位マスタノード20は、オリジナルマスタノード10から通信確立要求を受け付けると(ステップS901肯定)、オリジナルマスタノード10との通信を確立する(ステップS902)。
そして、通信制御部23aは、収容ノード情報を参照して、自身のサブクラスタ内のスレーブノードとオリジナルマスタノードとの通信を確立し(ステップS903)、処理を終了する。例えば、第二層マスタノードである「ノード4」の通信制御部23aは、図7に示す収容ノード情報を参照して、第二サブクラスタに収容されるスレーブノード(ノード5〜7)とオリジナルマスタノードとの通信を確立する(図2の(B)参照)。
[実施例1における下位マスタノードによる後処理の手順]
まず、実施例1における下位マスタノード20は、並列プログラムのメインルーチンが終了すると(ステップS1101肯定)、通信制御部23aは、自身のサブクラスタ内にあるノードの処理終了を検知する(ステップS1102)。例えば、第二層マスタノードである「ノード4」の通信制御部23aは、図7に示す収容ノード情報を参照して、第二サブクラスタに収容されるノードの「演算処理」が終了したかを監視して終了を検知する。
そして、通信制御部23aは、オリジナルマスタノード10へ処理の終了通知を送信し(ステップS1103)、処理を終了する。
[実施例1の効果]
上記したように、実施例1によれば、サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持し、木構造の最上位のサブクラスタにおいてオリジナルマスタノード10として設定されている場合に、オリジナルマスタノード10と下位マスタノード20との接続構成の情報であるマスタノード接続構成情報を保持し、オリジナルマスタノード10は、当該並列処理の前処理として、自身の収容ノード情報を参照して、最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、マスタノード接続構成情報を参照して、下位マスタノード20それぞれとの通信を確立し、当該並列処理の後処理として、最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、下位マスタノード20すべてから、処理の終了通知を検知してすべての通信を終了し、下位マスタノード20は、当該並列処理の前処理として、オリジナルマスタノード10との通信が確立された際に、自身の収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードとオリジナルマスタノード10との通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、オリジナルマスタノード10に処理の終了を通知するので、従来、1つのマスタノードで行なっていた前処理および後処理を、最上位のサブクラスタに設置した最上位マスタノードと下位サブクラスタごとに設置した下位マスタノードとの間で分散して行なうことができ、効率のよい並列処理が可能になる。
上述した実施例1では、前処理および後処理を、オリジナルマスタノードと下位マスタノードとが分担する場合について説明したが、実施例2では、並列プログラムに用いられるデータ群の割り付けを、オリジナルマスタノードと下位マスタノードとが分担する場合について説明する。
[実施例2におけるノードの概要および特徴]
まず最初に、図12および図13を用いて、実施例2におけるノードの主たる特徴を具体的に説明する。図12および図13は、実施例2におけるノードの概要および特徴を説明するための図である。
図12の(A)に示すように、例えば、並列処理に用いられるデータ群として、10個(A〜J)の均等サイズのデータ群があり、これらのデータ群が、第一グループ(A、B)と、第二グループ(C、DおよびE)と、第三グループ(F、G、H、IおよびJ)に分かれているとする。そして、「演算」実行時において、データ通信は、それぞれのグループ内でのみ発生し、グループ間では(例えば、データ群Aとデータ群Cとの間では)、データ通信は発生しないとする。
また、図12の(C)に示す並列処理システムにおいて、実施例1で説明した前処理が終了し、並列プログラムのメインルーチンが実行されているが、第一サブクラスタのノード2のみ使用不可(Busy)であり、その他のノードは使用可能(Idle)であるとする。なお、これらの情報は、各マスタノードが、対応するノードの使用状態をそれぞれの収容ノード情報に保持している。
実施例2におけるオリジナルマスタノード(ノード0)は、並列プログラムのメインルーチン実行中に、図12の(A)に示した10個のデータ群について記載された指示文を検出すると、並列プログラムのメインルーチン実行を中断し、当該指示文に記載される情報を抽出する。すなわち、図12の(B)に示すように、当該指示文には、並列処理に用いられる均等サイズのデータ群として、総数が10個であり、データ通信が閉じているグループ構造としては、第一グループ(2個)と、第二グループ(3個)と、第三グループ(5個)とからなることが記載されている。
すなわち、当該指示文は、並列処理に用いられるデータ群を演算コストおよび通信コストに基づいてグループ分けすることを指示するものである。なお、このような指示文は、MPIなどを用いた並列プログラムにおいて、ユーザによって任意に挿入することができる。
そして、実施例2におけるオリジナルマスタノード(ノード0)は、上述した指示文に記載される情報を抽出すると、演算コストおよび通信コストが抑えられるように、指示文に記載される同一グループのデータ群をノードに割り付ける。
例えば、実施例2におけるオリジナルマスタノード(ノード0)は、図13の(A)に示すように、第一グループのデータ群(AおよびBからなる2個)を割り付ける際に、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「3」であることを検知し(図13の(A)の(1)参照)、第一グループのデータ群をまとめて割り付け可能であるので、例えば、番号の若い順から、「ノード0」と「ノード1」とにデータ群を割り付ける(図13の(A)の(2)参照)。そして、自身が保持する収容ノード情報における、「ノード0」と「ノード1」の情報を「Idle」から「Busy」に更新する(図13の(A)の(3)参照)。
また、実施例2におけるオリジナルマスタノード(ノード0)は、マスタノード接続構成情報を参照して、同一グループのデータ群を同一サブクラスタ内のノードに割り付ける。
例えば、実施例2におけるオリジナルマスタノード(ノード0)は、図13の(B)に示すように、第二グループのデータ群(C、DおよびEからなる3個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図13の(B)の(1)参照)、第一サブクラスタに割り付け不可と判定するが、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図13の(B)の(2)参照)。
ここで、実施例2におけるオリジナルマスタノード(ノード0)は、第二サブクラスタおよび第三サブクラスタともに割り付けが可能であるので、例えば、左側にあるサブクラスタ(第二サブクラスタ)に対して、第二グループのデータ群を転送し(図13の(B)の(3)参照)、第二サブクラスタにおいて、番号の若い順から、「ノード4」と「ノード5」と「ノード6」とにデータ群を割り付ける(図13の(B)の(4)参照)。そして、第二サブクラスタのマスタノードである「ノード4」は、自身が保持する収容ノード情報における、「ノード4」と「ノード5」と「ノード6」との情報を「Idle」から「Busy」に更新する(図13の(B)の(5)参照)。
また、実施例2におけるオリジナルマスタノード(ノード0)は、同一グループのデータ群のすべてを同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。
例えば、実施例2におけるオリジナルマスタノード(ノード0)は、図13の(C)に示すように、第三グループのデータ群(F、G、H、IおよびJからなる5個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図13の(C)の(1)参照)、第一サブクラスタに割り付け不可と判定し、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「1」および「4」であることを検知する(図13の(C)の(2)参照)。さらに、実施例2におけるオリジナルマスタノード(ノード0)は、使用可能なノード数の多い第三サブクラスタの「ノード8」に対して、配下の下位マスタノードである「ノード20」、「ノード24」それぞれに第六サブクラスタ、第七サブクラスタそれぞれの使用可能なノード数の調査実行を指示させ、これにより、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図13の(C)の(3)参照)。
ここで、実施例2におけるオリジナルマスタノード(ノード0)は、第三サブクラスタおよびその配下のサブクラスタにおいて合計12個の使用可能なノード数があり、第三グループのデータ群を割り付け可能と判定するが、第三サブクラスタ内には4つのデータ群しか割り付けられないので、割り付けることが出来ない余り1つのデータ群を第三サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。例えば、配下のサブクラスタのうち、左側にある第六サブクラスタの番号の若い「ノード20」に余り1つのデータ群を割り付けると判定する。この判定に基づいて、実施例2におけるオリジナルマスタノード(ノード0)は、第三グループのデータ群をそれぞれ第三サブクラスタと第六サブクラスタとに転送し、「ノード8〜11」と「ノード20」とに割り付けを行なう(図13の(C)の(4)参照)。そして、第三サブクラスタのマスタノードである「ノード8」は、自身が保持する収容ノード情報における「ノード8〜11」の情報を「Idle」から「Busy」に更新し、第六サブクラスタのマスタノードである「ノード20」は、自身が保持する収容ノード情報における「ノード20」の情報を「Idle」から「Busy」に更新する(図13の(C)の(5)参照)。
なお、本実施例では、サブクラスタの左側を選択し、ノード番号の若い順にデータ群を割り付ける場合について説明したが、本発明はこれに限定されるのもではなく、サブクラスタの右側を選択し、ノード番号の大きい順にデータ群を割り付ける場合であってもよい。また、本実施例では、図13の(C)の(3)に示したように、使用可能なノード数の多いサブクラスタの下位マスタノードに対してのみ、配下の下位サブクラスタにおいて使用可能なノード数の調査実行を指示させる場合について説明したが、本発明はこれに限定されるのもではなく、使用可能なノード数の少ないサブクラスタの下位マスタノードに対しても、配下の下位サブクラスタにおいて使用可能なノード数の調査実行を指示させて、両者の結果を比較して割り付けるノードを判定してもよい。
このようなことから、実施例2におけるノードは、演算コストおよび通信コストに基づいてグループ分けしたデータ群を、例えば、最上位にあるサブクラスタ内にあるノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
[実施例2におけるオリジナルマスタノードの構成]
次に、図14および図16〜18を用いて、実施例2におけるオリジナルマスタノードを説明する。図14は、実施例2におけるオリジナルマスタノードの構成を示すブロック図であり、図16は、指示文を説明するための図であり、図17は、実施例2における動的割り付け部を説明するための図であり、図18は、実施例2における収容ノード情報記憶部を説明するための図である。
図14に示すように、実施例2におけるオリジナルマスタノード10は、図3に示す実施例1におけるオリジナルマスタノード10と基本的に同様であり、動的割り付け部13bと収容ノード情報更新部13cとを新たに備えているところが相違する。以下、これらを中心に説明する。ここで、動的割り付け部13bは、特許請求の範囲に記載の「割り付け手順」に対応する。
動的割り付け部13bは、並列処理に用いられるデータ群を演算コストおよび通信コストに基づいてグループ分けすることを指示する指示文が当該並列処理を行うプログラムに検出された際に、演算コストおよび通信コストが抑えられるように、指示文に記載される同一グループのデータ群をノードに割り付ける。例えば、図16に示すように、並列処理に用いられる均等サイズのデータ群として、総数が10個であり、データ通信が閉じているグループ構造としては、第一グループ(2個)と、第二グループ(3個)と、第三グループ(5個)とからなることが記載されている指示文を、並列プログラムのメインルーチン実行中に検出し、当該指示文に記載される情報を抽出すると、並列プログラムのメインルーチン実行を中断し、演算コストおよび通信コストが抑えられるように、指示文に記載される同一グループのデータ群をノードに割り付ける。
具体的には、動的割り付け部13bは、第一グループのデータ群(AおよびBからなる2個)を割り付ける際に、図18の(A)の左側に示す収容ノード情報記憶部12bが記憶する収容ノード情報における使用状況(status)を参照して、第一サブクラスタの調査を行なって、使用可能なノード数を検索する(図17の(A)に示す指令を実行)。これにより、使用可能なノード数が「3」であることを検知し(図13の(A)の(1)参照)、第一グループのデータ群をまとめて割り付け可能であるので、図17の(C)に示す指令を実行して、例えば、番号の若い順から、「ノード0」と「ノード1」とにデータ群を割り付ける(図13の(A)の(2)参照)。
収容ノード情報更新部13cは、動的割り付け部13bによって変更されたノードの使用状況を更新する。すなわち、「ノード0」と「ノード1」の使用状況(status)を「Idle」から「Busy」に更新して収容ノード情報記憶部12bに格納する(図18の(A)の右側参照)。なお、図18においては、「IPアドレス」を省略して記載している。
また、動的割り付け部13bは、マスタノード接続構成情報記憶部12aが記憶するマスタノード接続構成情報を参照して、同一グループのデータ群を同一サブクラスタ内のノードに割り付ける。
具体的には、動的割り付け部13bは、第二グループのデータ群(C、DおよびEからなる3個)を割り付ける際に、図18の(A)の右側に示す収容ノード情報記憶部12bが記憶する収容ノード情報における使用状況(status)を参照して、第一サブクラスタの調査を行なって、使用可能なノード数を検索し(図17の(A)に示す指令を実行)、使用可能なノード数が「1」であることを検知し(図13の(B)の(1)参照)、第一サブクラスタに割り付け不可と判定するが、引き続き、マスタノード接続構成情報記憶部12aが記憶するマスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ(図17の(B)に示す指令を実行)、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図13の(B)の(2)参照)。
ここで、動的割り付け部13bは、第二サブクラスタおよび第三サブクラスタともに割り付けが可能であるので、図17の(D)に示す指令を実行して、例えば、左側にあるサブクラスタ(第二サブクラスタ)に対して、第二グループのデータ群を転送する(図13の(B)の(3)参照)。そして、動的割り付け部13bは、第二サブクラスタにおける下位マスタノード20である「ノード4」に対して、図17の(C)に示す指令を実行するように指示を出し、「ノード4」は、例えば、第二サブクラスタにおいて、番号の若い順から、「ノード4」と「ノード5」と「ノード6」とにデータ群を割り付ける(図13の(B)の(4)参照)。
なお、後述するように、第二サブクラスタの下位マスタノード20である「ノード4」は、自身が保持する収容ノード情報における、「ノード4」と「ノード5」と「ノード6」との情報を「Idle」から「Busy」に更新する。
また、動的割り付け部13bは、同一グループのデータ群のすべてを同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。
具体的には、動的割り付け部13bは、第三グループのデータ群(F、G、H、IおよびJからなる5個)を割り付ける際に、図17の(A)に示す指令を実行して、第一サブクラスタにおいて使用可能なノード数が「1」であることを検知し(図13の(C)の(1)参照)、引き続き、マスタノード接続構成情報記憶部12aが記憶するマスタノード接続構成情報を参照して、図17の(B)に示す指令を実行して、配下の下位マスタノード20である「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「1」および「4」であることを検知する(図13の(C)の(2)参照)。
さらに、動的割り付け部13bは、使用可能なノード数の多い第三サブクラスタの下位マスタノード20である「ノード8」に対して、図17の(B)に示す指令を実行させるように通知し、配下の下位マスタノードである「ノード20」、「ノード24」それぞれに第六サブクラスタ、第七サブクラスタそれぞれの使用可能なノード数の調査実行を指示させ、これにより、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図13の(C)の(3)参照)。
ここで、動的割り付け部13bは、第三サブクラスタおよびその配下のサブクラスタにおいて合計12個の使用可能なノード数があり、第三グループのデータ群を割り付け可能と判定するが、第三サブクラスタ内には4つのデータ群しか割り付けられないので、割り付けることが出来ない余り1つのデータ群を第三サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。例えば、配下のサブクラスタのうち、左側にある第六サブクラスタの番号の若い「ノード20」に余り1つのデータ群を割り付けると判定する。この判定に基づいて、動的割り付け部13bは、第三グループのデータ群を第三サブクラスタに転送し(図17の(D)に示す指令を実行)、さらに、第三サブクラスタの下位マスタノード20である「ノード20」に対して、図17の(D)に示す指令を実行するように指示を出すことで、第六サブクラスタの下位マスタノード20である「ノード20」に、余り1つのデータ群を第六サブクラスタに転送する。
それとともに、動的割り付け部13bは、第三サブクラスタの下位マスタノード20である「ノード20」に対して、図17の(C)に示す指令を実行するように指示を出すことで、「ノード8〜11」にデータ群を割り付けさせ、同様に、第六サブクラスタの下位マスタノード20である「ノード20」に対して、図17の(C)に示す指令を実行するように指示を出すことで、「ノード20」にデータ群を割り付けさせる。
なお、後述するように、第三サブクラスタの下位マスタノード20である「ノード8」は、自身が保持する収容ノード情報における「ノード8〜11」の情報を「Idle」から「Busy」に更新し、第六サブクラスタの下位マスタノード20である「ノード20」は、自身が保持する収容ノード情報における「ノード20」の情報を「Idle」から「Busy」に更新する。
[実施例2における下位マスタノードの構成]
次に、図15、図17および図18を用いて、実施例2における下位マスタノードを説明する。図15は、実施例2における下位マスタノードの構成を示すブロック図であり、図17は、実施例2における動的割り付け部を説明するための図であり、図18は、実施例2における収容ノード情報記憶部を説明するための図である。
図15に示すように、実施例2における下位マスタノード20は、図4に示す実施例1における下位マスタノード20と基本的に同様であり、動的割り付け部23bと収容ノード情報更新部23cとを新たに備えているところが相違する。以下、これらを中心に説明する。
動的割り付け部23bは、オリジナルマスタノード10からの指令に基づいて、様々な処理を実行する。例えば、オリジナルマスタノード10からの指令に基づいて、図17の(C)に示す指令を実行して、転送されたデータ群を割り付けたり(図13の(B)の(4)など参照)、図17の(B)に示す指令を実行して、配下のサブクラスタを調査して、使用可能なノードを検索したり(図13の(C)の(3)参照)、図17の(D)に示す指令を実行して、配下のサブクラスタにデータ群を転送したりする(図13の(C)の(4)における、第三サブクラスタから第六サブクラスタへのデータ群の転送など)。
収容ノード情報更新部23cは、動的割り付け部23bによって変更されたノードの使用状況を更新する。例えば、第二サブクラスタの下位マスタノード20である「ノード4」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における、「ノード4〜6」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図18の(B)の右側参照)。
また、第三サブクラスタの下位マスタノード20である「ノード8」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における「ノード8〜11」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図18の(C)の右側参照)。
また、第六サブクラスタの下位マスタノード20である「ノード20」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における「ノード20」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図18の(D)の右側参照)。
[実施例2におけるオリジナルマスタノードによる処理の手順]
次に、図19を用いて、実施例2におけるオリジナルマスタノードによる処理を説明する。図19は、実施例2におけるオリジナルマスタノードの処理の手順を説明するための図である。
まず、実施例2におけるオリジナルマスタノード10は、並列プログラムのメインルーチン実行中に指示文が検出されると(ステップS1901肯定)、動的割り付け部13bは、メインルーチンの実行を中止し、指示文に記載されたデータ群のグループ総数(g個)およびグループごとのデータ群の個数を抽出する(ステップS1902)。例えば、動的割り付け部13bは、図16に示す指示文を検出すると、メインルーチンの実行を中止し、並列処理に用いられる均等サイズのデータ群として、総数が10個であり、データ通信が閉じているグループ構造としては、第一グループ(2個)と、第二グループ(3個)と、第三グループ(5個)の3個(g=3)であることを抽出する。
そして、動的割り付け部13bは、第一グループのデータ群(2個)の割り付けを開始し(ステップS1903)、最上位サブクラスタ(第一サブクラスタ)のノードに割り付け可能であるかどうかを判定する(ステップS1904)。すなわち、動的割り付け部13bは、図17の(A)に示す指令を実行して、最上位サブクラスタ(第一サブクラスタ)のノードに割り付け可能であるかどうかを判定する。
ここで、動的割り付け部13bは、最上位サブクラスタ(第一サブクラスタ)のノードに割り付け可能であると判定した場合には(ステップS1904肯定)、最上位サブクラスタのノードにデータ群を割り付ける(ステップS1905)。例えば、図13の(A)に示すように、第一グループのデータ群(2個)が、第一サブクラスタに割り付け可能であるので、動的割り付け部13bは、最上位サブクラスタ(第一サブクラスタ)の「ノード0」および「ノード1」に割り付ける。
これに反して、動的割り付け部13bは、最上位サブクラスタ(第一サブクラスタ)のノードに割り付け不可能であると判定した場合には(ステップS1904否定)、下位サブクラスタの使用可能なノード数調査を行なう(ステップS1906)。
例えば、図13の(B)に示すように、動的割り付け部13bは、第二グループのデータ群(3個)が、第一サブクラスタに割り付け不可能であるので、図17の(B)に示す指令を実行して、下位サブクラスタの使用可能なノード数調査を行い、第二サブクラスタおよび第三サブクラスタともに、使用可能なノード数が「4」であることを検知する。また、第三グループのデータ群(5個)が、第一サブクラスタに割り付け不可能であるので、図17の(B)に示す指令を実行して、下位サブクラスタの使用可能なノード数調査を行い、さらに、当該下部サブクラスタの下位マスタノードに、図17の(B)に示す指令を実行するように指示を出して、図13の(C)の(3)に示すように、第三サブクラスタと第六サブクラスタと第七サブクラスタとで、使用可能なノード数が合計12個であることを検知する。
そして、動的割り付け部13bは、下位サブクラスタのノードに割り付け可能と判定した場合には(ステップS1907肯定)、下位サブクラスタに当該グループのデータ群を転送し、割り付けを実行させる(ステップS1908)。
例えば、動的割り付け部13bは、第二グループのデータ群(3個)が、第二サブクラスタおよび第三サブクラスタともに割り付け可能であるので、図17の(D)に示す指示を実行して、左側の第二サブクラスタに当該グループのデータ群を転送する(図13の(B)の(3)参照)し、第二サブクラスタの下位マスタノード20に、図17の(C)に示す指示を実行するように指令を出して、割り付けを実行させる。また、第三グループのデータ群(5個)が、第三サブクラスタと第六サブクラスタと第七サブクラスタとで割り付け可能であるので、図17の(D)に示す指示を実行して、第三サブクラスタに第三グループのデータ群を転送し、図17の(C)に示す指示を実行するように指令を出して、4つのデータ群の割り付けを実行させる。さらに、第三サブクラスタの下位マスタノード20に、図17の(D)に示す指示を実行するように指令を出して、余り1個のデータ群を第六サブクラスタに転送させ、図17の(C)に示す指示を実行するように指令を出して、割り付けを実行させる。
続いて、動的割り付け部13bは、下位マスタノードから割り付け完了通知を受信すると(ステップS1909肯定)、当該グループのデータ群の割り付けを終了する。
そののち、動的割り付け部13bは、すべてのグループのデータ群の割り付けが終了したか否かを判定し(ステップS1911)、すべてのグループのデータ群の割り付けが終了していない場合には(ステップS1911否定)、次のグループに対して処理を行うと判定し(ステップS1912)、当該次のグループのデータ群の割り付けを開始する(ステップS1903)。
これに反して、すべてのグループのデータ群の割り付けが終了した場合には(ステップS1911肯定)、並列プログラムのメインルーチンの実行を再開し(ステップS1913)、当該メインルーチンが終了すると(ステップS1914肯定)、図10に示すステップS1002の後処理を実行する。なお、当該メインルーチンが終了しない場合は(ステップS1914否定)、動的割り付け部13bは、引き続き、指示文の検出を行なう(ステップS1901)。
なお、動的割り付け部13bは、下位サブクラスタのノードに割り付け不可能と判定した場合には(ステップS1907否定)、データ群を静的に割り付け(ステップS1910)、並列プログラムのメインルーチンの実行を再開する(ステップS1913)。また、動的割り付け部13bは、並列プログラムのメインルーチン実行中に指示文が検出されない場合は(ステップS1901否定)、並列プログラムのメインルーチンが終了するまで待機する。
[実施例2における下位マスタノードによる処理の手順]
次に、図20を用いて、実施例2における下位マスタノードによる処理を説明する。図20は、実施例2における下位マスタノードの処理の手順を説明するための図である。
まず、実施例2における下位マスタノード20は、並列プログラムのメインルーチンが終了していないと判定し(ステップS2000否定)、並列プログラムのメインルーチン実行中止の通知をオリジナルマスタノード10から受け付けると(ステップS2001肯定)、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードからの使用可能なノード数の調査要求を受け付けるまで待機する。
そして、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードからの使用可能なノード数の調査要求を受け付けた場合は(ステップS2002肯定)、収容ノード情報記憶部22aが記憶する収容ノード情報を参照して、使用可能なノード数を調査し(図17の(A)に示す指示)、当該使用可能なノード数をオリジナルマスタノード10に通知する(ステップS2003)。これに反して、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードからの使用可能なノード数の調査要求を受け付けない場合は(ステップS2002否定)、並列プログラムのメインルーチンの終了判定を行なう(ステップS2000)。
続いて、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードから、さらに下位に位置するサブクラスタにおける使用可能なノード数の調査要求を受け付けた場合は(ステップS2004肯定)、下位サブクラスタの下位マスタノードに使用可能なノード数の調査を指示し(図17の(B)に示す指示)、調査結果をオリジナルマスタノード10に通知し(ステップS2005)、オリジナルマスタノード10から転送されたデータ群を受信するまで待機する。
これに反し、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードから、さらに下位に位置するサブクラスタにおける使用可能なノード数の調査要求を受け付けなかった場合は(ステップS2004否定)、オリジナルマスタノード10から転送されたデータ群を受信するまで待機する。
そして、動的割り付け部23bは、オリジナルマスタノード10から転送されたデータ群を受信した場合は(ステップS2006肯定)、オリジナルマスタノード10からの指示に従って、図17の(C)に示す指示を実行し、自サブクラスタのノードに、受信したデータ群を割り付ける(ステップS2007)。
これに反し、動的割り付け部23bは、オリジナルマスタノード10から転送されたデータ群を受信しない場合は(ステップS2006否定)、メインルーチンの終了判定を行う(ステップS2000)。
さらに、動的割り付け部23bは、オリジナルマスタノード10に割り付け完了を通知し(ステップS2008)、オリジナルマスタノード10からの並列プログラムのメインルーチン実行再開通知を受け付ける(ステップS2009)。
そののち、並列プログラムのメインルーチンが終了すると(ステップS2000肯定)、下位マスタノード20は、図11に示すステップS1102の後処理を実行する。
[実施例2の効果]
上記したように、実施例2によれば、オリジナルマスタノード10として設定されている場合に、並列処理に用いられるデータ群を演算コストおよび通信コストに基づいてグループ分けすることを指示する指示文が当該並列処理を行うプログラムに検出された際に、演算コストおよび通信コストが抑えられるように、指示文に記載される同一グループのデータ群をノードに割り付けるので、演算コストおよび通信コストに基づいてグループ分けしたデータ群を、例えば、最上位にある第一サブクラスタ内にあるノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
また、実施例2によれば、マスタノード接続構成情報を参照して、同一グループのデータ群を同一サブクラスタ内のノードに割り付けるので、演算コストおよび通信コストに基づいてグループ分けしたデータ群を同一サブクラスタ内にあるノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
また、実施例2によれば、同一グループのデータ群のすべてを同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付けるので、同一サブクラスタ内にあるノードに割り振られなかった同一グループのデータ群を、過剰な通信コストの発生することのない配下のサブクラスタ内のノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
上述した実施例2では、指示文に記載されるグループ分けに基づいて、データ群の割り付けを行なう場合について説明したが、実施例3では、オリジナルマスタノードと下位マスタノードとに保持される収容ノード情報にある各ノードの演算コストをさらに参照して、データ群の割り付けを行なう場合について説明する。
[実施例3におけるノードの概要および特徴]
まず最初に、図21を用いて、実施例3におけるノードの主たる特徴を具体的に説明する。図21は、実施例3におけるノードの概要および特徴を説明するための図である。
実施例3におけるマスタノードそれぞれは、サブクラスタごとに収容されるノードすべての演算コストをさらに保持する。例えば、図21の(A)に示すように、最上位にある第一サブクラスタにおけるオリジナルマスタノードである「ノード0」は、収容ノード情報として、使用状況(status)を示す使用可能(Idle)もしくは使用不可(Busy)の情報に加えて、「ノード0〜4」における演算コストから決定されるクラス分けの情報「ノード0:ClassA、ノード1:ClassC、ノード2:ClassC、ノード3:ClassB」を保持する。なお、本実施例においては、ClassA、ClassB、ClassCの順に、演算コストが優れているものとする。
なお、本実施例においては、並列処理に用いられるデータ群として、実施例2と同様のものが用いられ、指示文検出時においては、実施例2と同様に、第一サブクラスタのノード2のみ使用不可(Busy)であり、その他のノードは使用可能(Idle)であるとする。
そして、実施例3におけるオリジナルマスタノード(ノード0)は、収容ノード情報にある演算コストから決定されるクラス分けの情報をさらに参照して、同一グループのデータ群を割り付ける。
すなわち、実施例3におけるオリジナルマスタノード(ノード0)は、実施例2と同様に、並列プログラムのメインルーチン実行中に、図16に示した10個のデータ群について記載された指示文を検出すると、並列プログラムのメインルーチン実行を中断し、当該指示文に記載される情報を抽出した後に、第一グループのデータ群(AおよびBからなる2個)を割り付ける。その際、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「3」であることを検知し(図21の(A)の(1)参照)、第一グループのデータ群をまとめて割り付け可能と判定するが、実施例3においては、各ノードの演算コストから決定されるクラス分けをさらに参照して、「ノード0」と「ノード3」とにデータ群を割り付ける(図21の(A)の(2)参照)。そして、自身が保持する収容ノード情報における、「ノード0」と「ノード3」の情報を「Idle」から「Busy」に更新する(図21の(A)の(3)参照)。
また、実施例3におけるオリジナルマスタノード(ノード0)は、図21の(B)に示すように、第二グループのデータ群(C、DおよびEからなる3個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図21の(B)の(1)参照)、第一サブクラスタに割り付け不可と判定するが、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図21の(B)の(2)参照)。
ここで、実施例3におけるオリジナルマスタノード(ノード0)は、第二サブクラスタおよび第三サブクラスタともに割り付けが可能であるので、例えば、左側にあるサブクラスタ(第二サブクラスタ)に対して、第二グループのデータ群を転送し(図21の(B)の(3)参照)、データ群を割り付けるが、実施例2とは異なり、第二サブクラスタにおける下位マスタノードである「ノード4」が保持する演算コストのクラス分けを参照して、「ノード4」と「ノード5」と「ノード7」とにデータ群を割り付ける(図21の(B)の(4)参照)。そして、第二サブクラスタのマスタノードである「ノード4」は、自身が保持する収容ノード情報における、「ノード4」と「ノード5」と「ノード7」との情報を「Idle」から「Busy」に更新する(図21の(B)の(5)参照)。
また、実施例3におけるオリジナルマスタノード(ノード0)は、図21の(C)に示すように、第三グループのデータ群(F、G、H、IおよびJからなる5個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図21の(C)の(1)参照)、第一サブクラスタに割り付け不可と判定し、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「1」および「4」であることを検知する(図21の(C)の(2)参照)。さらに、実施例3におけるオリジナルマスタノード(ノード0)は、使用可能なノード数の多い第三サブクラスタの「ノード8」に対して、配下の下位マスタノードである「ノード20」、「ノード24」それぞれに第六サブクラスタ、第七サブクラスタそれぞれの使用可能なノード数の調査実行を指示させ、これにより、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図21の(C)の(3)参照)。
ここで、実施例3におけるオリジナルマスタノード(ノード0)は、第三サブクラスタおよびその配下のサブクラスタにおいて合計12個の使用可能なノード数があり、第三グループのデータ群を割り付け可能と判定するが、第三サブクラスタ内には4つのデータ群しか割り付けられないので、割り付けることが出来ない余り1つのデータ群を第三サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。
この際、実施例3におけるオリジナルマスタノード(ノード0)は、配下のサブクラスタのうち、左側にある第六サブクラスタに余り1つのデータ群を割り付けると判定し、第三グループのデータ群をそれぞれ第三サブクラスタと第六サブクラスタとに転送し、割り付けを行なう(図21の(C)の(4)参照)。ここで、実施例2と同様に、第三サブクラスタの「ノード8〜11」に4つのデータ群を割り付けるが、第六サブクラスタにおいては、実施例2と異なり、当該サブクラスタの下位マスタノードである「ノード20」が保持する演算コストのクラス分けを参照して、「ノード21」に割り付けを行なう(図21の(C)の(4)参照)。そして、第三サブクラスタの下位マスタノードである「ノード8」は、自身が保持する収容ノード情報における「ノード8〜11」の情報を「Idle」から「Busy」に更新し、第六サブクラスタの下位マスタノードである「ノード20」は、自身が保持する収容ノード情報における「ノード21」の情報を「Idle」から「Busy」に更新する(図21の(C)の(5)参照)。
なお、本実施例では、演算コストから決定されるクラス分けをさらに参照して割り付けを行なう場合について説明したが、本発明はこれに限定されるものではなく、通信コストから決定されるクラス分けをさらに参照して割り付けを行なう場合であっても、両者のクラス分けをさらに参照して割り付けを行なう場合であってもよい。
このようなことから、実施例3におけるノードは、演算コストに基づいてクラス分けしたデータ群を、同一サブクラスタの中でも、演算コストが優れたノードに割り付けることができ、効率のよい並列処理が可能になる。
[実施例3におけるオリジナルマスタノードの構成]
次に、図14、図22および図23を用いて、実施例3におけるオリジナルマスタノードを説明する。図14は、実施例2におけるオリジナルマスタノードの構成を示すブロック図であり、図22は、実施例3における動的割り付け部を説明するための図であり、図23は、実施例3における収容ノード情報記憶部を説明するための図である。
図14に示すように、実施例3におけるオリジナルマスタノード10は、実施例2におけるオリジナルマスタノード10と基本的に同様であるが、収容ノード情報記憶部12bが記憶する内容と、動的割り付け部13bが行なう処理の内容が異なる。以下、これらを中心に説明する。
収容ノード情報記憶部12bは、最上位サブクラスタに収容されるマスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報とともに、ノードすべての演算コストから決定されるクラス分けの情報をさらに保持する。具体的には、図23の(A)の左側の表に示すように、収容ノード情報記憶部12bは、第一サブクラスタ(木構造の最上位にあるサブクラスタ)のオリジナルマスタノード10として設定された「ノード0」と、その制御下にある「スレーブノード:ノード1〜3」との4つからなるノードそれぞれの演算コストから決定されるクラス分けの情報を保持する(ノード0:ClassA、ノード1:ClassC、ノード2:ClassC、ノード3:ClassB)。なお、図23においては、「IPアドレス」を省略して記載している。
動的割り付け部13bは、収容ノード情報にある演算コストから決定されるクラス分けの情報をさらに参照して、同一グループのデータ群を割り付ける。すなわち、実施例3における動的割り付け部13bは、データ群の割り付けに際して、図22の(E)に示す指示をさらに実行して、収容ノード情報記憶部12bが記憶する演算コストから決定されるクラス分けの情報を検出し、これを参照して、図22の(C)に示す指示をさらに実行して、データ群を割り付ける(例えば、図21の(A)の(2)参照)。
また、動的割り付け部13bは、配下のサブクラスタの下位マスタノード20に、図22の(B)に示す指示を実行する際に、さらに当該下位マスタノード20に対して、図22の(E)に示す指示を実行するように指令を出して、検出された演算コストから決定されるクラス分けの情報に基づいて、割り付けの指令を行なう(例えば、図21の(B)の(4)参照)。
また、動的割り付け部13bは、配下のサブクラスタの下位マスタノード20に、当該配下のサブクラスタのさらに下位のサブクラスタの下位マスタノード20に対して、図22の(B)に示す指示を実行するように指令を出す際に、さらに、当該下位マスタノード20に対して、図22の(E)に示す指示を実行するように指令を出して、検出された演算コストから決定されるクラス分けの情報に基づいて、割り付けの指令を行なう(例えば、図21の(C)の(4)参照)。
収容ノード情報更新部13cは、動的割り付け部13bによって変更されたノードの使用状況を更新する。すなわち、「ノード0」と「ノード3」の使用状況(status)を「Idle」から「Busy」に更新して収容ノード情報記憶部12bに格納する(図23の(A)の右側参照)。
[実施例3における下位マスタノードの構成]
次に、図15、図22および図23を用いて、実施例3における下位マスタノードを説明する。図15は、実施例2における下位マスタノードの構成を示すブロック図であり、図22は、実施例3における動的割り付け部を説明するための図であり、図23は、実施例3における収容ノード情報記憶部を説明するための図である。
図15に示すように、実施例3における下位マスタノード20は、実施例2における下位マスタノード20と基本的に同様であるが、収容ノード情報記憶部22aが記憶する内容と、動的割り付け部23bが行なう処理の内容が異なる。以下、これらを中心に説明する。
収容ノード情報記憶部22aは、下位サブクラスタごとに収容される下位マスタノード20および当該下位マスタノード20の制御下にあるスレーブノードすべてを一意に識別する情報とともに、ノードすべての演算コストをさらに保持する。例えば、図23の(B)の左側の表に示すように、第二サブクラスタのおける下位マスタノード20である「ノード4」にある収容ノード情報記憶部22aは、下位マスタノード20として設定された「ノード4」と、その制御下にある「スレーブノード:ノード5〜7」との4つからなるノードそれぞれの演算コストから決定されるクラス分けの情報を保持する(ノード4:ClassA、ノード5:ClassB、ノード6:ClassC、ノード7:ClassB)。なお、図23においては、「IPアドレス」を省略して記載している。
動的割り付け部23bは、実施例2と同様に、オリジナルマスタノード10からの指令に基づいて、様々な処理を実行するが、実施例2とは異なり、自身のサブクラスタに収容されるノードの演算コストに基づくクラス分けを検出してオリジナルマスタノード10に通知する。すなわち、実施例3における動的割り付け部23bは、オリジナルマスタノード10からの指令に基づいて、図22の(E)の指令を実行して、自身のサブクラスタに収容されるノードの演算コストに基づくクラス分けを検出してオリジナルマスタノード10に通知する。
収容ノード情報更新部23cは、動的割り付け部23bによって変更されたノードの使用状況を更新する。例えば、第二サブクラスタの下位マスタノード20である「ノード4」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における、「ノード4、5、7」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図23の(B)の右側参照)。
また、第三サブクラスタの下位マスタノード20である「ノード8」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における「ノード8〜11」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図23の(C)の右側参照)。
また、第六サブクラスタの下位マスタノード20である「ノード20」における収容ノード情報更新部23cは、自身が保持する収容ノード情報における「ノード21」の情報を「Idle」から「Busy」に更新し、自身の収容ノード情報記憶部22aに格納する(図23の(D)の右側参照)。
[実施例3におけるオリジナルマスタノードによる処理の手順]
次に、図19を用いて、実施例3におけるオリジナルマスタノードによる処理を説明する。図19は、実施例2におけるオリジナルマスタノードの処理の手順を説明するための図である。
実施例3におけるオリジナルマスタノード10の処理の手順は、基本的に、実施例2におけるオリジナルマスタノードの処理の手順と同様であり、ステップS1905とステップS1908の処理の内容が異なる。以下、これを中心に説明する。
動的割り付け部13bは、最上位サブクラスタ(第一サブクラスタ)のノードに割り付け可能であると判定した場合には(ステップS1904肯定)、最上位サブクラスタのノードにデータ群を割り付けるが(ステップS1905)、その際、自身の収容ノード情報が保持する各ノードの演算コストに基づくクラス分けを検出し、検出されたクラス分けを参照して、データ群の割り付けを行なう。
また、動的割り付け部13bは、下位サブクラスタのノードに割り付け可能と判定した場合には(ステップS1907肯定)、下位サブクラスタに当該グループのデータ群を転送し、割り付けを実行させるが(ステップS1908)、その際、当該下位サブクラスタ収容ノード情報が保持する各ノードの演算コストに基づくクラス分けを検出し、検出されたクラス分けを参照して、データ群の割り付けを実行させる。
[実施例3における下位マスタノードによる処理の手順]
次に、図20を用いて、実施例3における下位マスタノードによる処理を説明する。図20は、実施例2における下位マスタノードの処理の手順を説明するための図である。
実施例3における下位マスタノード20の処理の手順は、基本的に、実施例2における下位マスタノード20の処理の手順と同様であり、ステップS2003とステップS2005との処理の内容が異なる。以下、これを中心に説明する。
動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードからの使用可能なノード数の調査要求を受け付けた場合は(ステップS2002肯定)、収容ノード情報記憶部22aが記憶する収容ノード情報を参照して、使用可能なノード数を調査し(図17の(A)に示す指示)、当該使用可能なノード数をオリジナルマスタノード10に通知する(ステップS2003)が、その際、オリジナルマスタノード10からの指令により、図22の(E)の指示を実行して、収容ノード情報記憶部22aが記憶する、各ノードの演算コストに基づくクラス分けを検出し、検出したクラス分けの情報も、オリジナルマスタノード10に通知する。
また、動的割り付け部23bは、自身が格納される下位マスタノード20より上位にあるマスタノードから、さらに下位に位置するサブクラスタにおける使用可能なノード数の調査要求を受け付けた場合は(ステップS2004肯定)、下位サブクラスの下位マスタノード20に使用可能なノード数の調査を指示し(図17の(B)に示す指示)、調査結果をオリジナルマスタノード10に通知するが(ステップS2005)、その際、オリジナルマスタノード10は、図22の(E)の指示を実行する指令を、当該下位サブクラスの下位マスタノード20に対しても行なっており、当該下位サブクラスの下位マスタノード20における収容ノード情報記憶部22aが記憶する各ノードの演算コストに基づくクラス分けの情報も、オリジナルマスタノード10に通知する。
[実施例3の効果]
上記したように、実施例3によれば、サブクラスタごとに収容されるノードすべての演算コストに基づくクラス分けの情報をさらに保持し、オリジナルマスタノード10は、サブクラスタごとの演算コストに基づくクラス分けの情報をさらに参照して、同一グループのデータ群を割り付けるので、演算コストおよび/または通信コストに基づいてクラス分けしたデータ群を、同一サブクラスタの中でも、演算コストが優れたノードに割り付けることができ、効率のよい並列処理が可能になる。
上述した実施例3では、オリジナルマスタノードと下位マスタノードとに保持される収容ノード情報にある各ノードの演算コストをさらに参照して、データ群の割り付けを行なう場合について説明したが、実施例4では、オリジナルマスタノードのマスタノード接続構成情報にある各サブクラスタ間の通信性能をさらに参照して、データ群の割り付けを行なう場合について説明する。
[実施例4におけるノードの概要および特徴]
まず最初に、図24を用いて、実施例4におけるノードの主たる特徴を具体的に説明する。図24は、実施例4におけるノードの概要および特徴を説明するための図である。
実施例4におけるオリジナルマスタノードは、オリジナルマスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持する。例えば、図24の(B)に示すように、第一サブクラスタと第二サブクラスタとの間の通信性能は、「100Mbps」であり、第一サブクラスタと第三サブクラスタとの間の通信性能は、「1Gbps」であるとする情報をさらに保持する。なお、本実施例では、第一サブクラスタと第三サブクラスタとの間の通信性能以外はすべて、「100Mbps」であるとする。
なお、本実施例においては、並列処理に用いられるデータ群として、実施例2と同様のものが用いられ、指示文検出時においては、実施例2と同様に、第一サブクラスタのノード2のみ使用不可(Busy)であり、その他のノードは使用可能(Idle)であるとする。また、実施例3と同様に、マスタノードそれぞれは、収容ノード情報として、サブクラスタごとに収容されるノードすべての演算コストに基づいたクラス分けの情報をさらに保持する。
また、実施例4におけるオリジナルマスタノード(ノード0)は、実施例2と同様に、並列プログラムのメインルーチン実行中に、図16に示した10個のデータ群について記載された指示文を検出すると、並列プログラムのメインルーチン実行を中断し、当該指示文に記載される情報を抽出した後に、第一グループのデータ群(AおよびBからなる2個)を割り付ける。その際の手順である図24の(A)の(1)〜(3)は、図21の(A)の(1)〜(3)と同様であるので、説明を省略する。
そして、実施例4におけるオリジナルマスタノードは、各サブクラスタ間の通信性能をさらに参照して、同一グループのデータ群を割り付ける。
すなわち、実施例4におけるオリジナルマスタノード(ノード0)は、図24の(B)に示すように、第二グループのデータ群(C、DおよびEからなる3個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図24の(B)の(1)参照)、第一サブクラスタに割り付け不可と判定するが、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図24の(B)の(2)参照)。
ここで、実施例4におけるオリジナルマスタノード(ノード0)は、実施例2および実施例3とは異なり、通信性能を参照して、サブクラスタ間の通信性能が「1Gbps」である第三サブクラスタに対して、第二グループのデータ群を転送し(図24の(B)の(3)参照)、データ群の割り付けを行なう。その際、実施例3と同様に、第三サブクラスタにおける下位マスタノードである「ノード8」が保持する演算コストのクラス分けを参照して、「ノード8」と「ノード9」と「ノード10」とにデータ群を割り付ける(図24の(B)の(4)参照)。そして、第三サブクラスタのマスタノードである「ノード8」は、自身が保持する収容ノード情報における、「ノード8」と「ノード9」と「ノード10」との情報を「Idle」から「Busy」に更新する(図24の(B)の(5)参照)。
また、実施例4におけるオリジナルマスタノード(ノード0)は、図24の(C)に示すように、第三グループのデータ群(F、G、H、IおよびJからなる5個)を割り付ける際に、まず、自身の収容ノード情報を参照して、第一サブクラスタの調査を行なって、使用可能なノード数が「1」であることを検知し(図24の(C)の(1)参照)、第一サブクラスタに割り付け不可と判定し、引き続き、マスタノード接続構成情報を参照して、配下の下位マスタノードである「ノード4」および「ノード8」に対して、第二サブクラスタおよび第三サブクラスタの調査を実行させ、それぞれのサブクラスタで使用可能なノード数が「4」および「1」であることを検知する(図24の(C)の(2)参照)。さらに、実施例4におけるオリジナルマスタノード(ノード0)は、使用可能なノード数の多い第二サブクラスタの「ノード4」に対して、配下の下位マスタノードである「ノード12」、「ノード16」それぞれに第四サブクラスタ、第五サブクラスタそれぞれの使用可能なノード数の調査実行を指示させ、これにより、それぞれのサブクラスタで使用可能なノード数が「4」であることを検知する(図24の(C)の(3)参照)。
ここで、実施例4におけるオリジナルマスタノード(ノード0)は、第二サブクラスタおよびその配下のサブクラスタにおいて合計12個の使用可能なノード数があり、第三グループのデータ群を割り付け可能と判定するが、第二サブクラスタ内には4つのデータ群しか割り付けられないので、割り付けることが出来ない余り1つのデータ群を第二サブクラスタの配下にあるサブクラスタ内のノードに割り付ける。
この際、実施例4におけるオリジナルマスタノード(ノード0)は、マスタノード接続構成情報を参照して、「第二サブクラスタと第四サブクラスタ」間および「第二サブクラスタと第五サブクラスタ」間の通信性能が両者とも「100Mbps」と同じであるので、左側にある第四サブクラスタに余り1つのデータ群を割り付けると判定し、第三グループのデータ群をそれぞれ第二サブクラスタと第四サブクラスタとに転送し、割り付けを行なう(図24の(C)の(4)参照)。ここで、第二サブクラスタの「ノード4〜7」に4つのデータ群を割り付けるが、第四サブクラスタにおいては、実施例3と同様に、当該サブクラスタの下位マスタノードである「ノード12」が保持する演算コストのクラス分けを参照して、「ノード15」に割り付けを行なう(図24の(C)の(4)参照)。そして、第二サブクラスタの下位マスタノードである「ノード4」は、自身が保持する収容ノード情報における「ノード4〜7」の情報を「Idle」から「Busy」に更新し、第四サブクラスタの下位マスタノードである「ノード12」は、自身が保持する収容ノード情報における「ノード15」の情報を「Idle」から「Busy」に更新する(図24の(C)の(5)参照)。
このようなことから、実施例4におけるノードは、同一サブクラスタ内にあるノードに割り振られなかった同一グループのデータ群を、過剰な通信コストの発生することのない配下のサブクラスタ内のノードにまとめて割り付けることができ、効率のよい並列処理が可能になる。
[実施例4におけるオリジナルマスタノードの構成]
次に、図14、図25〜27を用いて、実施例4におけるオリジナルマスタノードを説明する。図14は、実施例2におけるオリジナルマスタノードの構成を示すブロック図であり、図25は、実施例4におけるマスタノード接続構成情報記憶部を説明するための図であり、図26は、実施例4における動的割り付け部を説明するための図であり、図27は、実施例4における収容ノード情報記憶部を説明するための図である。
図14に示すように、実施例4におけるオリジナルマスタノード10は、実施例2および実施例3におけるオリジナルマスタノード10と基本的に同様であるが、マスタノード接続構成情報記憶部12aが記憶する内容と、動的割り付け部13bが行なう処理の内容が、実施例3と異なる。以下、これらを中心に説明する。
マスタノード接続構成情報記憶部12aは、オリジナルマスタノード10と下位のサブクラスタに設定された下位マスタノード20との接続構成の情報であるマスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持する。例えば、図25に示すように、第一サブクラスタと第三サブクラスタとの間の通信性能は、「1Gbps」であり、それ以外のサブクラスタ間の通信性能は、「100Mbps」であるとする情報を、図5に示す情報に加えて、さらに保持する。図25に示すように、第一サブクラスタと第三サブクラスタとの間の通信性能以外はすべて、「100Mbps」である。
動的割り付け部13bは、マスタノード接続構成情報記憶部12aが記憶する各サブクラスタ間の通信性能をさらに参照して、同一グループのデータ群を割り付ける。すなわち、動的割り付け部13bは、データ群を割り付ける際に、図26の(F)に示す指示を実行して、各サブクラスタ間の通信性能を検知し、検知した情報に基づいて、より通信性能の優れているネットワークで接続されている下位のサブクラスタにデータ群を割り付ける。例えば、図24の(B)に示すように、第二グループのデータ群を割り付ける場合、サブクラスタ間の通信性能が「100Mbps」である第二サブクラスタではなく、サブクラスタ間の通信性能が「1Gbps」である第三サブクラスタに対して、第二グループのデータ群を転送し、データ群の割り付けを行なう(図24の(B)の(3)参照)。
なお、動的割り付け部13bは、図26に示す(A)〜(E)の処理を実行するが、これらの処理は、実施例3における動的割り付け部13bが行なう処理の内容(図22に示す(A)〜(E)の処理の内容)と同様であるので、説明を省略する。
収容ノード情報更新部13cは、動的割り付け部13bによって変更されたノードの使用状況を更新する。すなわち、「ノード0」と「ノード3」の使用状況(status)を「Idle」から「Busy」に更新して収容ノード情報記憶部12bに格納する。すなわち、図27の(A)の左表に示す情報を、図27の(A)の右表に示す情報に更新する。
[実施例4における下位マスタノードの構成]
次に、図15および図27を用いて、実施例4における下位マスタノードを説明する。図15は、実施例2における下位マスタノードの構成を示すブロック図であり、図27は、実施例4における収容ノード情報記憶部を説明するための図である。
図15に示すように、実施例4における下位マスタノード20は、実施例3における下位マスタノード20と同様であるので、詳細な説明を省略するが、図24に示す実施例において、収容ノード情報更新部23cが更新する内容が、実施例3と異なるので、これについてのみ説明する。
収容ノード情報更新部23cは、動的割り付け部23bによって変更されたノードの使用状況を更新する。例えば、第三サブクラスタの下位マスタノード20である「ノード8」における収容ノード情報更新部23cは、図24の(B)に示す第二グループのデータ群の割り付けの場合、図27の(B)の左表に示す情報を、図27の(B)の右表に示す情報に更新する。
また、第二サブクラスタの下位マスタノード20である「ノード4」における収容ノード情報更新部23cは、図24の(C)に示す第三グループのデータ群の割り付けの場合、図27の(C)の左表に示す情報を、図27の(C)の右表に示す情報に更新する。
また、第四サブクラスタの下位マスタノード20である「ノード12」における収容ノード情報更新部23cは、図24の(C)に示す第三グループのデータ群の割り付けの場合、図27の(D)の左表に示す情報を、図27の(D)の右表に示す情報に更新する。
[実施例4におけるオリジナルマスタノードによる処理の手順]
次に、図19を用いて、実施例4におけるオリジナルマスタノードによる処理を説明する。図19は、実施例2におけるオリジナルマスタノードの処理の手順を説明するための図である。
実施例4におけるオリジナルマスタノード10の処理の手順は、基本的に、実施例3におけるオリジナルマスタノードの処理の手順と同様であり、ステップS1908の処理の内容が異なる。以下、これを中心に説明する。
動的割り付け部13bは、下位サブクラスタのノードに割り付け可能と判定した場合には(ステップS1907肯定)、下位サブクラスタに当該グループのデータ群を転送し、割り付けを実行させるが(ステップS1908)、その際、当該下位サブクラスタ収容ノード情報が保持する各ノードの演算コストに基づくクラス分けを検出するとともに、マスタノード接続構成情報記憶部12aが記憶する各サブクラスタ間の通信性能を検出し、これらの情報を参照して、データ群の割り付けを実行させる。
なお、実施例4における下位マスタノードによる処理の手順は、上述した実施例3における下位マスタノードによる処理の手順と同様であるので、説明を省略する。
[実施例4の効果]
上記したように、実施例4によれば、マスタノード接続構成情報記憶部12aは、マスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持し、この各サブクラスタ間の通信性能をさらに参照して、同一グループのデータ群を割り付けるので、演算コストおよび通信コストに基づいてクラス分けしたデータ群を、通信性能が高いネットワークで接続されるサブクラスタ内にあるノードに割り付けることができ、効率のよい並列処理が可能になる。
上述した実施例2〜4では、オリジナルマスタノードと下位マスタノードとでデータ群の割り付けを行なう場合について説明したが、実施例5では、データ群を割り付けて処理を実行した後、各ノードが処理に要した演算コストを算出する場合について説明する。
[実施例5におけるノードの概要および特徴]
まず最初に、図28を用いて、実施例5におけるノードの主たる特徴を具体的に説明する。図28は、実施例5におけるノードの概要および特徴を説明するための図である。
実施例5における各ノードは、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストを算出する。例えば、第二サブクラスタに収容される「ノード4」は、指示文で指定した区間の走行が終了し、処理に要した演算コストとして、演算に要した時間(Calc_time=512sec)を算出する。
そして、実施例5における各ノードは、算出した演算コストを、自身が収容されるサブクラスタにおけるマスタノードに、当該算出した演算コストを通知する。
実施例5におけるマスタノードは、自身が制御するサブクラスタに収容されるノードすべてから通知された演算コストを、収容ノード情報として、更新して保持する。例えば、図28に示すように、第二サブクラスタにおけるマスタノード(ノード4)は、自身を含む「ノード4〜7」が算出した演算コストを受信して、当該算出された演算コストを収容ノード情報に更新して保持する。すなわち、「ノード4」から「Calc_time=512sec」を受信し、「ノード5」から「Calc_time=418sec」を受信し、「ノード6」から「Calc_time=448sec」を受信し、「ノード7」から「Calc_time=4092sec」を受信して、これらの情報を収容ノード情報に加えて更新する。
なお、「ノード7」のように、演算コストが高い(実行時間が長い)ものを検出した場合、ノードの状態(status)を「caution」に変更してもよい。また、次回プログラムの指示文を検出して動的割り付けを変更する際に、「caution」となっているノード(ノード7)は使用しないように、設定してもよい。
このようなことから、実施例5におけるノードは、更新された各ノードの演算コストを参照することで、例えば、演算コストが増大しているノードの使用を回避するなど、次回のデータ群の割り付けの際に利用することができ、効率のよい並列処理が可能になる。
[実施例5におけるオリジナルマスタノードの構成]
次に、図14および図29を用いて、実施例5におけるオリジナルマスタノードを説明する。図14は、実施例2におけるオリジナルマスタノードの構成を示すブロック図であり、図29は、実施例5における動的割り付け部を説明するための図である。
図14に示すように、実施例5におけるオリジナルマスタノード10は、実施例2〜4におけるオリジナルマスタノード10と基本的に同様であるが、動的割り付け部13bおよび収容ノード情報更新部13cが行なう処理の内容が、実施例2〜4と異なる。以下、これらを中心に説明する。
動的割り付け部13bは、指示文で指定した区間の走行が終了し、最上位サブクラスタに収容される各ノードが算出した演算コストを受信すると、収容ノード情報更新部13cに対し、図29の(G)に示す指令を実行する。
収容ノード情報更新部13cは、動的割り付け部13bからの指令に基づいて、受信した各ノードの演算コストを、収容ノード情報記憶部12bが記憶する収容ノード情報を更新して格納する。
なお、動的割り付け部13bは、他に、図29に示す(A)〜(F)の処理を実行するが、これらの処理は、実施例4における動的割り付け部13bが行なう処理の内容(図26に示す(A)〜(F)の処理の内容)と同様であるので、説明を省略する。
[実施例5における下位マスタノードの構成]
次に、図15および図29を用いて、実施例5における下位マスタノードを説明する。図15は、実施例2における下位マスタノードの構成を示すブロック図であり、図29は、実施例5における動的割り付け部を説明するための図である。
図15に示すように、実施例5における下位マスタノード20は、実施例2〜4における下位マスタノード20と基本的に同様であるが、動的割り付け部23bおよび収容ノード情報更新部23cが行なう処理の内容が、実施例2〜4と異なる。以下、これらを中心に説明する。
動的割り付け部23bは、指示文で指定した区間の走行が終了し、自身が制御する下位サブクラスタに収容される各ノードが算出した演算コストを受信すると、収容ノード情報更新部23cに対し、図29の(G)に示す指令を実行する。
収容ノード情報更新部23cは、動的割り付け部23bからの指令に基づいて、受信した各ノードの演算コストを、収容ノード情報記憶部22aが記憶する収容ノード情報を更新して格納する(図28参照)。
なお、動的割り付け部23bは、他に、図29に示す(A)〜(F)の処理を実行するが、これらの処理は、実施例4における動的割り付け部23bが行なう処理の内容(図26に示す(A)〜(F)の処理の内容)と同様であるので、説明を省略する。
[実施例5におけるマスタノードによる処理の手順]
次に、図30を用いて、実施例5におけるマスタノードによる処理を説明する。図30は、実施例5におけるマスタノードの処理の手順を説明するための図である。なお、オリジナルマスタノード10および下位マスタノード20の処理の手順は、同じである。
まず、実施例5におけるマスタノード(オリジナルマスタノード10もしくは下位マスタノード20)は、指示文で指定した区間の走行の終了を検知すると(ステップS3001肯定)、各ノードが算出したコストを自身の収容ノード情報に記録し(ステップS3002)、処理を終了する。
例えば、オリジナルマスタノード10は、指示文で指定した区間の走行が終了し、最上位サブクラスタに収容される各ノードが算出した演算コストを受信すると、収容ノード情報更新部13cに対し、図29の(G)に示す指令を実行する。その指令に従って、収容ノード情報更新部13cは、受信した各ノードの演算コストを、収容ノード情報記憶部12bが記憶する収容ノード情報を更新して格納する。
[実施例5の効果]
上記したように、実施例5によれば、各ノードにおいて、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストを算出し、マスタノードそれぞれは、算出したノードすべての演算コストを更新して保持するので、更新された各ノードの演算コストおよび/または通信コストを参照することで、例えば、演算コストが増大しているノードの使用を回避するなど、次回のデータ群の割り付けの際に利用することができ、効率のよい並列処理が可能になる。
上述した実施例5では、各ノードが、処理に要した演算コストを算出する場合について説明したが、実施例6では、各ノードが、処理に要した演算コストおよび通信コストを算出する場合について説明する。
[実施例6におけるノードの概要および特徴]
まず最初に、図31を用いて、実施例6におけるノードの主たる特徴を具体的に説明する。図31は、実施例6におけるノードの概要および特徴を説明するための図である。
実施例6における各ノードは、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストおよび通信コストを算出する。例えば、第二サブクラスタに収容される「ノード4」は、指示文で指定した区間の走行が終了し、処理に要した演算コストとして、演算に要した時間(Calc_time=512sec)を算出し、処理に要した通信コストとして、通信に要した時間(Comm_time=256sec)を算出する。
そして、実施例6における各ノードは、算出した演算コストを、自身が収容されるサブクラスタにおけるマスタノードに、当該算出した演算コストを通知する。
実施例6におけるマスタノードは、自身が制御するサブクラスタに収容されるノードすべてから通知された演算コストおよび通信コストを、収容ノード情報として、更新して保持する。例えば、図31に示すように、第二サブクラスタにおけるマスタノード(ノード4)は、自身を含む「ノード4〜7」が算出した演算コストを検知して、当該算出された演算コストを収容ノード情報に更新して保持する。すなわち、「ノード4」から「Calc_time=512sec、Comm_time=256sec」を検知し、「ノード5」から「Calc_time=418sec、Comm_time=222sec」を検知し、「ノード6」から「Calc_time=448sec、Comm_time=289sec」を検知し、「ノード7」から「Calc_time=4092sec、Comm_time=2098sec」を検知して、これらの情報を収容ノード情報に加えて更新する。
なお、「ノード7」のように、演算コストとともに、通信コストが高い(通信時間が長い)ものを検出した場合、ノードの状態(status)を「caution」に変更してもよい。また、次回プログラムの指示文を検出して動的割り付けを変更する際に、「caution」となっているノード(ノード7)は使用しないように、設定してもよい。
このようなことから、実施例6におけるノードは、更新された各ノードの演算コストおよび通信コストを参照することで、例えば、通信コストが増大しているノードの使用を回避するなど、次回のデータ群の割り付けの際に利用することができ、効率のよい並列処理が可能になる。
なお、実施例6におけるオリジナルマスタノードの構成および処理の手順は、通信コストも受信して更新する以外は、実施例5におけるオリジナルマスタノードの構成および処理の手順と同様であるので、説明を省略する。
[実施例6の効果]
上記したように、実施例6によれば、各ノードにおいて、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストとともに通信コストを算出し、それぞれのマスタノードは、算出したノードすべての演算コストおよび通信コストを更新して保持するので、更新された各ノードの演算コストおよび通信コストを参照することで、例えば、通信コストが増大しているノードの使用を回避するなど、次回のデータ群の割り付けの際に利用することができ、効率のよい並列処理が可能になる。
上述した実施例1〜6では、各ノードがマスタノードとして設定されている場合について説明したが、実施例7では、ノードが管理ノードとして設定されている場合について説明する。
[実施例7におけるノードの概要および特徴]
まず最初に、図32を用いて、実施例7におけるノードの主たる特徴を具体的に説明する。図32は、実施例7におけるノードの概要および特徴を説明するための図である。
実施例7におけるノードは、木構造のサブクラスタにおいて管理ノードとして設定されている場合に、木構造のサブクラスタにおけるすべてのノードの性能を所定の出力部に出力する。例えば、図32の(A)に示すように、木構造のサブクラスタにおいて、「ノード28」が「性能表示ソフト」を搭載した管理ノードとして設定されているとする。
そして、実施例7における管理ノードとして設定されている「ノード28」は、ユーザからの性能表示要求に応じて、上述した実施例1〜6における一連の作業における各ノードの状況を、リアルタイムで画面に表示する。例えば、図32の(B)に示すように、全体のノードのステータスや性能(演算コストや通信コスト)といった情報をグラフィカルに表示する。
このようなことから、実施例7におけるノードは、管理ノードとして設定されている場合に、並列プログラムの実行者は、管理ノードの画面に表示されたすべてのノードの状況を参照して、例えば、処理能力の低下しているノードを検知するなど、迅速に各ノードの性能評価をすることができ、効率のよい並列処理が可能になる。
[実施例7における管理ノードの構成]
次に、図33を用いて、実施例7における管理ノードを説明する。図33は、実施例7における管理ノードの構成を示すブロック図である。
図33に示すように、実施例7における管理ノード30は、入力部31と、出力部32と、通信制御部33と、入出力制御I/F部34と、記憶部35と、処理部36とから構成される。
入力部31は、並列プログラムの実行者からの性能表示要求を受け付け、キーボードや、タッチパネルを備える。
出力部32は、後述する性能表示部36aによる処理結果を出力し、例えば、モニタを備える。
通信制御部33は、入力部31が受け付けた「性能表示要求」に応じて、各ノードから送信された「状況」を受信し、後述する性能表示記憶部35aに格納する。
入出力制御I/F部34は、入力部31、出力部32および通信制御部33と、記憶部35および処理部36との間におけるデータ転送を制御する。
記憶部35は、処理部36による処理に用いるデータを記憶し、特に本発明に密接に関連するものとしては、図33に示すように、性能表示記憶部35aを備える。
性能表示記憶部35aは、入出力制御I/F部34から転送された各ノードからの演算コストや通信コストを記憶する。
処理部36は、入出力制御I/F部34から転送された「性能表示要求」に応じて、処理を実行し、特に本発明に密接に関連するものとしては、図33に示すように、性能表示部36aを備える。ここで、性能表示部36aは、特許請求の範囲に記載の「性能出力手順」に対応する。
性能表示部36aは、「性能表示要求」に応じて、性能表示記憶部35aが記憶する各ノードからの演算コストや通信コストから、例えば、図32の(B)に示すような図面に変換して、出力する。
[実施例7における管理ノードによる処理の手順]
次に、図34を用いて、実施例7における管理ノードによる処理を説明する。図34は、実施例7における管理ノードの処理の手順を説明するための図である。
まず、実施例7における管理ノード30は、キーボードやタッチパネルから性能表示要求を受け付けると(ステップS3401肯定)、システム全体の挙動を表示して(ステップS3402)、処理を終了する。
すなわち、性能表示部36aは、「性能表示要求」に応じて、性能表示記憶部35aが記憶する各ノードからの演算コストや通信コストから、例えば、図32の(B)に示すような図面に変換して、出力する。
[実施例7の効果]
上記したように、実施例7によれば、木構造のサブクラスタにおいて管理ノードとして設定されている場合に、木構造のサブクラスタにおけるすべてのノードの性能を所定の出力部に出力するので、並列プログラムの実行者は、画面に表示されたすべてのノードの状況を参照して、例えば、処理能力の低下しているノードを検知するなど、迅速に各ノードの性能評価をすることができ、効率のよい並列処理が可能になる。
さて、これまで実施例1〜7におけるノードについて説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例8における並列処理制御システムとして、種々の異なる実施例を(1)〜(3)に区分けして説明する。
(1)動的割り付け
上記の実施例2〜4では、下位マスタノード20からの情報に基づいて、オリジナルマスタノード10が一括して動的割り付けを決定する場合について説明したが、本発明はこれに限定されるものではなく、オリジナルマスタノード10が、最上位サブクラスタにおいて、データ群を割り付け不可能と判定した場合には、下位マスタノード20に当該データ群を転送し、下位マスタノード20が、配下のサブクラスタに対して、割り付けを決定する場合であってもよい。すなわち、下位マスタノード20が、オリジナルマスタノード10としての冗長機能を備える場合であってもよい。
(2)システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき(例えば、キーボードやタッチパネルから性能表示要求を受け付けるのではなく、一定時間ごと自動的に性能表示要求を生成するなど)、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる(例えば、図8に示す、ステップS802とステップS803とを並行して処理するなど)。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態(例えば、図14の形態など)は図示のものに限られず、例えば、動的割り付け部13bと収容ノード情報更新部13cとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(3)並列処理制御プログラム
ところで上記の実施例1〜7では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図35を用いて、上記の実施例1に示した各ノードと同様の機能を有する並列処理制御プログラムを実行するコンピュータの一例を説明する。図35は、実施例1の並列処理制御プログラムを実行するコンピュータを示す図である。
図35に示すように、情報処理装置としてのコンピュータ350とコンピュータ360とは、ネットワークを介して接続され、上述した実施例1における並列処理制御を行う。
図35に示すように、情報処理装置としてのコンピュータ350は、キーボード351、ディスプレイ352、CPU353、ROM354、HDD355、RAM356をバス357などで接続して構成される。
ROM354には、上記の実施例1に示したオリジナルマスタノード10と同様の機能を発揮する並列処理制御プログラム、つまり、図35に示すように、通信制御プログラム354aが予め記憶されている。なお、このプログラム354aについては、図3に示したオリジナルマスタノード10の各構成要素と同様、適宜統合または分散してもよい。
そして、CPU353が、このプログラム354aをROM354から読みだして実行することで、図35に示すように、プログラム354aは、通信制御プロセス353aとして機能するようになる。なお、プロセス353aは、図3に示した、通信制御部13aに対応する。
また、HDD355には、図35に示すように、マスタノード接続構成情報データ355aと、収容ノード情報データ355bとが設けられる。そしてCPU353は、マスタノード接続構成情報データ356aをマスタノード接続構成情報データ355aに対して登録し、収容ノード情報データ356bを収容ノード情報データ355bに対して登録し、このマスタノード接続構成情報データ356aと、収容ノード情報データ356bとに基づいて並列処理制御を実行する。
なお、上記した各プログラム354aについては、必ずしも最初からROM354に記憶させておく必要はなく、例えばコンピュータ350に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータ350の内外に備えられるHDDなどの「固定用物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ350に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ350がこれらから各プログラムを読み出して実行するようにしてもよい。
また、図35に示すように、情報処理装置としてのコンピュータ360は、CPU361、ROM362、HDD363およびRAM364をバス365などで接続して構成される。
ROM362には、上記の実施例1に示した下位マスタノード20と同様の機能を発揮する並列処理制御プログラム、つまり、図35に示すように、通信制御プログラム362a、が予め記憶されている。なお、このプログラム362aについては、図4に示した下位マスタノード20の各構成要素と同様、適宜統合または分散してもよい。
そして、CPU361が、このプログラム362aをROM362から読みだして実行することで、図35に示すように、プログラム362aは、通信制御プロセス361aとして機能するようになる。なお、通信制御プロセス361aは、図4に示した、通信制御部23aに対応する。
また、HDD363には、図35に示すように、収容ノード情報データ363aが設けられる。そしてCPU361は、収容ノード情報データ364aを収容ノード情報データ363aに対して登録し、この収容ノード情報データ364aに基づいて並列処理制御を実行する。
なお、上記したプログラム362aについては、必ずしも最初からROM362に記憶させておく必要はなく、例えばコンピュータ360に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータ360の内外に備えられるHDDなどの「固定用物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ360に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ360がこれらから各プログラムを読み出して実行するようにしてもよい。
(付記1)複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、当該並列処理を制御する並列処理制御方法を各ノードとしてのコンピュータに実行させる並列処理制御プログラムであって、
前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持手順と、
前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持手順と、
前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持手順が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持手順が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御手順と、
前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持手順が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御手順と、
をコンピュータに実行させることを特徴とする並列処理制御プログラム。
(付記2)前記最上位マスタノードとして設定されている場合に、前記並列処理に用いられるデータ群を演算コストおよび/または通信コストに基づいてグループ分けすることを指示する指示文が当該並列処理を行うプログラムに検出された際に、前記演算コストおよび/または通信コストが抑えられるように、前記指示文に記載される同一グループのデータ群をノードに割り付ける割り付け手順をさらにコンピュータに実行させることを特徴とする付記1に記載の並列処理制御プログラム。
(付記3)前記割り付け手順は、前記マスタノード接続構成情報保持手順が保持するマスタノード接続構成情報を参照して、前記同一グループのデータ群を同一サブクラスタ内のノードに割り付けることを特徴とする付記2に記載の並列処理制御プログラム。
(付記4)前記割り付け手順は、前記同一グループのデータ群のすべてを前記同一サブクラスタ内のノードに割り付けできなかった場合には、割り付けられなかったデータ群を、当該サブクラスタの配下にあるサブクラスタ内のノードに割り付けることを特徴とする付記3に記載の並列処理制御プログラム。
(付記5)前記収容ノード情報保持手順は、前記サブクラスタごとに収容されるノードすべての演算コストおよび/または通信コストをさらに保持し、
前記割り付け手順は、前記収容ノード情報保持手順が保持する前記演算コストおよび/または通信コストをさらに参照して、前記同一グループのデータ群を割り付けることを特徴とする付記4に記載の並列処理制御プログラム。
(付記6)前記マスタノード接続構成情報保持手順は、前記マスタノード接続構成情報として、各サブクラスタ間の通信性能をさらに保持し、
前記割り付け手順は、前記マスタノード接続構成情報保持手順が保持する前記各サブクラスタ間の通信性能をさらに参照して、前記同一グループのデータ群を割り付けることを特徴とする付記5に記載の並列処理制御プログラム。
(付記7)各ノードにおいて、割り付けられたデータ群に対する処理が終了した際に、当該処理に要した演算コストおよび/または通信コストを算出するコスト算出手順をさらにコンピュータに実行させ、
前記収容ノード情報保持手順は、前記コスト算出手順が算出したノードすべての前記演算コストおよび/または通信コストを更新して保持することを特徴とする付記2〜6のいずれかひとつに記載の並列処理制御プログラム。
(付記8)前記木構造のサブクラスタにおいて管理ノードとして設定されている場合に、前記木構造のサブクラスタにおけるすべてのノードの性能を所定の出力部に出力する性能出力手順をさらにコンピュータに実行させることを特徴とする付記1〜7のいずれかひとつに記載の並列処理制御プログラム。
(付記9)複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、各ノードが当該並列処理を制御する並列処理制御システムであって、
前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持手段と、
前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持手段と、
前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持手段が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持手段が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御手段と、
前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持手段が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御手段と、
を備えたことを特徴とする並列処理制御システム。
(付記10)複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、各ノードが当該並列処理を制御する並列処理制御方法であって、
前記サブクラスタごとのマスタノードとして設定されている場合に、当該サブクラスタに収容される当該マスタノードおよび当該マスタノードの制御下にあるスレーブノードすべてを一意に識別する情報である収容ノード情報を保持する収容ノード情報保持工程と、
前記木構造の最上位のサブクラスタにおいて最上位マスタノードとして設定されている場合に、前記最上位マスタノードと下位のサブクラスタに設定された下位マスタノードとの接続構成の情報であるマスタノード接続構成情報を保持するマスタノード接続構成情報保持工程と、
前記最上位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記収容ノード情報保持工程が保持する前記収容ノード情報を参照して、前記最上位のサブクラスタに収容されるスレーブノードすべてとの通信を確立するとともに、前記マスタノード接続構成情報保持工程が保持する前記マスタノード接続構成情報を参照して、前記下位マスタノードそれぞれとの通信を確立し、当該並列処理の後処理として、前記最上位のサブクラスタに収容されるノードすべての処理の終了を検知するとともに、前記下位マスタノードすべてから、処理の終了通知を検知してすべての通信を終了する最上位マスタノード通信制御工程と、
前記木構造の下位のサブクラスタごとの下位マスタノードとして設定されている場合に、当該並列処理の前処理として、前記最上位マスタノードとの通信が確立された際に、前記収容ノード情報保持工程が保持する前記収容ノード情報を参照して、当該下位のサブクラスタに収容されるスレーブノードと前記最上位マスタノードとの通信を確立し、当該並列処理の後処理として、当該下位のサブクラスタが収容するノードすべての処理の終了を検知するとともに、前記最上位マスタノードに処理の終了を通知する下位マスタノード通信制御工程と、
を含んだことを特徴とする並列処理制御方法。
以上のように、本発明に係る並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法は、複数のノードからなるサブクラスタが木構造で接続されて構成される並列処理システムにおいて、当該並列処理を制御する場合に有用であり、特に、効率のよい並列処理が可能になることに適する。
実施例1におけるノードの概要および特徴を説明するための図である。
実施例1におけるノードの概要および特徴を説明するための図である。
実施例1におけるオリジナルマスタノードの構成を示すブロック図である。
実施例1における下位マスタノードの構成を示すブロック図である。
実施例1におけるマスタノード接続構成情報記憶部を説明するための図である。
実施例1におけるオリジナルマスタノードの収容ノード情報記憶部を説明するための図である。
実施例1における下位マスタノードの収容ノード情報記憶部を説明するための図である。
実施例1におけるオリジナルマスタノードの前処理の手順を説明するための図である。
実施例1における下位マスタノードの前処理の手順を説明するための図である。
実施例1におけるオリジナルマスタノードの後処理の手順を説明するための図である。
実施例1における下位マスタノードの後処理の手順を説明するための図である。
実施例2におけるノードの概要および特徴を説明するための図である。
実施例2におけるノードの概要および特徴を説明するための図である。
実施例2におけるオリジナルマスタノードの構成を示すブロック図である。
実施例2における下位マスタノードの構成を示すブロック図である。
指示文を説明するための図である。
実施例2における動的割り付け部を説明するための図である。
実施例2における収容ノード情報記憶部を説明するための図である。
実施例2におけるオリジナルマスタノードの処理の手順を説明するための図である。
実施例2における下位マスタノードの処理の手順を説明するための図である。
実施例3におけるノードの概要および特徴を説明するための図である。
実施例3における動的割り付け部を説明するための図である。
実施例3における収容ノード情報記憶部を説明するための図である。
実施例4におけるノードの概要および特徴を説明するための図である。
実施例4におけるマスタノード接続構成情報記憶部を説明するための図である。
実施例4における動的割り付け部を説明するための図である。
実施例4における収容ノード情報記憶部を説明するための図である。
実施例5におけるノードの概要および特徴を説明するための図である。
実施例5における動的割り付け部を説明するための図である。
実施例5におけるマスタノードの処理の手順を説明するための図である。
実施例6におけるノードの概要および特徴を説明するための図である。
実施例7におけるノードの概要および特徴を説明するための図である。
実施例7における管理ノードの構成を示すブロック図である。
実施例7における管理ノードの処理の手順を説明するための図である。
実施例1の並列処理制御プログラムを実行するコンピュータを示す図である。
従来技術の課題を説明するための図である。
符号の説明
10 オリジナルマスタノード
11 通信制御I/F部
12 記憶部
12a マスタノード接続構成情報記憶部
12b 収容ノード情報記憶部
13 制御部
13a 通信制御部
20 下位マスタノード
21 通信制御I/F部
22 記憶部
22a 収容ノード情報記憶部
23 制御部
23a 通信制御部