(57)【特許請求の範囲】
【請求項１】
並列的なプロセスのグループを利用するコンピュータプログラムを実行するステップであって、各々の並列的なプロセスは少なくとも１つの演算を実行し、当該ステップは、現在のリソースを利用して実行されたプロセスにより取得される、現在のグループのデータを、全ての演算の結果として提供する、ステップと、
使用されるリソースを増やすこと又は異なるリソースに移ることにより、現在使用されているリソースが変更される場合であって、前記異なるリソースに移ることは、使用されるリソースの増加、減少又は維持を含むことが可能である場合において、変更後のリソースで前記コンピュータプログラムを実行可能にするために、前記現在のリソースと変更後のリソースとの間で通信を行うステップであって、前記現在のリソースにおける演算の実行を継続しつつ、前記現在のリソースを利用して実行されたプロセスにより取得される、前記現在のグループのデータを、前記変更後のリソースにおいて受信し、前記変更後のリソースに実行を移行すること、及び、前記変更後のリソースを利用して実行されたプロセスにより取得されるグループのデータと前記現在のリソースを利用して実行が継続されたプロセスにより取得されるグループのデータとの同期をとることを含む、ステップと、
を有し、前記現在のリソースを利用する実行は前記通信と時間的にオーバーラップし、
前記移行することは前記現在のリソースから前記変更後のリソースへの区分けデータの通信を含み、前記区分けデータはプロセスに対する演算の現在の割り当てを示す、プロセス移行方法。
【請求項２】
前記通信の後、前記変更後のリソースで実行が継続する、請求項１に記載のプロセス移行方法。
【請求項３】
各々のプロセスは各自の現在のリソースを利用し、当該現在のリソースは、前記演算を実行する単独の処理ユニットと、前記演算のために現在のプロセスデータを保存する単独のメモリ領域とを含む、請求項１又は２に記載のプロセス移行方法。
【請求項４】
前記処理ユニットは、分散型メモリコンピューティングシステムにおけるノード、プロセッサ又はマルチコアプロセッサのコアである、請求項３に記載のプロセス移行方法。
【請求項５】
プロセスに対する演算の変更される割り当てを示す新たな区分けデータが計算され、変更後のリソースに対するプロセスのマッピングがなされる、請求項１〜４のうち何れか１項に記載のプロセス移行方法。
【請求項６】
同期は移行される演算に関連するデータの通信を含み、当該通信は前記現在のリソースと前記変更後のリソースとの間で行われる、請求項１〜５のうち何れか１項に記載のプロセス移行方法。
【請求項７】
方程式ソルバが前記演算を実行し、前記同期は、前記方程式ソルバの中に又は前記方程式ソルバに対するラッパーの形式で組み込まれる、請求項１〜６のうち何れか１項に記載のプロセス移行方法。
【請求項８】
前記演算はループで動作する方程式ソルバの反復であり、同期は１つのループの終わりに実行され、前記現在のリソース及び前記変更後のリソースの双方において結果の比較とともに次のループの演算を行うことを含む、請求項１〜７のうち何れか１項に記載のプロセス移行方法。
【請求項９】
前記演算は前記コンピュータプログラムの要素にデータを提供する反復的な演算であり、前記コンピュータプログラムはシミュレーションプログラムであり、前記要素は、メッシュシミュレーションのメッシュノードの集まり、或いは、エージェントシミュレーションの少なくとも１つのエージェント、或いは、粒子シミュレーションの少なくとも１つの粒子に対応する、請求項１〜８のうち何れか１項に記載のプロセス移行方法。
【請求項１０】
前記プロセスのグループの全体が或るコンピュータシステムから別のコンピュータシステムへ移行され、前記別のコンピュータシステムに移行されたプロセスにより取得されるグループのデータと、前記或るコンピュータシステムで実行が継続されたプロセスにより取得される全ての現在のグループのデータとの間で同期がとられる、請求項１〜９のうち何れか１項に記載のプロセス移行方法。
【請求項１１】
前記要素の数を変更することによりプロセスの数を増やす又は減らす、請求項９に記載のプロセス移行方法。
【請求項１２】
演算の数及び／又は演算をプロセスに分割する仕方を変更することにより、前記プロセスの数を増加又は減少させ、前記プロセスの数の増加及び減少の間の選択は、前記コンピュータプログラムのリソースが増加又は減少したかに応じてなされる、請求項１〜１１のうち何れか１項に記載のプロセス移行方法。
【請求項１３】
前記コンピュータプログラムが動作するプロセスの数をユーザが指定する、請求項１〜１２のうち何れか１項に記載のプロセス移行方法。
【請求項１４】
プロセスの移行を実行するように動作するコンピュータシステムであって、
並列的なプロセスのグループでコンピュータプログラムを実行するように構成される手段であって、各々の並列的なプロセスは、現在の処理ユニット及び関連する現在のメモリを利用して演算を実行する、手段と、
使用されるリソースを増やすこと、又は異なるリソースに移ることにより、現在使用されているリソースが変更される場合であって、前記異なるリソースに移ることは、使用されるリソースの増加、減少又は維持を含むことが可能である場合において、変更後のリソースで前記コンピュータプログラムを実行可能にするために、前記現在の処理ユニットと、関連する現在のメモリ領域と、変更後の処理ユニットと、関連する変更後のメモリ領域との間で、プロセスに対する演算の現在の割り当てを示す区分けデータについての通信を行う手段であって、前記現在の処理ユニットにおける演算の実行を継続しつつ、前記現在の処理ユニットで実行されたプロセスにより取得されるグループのデータを、前記変更後の処理ユニットにおいて受信し、前記変更後の処理ユニットに実行を移行すること、及び、前記変更後の処理ユニットで実行されたプロセスにより取得されるグループのデータと前記現在の処理ユニットで実行が継続されたプロセスにより取得されるグループのデータとの同期をとり、前記現在の処理ユニット及び関連する現在のメモリ領域を利用する実行とオーバーラップする時間区間において通信する手段と、
を有するコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算プロセスの移行に関連し、特に、分散されたメモリを有する分散コンピュータシステムにおいてプロセスが並列的に動作すること等に関連する。
【背景技術】
【０００２】
本発明は分散されたメモリを利用して情報を動的に送受信するコンピュータプログラムの技術分野に対して特に実用的な用途を有する。これら多くのプログラムは分散処理を利用し及び或る種の計算方式が必要とされる個々の要素に対応するように分割されるメモリを利用する。
【０００３】
そのような分散型並列アプリケーションの一例は、センサネットワークや通信ネットワークを監視するコンピュータプログラムである。センサネットワークの各々のセンサは、演算を必要とする個々の要素として考えることが可能であり、演算(computation)は、例えば、検出された値を処理すること、及び/又は、全体的な処理負荷のような属性を判定すること等である。演算は、センサネットワークを監視し及び/又はセンサネットワークを制御することも可能なコンピュータプログラムにより実行されることが可能である。
【０００４】
通信ネットワークにおける各々のエンティティ(移動端末又はユーザ装置(UE)、基地局又は中継局など)は、例えば、全体的な負荷を判定することのような演算を必要とする要素として考えることも可能である。演算は、通信ネットワークを監視及び/又は制御するコンピュータプログラムにより実行されることが可能である。
【０００５】
別の例は、例えば、不公正取引(illegal  trading  practices)に関するデータを分析することのような株取引を監視することである。演算は、各々のトレーダーの取引を追跡するために必要とされる。
【０００６】
更に別の例はシミュレーションである。多くのシミュレーションでは、反復的な演算又は反復的な一群の演算が実行され、各々の演算は、シミュレーションにおける1つの要素に対応する。シミュレーション要素(複数)はリンクされ、シミュレーションの或る要素に対する演算はシミュレーションの他の要素からの値を必要としてもよく、シミュレーションを実行するプロセスの間でのデータ転送はかなり多い。そのようなシミュレーションを実行するコンピュータプログラムは、演算に関連する負荷が、例えば、分散システムの中で適切な演算リソースに割り当てられるべきことを要求する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
リンクされる演算を伴うこれらのコンピュータプログラム及び他のコンピュータプログラムでは、プロセスを移行する(migrate)ための条件が存在するかもしれない。例えば、全ての実行を、新たなコンピュータシステム又はコンピュータシステムの新たな部分に移動させ、コンピュータプログラム自体による又は他のコンピュータプログラムによるリソースの使い方を変更する必要があるかもしれない。例えば、センサネットワークでは、緊急イベント(例えば、地震)は、速やかな処理を可能にするために多くのリソースを求める突然の要求を招くかもしれない。電気通信では、利用についてのピーク的な期間及びオフピーク的な期間の間の状態が様々なシステムを用いて適切に監視されるかもしれない。また、取引分析のデータ入力あるいは取引の監視は瞬時的に(あるいは少なくとも短時間フレームの間に)更新される必要がある。取引の急増は外的なリソースの利用を必要とするかもしれない。
【０００８】
例えば、プログラム内での発生要因又は外的な判断に起因して、コンピュータプログラムの実行それ自体が、同じシステム内でのリソースの変更を要求するかもしれない。
【０００９】
上述したように、個々の演算を必要とする個々の要素を有する多くのコンピュータプログラムが存在し、ある要素はシミュレーションの他の要素に影響を及ぼす可能性を有する。要素間でかなりの(ハイレベルの)通信を必要とする2つの具体例は、流体及び固体の双方の特徴を含む材料特性をシミュレーションするための有限要素法及び有限体積法を利用することである。
【００１０】
数値流体力学(computational  fluid  dynamics：CFD)を具体例に挙げると、この技術は流体の流れに関わる問題を解いて分析するために数学的な方法及びアルゴリズムを利用する。CFDモデリング及び他の3次元的なアルゴリズムモデリングに対する多くのアプローチが存在するが、大抵の場合、同じ基礎的な3段階手順に続く。
【００１１】
予備的処理段階の間に、問題の(対象の)幾何学形状(物理的境界)が規定され；流体又は他の材料によって占められる体積が、個々のセル又はノード(メッシュ)に分割される。メッシュは一様(均一)であってもよいし或いは非一様(不均一)であってもよく、セル又はノードへの分割は、シミュレーションの際に必要に応じてメッシュサイズを変更するように適応的であってもよい。物理的モデリングは適切な方程式を用いて規定され、境界条件が規定される。CDFでは、これは、問題とする境界における流体の振る舞い(挙動)及び特性を指定することに関する。過渡的な問題の場合、初期状態も規定される。
【００１２】
処理においてシミュレーションが開始され、定常状態又は過渡的な状態に関し、セル毎に/ノード毎に反復的に方程式が解かれる。
【００１３】
最終的に、結果の解についての分析及び視覚化のために、ポストプロセッサが使用される。
【００１４】
各々のメッシュノード又は個々のセルについてのデータは、シミュレーションにおける1つの要素(a  single  element)と考えることが可能である。
【００１５】
コンピュータシミュレーションについての別の例はエージェントモデリング(エージェントベースモデリングとも言及される)であり、それぞれをシミュレーションの要素と考えることが可能である。
【００１６】
エージェントベースモデル(agent-based  model：ABM)(マルチエージェントシステム又はマルチエージェントシミュレーションとしてしばしば言及される)は、全体としてのシステムに対する各自の影響を評価することを視野に入れて、自律したエージェントのアクション及び相互作用をシミュレーションする演算モデルである。多くのモデルにおいて、各々のエージェントは個別的である(人、動物又は他の自律的な要素である)。個々の挙動をシミュレートするために、移動可能な位置及びルールベースの刺激に対する反応(刺激は他の要素を含む)のような属性が各自に与えられる。
【００１７】
シミュレーションの別の例は、通常的には例えば重力のような物理的な力の影響下における粒子の力学系をシミュレーションする粒子シミュレーションである。各々の粒子は、そのようなシミュレーションにおける1つの要素と考えることが可能である。
【００１８】
これらのような演算負担の大きいアプリケーションは、しばしば、ハイパフォーマンスコンピュータ(HPC)システムで実行される。そのようなハイパフォーマンスコンピュータ(HPC)システムは、しばしば、複数の処理ユニット又はコアが存在する分散された環境を提供し、その複数の処理ユニット又はコアにおいて、実行ファイルのスレッドの処理が自律的に並列的に実行可能である。
【００１９】
多くの様々なハードウェアコンフィギュレーション及びプログラミングモデルが、ハイパフォーマンスコンピューティングに適用可能である。ハイパフォーマンスコンピューティングに対する現在の一般的なアプローチは、クラスタシステムであり、クラスタシステム内の複数のノードの各々が1つ以上のマルチコアプロセッサ(又は「チップ」)を有し、その複数のノードが高速ネットワークにより相互接続される。各々のコアは、メモリのうちの各自自身の領域を有するように仮定される。クラスタシステムは、汎用関数を実行するために既存のコードライブラリを利用するソースコードを書く人間のプログラマによってプログラムされることが可能である。そして、ソースコードが低レベルの実行可能コードにコンパイルされ、例えば、特定の命令セットを有するプロセッサタイプにより実行されることが可能な命令セットアーキテクチャ(ISA)のレベルにおけるコードにコンパイルされ、或いは、特定のプロセッサに専用のアセンブリ言語にコンパイルされる。アセンブリングする又は(仮想マシンの場合には)アセンブリコードを実行可能なマシンコードに(解釈する)最終的な段階がしばしば存在する。アプリケーションの実行ファイル形式(しばしば、単に、「実行ファイル(executable)」と言及される)は、オペレーティングシステム(OS)の管理の下で動作する。
【００２０】
複数のコアを有するコンピュータシステムのアプリケーションは、従来のコンピュータ言語(例えば、C/C++あるいはフォートラン)で書かれてもよく、複数のコアの並列処理機能の恩恵をプログラマが享受できるようにライブラリにより補強されてもよい。この点に関し、コアで実行される「プロセス」が通常的には指示される。
【００２１】
クラスタシステム及び他の分散メモリシステムにおいて、実行(処理)の移行(migration)は、データの同期を必要とし得る。
【００２２】
説明される本発明の理解を促すために、例示的なシミュレーションを用いて、関連する事項をいくらか考察する。
【００２３】
「固定数プロセッサ」モデルは、分散される負荷(ワークロード)と、ジョブの優先度(すなわち、どの程度の緊急性で結果が必要とされているか)と、ジョブが動作しているシステムとが、シミュレーション期間の間一定のままであることを仮定する。しかしながら、これは実情にそぐわない。
【００２４】
適応的な有限要素シミュレーションの例では、シミュレーションにおけるメッシュモデルの数が、シミュレーションの進行に応じて1桁以上の大きさで変動してよい。シミュレーションの最中に、メッシュは区分け(又は区分化)され、異なるノードに関連するデータが、異なるプロセスに関連するメモリに保存されるようにする。プロセスはノードを「所有」し、そのノードのデータは主にローカルメモリに保存される。ノードからのデータは、何らかの特定の所有ノードに対する値の計算に必要とされ、そのノードはそのプロセッサに対する「ハローノード(halo  nodes)」として知られる。
【００２５】
メッシュノードの数が変動する場合、分散システムの各々のプロセッサに割り当てられるメッシュノードの数は、シミュレーションの或る段階では、プロセッサに関するハローノードの数と比較して非常に小さくなるかもしれない。これは非常に高い通信-演算の比率を招き、その理由は、ハローノードからのデータがメッシュノードのシミュレーションに必要とされるからである。この場合、より少ない数のプロセッサでシミュレーションを行うこと(演算を減らすこと)は、高速化になる。
【００２６】
代替的に、優先順位の変更は、HPCシステムにおける所与のジョブに更なるリソースを割り当てること、或いは、新たなシステム全体にジョブを移行することを望ましくする。例えば、リアルタイムの災害警告システムは、監視ネットワークとして又は利用可能なリソースのうちの僅かな部分による低優先度のシミュレーションとして動作している場合において、例えば地震のような突然のイベントが、シミュレーションを行っているシステムを刺激すると、利用可能なできるだけ多くのリソースを用いて急速なモニタリング又は結果のシミュレーションを行うことを要する。同時に、他のジョブは、高優先度ジョブに道を譲るために小規模のシステムにスケールダウンされなければならない。
【００２７】
更に、或るジョブに割り当てられるn個のプロセッサのうちの何れかにおける不具合に対する応答は、(ジョブを完全に停止するのではなく)(n-1)個のプロセッサで行う実行(処理)に移行することになるかもしれない。
【００２８】
従って、様々な環境に対して柔軟に使用可能であって移行及び同期の問題に配慮するコンピュータプログラムの実行(処理)を移行する方法をもたらすことが望ましい。
【課題を解決するための手段】
【００２９】
一実施形態によるプロセス移行方法は、
並列的なプロセスのグループを利用するコンピュータプログラムを実行するステップであって、各々の並列的なプロセスは少なくとも1つの演算を実行し、当該ステップは、現在の演算リソースを利用して、現在のグループデータを、全ての演算の結果として提供する、ステップと、
使用されるリソースを変更することを決定するステップであって、使用されるリソースを増やすこと、使用されるリソースを減らすこと、及び、異なるリソースに移ることの中で選択を行い、前記異なるリソースに移ることは、使用されるリソースの増加、減少又は維持を含むことが可能である、ステップと、
変更される演算リソースで前記コンピュータプログラムを実行可能にするために、現在の演算リソースと変更される演算リソースとの間で通信を行うステップであって、変更される演算リソースに実行を移行すること、及び、移行されるグループデータと前記現在のグループデータとの同期をとることを含む、ステップと、
を有し、前記現在の演算リソースを利用する実行は前記通信と時間的にオーバーラップする、プロセス移行方法である。
【図面の簡単な説明】
【００３０】
【図１】オンザフライ移行についての概略を示す図。
【図２】実行処理がどのようにして通信とオーバーラップ可能であるかを示す概略図。
【図３】実施形態と従来技術との時間的な比較例を示す図。
【図４】コンピュータプログラムの分散型の実行に関する概略的なハードウェアを示す図。
【図５】増加する演算リソースの移行に関する従来技術と本願実施形態との全体的な比較例を示す図。
【図６】本発明の実施形態により演算リソースを増やす場合についての時間的な観点からの図。
【図７】減少する演算リソースの移行に関する従来技術と本願実施形態との全体的な比較例を示す図。
【図８】本発明の実施形態により演算リソースを減らす場合についての時間的な観点からの図。
【図９】新たな演算リソースへの変更に関する従来技術と本願実施形態との全体的な比較例を示す図。
【図１０】演算リソースを新たなシステムへ移行させることについての時間的な観点からの図。
【発明を実施するための形態】
【００３１】
＜実施形態の概要＞
本発明の第1形態の実施例により提供されるプロセス移行方法は、並列的なプロセスのグループを利用するコンピュータプログラムを実行するステップであって、各々の並列的なプロセスは少なくとも1つの演算を実行し、当該ステップは、現在の演算リソースを利用して、現在のグループデータを、全ての演算の結果として提供する、ステップと、使用されるリソースを変更することを決定するステップであって、使用されるリソースを増やすこと、使用されるリソースを減らすこと、及び、異なるリソースに移ることの中で選択を行い、前記異なるリソースに移ることは、使用されるリソースの増加、減少又は維持を含むことが可能である、ステップとを有し、当該プロセス移行方法は、変更される演算リソースで前記コンピュータプログラムを実行可能にするために、現在の演算リソースと変更される演算リソースとの間で通信を行うステップであって、変更される演算リソースに実行を移行すること、及び、移行されるグループデータと前記現在のグループデータとの同期をとることを含む、ステップを更に有し、前記現在の演算リソースを利用する実行は前記通信と時間的にオーバーラップする。
【００３２】
本発明によるこの実施形態は、効率的なプロセス移行方法を可能にし、通信するステップは、現在の演算リソースにおける実行と少なくとも部分的に並列的に移行が行われることを許容する。
【００３３】
現在の演算リソース及び変更される演算リソースの間の通信は、変更されるコンピュータリソースに実行を移行すること、及び、移行されるグループデータと前記現在のグループデータとの同期をとることを含む(グループデータは、事実上、並列的なプロセスのグループにおける全てのプロセスに属するメモリ内のデータである)。これらの通信のうちの何れか又は双方が現在のリソースにおける実行とオーバーラップすることが可能である。
【００３４】
これらのプロシジャと実行とがオーバーラップすることは特に有用であり、なぜなら、新たなリソースに移行する場合に、コンピュータプログラムの進行を可能な限り妨害しないようにすべきだからである。データの移動はかなりの時間がかかる可能性があるので、分散メモリシステムでは(或いは、シミュレーションが或るシステムから別のシステムへ移行される場合に)、このことは特に有益である。データを移行するのに要する時間は、実際には、分散システムを利用することに含まれる複雑さ等に起因する。従ってデータが送信されることを要する場所で作業するのに要する時間を含む。
【００３５】
現在の移行及び同期は時間のかかるプロセスである：現在の実行は停止され、各々のプロセスからのデータは1つのロケーションに統合され、ファイルに書き込まれる必要がある(チェックポイント処理を行う必要がある)。新たな実行はチェックポイントデータから開始され、その結果、データが統合され、出力ファイルが書き込まれ、問い合わせシステムにより実行が再度サブミットされ、実行を開始するために出力ファイルが再度読み出される間の遅延を招く。これは、実行が再開される場合に埋め合わせをすることができないデッドタイム(dead  time)となる。(データを統合するのではなく、各々のプロセスが各自のチェックポイントファイルを書き込むことも可能であるが、その場合でも、古いリソースから新しいリソースへデータを送信する必要があり、移行の前後でプロセス数が同じでない限り、新たなリソースで適切にデータを割り振るためにプロセス間で通信が必要とされる点に留意を要する)。
【００３６】
他の従来の状況では、アプリケーションを移行すること或いは1つのプロセスを移動させることが可能であるかもしれないが、リソースを変更する程度及び種類に柔軟性がない。
【００３７】
本発明の実施形態は、演算と通信とをオーバーラップさせることにより、移行の後に続いてプロセス間でデータを効率的に同期化する方法を提案する。これは、リソースの増加/減少及び/又は新システムへの移行の選択肢とともに(これらはリソースの増加又は減少により達成されてもよい)、コンピュータプログラムの自動的なオンザフライ(on-the-fly)による(処理の最中に行う)移行及び同期を可能にする。本発明の実施形態による新たな方法は、(移行及び同期の際にすべて実行を停止する必要がある)一般的に使用されるチェックポイント・リスタート方法に対する改善に相当し、従来のオンザフライ法よりも柔軟性に富む。
【００３８】
本発明の実施形態は、増加した演算リソースが、ストリームに持ち出されること或いは現在可能な程度よりも速やかに除外されることを可能にする。例えば、情報の急増が現在のリソースによっては取り扱うことができない速やかな処理を必要とする任意のアプリケーションは、本発明による恩恵を受ける。同様に、コンピュータリソースの効率的な利用が本発明により助長され、その理由は、或るプログラムの処理条件を落とす場合に、コンピュータリソースは他のプログラムによる利用のために効率的に解放させることができるためである。
【００３９】
通信の段階の後、実行は現在のリソースから変更されるリソースへ切り替えられ、変更されるリソースで実行が再開される。
【００４０】
本発明の実施形態では、現在の演算リソースと変更される演算リソースとの間の関係は、適切な如何なる関係であってもよい。例えば、変更されるリソースは、現在のリソースの部分集合(sub-set)又は上位集合(super-set)であってもよく、或いは、変更されるリソースは、現在の演算リソースに対して同一の、より多い又はより少ない容量を有する完全に新たなリソース(例えば、別のコンピュータシステムのリソース)であってもよい。
【００４１】
本方法が適用される特に関心のある3つのケースは：(例えば、同一システムにおいて)利用可能なプロセス数を増やす場合；(例えば、同一システムにおいて)利用可能なプロセス数を減らす場合；及び異なるシステムへ移行する場合(例えば、異なるサイズのシステムへ移行する場合に、使用されるリソースの増加又は減少とともに行われる)である。これら全ての移行は、たとえ移行が異なるシステムに対するものであったとしても、自動的であってよい(例えば、新たなシステムへのログインのようなユーザの介入を要しないことを仮定する場合である)。
【００４２】
本発明の実施形態による方法は、これらの様々な移行の状況の全てに応じるものであり、これらの状況の選択を含む(使用されるリソースを変更する判断の一部として含まれてもよい)。判断及び選択は、例えば、コンピュータプログラム又は他のコンピュータプログラムのリソース条件を変更することに応じて、自動的になされてもよい。従って、ジョブスケジューラが所定のルールに従って判断及び/又は選択を行ってもよい。或いは、例えば、システムにおける或るジョブを他のものより優先させることにより、ユーザ入力が提供され、選択に影響を及ぼす又は選択を決定してもよい。このように、本方法は、使用されるリソースを増加させること、使用されるリソースを減少させること、及び、異なるリソースに移行することの中で選択を行うことを含む(その場合、同時に、リソースが増加又は減少させられてもよい)。選択的に、その選択はコンピュータプログラムのリソース条件に応じてなされてもよい。
【００４３】
本発明の実施形態は好ましくは分散メモリシステムに適用される。各々のプロセスは各自の現在のリソースを利用し、現在のリソースは演算を実行する単独の処理ユニットと演算のために現在のプロセスデータを保存する単独のメモリ領域とを含む。例えば、各々のプロセスは、(シミュレーションの1つのメッシュノードに対応する)1つの反復演算を含んでもよいし、或いは、(例えば、各々のプロセスが、シミュレーションの1つより多いメッシュノードに対するリンクされる演算を実行するように)1つより多い演算を含んでもよい。
【００４４】
何れにせよ、分散メモリシステムでは、1つより多い処理ユニットにわたって(例えば、分散システムにおける1つより多いノードにわたって)演算を拡散(又は分散)することを回避することが重要であり、なぜなら、リンクされる一群の演算の間で必要とされる通信量は非常に多いからである。
【００４５】
使用されるコンピュータシステムに依存して、処理ユニットは、例えば、ノード、プロセッサ又はマルチコアプロセッサのコアのような個々の如何なる処理ユニットであってもよい。
【００４６】
本発明の実施形態では、通信は移行及び同期の双方を包含する。移行は好ましくは通信における第1ステップであり、選択的に、プロセスに対する演算の割り当てを示す区分けデータ(パーティションデータ)の通信を含む。区分けデータは好ましくは現在のリソースから変更されるリソースへ送信される。例えば、変更されるリソースの中で各々の処理ユニットに送信される関連部分とともに、区分けデータの全体が送信される。現在の区分けデータが受信されると、プロセスは、変更されるリソース内に分割される必要がある。区分けデータを受信する前又は後に、プロセス同士の間で演算の再分割がなされてもよい(再区分け)(この再区分けは、新たなシステムへの移行の場合には行われず、利用可能なリソースの量に変更はない)。これら双方のステップは現在のリソースにおける演算とオーバーラップすることが可能である。
【００４７】
一実施形態において、(新たな)プロセスに対する演算の割り当て変更を示す新たな区分けデータが算出される。変更されるリソースに対する新たなプロセスのマッピングがなされてもよい。
【００４８】
好ましくは、同期は移行/再区分けの後に続く。同期は、プロセス間に同期をもたらす任意の通信を含むことが可能である。それは、時間依存性のプロセスデータの通信とすることが可能であり、例えば、移行される演算に関連し、現在のリソースと変更されるリソースとの間で行われる通信であってもよい。
【００４９】
初期化は、移行及び同期の後に、新たなリソースを設定(セットアップ)することを含むことが可能であり、変更されるリソースにおいてプロセスが継続できるようにする。初期化/設定は、例えば、必要なデータ構造をメモリに設定すること、及び、直接的には通信されない何らかの従属変数の値を算出することを含んでもよい。
【００５０】
本発明の実施形態によれば、移行されるグループデータと現在のグループデータとの間に同期が必要とされる。同期は、移行される現在データの全てについてでなくてもよい。例えば、プロセスのうち僅かなパーセント(割合)のプロセスが、シミュレーションの或る領域の中で更に細かく分割される場合、より詳細にモデル化されかつ潜在的にその領域付近に限定される領域に限って同期が考慮されてもよい。同期は必要に応じて実行される。
【００５１】
好ましくは、同期は状態データの通信を含み、コンピュータプログラム又はアプリケーションにより必要とされる如何なる形態をとってもよい。「状態データ」という用語は、各々のプロセスの間にメモリの中でアプリケーションにより保持される時間変化するデータを指す。メッシュベースのシミュレーションの場合、特定のプロセスにより「所有」される各々のメッシュポイントにおける各々の変数の値とすることが可能である。パーティクルベースのシミュレーションの場合、各々の所有される粒子の現在の位置及び速度とすることが可能である。
【００５２】
同期は、コンピュータプログラムの一部分として又は外部プロセスとして実行されることが可能である。コンピュータプログラムが同期の機能を含む場合、この機能は、同期が全ての演算の或るインスタンスの末尾で実行されるように、演算に関連付けられてもよい。
【００５３】
本発明の実施形態では、演算はループの中で動作する方程式ソルバ(equation  solver)の反復であってもよく、同期は1つのループの最後に実行されてもよい。選択的に、同期は、結果の比較とともに、現在の演算リソース及び変更される演算リソースの双方における次のループに対する演算を行うことを含む。代替的に、現在のリソースがもはや使用されない場合、反復的な演算/シミュレーションのループにおける同期した位置に対応する受信した状態データとともに、変更されるリソースで実行を再起動することで十分である。
【００５４】
演算の各々はコンピュータプログラムの単独の要素又は要素のグループ(群)に対応してもよく、例えば、センサネットワークのセンサ又はノード、或いは、通信ネットワークにおけるエンティティ等に対応してもよい。上述したように、本発明の実施形態による進行する移行方法で使用される好ましいコンピュータプログラムのタイプの1つは、シミュレーションプログラムである。すなわち、各々の要素は、メッシュシミュレーションのメッシュノードの集まり(コレクション)、エージェントシミュレーションの1つ以上のエージェント、或いは、粒子シミュレーションの1つ以上の粒子に対応してもよい。
【００５５】
実行(処理)の移動は、プロセスに対する演算の割り当てを変更することなく、プロセスを新しいプロセスに単に移動させてもよい。しかしながら、他の実施形態では、プロセス間で演算の割り当てが変更されてもよい。プロセスが以前に2つのリンクされた反復的な演算を含んでいた場合に、移行の際に、それらのうち一方が異なるプロセスに移動させられるかもしれない。逆に、以前に単独の演算のみを含んでいたプロセスが、移行の際に、他のプロセスと併合され、2つ以上のリンクされた演算とともに単独のプロセスを形成するかもしれない。更なる例として、コンピュータプログラム全体の実行が新たなシステムに移動させられ、同時に、リソースが増加又は減少させられる。
【００５６】
プロセス数の増加及び減少の間の選択は、コンピュータプログラムの演算リソース条件が増加又は減少するかに応じてなされてもよい。
【００５７】
代替的又は追加的に、実行ファイルにおける演算の総数が変更されてもよく(例えば、要素を追加又は削除する)、プロセス数を変えてもよい。例えば、シミュレーションにおいて、ある位置における細かいメッシュの生成を含む更なる詳細が、シミュレーションの一部として必要とされるかもしれない。
【００５８】
従って、演算の数を変更することにより及び/又はプロセスに対する演算の分割(の仕方)を変更することにより、移行は、プロセス数を増加又は減少させてもよい。
【００５９】
プロセス数の増加及び減少の間の選択は、コンピュータプログラムの演算リソース条件が増加又は減少するかに応じてなされてもよい。代替的に、実行の開始及び/又は移行の間の何れにおいても、コンピュータプログラムが動作するプロセスの数をユーザが指定してもよい。
【００６０】
本発明の第2形態の実施例は、プロセスの移行を実行するように構成されるコンピュータシステムを提供し、本システムは、並列的なプロセスのグループでコンピュータプログラムを実行するように構成される分散処理メモリであって、各々の並列的なプロセスは、現在の処理ユニット及び関連する現在のメモリを利用して演算を実行する、分散処理メモリと；使用されるリソースを変更するか否かを決定するように構成されるコントローラであって、使用されるリソースを増やすこと、使用されるリソースを減らすこと、及び、異なるリソースに移ることの中で選択を行い、前記異なるリソースに移ることは、使用されるリソースの増加、減少又は維持を含むことが可能である、コントローラと；前記現在の処理ユニットと、関連する現在のメモリ領域と、変更される処理ユニットと、関連する変更されるメモリ領域との間で通信を行い、前記変更される処理ユニット及び関連する変更されるメモリ領域で前記コンピュータプログラムを実行可能にするように構成される相互接続部と；を有し、前記相互接続部は、前記現在の処理ユニット及び関連する現在のメモリ領域を利用する実行とオーバーラップする時間区間において通信するように構成される。
【００６１】
コンピュータシステムは、例えば、必要なプロセスの数のようなデータをユーザが入力するための(或いは、プロセスの数がデータから算出されてもよい)グラフィカルユーザインタフェースGUI、及び、例えば、結果の視覚化のためのスクリーンの形式による出力手段及び/又は印刷された結果を提供するプリンタの形式による出力手段のような他のコンポーネントを更に含んでもよい。
【００６２】
別の形態によればプログラムが提供され、プログラムは、分散メモリコンピュータシステムのようなコンピュータ装置にロードされると、上記で規定した任意の方法又はそれらの任意の組み合わせによる方法ステップを実行するように演算装置を構成(又は設定)する。
【００６３】
本発明の任意の様々な形態の特徴及び副次的な特徴は適宜組み合わせられてもよい。例えば、コンピュータシステムの好ましい形態は、方法についての1つ以上の好ましい特徴に対応する機能を組み込むように構成されてもよい。
【００６４】
本発明は、コンピュータハードウェア、ファームウェア、ソフトウェア又はそれらの組み合わせで実現されることが可能である。本発明は、コンピュータプログラム又はコンピュータプログラムプロダクトとして実現されることが可能であり、すなわち、コンピュータプログラムは、例えばマシン読み取り可能な記憶装置のような情報キャリアに有形に実現されてもよいし、或いは、1つ以上のハードウェアモジュールの動作を制御するための又は実行のための伝送信号で実現されてもよい。
【００６５】
コンピュータプログラムは、コンピュータプログラムの部分又は1つより多いコンピュータプログラムの形態をとることが可能であり、コンパイルされる又は解釈される言語を含む任意の形態のプログラミング言語で書かれることが可能であり、スタンドアローンプログラムとして又はモジュールとして、コンポーネント、サブルーチン、又は、データ処理環境で使用するのに適した他のユニットを包含する任意の形態で配備されることが可能である。コンピュータプログラムは、通信ネットワークによって相互接続される分散された複数のサイト、或いは、1つのサイトにおける1つのモジュール又は複数のモジュールで実行されるように配備されることが可能である。
【００６６】
入力データを処理して出力を生成することにより本発明の機能を実行するようにコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサにより、本発明の方法ステップは実行されることが可能である。各々のプロセッサは1つ以上のコアを有してもよい。
【００６７】
コンピュータプログラムの実行に相応しいプロセッサは、一例として、汎用及び専用のマイクロプロセッサの双方、任意の種類のディジタル又はバイオコンピュータのうちの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリメモリ又はランダムアクセスメモリ又は双方から命令及びデータを受信する。コンピュータの本質的な要素は、命令を実行するプロセッサであり、プロセッサは、命令及びデータを保存する1つ以上のメモリ装置に結合される。
【００６８】
本発明は特定の実施形態の観点から説明される。他の実施形態も請求項の範囲内に属する。例えば、本発明のステップは、異なる順序で実行されることが可能であり、それでも所望の結果に至ることが可能である。
【００６９】
好適実施形態による装置は、所定の機能を実行するように形成され、動作可能であるように或いは構成されるように説明される。これらの構成又は形態は、ハードウェア、ミドルウェア又は適切な任意のシステムを利用することにより実現されてもよい。好ましい実施形態では、その構成又は形態はソフトウェアによるものである。
【００７０】
本発明は図面に示されるような非限定的な特定の実施形態を参照しながら説明される。
【００７１】
＜実施形態の詳細な説明＞
本発明の好ましい実施形態は、2つの異なるシステムの間又は同じシステムの異なる数のシステムの間において、実行するシミュレーションを移動させるプロセスの際に、データの同期を管理する。従って、ハイパフォーマンスコンピューティングにおける多くの技術分野、特にスケジューリング及びマネージメントに関する多くの技術分野が用途として見出される。
【００７２】
図1は、本発明の実施形態が、車両に対する空気の流れ(気流)についてのシミュレーションを、システムAによる実行からシステムBによる実行へ如何にして移動させることができるかを示す概略図である。この移動は、シームレスなオンザフライ移行及び同期(seamless  on-the-fly  migration  and  synchronization)として言及される。すなわち、システムAからシステムBへシミュレーションを移行させるためにシミュレーションプロセスを完全に停止することは必須でない。
【００７３】
そのようなシミュレーションを異なる数のプロセッサへ移す場合の主な技術的課題は、シミュレーションを細分化(又は区分け)し直すこと(すなわち、何れのデータが何れのプロセスに配置されるかを決定すること)、新たな区分けを反映することに関するデータを移動させること、及び、シミュレーションが継続できるように移行後のシミュレーションを同期させることを含み得ることを、発明者等は確認した。彼らは、シミュレーションの進行に対して可能な限り少ない中断しか生じないように、理想的には、これらのステップはシミュレーション自体と或る程度オーバーラップすべきである、という結論に至った。これは分散メモリシステムでは(或いは、シミュレーションが或るシステムから別のシステムへ移される場合には)特に重要であり、その理由は、データの移動にかなりの時間がかかる可能性があるからである。
【００７４】
図2は現在のリソースから変更されたリソースへのアプリケーションの実行の移動を示す時間に基づく概略図である。時間T1において実行(処理)は現在のリソースでなされ、時間T2において新たなリソースとの通信が始まる。時間T3において現在のリソースにおける実行は止まり、状況に応じて、変更されたリソースで実行が再開する前に、現在のリソースと新たなリソースとの間で更なる通信(波線矢印で示される)がなされてもよい。通信は現在から新たなリソースへの方向で示されているが、実際の多くの場合には、双方向通信が行われるであろう。例えば、新たなリソース割当の通知及び要求が新たなリソースから現在のリソースへ送られてもよい。
【００７５】
通信は時点T2においてのみ生じる通信を示すように矢印が出ているが、当業者は、時間T2及び時間T4の間も通信が継続してよいこと、おそらくは1つ以上の中断が生じてもよいことを認めるであろう。
【００７６】
本発明の実施形態による方法が適用されてよい対象のうち特に3つの場合に着目し、それらは：(例えば、同一システムにおいて)利用可能なプロセス数を増やす場合、(例えば、同一システムにおいて)利用可能なプロセス数を減らす場合、及び、異なるシステムへ移行する場合である。
【００７７】
これらの状況の何れにおいても、ほとんどの持続時間に関し、実行は、ループを通る各々における同様なワークフローとともに、ループ形式で動作することが予想される(例えば、(非)線形ソルバにおけるタイムステッピング又は反復)。移行及び同期は、ループの末尾の位置を占める。同期プロセスは自動化されることが可能である(詳細な実現例を示すフローチャートについては後述する)。自動化は、方程式ソルバ内に組み入れられてもよいし、或いは、ソルバの動作を制御することが可能なラッパー(wrapper)の形態をとってもよいが、その一部分であることは必須でない。
【００７８】
図3には本発明の実施形態によるアルゴリズムの一般的な概要が(近似的に目盛られたタイミングとともに)示されている。現在(優先日)において最新の技術に対して比較される新規なステップは、影付きのボックスで示される。これらの新規なステップは、オーバーラップ(又は重複)する通信及び演算のステップであり、すなわち、移行及び同期の間に演算を継続する。通信及び演算のオーバーラップの結果により、本発明の実施形態による方法は、少なくとも、現在最新の技術よりも高速であるに違いないことが、理解できる。
【００７９】
図3は、現在最新の技術によるプロセスと本発明による実施形態とを比較する。何れの場合にも演算は旧リソースと新リソースとの間で移管される。ステップS10の時間T=0において、演算が領域Aで始まる。時間Kの経過後であるT=Kにおいて、移行が始まる。
【００８０】
最新技術の手順を考察すると、先ず、ステップS20において新たなリソースが割り当てられ、ステップS30において、チェックポイント手順とともにデータが通信され、領域Aを削除する。チェックポイント手順は、各々のプロセスからのデータを1つの場所(ロケーション)に統合し、それをファイルに書き込むことを含む。時間T=K+Lにおいて、データが新たなリソースへ転送され、ステップS40において、新たなパーティション(区分け)が計算される。この新たなパーティションは、領域Bにおける個々の新たなリソースに対するプロセスのマッピング(対応付け又は関連付け)を可能にする。読者は、領域A及びBは同じシステムの一部分であってもよいこと、或いは、重複する部分であってさえよいことを認めるであろう。異なるシステムの部分であってもよい。ステップS40において新たなパーティションが算出されると、個々のリソースにプロセスをマッピングすることにより、領域Bが設定され、チェックポイントファイルが読み出され、新たな領域に対する状態データが設定される(ステップS50)。これらのタスクには時間Mだけかかり、実行を再開するまでに、時間T=K+L+Mが経過する。領域Bにおける演算は時間Nを費やし、最終的な経過時間はT=K+L+M+Nである。
【００８１】
これに対して、本発明の実施形態によれば、実行は時間T=0で始まって経過時間Kの間続き(S70)、そして、領域Aにおける実行と、領域A及び領域Bの間の通信に関するステップとの間にオーバーラップが存在し、コンピュータプログラムを領域Bで実行できるようにする。従って、ステップS80において演算は領域Aで継続するが、ステップS90において先ず領域Bにおける新たなリソースが割り当てられる。以後、ステップS100においてデータが領域Aから受信される。これを行うためにかかる時間は、最新技術における対応するステップの時間L以下であるべきであり、その理由は、チェックポイント手順が無いからである。以後、ステップS110において新たなパーティションが計算され、ステップS120において、領域Bが設定され、状態データが受信され設定される。これらのステップにかかる時間はM以下であるべきである(Mは最新技術における対応する段階にかかる時間であり、M以下であるべきである理由は、最新技術の手順は、チェックアウトファイルを読み出すことを追加的に含むからである)。
【００８２】
従って、演算が領域Aで継続し、並列的に移行を行い、その後に同期をとる時間ブロックは、時間T=P≦(L+M)だけかかる。この時点において、演算は領域Bで継続し、節約される合計時間はPとして算出される。
【００８３】
図3において、移行ステップは領域Aから通信されるデータを受信するように考えることが可能であり、同期ステップはステップS120において状態データを受信及び設定するように考えることが可能である。これら双方のステップは領域Aにおけるコンピュータプログラムの実行とオーバーラップする。
【００８４】
パーティションデータの通信と状態データの通信との間に、どこのデータが送信されるかを決めるマップ(対応関係)が計算される。これは、2つの異なる位相の通信が存在する基本的な理由である。
【００８５】
同期ステップの考え方は、旧及び新システムにおけるメモリの内容が一致することを保証することである。演算は、新システムをイニシャライズしながら旧システムで継続するので、適切な時点で同期をとる必要がある(状態データをパーティションデータと同時に送信するだけではない)。一方、(後述するように同期プロセスがなされない限り)実行は、旧システムで依然として動作しつつ新システムで始まらない。これは演算作業の重複となる。
【００８６】
(通信されるデータは同じであり、ディスクに対して読み書きされる必要はないので)提案される改善手段を利用するのにかかる時間は、現在の最新技術を利用する場合より長くはならないこと(及び短くなる傾向にあること)が、理解できるであろう。領域Aにおける演算が継続する一方、新たなリソースに対する同期(処理)が進行するので、節約は、本発明が使用されない場合にチェックアウトファイルをディスクに書き込み、それらを読み取って新たなドメインに設定するのに費やされる「デッド」時間(P)(dead  time)に等しい。
【００８７】
図4はn+1個のプロセスを示す概念図を示し、それらのうち2つのプロセス(60)が具体的にプロセス0及びプロセスnとして示されている。各々のプロセスは各自のリソースを利用し、リソースは1つの処理ユニット又は要素(70)とメモリ(80)とを含む。処理ユニット(70)は入力/出力ユニット(90)に接続され、全てのプロセスが相互接続部(100)を用いて相互接続される。
【００８８】
特定の一実施形態において、各々のプロセスは、図示されるような1つのリソースブロックで行う作業(work)についてのスレッド(thread)である。各々のプロセスは、少なくとも1つの演算を「所有」し、リンクされた複数の演算を所有してもよい。例えば、シミュレーションの場合、プロセスは、複数の隣接するメッシュノードについての演算を含むことが可能である。このように隣接するメッシュノードに対する演算をグループ化することは有利になる場合があり、なぜなら、隣接するノードからのデータは、通常、対象のノードに対する演算に必要とされるからである。
【００８９】
ノードは区分けのプロセス(パーティショニングし直すプロセス)の間に改めて割り当てられる。区分けの簡易な例を以下に説明する。
【００９０】
0≦x≦1の区間の間に均等に配置される101個のノードを含むメッシュを有する1次元問題を仮定する(すなわち、各々のノードは最も近いものから0.01だけ隔たっている)。ノードはx=0におけるノード0からx=1におけるノード101まで番号付けされる。この問題では、最初に、2つの処理ユニットが動作している。プロセス0は領域0≦x≦0.5内の全てのノードに対する責任を有し(所有し)、プロセス1は領域0.5＜x≦1内の全てのノードを所有する。従って、プロセス0はノード0ないし50における変数の値に関する情報をメモリに維持し、プロセス0はノード0ないし50における変数の値に関する情報をメモリに維持し、プロセス1はノード51ないし101における変数の値に関する情報をメモリに維持する。便宜上、プロセス0はノード51における変数の値についての情報のコピーをメモリに維持し(「ハロー所有する」又は「近隣所有する」(halo  own)」と言及される)、プロセス1はノード50を近隣所有する。これは、これらのノードがプロセスによって所有されるノードに対して最も近接しており、データは、これら所有されるノードでデータを更新するために必要とされる傾向があるからである。
【００９１】
今、シミュレーションが3つのプロセスで動作するように移行されるべきである、と仮定する。区分けステップは、メッシュの何れの部分が新たなプロセスの各々により所有されるかを判定する。すなわち、新たなプロセス0(旧プロセス0と同一プロセスであってもよいし、そうでなくてもよい)は領域0≦x≦0.33(すなわち、ノード0〜33)に対する責任を有しかつノード34を近隣所有し;新たなプロセス1は領域0.33＜x≦0.67(すなわち、ノード34〜67)に対する責任を有しかつノード33及び68を近隣所有し;新たなプロセス2は領域0.67＜x≦1(すなわち、ノード68〜101)に対する責任を有しかつノード67を近隣所有する。
【００９２】
新たなパーティションは、より多くのプロセスに演算を拡散(又は分散)するので、より多くの近隣所有されるノードを生み出す。しかしながら、プロセスの拡散は、同じ演算に対して、より多くのリソースの利用を許容する。区分けの前に、処理ユニットの最大数は2であり、これは区分けにより3になる。
【００９３】
この区分けの結果により、旧プロセス0は、ノード0〜34についてのデータを新プロセス0に送信しかつノード33〜50についてのデータを新プロセス1に送信し；旧プロセス1は、ノード51〜68についてのデータを新プロセス1に送信しかつノード67〜101についてのデータを新プロセス2に送信する必要がある。
【００９４】
以下の具体例は、リソースの増加、リソースの減少及びリソースの単独の移行という3つの場合について、演算及び通信がオーバーラップする更に詳細なワークフローを提供する。
【００９５】
図5及び図6はリソースの増加を示す。図5はシステムAからシステムBへのシミュレーションAの転送の概要を示す。システムBはシステムAの部分集合であってもよい。シミュレーションAは、システムBで動作する場合にはシミュレーションA’になる。
【００９６】
従来技術に対応する第1状況では、移行及び同期を可能にするために完全な停止がある。シミュレーションが止まると、区分け及び移行の手順が生じ、同期の処理が続き、そして、シミュレーションA’がシステムBで実行される。
【００９７】
状況2は、本発明の実施形態に対応し、準ランニングのケースとして言及される。この図はシステムA及びシステムBにおける手順を示す。先ず、システムAにおいて、領域Aにおける計算が存在し(及び、ここでは示されていないが、システムAの区分けデータをシステムBに通知することもなされる)、その後にデータがシステムBに送信される。システムBでは、新たなリソースが旧区分けデータ(旧パーティションデータ)を利用して新たな区分けを実行し、その後にデータを受信する。
【００９８】
以後、演算が領域Aで続く一方、領域A’が設定(セットアップ)される。領域A及びA’間の同期(処理)が双方のシステムで実行される。最終的に、演算は、システムAにおいて、AマイナスA’の部分を行い、A’はシステムBで実行される。すなわち、いくらかの演算がシステムAに残るが、一部はシステムBに転送され、システムBにおいてシミュレーションA’が実行される。そして、図5の下の方に描かれている「シグナル」というシグナリングは、システムAからシステムBへA’を転送する。
【００９９】
図6は既存のリソース40に対して追加的なリソース50を含めるようにリソースが増やされる本発明の実施形態を示す更に詳細なフローチャートである。ステップS140において、領域Aにおける計算が進行中であるが、より多くのリソースを要求し、ステップS150において、より多くのリソースが利用可能であるか否かについての問い合わせが尋ねられる。ステップS160において、追加的なリソース(50)が割り当てられ、これは既存のリソースに通知される。ステップS170において、既存のリソースは、現在のパーティションを、そのデータを受信する追加的なリソースに送信する。ステップS180において、追加的なリソースが、リソースを増やすに値する判断を算出すると、ステップS190において新たなパーティションを算出することによりリソースが増やされ、そうでない場合、ステップS200において、移行プロセスは停止し、追加的なリソースは解放される。ステップS210において、新たなパーティションの完了が既存のリソースに通知される。領域A’が設定され、領域A’における解(状態データの形式における解)を求めるリクエストが既存のリソースに送信される。
【０１００】
ステップS220において、解は、受信される状態データの形式で追加的なリソースに送信される。その一方、ステップS230において、領域Aにおける或るループにおける演算は、既存のリソースで継続している。ステップS240において、同じ演算が追加的なリソースで実行され、ステップS250及びS260において、追加的なリソース及び既存のリソースにおいて値が合致することの確認がなされる。ステップS270において、領域A’は、追加的なリソースへの転送の一部として、既存のリソースから削除され、ステップS280において領域AマイナスA’における計算が続く。これに応じて、ステップS290において、領域A’における計算が同時に追加的なリソースで続く。
【０１０１】
図7及び図8はリソースが低減される必要がある実施形態を示す。図7に示される従来技術の状況1は、新たなシステムCが場合によってはAの部分集合であるオリジナルリソースである点を除いて、図5におけるものに対応する。
【０１０２】
本発明の実施形態に対応する図7の状況2では、従来技術の状況1の停止するケースとは異なり、準ランニングのケースが存在する。この実施形態では、パーティション(区分け)がシステムA及びシステムCの双方で実行される。(領域Aの部分集合である)領域Cにおける演算が続いている間に、データがシステムAから送信され、通信時間を隠す。そして、システムAの解放されるリソースはシャットダウンされ、領域Cがデータを受信する。
【０１０３】
その後、システムAによる全ての処理はシステムCで実行される。領域A’が設定(セットアップ)され、領域A,B,D等による処理の組み合わせである領域A’における計算が存在する。このように、図7の下の方に概略的に示される「シグナル」というシグナリング転送は、シミュレーションAをA’に移し、システムAからの処理と他の場所からの他の処理との全てを併合する。
【０１０４】
リソース減少の実施形態によるイベントについての更に詳細な説明に関し、図8において、ステップS300の第1ステップは領域Aにおける演算であり、この演算は、より少ないリソースで続くことになる。すなわち、領域Aは除去されるリソース40と維持されるリソース50とを含む。ステップS310における外的な問い合わせ(クエリ)は、より少ないリソースで継続することが適切であるか否かを確認するものであり、ステップS320において、領域Aからの応答は、割り当てが減らされることを許可する。ステップS330において、新たなシステムに対する再区分け(再パーティション)がなされる。削除されるリソース40では、ステップS340において、リソースを解放するための区分けがなされ、データを送信する一方、維持されるサブ領域Cにおける演算が継続される。必要に応じて、システムマトリクスを含む状態データが、削除されるリソース40から維持されるリソース50へ送信される。シミュレーションの場合には、しばしば、条件は事実上Ax=bという方程式の線形系を解くことになる。この場合、マトリクスAが、分散されるメモリにわたって区分けされ、それを併合する必要がある。
【０１０５】
ステップS360において、維持されるリソースは新たなサブ領域(A,B,D)に対する状態データを受信する。その間に、ステップS370において領域Aが削除され、ステップS380において、削除されたリソースが解放される。
【０１０６】
維持されるリソース50において、新たなサブ領域における演算がS390で実行され、他の新たなサブ領域についての状態データを受信するためにS360の反復が存在してもよい。ステップS400において領域A’が最終的に設定され、ステップS410において領域A’における計算が行われる。
【０１０７】
図9及び図10は、システム間で移行がなされる状況を示す。すなわち、システムB及びシステムAはオーバーラップしないかもしれない。図9の状況1は従来技術を示し、従って更には説明されない。
【０１０８】
状況2は本発明の実施形態における準ランニングのケースの別の例である。システムAの領域Aにおける演算は、システムBにおける区分け(パーティション)と同時に実行される。その後、パーティションデータがシステムAからシステムBに送信される。演算が領域Aで継続している一方、領域Bが設定され、2つの領域の同期がとられる。最終的に、システムAのリソースは解放され、領域Bにおける計算が継続される。
【０１０９】
この状況では、システムA及びアクティブなシステムBの間で双方向のシグナリングとともに転送が行われる。
【０１１０】
図10では、より詳細な実施形態による移行のケースが説明される。先ずステップS420において、領域Aにおける演算が行われ、リロケーション(移行、再配置、移動)を要求する。ステップS430において、より適切なシステムが利用可能であるか否かについての問い合わせがなされる。いずれにせよステップS440において演算が継続されるが、新たなリソース50が利用可能である場合、ステップS450においてシステムBが新たなリソースをそれらに割り当て、システムAに通知する。現在の区分けはシステムAからシステムBへ送信され、ステップS460においてシステムBで受信される。ステップS470において、そのデータに関してリソースを切り替えるに値するか否かについての問い合わせが確認され、切り替えるに値しない場合、ステップS480において移行プロセスが停止され、新たなリソースは解放される。逆に、リソースを切り替えるに値する場合、ステップS490において新たな区分けが算出される。システムBはシステムAに通知し、ステップS500において領域Bを設定し、領域Aにおける解を要求する(すなわち、状態データの割り当て)。ステップS510において新たなシステムは状態データを受信し、ステップS520において1つのループを計算する。その間、ステップS530においてシステムAは同じループを計算する。ステップS540及びS550において、これらの値が合致するか否かの検査がなされ、合致する場合には、ステップS560において領域Bでの計算が継続される。ステップS570において領域Aは削除され、ステップS580においてリソースは解放される。
【０１１１】
本発明の実施形態による有利な特徴は例えば次のようなものである：
a.  柔軟性：実施形態は実行(処理)を何らかの異なるシステム(より大規模な、より小規模な又は同じサイズのシステム)に移す機能を与える。本発明の実施形態が、これらの3つ全てのケースを実現する選択肢を有することは、特に有利である。
【０１１２】
b.  分散メモリシステムに関する移行のオンザフライ性(すなわち、実行(処理)は停止される必要が無く、新たなシステムに移されて再開される)。
【０１１３】
c.  プロセス数を増やす能力(障害耐性に関する最近の従来技術は、プロセス数を減らすことを取り扱うオンザフライ法を考慮しているが、増加することは考慮してない)。
【０１１４】
d.  変更の可制御性。障害耐性のアプリケーションでは、システムは、制御不能なリソース喪失に対処する。本発明の実施形態は、どの程度多くのプロセスで実行(処理)がなされるべきかをユーザが正確に指定することを許容する。
【０１１５】
e.  リソースの可変スケール性：すなわち、障害耐性の場合、通常、ノードのうち僅かな個数のノードのみが何らかの或る時点で不具合を起こすので、この考え方はリソースの小さな削減を取り扱うことである。本発明では、移行及び同期の手順により、例えば、何千ものノードから1つのノードに至るまで、非常に多数のリソースの削減を可能にすることができる。
【図１】
0006371778.tif 000002
【図２】
0006371778.tif 000003
【図３】
0006371778.tif 000004
【図４】
0006371778.tif 000005
【図５】
0006371778.tif 000006
【図６】
0006371778.tif 000007
【図７】
0006371778.tif 000008
【図８】
0006371778.tif 000009
【図９】
0006371778.tif 000010
【図１０】
0006371778.tif 000011