(57)【要約】      （修正有）【課題】異なる状況のために柔軟に使用可能であり且つマイグレーション及び任意に同期化の困難性を考慮する、コンピュータプログラムの実行をマイグレートする方法を提供する。【解決手段】プロセスマイグレーション方法は、計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソース１０でコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、現在のパーティションデータを中間計算リソース２０へ送り、前記中間計算リソース２０を用いて、変更計算リソース３０での使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記新しいパーティションデータを前記変更計算リソース３０へ送ることによって、プロセス実行を前記変更計算リソース３０へマイグレートする。【選択図】図２
2014235734.tif 000002
【特許請求の範囲】
【請求項１】
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
現在のパーティションデータを中間計算リソースへ送り、
前記中間計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法。
【請求項２】
前記新しいパーティションデータの計算は、前記現在の計算リソースによる継続的な実行と時間において重なり、且つ／あるいは、
前記新しいパーティションデータの計算は、前記変更計算リソース内の新たなリソースの割り当てと時間において重なる、
請求項１に記載のプロセスマイグレーション方法。
【請求項３】
前記現在の計算リソース及び前記変更計算リソースは、分散型メモリ計算リソースを有し、前記中間計算リソースは、共有型メモリ計算リソース、望ましくは、対称型マルチプロセッサＳＭＰノードを有する、
請求項１又は２に記載のプロセスマイグレーション方法。
【請求項４】
前記中間計算リソースは、再パーティショニングを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
請求項１乃至３のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項５】
前記変更計算リソースは、前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき実行に適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
請求項１乃至４のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項６】
前記構成は夫々、計算リソースの複数のカテゴリの夫々において利用可能な計算リソースの量及び／又はタイプのインジケーションを含み、
実行情報は、前記複数のカテゴリの中の少なくとも１つのカテゴリにおける計算リソースについて、当該カテゴリにおける計算リソースのどれくらい異なる量及び／タイプが実行レートと相関するかのインジケーションを符号化するスケーラビリティマトリクスを含むアプリケーション実行スケーラビリティ情報の形をとり、望ましくは、前記スケーラビリティマトリクスは、計算リソースの前記複数のカテゴリの夫々と実行レートとを含む複数の係数の中の係数の対ごとにエントリを含み、該エントリは、当該係数の対の中の第２の係数の異なる量／タイプを表す線形スケールに沿った比例変化に関して、前記第２の係数の必要とされる量／タイプに対する当該係数の対の中の第１の係数の異なる量／タイプの使用を表す線形スケールに沿った比例変化の効果を表す、
請求項４又は５に記載のプロセスマイグレーション方法。
【請求項７】
夫々のプロセスは、前記計算を実行する単一のプロセッシングユニットと、前記計算のためのプロセスデータを記憶するためのメモリの単一の領域とを含む個々の現在の計算リソース及び変更計算リソースを使用し、望ましくは、前記プロセッシングユニットは、分散型メモリ計算システムにおけるマルチコアプロセッサのコア又はノード若しくはプロセッサである、
請求項１乃至６のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項８】
前記中間計算リソースは更に、前記新しいパーティションデータのマイグレーションの前の個々の変更計算リソースへのプロセスのマッピングと、前記変更計算リソースへのマッピングとを提供するために使用される、
請求項７に記載のプロセスマイグレーション方法。
【請求項９】
マイグレートされた計算に関連する状態データの通信を用いた、マイグレートされた実行の同期化を更に有し、
前記通信は、前記現在の計算リソースと前記変更計算リソースとの間で行われ、
望ましくは、前記同期化は、望ましくはその中に埋め込まれるか又はラッパーの形をとる、前記計算を実行する求解機と関連付けられる、
請求項１乃至８のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１０】
前記計算は、ループにおいて実行される求解機の逐次代入であり、同期化が１つのループの終わりに実行され、望ましくは、結果の比較と共に、前記現在の計算リソース及び前記変更計算リソースの両方において次のループのための計算を実行することを含む、
請求項１乃至９のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１１】
使用されるリソースを変更すると最初に決定し、前記使用されるリソースを増やすことと、前記使用されるリソースを減らすことと、異なるリソースへ移動することとの間で選択を行うことを更に含み、
異なるリソースへ移動することは、前記使用されるリソースの増加、減少又は維持を含むことができる、
請求項１乃至１０のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１２】
ユーザは、前記コンピュータプログラムが実行するプロセスの数、及び／又は前記中間計算リソース及び／又は変更計算リソースのための性能目標を特定し、
前記性能目標は、計算リソースの選択において使用される、
請求項１乃至１１のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１３】
プロセスマイグレーションを実行するよう動作するコンピュータシステムであって、
インターコネクトを介して接続されている現在の計算リソース、中間計算リソース、及び変更計算リソースを有し、
前記現在の計算リソースは、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行するよう構成され、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記インターコネクトは、現在のパーティションデータを前記中間計算リソースへ送るよう構成され、
前記中間計算リソースは、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算するよう構成され、
前記インターコネクトは更に、前記変更計算リソースが前記実行を引き継ぐことができるように、前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される、
コンピュータシステム。
【請求項１４】
システム内の中間計算リソースであって、前記システムが、インターコネクトを介して接続される、当該中間リソースと、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行し、夫々の並列プロセスが少なくとも１つの計算を実行する現在の計算リソースと、変更計算リソースとを有し、プロセスマイグレーションを実行するよう動作する、中間計算リソースにおいて、
前記インターコネクトから現在のパーティションデータを受け取り、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記変更計算リソースが前記実行を引き継ぐことができるように前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される中間計算リソース。
【請求項１５】
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、パーティショニング前の計算リソースを選択し、
現在のパーティションデータを前記パーティショニング前の計算リソースへ送り、
前記パーティショニング前の計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法のためのパーティショニング前の計算リソースの選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算リソースのマイグレーション、特に、プロセスが分散型メモリを備える分散型計算システムにおいて実行されている場合に関する。それはまた、マイグレーションの間及び／又はマイグレーションの後に使用される計算リソース（メモリ及びプロセッシング機能）の選択に関する。
【背景技術】
【０００２】
本発明は、特に、分散型メモリを使用して動的に情報を交換するコンピュータプログラムの分野において、実用的な用途を有する。そのようなプログラムの多くは、各自が自身のメモリを備える相互接続されたＣＰＵのグループのような、分散型のプロセッシング及びメモリを使用する。相互接続されたＣＰＵのグループは、個々の要素に対応する分割され、それらの個々の要素の一部については、何らかの形式の計算が必要とされる。
【０００３】
そのような分散型並列アプリケーションの一例は、センサネットワーク又は通信ネットワークをモニタするコンピュータプログラムである。センサネットワークにおけるセンサの各々は、例えば、全体的なプロセッシング負荷のような特性を決定するよう及び／又は検知された値を処理するよう、計算を必要とする個々の要素として見なされ得る。計算は、センサネットワークをモニタする計算プログラムによって実行可能であり、また、センサネットワークを制御することができる。
【０００４】
通信ネットワークでは、エンティティの各々（例えば、モバイル端末若しくはユーザ設備（ＵＥ；User  Equipment）、基地局又は中継局）も、例えば、全体的な負荷を決定するよう、計算を必要とする要素として見なされ得る。計算は、通信ネットワークをモニタ及び／又は制御する計算プログラムによって実行され得る。
【０００５】
更なる例は、例えば、不法な取引慣行についてのデータを解析するよう、株式取引をモニタすることにある。計算は、各トレーダの取引を追跡するために必要とされることがある。
【０００６】
更なる他の例はシミュレーションである。多くのシミュレーションにおいて、反復計算又は反復的な計算の組が実行され、各々の計算は、シミュレーションにおける単一の要素に対応する。シミュレーション要素は、シミュレーションの一要素のための計算がシミュレーションの他の要素からの値を必要とし得る点でリンクされ得る。それにより、シミュレーションを実行する処理の間のデータ転送は考慮すべきである。そのようなシミュレーションを実行するコンピュータプログラムは、計算に関連する作業負荷が、例えば、分散型システム内で、適切な計算リソースへ割り当てられることを求める。
【０００７】
計算がリンクされたそれらのコンピュータプログラム及び他のコンピュータプログラムでは、プロセスをマイグレートする必要が存在し得る（それらが実行されている間に）。例えば、コンピュータプログラム自体による又は他のコンピュータプログラムによるリソース活用の変更を可能にするよう実行全体を新しいコンピュータシステム又は現在のコンピュータシステムの新しい部分へ移すことが必要であり得る。
【０００８】
上述されたように、個々の要素が個々の計算を必要とする多くのコンピュータプログラムが存在し、個々の要素の一部はまた、シミュレーションの他の要素に対する潜在的な影響を有する。要素間の高度なやり取りを必要とする２つの例は、流体及び固体両方の特性を含む材料特性をシミュレートするための有限要素及び有限体積法の使用である。
【０００９】
数値流体力学（ＣＦＤ；Computational  Fluid  Dynamics）を例として考えると、この技術は、流体の流れを伴う問題を解決及び解析するために数値法及びアルゴリズムを使用する。ＣＦＤモデリング及び他の３次元アルゴリズムモデリングへの多くのアプローチが存在するが、同じ基本的な３段階の手順がほとんど常に付随する。
【００１０】
前処理の間、問題のジオメトリ（物理的境界）が定義され、流体又は他の材料によって占有される体積が別個のセル又はノードに分けられる（メッシュ）。メッシュは、均一又は非均一であってよく、セル又はノードへのその分割は、シミュレーションの間に必要に応じてメッシュサイズを変更するよう適応されてよい。物理的モデリングは適切な方程式を用いて定義され、境界条件が定義される。ＣＦＤにおいて、これは、問題の境界での流体の挙動及び特性を特定することを伴う。過渡現象の問題に関し、初期条件がまた定義される。
【００１１】
プロセッシングにおいて、シミュレーションは開始され、方程式は、定常状態又は過渡状態として、セルごと／ノードごとに繰り返し解かれる。
【００１２】
最後に、ポストプロセッサが、結果として生じる解の解析及び視覚化のために使用される。
【００１３】
メッシュノード又は別個のセルごとのデータは、シミュレーションにおいて単一の要素として見なされ得る。
【００１４】
コンピュータシミュレーションの他の例は、個体がシミュレーションの要素として見なされ得るエージェントモデリング（エージェントベースモデリングとも呼ばれる。）である。
【００１５】
エージェントベースモデル（ＡＢＭ；Agent-Based  Model）（時々、マルチエージェントシステム又はマルチエージェントシミュレーションとの用語と関連する。）は、自律的なエージェントの行為及び相互作用を、それらがシステム全体に与える影響を評価する目的でシミュレートするための計算モデルである。多くのモデルにおいて、各々のエージェントは、個体（人、動物又は他の自律的な要素）である。個体の挙動をシミュレートするために、個体は、移動可能な位置及び他の個体を含む刺激に対するルールに基づく反応のような属性を与えられる。
【００１６】
シミュレーションの更なる例は粒子シミュレーションであり、通常は重力のような物理的な力の影響下で、粒子の動的システムをシミュレートする。各々の粒子は、そのようなシミュレーションにおいて単一の要素として見なされ得る。
【００１７】
それらのような計算機負荷の重いアプリケーションはしばしば、高性能のコンピュータシステムで実行され、よって、幾つかの発明実施形態のための重要なアプリケーションは、そのようなシステムのジョブスケジューリング及び管理である。そのような高性能コンピュータ（ＨＰＣ；High  Performance  Computer）システムはしばしば、実行ファイルのプロセッシングスレッドが並列に自立的に実行可能である複数のプロセッシングユニット又はコアが存在する分散環境を提供する。
【００１８】
プロセッサ能力及びメモリ量が変化する計算リソースのための使用において、メモリ及びプロセッサ機能のための異なる物理的配置並びにそれらの間の相互接続とともに、現在、ハードウェアの無数の構成が存在する。多数のそのような異なるハードウェア構成及び多数の異なるプログラミングモデルは高性能コンピューティングに適用可能である。高性能コンピューティングへの一般的なアプローチは現在のところクラスタシステムであり、夫々が１又はそれ以上のマルチコアプロセッサ（又は“チップ”）を有する複数のノードが高速ネットワークによって相互接続される。各々のノード（又は時々、各々のコア）は、それ自体のメモリ領域を有すると考えられる。クラスタシステムは、汎用関数を実行するために既存のコードライブラリを使用しながらソースコードを書く人間のプログラムによってプログラムされ得る。ソースコードは次いで、低レベルの実行コード、例えば、特定の命令セットを有するプロセッサタイプによって実行可能なＩＳＡ（Instruction  Set  Architecture）にあるコードへ、又は特定のプロセッサに専用のアセンブリ言語へコンパイルされる。しばしば、実行マシンコードへアセンブル又は（仮想マシンの場合に）アセンブリコードをインタープリトする最終段階が存在する。実行可能な形式のアプリケーション（時々、単に“実行ファイル”と呼ばれる。）はオペレーティングシステム（ＯＳ）の監督下で実行される。
【００１９】
複数のコアを有するコンピュータシステムのためのアプリケーションは、プログラムが複数のコアの並列プロセッシング能力を利用することを可能にするためにライブラリによって拡張された従来のコンピュータ言語（例えば、Ｃ／Ｃ＋＋又はＦｏｒｔｒａｎ）において記述されてよい。この関連で、コアで実行されている“プロセス”を参照することが有用である。
【００２０】
クラスタシステムにおいて、及び他の分散型メモリシステムにおいて、実行のマイグレーションはデータの同期化を必要とすることがある。
【００２１】
記載される本発明の理解を助けるよう、幾つかの関連の検討事項が、例としてシミュレーションを用いて、以下で説明される。
【００２２】
“固定数のプロセッサ”モデルは、分散される作業負荷、ジョブの優先度（すなわち、どれくらい緊急に結果が必要とされるか）及びジョグが実行されているシステムがシミュレーションの存続期間にわたって変わらないままであると仮定する。しかし、これは当てはまらないことがある。プロセスの数が変化し得る幾つかの例は、次のとおりである：
●分散並列アプリケーションは、センサネットワーク又は通信ネットワークをモニタするコンピュータプログラムであってよい。各々のプロセッサは、ネットワークの特定の部分からのデータを処理することに関与し、そして、実時間でこれを行うよう求められることがある。データ容量が（例えば、通信ネットワークに関して、ピーク期間の間）増大する場合に、アプリケーションが十分に高速にデータを処理し続けることができることを確かにするために、より多くのリソースが必要であり得る（オフピーク期間に必要とされるリソースはより少ない。）。
【００２３】
●代替の例として、適応有限要素シミュレーションにおいて、メッシュノードの数は、シミュレーションの間に１又はそれ以上の桁だけ変化し得る。この場合に、各プロセッサに割り当てられるノードの数は、シミュレーションのある段階でのプロセッサごとのハロ（halo）ノードの数と比較して非常に少なくなり、非常に高い通信対計算比をもたらす。この場合に、処理少ないプロセッサでシミュレーションを実行することは、より速くなる（通信は減る。）。
【００２４】
●あるいは、変更された優先度は、ＨＰＣシステムにおける所与のジョブへ余分のリソースを割り当てるか又は全体として新しいシステムへジョブを移動することを望ましいこととし得る。例えば、実時間の災害警報システムは、利用可能にされ得る限り多くのリソースを使用して結果の迅速なシミュレーションを必要としながら、突然の事象、例えば、地震がシステムを混乱させる場合に、それがシミュレートしている利用可能なリソースのごく一部において低い優先度で実行されることがある。同時に、他のジョブは、高優先度のジョブを優先するために、より小さいシステムへスケールダウンされるべきである。
【００２５】
●更に、ジョブに割り当てられるｎ個のプロセッサのうちの１つにおける不具合への応答は、（全体としてジョブを終了するのではなく）（ｎ−１）個のプロセッサで実行するよう実行をマイグレートすることであってよい。
【００２６】
このように、コンピュータプログラム自体の実行は、例えば、プログラム内の要因の出現又は外部の懸案により、同じシステム内の又は新しいシステムにおけるリソースの変化を必要とすることがある。
【発明の概要】
【発明が解決しようとする課題】
【００２７】
従って、異なる状況のために柔軟に使用可能であり且つマイグレーション及び任意に同期化の困難性を考慮する、コンピュータプログラムの実行をマイグレートする方法を提供することが望ましい。
【課題を解決するための手段】
【００２８】
本発明の第１の態様の実施形態に従って、
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
現在のパーティションデータを中間計算リソースへ送り、
前記中間計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法が提供される。
【００２９】
この実施形態に従って、３つの異なる組の計算リソースが使用される。すなわち、現在の計算リソース、中間計算リソース及び変更計算リソースである。柔軟且つ効率的なマイグレーションを可能にする異なるリソースの使用に係る利点が幾つか存在する。例えば、再パーティショニングのためのリソースは、特に再パーティショニングのタスクのために、選択され得る。また、再パーティショニングのタスクは、プロセス自体を実行するよう割り当てられるリソースにおいて貴重な計算時間を占めない。最後に、マイグレーション方法論は、パーティショニングがマイグレーションのためのプロセスと完全に別個に実行される場合に、より簡単であり得る。
【００３０】
分散並列アプリケーションを異なる数のプロセスへ移動することにおける幾つかの技術的な課題は、その挙動の変化後にどこでアプリケーションを実行することが最も適切であるかを特定すること、アプリケーションデータを再パーティショニングすること（すなわち、どのデータがどのプロセスに置かれるかを決定すること）、新しい位置を反映するようデータをあちこち移動すること、及びアプリケーションが持続することができるようにマイグレーション後にアプリケーションを同期化することである。アプリケーションの進捗に対する中断が可能な限り少ないことを確かにするようマイグレーション時間を最小限とすることは、高度に有利である。これは、システムにわたってデータを再パーティショニングする（及び場合に、よりデータをその新しい場所へ送る）プロセスが時間を要することがあるので、分散型メモリシステムにおいて（又は、シミュレーションが１のシステムから他のシステムへ移される場合に）特に重要である。
【００３１】
幾つかの最新のシステムでは、アプリケーションは停止される必要があり、各プロセスからのデータは１つの場所において統合されてファイルに書き込まれる（チェックポインティング）。新しいアプリケーションが次いで、チェックポイントが行われたデータから開始され、そして、データが統合され、出力ファイルが書き込まれ、アプリケーションが待ち行列システムを介して再実行され、新しいリソースが初期化され（主に、如何にして離礁可能なリソースにわたって問題を分配するかを計算する。）、出力ファイルがアプリケーション起動するよう再度読み出される間に遅延をもたらす。
【００３２】
発明者によって開発された未公表の関連技術では、このデッドタイムは、アプリケーションが、移動先のシステムが利用可能となるまで且つそのシステムが起動フェーズを実行する間、元のシステムで実行され続けることを可能にすることによって、短縮される。このように、継続される計算は、実行が新しいシステム（すなわち、他の変更計算リソース）で継続することを可能にするよう情報の通信と重なり合う。従って、古いシステムでの計算の停止と新しいシステムでの再開との間の時間インターバルは最小限とされる。また、チェックポインティングよりむしろ、その場合には、状態データが新しいシステムへ直接送られ、ファイルの読み出し及び書き込みの必要性は除かれる。
【００３３】
発明者は、残っている問題が、如何にして（及びどこで）最適にデータをパーティショニングするかであると認識していた。関連技術は、新しいリソースが割り当てられるべき場合に、それらが、実行が古いリソースから切り替えられる前にパーティショニングを実行することを提案する。これは、このシステムは利用可能になる場合に即座にシミュレーションの実行を開始することができない点で、大きな欠点を有する。この問題は、超並列システムがアプリケーションのデータをパーティショニングするために効率的に使用され得ないために深刻化する。すなわち、単一の大規模メモリＳＭＰ（Symmetric  MutiProcessor）ノードは、多くのシン（thin）ノードよりもそのような問題に適している可能性がある。代替的に、アプリケーションの実行が既存のリソースの一部で継続すべき場合に、その実行は、パーティショニングが実行される間、一時停止される。そのような一時停止によって引き起こされる遅延は、チェックポインティングによって引き起こされる遅延よりも小さいことは確かであるが、依然として大きい。
【００３４】
発明実施形態は、増加した計算リソースが現在可能であるよりも速く使用から外されるか又はストリーム上に持ち出されることを可能にする。よって、例えば、情報の急増が現在のリソースによっては処理不可能な即時プロセッシングを必要とする如何なるアプリケーションも、本発明から恩恵を受けることができる。同じく、計算リソースの効率的な使用が本発明によって推進され得る。これは、１つのプロセスのプロセッシング要求において落ち込みがある場合に、計算リソースが他のプログラムによる使用のために有効に解放され得るためである。
【００３５】
通信フェーズの後、実行は、該実行が現在のリソースから変更リソースへ切り替わるように変更リソースで再利用することができる。
【００３６】
中間計算リソースの使用は、以前に順次実行されたプロセスの間の時間オーバラップを可能にすることができる。一実施形態において、前記新しいパーティションデータの計算は、前記現在の計算リソースによる継続的な実行と時間において重なる。追加的に、又は代替的に、前記新しいパーティションデータの計算は、前記変更計算リソース内の新たなリソースの割り当てと時間において重なる。
【００３７】
変更リソースは他のジョブを実行しており、従って、直ぐに利用可能でないことがある（たとえ他のジョブが停止又は移動されるべきであるとしても、これを行うプロセスは即時でないことがある。）。これは中間リソースにも当てはまる。しかし、中間リソースはより小さい（それらのための潜在的な場所はより多く存在する）と期待されるので、それらがより速く解放され得、変更リソースが利用可能となる場合に備え始めることができる可能性がある。
【００３８】
発明実施形態の方法は、計算リソースの多種多様な構成による使用に適するが、幾つかの構成は、プロセスを実行するのに特に適し、他（異なる構成を有する。）は、再パーティショニングにより適する。一実施形態において、前記現在の計算リソース及び前記変更計算リソースは、分散型メモリ計算リソースを有し、前記中間計算リソースは、共有型メモリ計算リソースを有する。例えば、前記中間計算リソースはＳＭＰノードを有してよい。
【００３９】
ＳＭＰノードは、大規模メモリサイズを有し、おそらくは、標準の“シン（thin）”ノード（例えば、ＧＰＧＰＵ（General-Purpose  Graphics  Processing  Unit）であってよい。）又はそれどころか、ＧＰＧＰＵアクセラレータにより拡張されたＣＰＵよりも多くのコアを含む“ファット（fat）”又は大規模ノードであってよい。よって、“ファット”ノードは、多数のメモリ及び多数のプロセッシングコアを備えたＣＰＵであってよく、それは場合により、コプロセッサ（例えば、ＧＰＧＰＵ又はインテルＸｅｏｎ  Ｐｈｉ）を介して加速されてよい。
【００４０】
この場合に、“大規模（large）”は、“シン”ノードにおけるメモリの量と比較される。ＳＭＰノードは、現在の計算リソース及び／又は変更計算リソースのノードで利用可能なメモリの１０倍、５０倍又は１００倍のメモリを有してよい。一例において、どれくらいより多くのノードごとのメモリがそのようなノードで利用可能であるかは、中間リソース及び現在のリソースの相対的なサイズに依存してよい。例えば、パーティションデータのサイズが１００ＧＢであり、現在のリソースに１００個のノードがある場合は、それらの各々は、パーティションデータを扱うために１ＧＢのメモリを必要とする。しかし、１０個のノードしか再パーティショニングに使用されるべきでない場合は、それらの各々は少なくとも１０ＧＢの利用可能なメモリを有する必要がある（１つのノードが使用されるべきでない場合は、そのノードは１００ＧＢのメモリを必要とする。）。
【００４１】
本発明の幾つかの実施形態はまた、中間リソースを選択する方法を提供する。前記中間計算リソースは、再パーティショニングを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される。前記実行情報は、利用可能な計算リソースと、パーティショニングの実行レートに対するそれらの影響とに関する情報を含んでよい。
【００４２】
本発明の幾つかの実施形態は、追加的に、又は代替的に、変更リソースを選択する同様の方法を提供する。前記変更計算リソースは、前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき実行に適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される。先と同じく、前記実行情報は、利用可能な計算リソースと、実行レートに対するそれらの影響とに関する情報を含んでよい。
【００４３】
一方又は両方の場合において、前記構成は夫々、計算リソースの複数のカテゴリの夫々において利用可能な計算リソースの量及び／又はタイプのインジケーションを含んでよく、前記実行情報は、前記複数のカテゴリの中の少なくとも１つのカテゴリにおける計算リソースについて、当該カテゴリにおける計算リソースのどれくらい異なる量及び／タイプが実行レートと相関するかのインジケーションを符号化するスケーラビリティマトリクスを含むアプリケーション実行スケーラビリティ情報の形をとってよい。有効に、前記マトリクス（及び他の表現）における前記実行情報は、異なる構成を使用するタイミングの意味を明示するために使用され得る。
【００４４】
前記スケーラビリティマトリクスは、計算リソースの前記複数のカテゴリの夫々と実行レートとを含む複数の係数の中の係数の対ごとにエントリを含み、該エントリは、当該係数の対の中の第２の係数の異なる量／タイプを表す線形スケールに沿った比例変化に関して、前記第２の係数の必要とされる量／タイプに対する当該係数の対の中の第１の係数の異なる量／タイプの使用を表す線形スケールに沿った比例変化の効果を表す。
【００４５】
発明実施形態は、共有型メモリ構成及び分散型メモリ構成において有効であるが、特に、分散型メモリ環境によく適する（その中間リソースは、共有メモリを用いる一部であってよく、あるいは、やはり分散メモリを使用してよい。）。上述されるプロセスマイグレーション方法において、夫々のプロセスは、前記計算を実行する単一のプロセッシングユニットと、前記計算のためのプロセスデータを記憶するためのメモリの単一の領域とを含む個々の現在の計算リソース及び変更計算リソースを使用してよい。メモリ領域は、各プロセッシングユニットと異なってよい。前記プロセッシングユニットは、分散型メモリ計算システムにおけるマルチコアプロセッサのコア又はノード若しくはプロセッサであってよい。
【００４６】
夫々のプロセスは、１つの反復計算（例えば、シミュレーションの１メッシュノードに対応する）を含んでよく、あるいは、それは、１よりも多い計算を含んでよい（例えば、夫々のプロセスがシミュレーションの１よりも多いメッシュノードについて、リンクされた計算を実行するように）。
【００４７】
いずれの場合にも、分散型メモリシステムでは、リンクされた計算の組の間で必要とされる通信の量が多いので、リンクされた計算を１よりも多いプロセッシングユニットにわたって広げることを回避することが重要であり得る。
【００４８】
マイグレーションは、プロセスへの計算の割当を示すパーティションデータの通信を含む。パーティションデータは、現在のリソースから中間リソースへ送信される。現在のパーティションデータが受信されると、プロセスは変更リソースの間で分けられてよい。パーティションデータの受信の間又はその後にプロセス間の計算の再分割（再パーティショニング）がある（なお、新しいシステムへのマイグレーションがあるが、利用可能なリソースの量の変更がない場合に、再パーティショニングは効果を有さない。）。それらのいずれのステップも、現在のリソースにおける計算と重なることができる。
【００４９】
幾つかの実施形態において、前記中間計算リソースは更に、前記新しいパーティションデータのマイグレーションの前に個々の変更計算リソースへのプロセスのマッピングを提供するために使用される。望ましくは、マッピングは、新しいパーティショニングデータと同時に変更リソースへ転送される。
【００５０】
望ましくは、同期化がマイグレーション／再パーティショニングに続く。同期化は、プロセス間の同期化を提供するあらゆる通信を含む。それは、例えば、マイグレートされた計算に関連する時間依存のプロセスデータの通信であってよく、該通信は現在のリソースと変更リソースとの間で行われる。
【００５１】
初期化は、マイグレーション及び同期化の間に新しいリソースをセットアップすることを含むことができ、それにより、プロセスは変更リソースで継続することができる。初期化／セットアップは、例えば、メモリにおいて必要とされるデータ構造をセットアップすることと、直接に通信されないあらゆる従属変数の値を計算することと含んでよい。
【００５２】
発明実施形態に従って、同期は、新しいグループデータと現在のグループデータとの間に必要とされてよい（グループデータは事実上、並列プロセスのグループに含まれる全てのプロセスに属するメモリにおけるデータである。）。同期化は、全ての新しい（マイグレートされた）データ及び現在のデータについてでなくてよい。例えば、ほんの一握りのプロセスしかシミュレーションの１範囲において更なる詳細を与えるために分割されない場合に、同期化は、より詳細にモデリングされている範囲と、潜在的にその範囲の周りの限られた範囲としか考慮しなくてよい。
【００５３】
望ましくは、同期化は、コンピュータプログラム又はアプリケーションによって必要とされる如何なる形もとり得る状態データの通信を含む。語“状態データ”は、各々のプロセスについてメモリにおいてアプリケーションによって保持される時間変化データを指す。よって、全てのプロセスについての累積状態データはグループデータを構成する。メッシュに基づくシミュレーションに関し、それは、特定のプロセッサ（特定のプロセスに関与する。）によって“所有”される各メッシュ点での夫々の変数の値であってよい。粒子に基づくシミュレーションに関し、それは、各々の所有される粒子の現在の位置及び速度であってよい。
【００５４】
同期化は、コンピュータプログラムの部分として又は外部のプロセスとして実行され得る。コンピュータプログラムが同期化機能を含む場合は、この機能は、同期化が全ての計算の１インスタンスの終わりに実行されるように計算と関連付けられてよい。
【００５５】
幾つかの発明実施形態は、マイグレートされた計算に関連する状態データの通信を用いた、マイグレートされた実行の同期化を含み、前記通信は、前記現在の計算リソースと前記変更計算リソースとの間で行われる。状態データ転送は再パーティショニングの後に行われ得る。すなわち、状態データは、継続される計算の間に変化する可能性があり、故に、その転送は、有利に、再パーティショニングの後且つ前記変更計算リソースにおける実行の開始の直前に行われる。
【００５６】
幾つかの特定の場合において、前記同期化は、望ましくはその中に埋め込まれるか又はラッパーの形をとる、前記計算を実行する求解機と関連付けられる。
【００５７】
前記計算がループにおいて実行される求解機の逐次代入である場合に、同期化は、１つのループの終わりに実行されてよく、望ましくは、（インテグリティチェックとしての）結果の比較と共に、前記現在の計算リソース及び前記変更計算リソースの両方において次のループのための計算を実行することを含む。
【００５８】
代替的に、現在のリソースがもはや使用されるべきでない場合は、反復計算／シミュレーションループにおける同期化された位置に対応する受信された状態データから変更リソースで実行を再開すれば十分であり得る。
【００５９】
計算は夫々、センサネットワークにおけるセンサ若しくはノード、又は通信ネットワークにおけるエンティティのような、コンピュータプログラムにおける単一の要素又は要素のグループに対応してよい。上述されたように、発明実施形態のプログレスマイグレーション方法において使用される望ましいコンピュータプログラムタイプの１つは、シミュレーションプログラムである。よって、各々の要素は、メッシュシミュレーションのメッシュノードの集合、エージェントシミュレーションの１以上のエージェント、又は粒子シミュレーションの１以上の粒子に対応してよい。
【００６０】
実行の移動は、プロセスへの計算の割当の変更なしで、単にプロセスを新しいリソースへ移動してよい。しかし、他の実施形態においては、プロセス間の計算の割当は変更されてよい。よって、プロセスが予め２つのリンクされた反復計算を含んだ場合は、それらのうちの１つはマイグレーションの間に異なるプロセスへ移動されてよい。反対に、予め単一の計算を含んだプロセスのみが、２以上のリンクされた計算を有して単一のプロセスを形成するよう、マイグレーションの間に他のプロセスと融合され得る。
【００６１】
代替的に、又は追加的に、マイグレーションは、プロセスの数を変更するように実行ファイルにおける全体的な計算数が（例えば、要素を加えるか又は減らすよう）変更される時点で、行われてよい。例えば、シミュレーションにおいて、更なる詳細は、シミュレーションの一部のために、その位置でのより細かいメッシュの生成を伴うように必要とされることがある。
【００６２】
よって、マイグレーションは、計算数が変更される場合に、及び／又はプロセスへの計算の分割の変更によって、プロセスの数の増加又は減少を可能にすることができる。
【００６３】
プロセスの数の増加及び減少の選択は、コンピュータプログラムの計算リソース要求が増大したか又は減少したかに応じて行われ得る。代替的に、ユーザは、実行の開始時に及び／又はマイグレーションのために、コンピュータプログラムが実行されるプロセスの数を特定してよい。
【００６４】
発明実施形態の方法は、リソースを増加／減少するのか又は維持するのかに制限されず、完全に新しいシステムへ移動するために使用され得る。発明実施形態における前記現在の計算リソースと前記変更計算リソースとの間の関係は、如何なる適切な関係であってもよい。例えば、変更リソースは現在のリソースの下位集合又は上位集合であってよく、あるいは、変更リソースは、現在の計算リソースと同じか又はそれよりも多い若しくは少ない容量を備えた完全に新しいリソース（例えば、異なるコンピュータシステムのリソース）であってよい。
【００６５】
方法が適用される関心のある特定の場合が３つある。すなわち、利用可能なプロセス（例えば、同じシステムにある）の数の増加、利用可能なプロセス（例えば、同じシステムにある）の数の減少、及び異なるシステムへのマイグレーション（使用されるリソースが増加又は減少している、例えば、異なるサイズのシステムへのマイグレーション）である。そのようなマイグレーションの全ては、たとえマイグレーションが異なるシステムに対するものであっても、自動であってよい（この場合に、例えば、新しいシステムへログオンすることによって、ユーザの介入の必要性はないと考えられる。）。
【００６６】
発明実施形態の方法は、それらの異なるマイグレーションシナリオの全てを満足させる。それは、シナリオ間の選択を含んでよい（これは、使用されるリソースを変更するとの決定の部分であってよい。）。決定及び選択は、例えば、コンピュータプログラムの又は他のコンピュータプログラムの変化するリソース要求に従って、自動的に行われてよい。よって、ジョブスケジューラは、予め定義されたルールに従って、決定及び／又は選択を行ってよい。代替的に、ユーザ入力が、例えば、システム内の１つのジョブを他のジョブよりも優先することによって、選択を左右又は決定するよう提供されてよい。任意に、選択は、コンピュータプログラムのリソース要求に従って行われる。
【００６７】
このように、方法は、使用されるリソースを変更すると最初に決定し、前記使用されるリソースを増やすことと、前記使用されるリソースを減らすことと、異なるリソースへ移動することとの間で選択を行うことを更に含んでよく、異なるリソースへ移動することは、前記使用されるリソースの増加、減少又は維持を含むことができる。また、中間リソースは、現在のリソース及び／又は変更リソースからの同じ又は異なるシステムの部分であってよい。従って、発明実施形態は、全てのリソース変更シナリオにおいて十分な柔軟性を提供することができる。
【００６８】
発明実施形態はまた、必要に応じてユーザ入力を可能にしてよい。例えば、ユーザは、マイグレーション自体；新しい及び／又は中間の計算リソースの選択；マイグレートするとの決定をトリガするジョブ優先度若しくは他の入力；前記コンピュータプログラムが実行するプロセスの数、及び／又は前記中間計算リソース及び／又は変更計算リソースのための性能目標（例えば、実行に関連した性能目標）を特定してよく、前記性能目標は、計算リソースの選択において使用される。
【００６９】
本発明の更なる態様の実施形態に従って、プロセスマイグレーションを実行するよう動作するコンピュータシステムであって、
インターコネクトを介して接続されている現在の計算リソース、中間計算リソース、及び変更計算リソースを有し、
前記現在の計算リソースは、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行するよう構成され、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記インターコネクトは、現在のパーティションデータを前記中間計算リソースへ送るよう構成され、
前記中間計算リソースは、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算するよう構成され、
前記インターコネクトは更に、前記変更計算リソースが前記実行を引き継ぐことができるように、前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される、
コンピュータシステムが提供される。
【００７０】
本発明の更なる態様の実施形態に従って、システム内の中間計算リソースであって、前記システムが、インターコネクトを介して接続される、当該中間リソースと、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行し、夫々の並列プロセスが少なくとも１つの計算を実行する現在の計算リソースと、変更計算リソースとを有し、プロセスマイグレーションを実行するよう動作する、中間計算リソースにおいて、
前記インターコネクトから現在のパーティションデータを受け取り、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記変更計算リソースが前記実行を引き継ぐことができるように前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される中間計算リソースが提供される。
【００７１】
本発明の更なる態様の実施形態に従って、
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、パーティショニング前の計算リソースを選択し、
現在のパーティションデータを前記パーティショニング前の計算リソースへ送り、
前記パーティショニング前の計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法のためのパーティショニング前の計算リソースの選択方法が提供される。
【００７２】
この態様において、再パーティショニング計算リソースは必ずしも、現在の計算リソース及び変更計算リソースと異なるものに制限されない。例えば、“ファット”ＳＭＰノードが利用可能でない場合は、パーティショニングのために変更計算リソースを使用することが適切であり得る。この場合に、パーティションデータの通信は同じシステム内であってよい。
【００７３】
コンピュータシステムは、必要とされるプロセスの数（又はプロセスの数が計算され得るためのデータ）のようなデータをユーザが入力するためのグラフィカルユーザインターフェースＧＵＩと、例えば、結果の視覚化のためのスクリーン及び／又は印刷された結果を提供するためのプリンタの形をとる出力手段とのような他の構成要素を更に有してよい。
【００７４】
更なる態様に従って、分散型メモリコンピュータシステムのような計算装置にロードされる場合に、該計算装置を、上記の方法定義のいずれか又はそのいずれかの組み合わせに従って方法ステップを実行するよう構成するプログラムが提供される。
【００７５】
本発明の異なる態様の何れかの特徴及び副次的特徴は自由に組み合わされてよい。例えば、コンピュータシステムの望ましい実施形態は、方法の１又はそれ以上の１以上の望ましい特徴に対応する機能を組み込むよう構成されてよい。選択方法の特徴は、マイグレーション方法の特徴及び副次的特徴と組み合わされてよい。
【００７６】
本発明は、コンピュータハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせにおいて実施され得る。本発明は、コンピュータプログラム又はコンピュータプログラムプロダクト、すなわち、１以上のハードウェアモジュールの動作による実行のために又はそれらの動作を制御するために情報担体において、例えば、機械により読み取り可能な記憶装置において又は伝播される信号において有形に具現されるコンピュータプログラムとして実施され得る。
【００７７】
コンピュータプログラムは、コンピュータプログラム部分又は１よりも多いコンピュータプログラムの形をとることができ、コンパイル又はインタープリトされた言語を含む如何なる形式のプログラミング言語においても記述され得、それは、スタンドアローンのプログラムとして又はモジュール、コンポーネント、サブルーチン、若しくはデータ処理環境における使用に適した他のユニットとして、を含む如何なる形態でも開発され得る。コンピュータプログラムは、１つのモジュールで、あるいは、１つのサイトにあるか又は複数のサイトにわたって展開されて通信ネットワークによって相互に接続される複数のモジュールで実行されるよう開発され得る。
【００７８】
本発明の方法ステップは、入力データに対して作用して出力を生成することによって本発明の機能を実行するようコンピュータプログラムを実行する１又はそれ以上のプログラム可能なプロセッサによって実行され得る。各々のプロセッサは１又はそれ以上のコアを有してよい。
【００７９】
コンピュータプログラムの実行に適したプロセッサには、一例として、汎用及び特別目的の両方のマイクロプロセッサと、あらゆる種類のデジタル又はバイロジカルコンピュータのいずれかの１又はそれ以上のプロセッサとがある。一般に、プロセッサは、読み出し専用メモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受け取る。コンピュータの必須要素は、命令及びデータを記憶する１又はそれ以上のメモリ装置へ結合される、命令を実行するためのプロセッサである。
【００８０】
本発明は、特定の実施形態に関して記載される。他の実施形態は、特許請求の範囲の適用範囲内にある。例えば、本発明のステップは、異なる順序において実行され、依然として望ましい結果を達成することができる。
【００８１】
望ましい実施形態に従う装置は、特定の機能を実行するよう構成され、動作し、又は配置されるように記載される。この構成又は配置は、ハードウェア若しくはミドルウェア又は何らかの他の適切なシステムの使用によってよい。望ましい実施形態において、構成又は配置はソフトウェアによる。
【００８２】
ここで、本発明は、図面に示される具体的な限定されない実施形態を参照して記載される。
【発明の効果】
【００８３】
本発明の実施形態によれば、異なる状況のために柔軟に使用可能であり且つマイグレーション及び任意に同期化の困難性を考慮する、コンピュータプログラムの実行をマイグレートする方法を提供することが可能となる。
【図面の簡単な説明】
【００８４】
【図１】オンザフライのマイグレーションの概観図である。
【図２】現在のリソース、中間のリソース及び新しいリソースの概略図である。
【図３Ａ】発明実施形態と関連技術との時間比較である。
【図３Ｂ】発明実施形態と関連技術との時間比較である。
【図４】コンピュータプログラムの分散実行の概略ハードウェア図である。
【図５】スケーラビリティマトリクスである。
【図６】時間に対するスケーラビリティマトリクスの変化を示す。
【図７】インターコネクトによってリンクされるコンピュータシステムのノードを示すハードウェア図である。
【図８】図７におけるリソースのブロックの概観である。
【図９】現在の計算リソース、中間計算リソース、変更計算リソースの間の通信の図である。
【発明を実施するための形態】
【００８５】
本発明の望ましい実施形態は、異なるシステム間で、又は同じシステムにおける異なる数のプロセッサ間で実行中のシミュレーションを移動するプロセスの間のデータのマイグレーションを管理する。よって、アプリケーションは、高性能コンピューティングの分野において、特に、ジョブスケジューリング及び管理において、多くの用途を見出す。
【００８６】
図１は、如何にして本発明の実施形態が自動車に対する気流のシミュレーションをシステムＡでの実行からシステムＢでの実行へ移動することができるかを示す概観図である。移動は、シームレスなオンザフライのマイグレーション及び同期化と呼ばれる。中間計算リソースの使用により、シミュレーションプロセスを、それをシステムＡからシステムＢへマイグレートするために完全に停止することは、不要である。
【００８７】
図２は、中間リソース２０を用いた現在のリソース１０から変更リソース３０へのアプリケーションの実行の移動を示す時間に基づく概略図である。３つのリソースは別々に表されているが、同じシステムの部分であってよい。時間Ｔ１で、実行は現在のリソース１０にある。次いで、マイグレーションがトリガされる。幾つかの起こり得るトリガは、次のとおりである：
●実行中のアプリケーションは、自身がより多くの（又はより少ない若しくは異なる）リソースを必要とすると認識し、要求をシステムへ送信する。
【００８８】
●システムは、アプリケーション自体をモニタし、それが他の場所でより効率的に実行され得ると特定する。
【００８９】
●ユーザによる介入（例えば、優先順位の変更が、場合により、予期しない事象の後に、一組のリソースから他へのアプリケーションの移動を要求する。）。
【００９０】
トリガに応答して、要求が再パーティショニング及び新しいリソースへの割当のために生成される。要求は略同時に作られてよい。例えば、時間Ｔ２で、パーティションデータが中間リソース２０へ送信され、新しいリソースが割り当てられる。時間Ｔ３で、現在のリソースでの実行が停止する。時間Ｔ４で、変更リソース３０での実行が再開する。
【００９１】
同期化（現在のリソースから新しいリソースへの状態データの転送を含む。）は示されていないが、現在のリソースからの状態データが新しいリソースのパーティショニングの後に利用可能であり且つ実行が開始することができるように行われ得る。
【００９２】
その存続期間の大部分の間、実行はループ形式で動作していると想定され、ループ（例えば、（非）線形ソルバーにおける時間ステップ又は反復）を通る夫々のパスにおける作業フローは同様である。マイグレーション及び同期化は、ループの終わりに行われる。同期化プロセスは自動化され得る。自動化は、求解機（ソルバー）内に埋め込まれても、又はソルバーの挙動を制御することができるラッパーの形をとってもよいが、その一部である必要はない。
【００９３】
発明実施形態のアルゴリズムの全般的な概観が図３で示されている（略正寸のタイミングによる）。図３は、発明実施形態と関連技術のプロセスとを比較する。関連技術のプロセスと比較される新規のステップは共通のボックスに含まれる。
【００９４】
いずれの場合にも、計算は古いリソースから新しいリソースへ移動される。計算は、ステップＳ１０において時間Ｔ＝０で領域Ａから開始する。Ｔ＝Ｊでの経過時間Ｊ後、マイグレーションが開始する。
【００９５】
最初に関連技術のプロシージャについて検討すると、計算はステップＳ１０において領域Ａで継続する。新しいリソースはステップＳ２０で要求され、新しいリソースがステップＳ４０で割り当てられる前にステップＳ３０において遅延が存在する。よって、新しいリソースの割当は時間Ｋを要する。ステップＳ５０で、新しいリソースはパーティションの形で領域Ａからデータを受け取り、ステップＳ６０で、新しいリソースは新しいパーティションを計算する。よって、再パーティショニングは時間Ｌを要する。最後に、ステップＳ７０で、新しいリソースは状態データを受け取ってセットアップし、この同期化は時間Ｍを要する。このように、新しいリソースに対する要求後、計算がステップＳ８０において領域Ｂから開始する前に、時間Ｔ＝Ｋ＋Ｌ＋Ｍが経過する。
【００９６】
関連技術のプロセスは、継続される実行とマイグレーション及び／又は同期化との間にオーバラップを提供する。
【００９７】
対照的に、発明実施形態に従って、新しいリソースの割当とマイグレーション及び継続される実行との時間におけるオーバラップが可能となる。実行は時間Ｔで開始し、その経過時間はＪであり、ステップＳ１００で新しいリソースに対する要求がある。この実施形態では、領域Ａにおいて継続される実行（ステップＳ９０）は、中間システムにおけるパーティショニングと重なる。このとき、中間リソースが割り当てられ（ステップＳ１１０）、パーティションデータが領域Ａから受け取られ（ステップＳ１２０）、新しいパーティションが計算されて、領域Ｂがセットアップされる（ステップＳ１３０）。また、ステップＳ１４０における遅延と、ステップＳ１５０における新しいリソースの割当とを含む新しいリソースにおけるプロセッシングとのオーバラップが存在する。ステップＳ１６０で、新しい状態データは受け取られ、ステップＳ１７０で、計算が領域Ｂから再開する。
【００９８】
パーティションの通信及び状態データの通信に加えて、どこにデータが送信されるのかを決定するマップが計算されてよい。同期化ステップの考えは、古いシステム及び新しいシステムにおけるメモリの内容が一貫性を有することを確かにすることである。計算は、新しいシステムを初期化している間、古いシステムで継続するので、適切な時点で同期化する必要がある（パーティションデータと同時に状態データを送信しない。）。同じく、実行は、依然として古いシステムで実行されている間、新しいシステムで開始しない（後述されるように同期化のためでない限り。）。これは計算作業を繰り返す。
【００９９】
新しい方法は関連技術よりも遅くなり得ないことが図３から分かる（中間システムが少なくとも新しいシステムと同じくらい速く利用可能にならない場合は、新しいシステムは関連技術において見られるようにパーティションを行ってよい。）。多くの場合に、中間システムは新しいシステム又は古い（現在の）システムのいずれかよりもずっと小さいので、適切な中間リソースは即座に利用可能であるべきであり、これは（より適切なリソースでの重なり合ったデータパーティショニング及び／又はより高速なパーティショニングから）関連技術と比較して時間の節約をもたらす。
【０１００】
図４は、ｎ＋１回のプロセスを例示する概略図を示す。特に、プロセス０及びプロセス１と呼ばれる、そのうちの２つのプロセス（６０）が示されている。各々のプロセスは、単一のプロセッシングユニット又は要素（７０）及びメモリ（８０）を含む個々のリソースを使用する。プロセッシングユニット（７０）は入力／出力ユニット（９０）へ接続されており、全てのプロセスはインターコネクト（１００）を用いて相互接続されている。
【０１０１】
１つの具体的な実施形態において、各々のプロセスは、図示されるように、単一のリソースブロックで行われる作業のスレッドである。各々のプロセスは少なくとも１つの計算を“所有”し、複数のリンクされた計算を所有してよい。例えば、シミュレーションの場合に、プロセスは、複数の隣接したメッシュノードに係る計算を含むことができる。隣接したノードからのデータは通常問題になっている計算に必要とされるので、このように隣接したメッシュノードに係る計算をグループ化することは有利であり得る。
【０１０２】
ノードは、再パーティショニングにおいてプロセス間で再割り当てされる。再パーティショニングの一例が以下で説明される。
【０１０３】
インターバル０≦ｘ≦１で均一に間隔をあけられた１０１個のノードを含むメッシュによる一次元の問題を想定する（すなわち、各々のノードは、その最も近い隣接ノードから０．０１離れている。）。ノードは、ｘ＝０でのノード０からｘ＝１でのノード１０１まで順次に番号を付されている。問題は最初に２つのプロセッシングユニットで実行される。メッシュは最初に、プロセス０が範囲０≦ｘ≦０．５にある全てのノードに関与し（それらのノードを“所有”し）、プロセス１が範囲０．５≦ｘ≦１にある全てのノードを所有するように、分けられる。故に、プロセス０はメモリにおいてノード０から５０までにある変数の値に関する情報を保持し、プロセス１はメモリにおいてノード５１から１０１までにある変数の値に関する情報を保持する。便宜上、プロセス０はまた、メモリにおいてノード５１にある変数の値に関する情報のコピーを保持し（“ハロとして所有”し）、プロセス１はノード５０をハロとして所有する。これは、それらのノードがプロセスによって所有されるノードに最も近い隣接ノードであり、データがそれらの所有されるノードでのデータを更新するために必要とされる可能性があるためである。
【０１０４】
ここで、シミュレーションがそれらのノードで実行されるようマイグレートされるべきであると仮定する。再パーティショニングステップは、メッシュのどの部分が新しいプロセスの夫々によって所有されるかを決定する。故に、新しいプロセス０（古いプロセス０と同じプロセッサであってもなくてもよい。）は範囲０≦ｘ＜０．３３（すなわち、ノード０〜３３）に関与し、ノード３４をハロとして所有してよく、新しいプロセス１は０．３３＜ｘ≦０．６７（すなわち、ノード３４〜６７）に関与し、ノード３３及び６８をハロとして所有してよく、新しいプロセス２は０．６７＜ｘ≦１（すなわち、ノード６８〜１０１）に関与し、ノード６７をハロとして所有してよい。
【０１０５】
新しいパーティションは、それがより多くのプロセスにわたって計算を広げるので、より多くのハロとして所有されるノードを生じさせる。しかし、プロセスを広げることは、同じ計算のためのより大きいリソースの使用を可能にする。再パーティショニングの前に、プロセッシングユニットの最大数は２つであったが、これは再パーティショニングにより３つになる。
【０１０６】
この再パーティショニングの結果として、古いプロセス０はノード０〜３４についての状態データを新しいプロセス０へ、そしてノード３３〜５０についての状態データを新しいプロセス１へ送信しなければならず、古いプロセス１はノード５１〜６８についての状態データを新しいプロセス１へ、そしてノード６７〜１０１についての状態データを新しいプロセス２へ送信しなければならない。
【０１０７】
図５は、中間計算リソース及び／又は変更計算リソースを選択するために使用され得るスケーラビリティマトリクスを示す。スケーラビリティマトリクスは、アプリケーション実行スケーラビリティ情報を表すための簡単、コンパクト且つ効率的なフォーマットである。スケーラビリティマトリクスは、時間（又は実行レート）と計算リソースの少なくとも１のカテゴリとを含む実行変数の各対についてのエントリを含む。エントリは、アプリケーションを実行するために必要とされる対の他方の量又はタイプに対する対の一方の量又はタイプを変更する影響を表す。従って、非ゼロのエントリは、一方の実行変数と他方との間の何らかの相関関係又は結合を表す。実行の開始時に、スケーラビリティマトリクスはアプリケーションによって取得されてよい。代替的に、スケーラビリティマトリクスは、データベースのようなサードパーティモジュールから読み出されてよい。
【０１０８】
スケーラビリティマトリクスは、実行変数間の一次的な（すなわち、線形な）関係を表してよく、あるいは、より複雑な関係を表すために実行変数対ごとに１よりも多いエントリを含むよう構成されてよい。この例では、一次スケーラビリティマトリクスが考えられている。例となる一次スケーラビリティマトリクスは次の特性を有する：
−それは正方且つ対称である；
−１つのエントリは常に実行時間（又は実行レート）である；
−全ての他のエントリは計算リソースのカテゴリ（例えば、ＲＡＭ、ＣＰＵコア、ノード、等）である；
−エントリ（Ｉ，Ｊ）は、スケーリング係数の形で状態変数Ｊの実行時間又は状態変数の依存関係Ｉを含む。
【０１０９】
図５のマトリクスは、例となる一次スケーラビリティマトリクスである。マトリクスは、実行時間（ＴＩＭＥ）と、４つの状態変数、すなわち、ハードディスクドライブ（ＨＤＤ；Hard  Disc  Drive）の性能（ＨＤＤ）、メモリサイズ（ＲＡＭ）、ＣＰＵソケットごとのコアの数（Ｃｏｒｅｓ）及びノードの数（Ｎｏｄｅｓ）とを含む。ＨＤＤ、ＲＡＭ、Ｃｏｒｅｓ及びＮｏｄｅｓは計算リソースのカテゴリの例である。具体的に、それらは、そのカテゴリのリソースのタイプ又は量がアプリケーションの実行における使用のために選択され得る計算リソースのカテゴリである。
【０１１０】
最初の行は、どのように実行時間が状態変数に依存するかを示す。図５の例では、ＨＤＤ性能又は利用可能なＲＡＭの変更は実行に影響しないとの事実が、“０”エントリによって表されている。他方で、実行時間は、コアの数及びノードの数によって多いに影響を及ぼされる。“１”又は“−１”の値は完全なスケーラビリティを表し、負の符号は減少を示す。例えば、コアについての“−１”の値は、コアの数が２倍になると実行時間が半分になるという事実を示す。
【０１１１】
２番目の行は、ＨＤＤ性能と残りの実行変数との間の結合が存在しないことを示し、一方、３番目の行は、利用可能なＲＡＭの量が完全にノードの数により増減することを示し、例えば、ノードの数を２倍とすることは、必要とされるＲＡＭの半減をもたらす。
【０１１２】
１次スケーラビリティマトリクスのエントリは、２つの実行変数の間のスケーリング関係のスケーラビリティ曲線の線形部分の数表示である。スケーリング関係（依存関係）のより正確な表現のために、より高次の項が、より高次のスケーラビリティマトリクスのエントリをもたらすよう１次の項に加えられてよい。
【０１１３】
スケーラビリティマトリクスであってもよいが必ずしもそれに含まれない追加の状態変数は費用（Ｃｏｓｔ）である（これは、サービスの財務費用又は何らかの他の費用、例えば、電力、ＣＯ２であってよい。）。実行環境１２０の費用ポリシに依存して、実行変数の幾つかはＣｏｓｔに関係していることがあり、値は、実行環境１２０からの利用可能なリソース情報、例えば、リソーステーブルにより受け取られる。例えば、コアの数、ノードの数及びＨＤＤに記憶されるデータのサイズが費用を負担してよい。
【０１１４】
スケーラビリティマトリクスは、２つの主な目的のために働く：
−そのカテゴリ内のリソースの量又はタイプの選択がアプリケーションの実行に影響を及ぼすところの計算リソースのカテゴリのリストを提供する。スケーラビリティマトリクス内の値が非ゼロである実行変数が存在する；
−そのカテゴリのリソースのタイプ又は量が実行のために選択可能であるところの計算リソースのカテゴリと実行時間との間の相関関係又は結合についての質的値を提供することによって、構成選択プロシージャを導く。
【０１１５】
実行関係とリソースのカテゴリとの間のみならず、リソースのカテゴリの対自体の間の依存関係を表すことは、タイプ“ＲＡＭ使用の最小化”又は“ディスク使用の最小化”の性能目標を満足することを可能にする。
【０１１６】
具体的な適用のために、スケーラビリティマトリクスは、開発者によって実施されるベンチマークから、又は使用されている特定のタイプのアルゴリズムに関係する従前の知識から作成され得る。更に、更新されたスケーラビリティマトリクスは、アプリケーションが異なる実行モードに入る場合に提供され得る。
【０１１７】
図６は、どのようにスケーラビリティマトリクスがアプリケーションの実行中に変化し得るのかを表す。左側のスケーラビリティマトリクスにおいて、実行されているアプリケーションがその段階でプロセッシングインテンシブであるため、コアの数は実行時間により完全に増減する。右側のスケーラビリティマトリクスにおいて、コアの数は実行時間により増減しないが、利用可能なハードディスク空間が増減する（なお、スケーラビリティは０．９の係数によってモデレートされる。）。変更されたスケーラビリティマトリクスは、変更計算リソースの選択をもたらしてよい。
【０１１８】
図７は、インターコネクト１００によってリンクされるコンピュータシステムのノード（Ｎｏｄｅ）を示し且つどのように現在のリソース、変更リソース及び中間リソースが異なるノードとして具現され得るのかを表すハードウェア図である。ここで表されている例では、変更リソースは（ノードの数に関して）現在のリソースよりも大きく、使用されるリソースを増加させるとの決定がなされることを暗示する。現在のリソース及び変更リソースは重複リソース（ノード）を有する。中間リソースは、現在のリソース及び変更リソースよりも小さく、現在の計算リソース及び変更計算リソースと重なり合わない。
【０１１９】
図８は、図７におけるリソースのブロック及びマイグレーションにおける相互接続関係の使用の概観を示す。
【０１２０】
図９は、マイグレーションプロセスの間の通信の図である。ステップＳ２００で、計算は現在のリソースを使用する。ステップＳ２１０で、変更リソースが要求される（要求は現在のリソースにおいて示されているが、外部であってもよい。）。ステップＳ２２０で、システムは、潜在的にスケーラビリティマトリクスを用いて、適切な中間リソース及び変更リソースを特定する。ステップＳ２３０で、計算は現在のリソースで継続する。ステップＳ２４０で、中間リソースが利用可能となるのを待つ遅延がある。この遅延は、より大きい変更リソースが利用可能となるのを待つステップＳ３１０のより長い遅延と並列である。ステップＳ２５０で、中間リソースは割り当てられ、これはステップＳ２６０で現在のリソースへ通知され、ステップＳ２７０で、現在のリソースは現在のパーティションを中間リソースへ送信する。中間リソースはデータを変更リソースの詳細と共に受信する（ステップＳ２８０）。このように、中間リソースは、どのような変更ソースが割り当てられるのかに関する情報（例えば、幾つのノード、どのようなタイプのノード、等）をシステムから受け取り、それにより、それらが現在のリソースから受信するデータを如何にして再パーティショニングすべきかを知る。中間リソースは新しいパーティションを計算し、必要に応じて変更リソースをセットアップする（ステップＳ２９０）。このセットアップは、個々のノードのような個々の変更リソースへのプロセスのマッピング（何がどこからどこへ送信されるべきかを定義する。）を含んでよい。また、中間リソースは何らかの他の初期化（例えば、何らかの領域依存のパラメータ値の計算）を行って、これを変更リソースに向けて送信することができることが可能である。
【０１２１】
ステップＳ３００で、中間リソースは新しいパーティション（及びマッピング）を、ステップＳ３２０で予め割り当てられた変更リソースへ送信する。割当は、ステップＳ３３０で現在のリソースへ通知される。ステップＳ３４０で、現在のリソースは状態データを返す。新しいリソースは、ステップＳ３５０で状態データを受け取ってセットアップし、計算は、ステップＳ３６０で変更リソースを用いて再開する。現在のリソース及び変更リソースにおいて同時に１ループの計算を実行し、結果を比較する可能な同期化は示されていない。
【０１２２】
幾つかの発明実施形態の有利な特徴は次のとおりである：
ａ．何れかの異なるシステム（より大きい、より小さい、又は同サイズ）へ実行を移動するよう実施形態が与える柔軟性。発明実施形態はそれらの場合のうちの３つ全てを実施する選択肢を有することが高度に有利である。
【０１２３】
ｂ．分散型メモリシステムのためのマイグレーションのオンザフライ性質（すなわち、実行は停止され、移動され、新しいシステムで再開される必要がない。）。
【０１２４】
ｃ．プロセスの数を増やす能力（フォールト・トレランスのための幾つかの最近の先行技術は、プロセスの数の減少を扱うオンザフライ手法を考えているが、増加はない。）。
【０１２５】
ｄ．変化の制御される性質。フォールト・トレランス用途において、システムはリソースの制御されない損失に対処する。発明実施形態の幾つかは、ユーザが、幾つのプロセスで実行が実行されるべきかを正確に特定することを可能にする。
【０１２６】
ｅ．リソースの変化のスケール。すなわち、フォールト・トレランスに関し、通常は少数のノードのみが常に機能しなくなり、故に、考えはリソースの少しの減少を扱うことである。本発明の実施形態においては、マイグレーション及び同期化プロシージャにより、おそらく、数千のノードから単一のノードへ、リソースを大幅に減少させる能力がある。
【０１２７】
幾つかの発明実施形態はまた、上記の関連技術の方法に対して特定の利点を有する：
●変更リソースは、それらが利用可能にあると直ぐにアプリケーション又は他のプログラムを実行することができる。
【０１２８】
●セットアップフェーズは、新しいリソース又は古いリソースのいずれかを使用する場合よりも速く完了される。
【０１２９】
●同じシステムにおいてリソースを減らす場合に実行を一時停止する必要性は除かれる。
【０１３０】
それらの特徴の全てのうちのいずれも、アプリケーションが別な方法におけるよりも速く完了することをもたらすこと（又は、実時間データプロセッシングの場合に、より適時に不十分なリソースによって引き起こされるバックログをクリアすること）ができる。
【０１３１】
上述されたように、分散並列アプリケーションが実行されるリソースを変更することにおいて、関心のある３つの場合があり、すなわち、現在のリソースを増やすこと（現在のシステムが変更されるシステムの一部である場合）、現在のリソースを減らすこと（変更されるシステムが現在のリソースの一部である場合）、及び新しいシステム（現在のシステムとは異なるサイズを有してよい。）へ移動がある。関連技術の場合に、それらの場合の各々は別々に扱われる必要があった（どこでパーティショニングが実行されるべきかは、どの場合が考えられているかに依存したため。）。これは、中間リソースが使用される場合には当てはまらない。すなわち、パーティショニングは常に、実行スケーラビリティ情報に従う選択を用いて特定され得る中間システムで行われる。よって、発明実施形態の更なる利点は、アルゴリズムの簡潔さの増進において見られ得る。すなわち、同じステップは３つ全ての場合においてとられ得る。
【０１３２】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
現在のパーティションデータを中間計算リソースへ送り、
前記中間計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法。
（付記２）
前記新しいパーティションデータの計算は、前記現在の計算リソースによる継続的な実行と時間において重なり、且つ／あるいは、
前記新しいパーティションデータの計算は、前記変更計算リソース内の新たなリソースの割り当てと時間において重なる、
付記１に記載のプロセスマイグレーション方法。
（付記３）
前記現在の計算リソース及び前記変更計算リソースは、分散型メモリ計算リソースを有し、前記中間計算リソースは、共有型メモリ計算リソース、望ましくは、対称型マルチプロセッサＳＭＰノードを有する、
付記１又は２に記載のプロセスマイグレーション方法。
（付記４）
前記中間計算リソースは、再パーティショニングを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
付記１乃至３のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記５）
前記変更計算リソースは、前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき実行に適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
付記１乃至４のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記６）
前記構成は夫々、計算リソースの複数のカテゴリの夫々において利用可能な計算リソースの量及び／又はタイプのインジケーションを含み、
実行情報は、前記複数のカテゴリの中の少なくとも１つのカテゴリにおける計算リソースについて、当該カテゴリにおける計算リソースのどれくらい異なる量及び／タイプが実行レートと相関するかのインジケーションを符号化するスケーラビリティマトリクスを含むアプリケーション実行スケーラビリティ情報の形をとり、望ましくは、前記スケーラビリティマトリクスは、計算リソースの前記複数のカテゴリの夫々と実行レートとを含む複数の係数の中の係数の対ごとにエントリを含み、該エントリは、当該係数の対の中の第２の係数の異なる量／タイプを表す線形スケールに沿った比例変化に関して、前記第２の係数の必要とされる量／タイプに対する当該係数の対の中の第１の係数の異なる量／タイプの使用を表す線形スケールに沿った比例変化の効果を表す、
付記４又は５に記載のプロセスマイグレーション方法。
（付記７）
夫々のプロセスは、前記計算を実行する単一のプロセッシングユニットと、前記計算のためのプロセスデータを記憶するためのメモリの単一の領域とを含む個々の現在の計算リソース及び変更計算リソースを使用し、望ましくは、前記プロセッシングユニットは、分散型メモリ計算システムにおけるマルチコアプロセッサのコア又はノード若しくはプロセッサである、
付記１乃至６のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記８）
前記中間計算リソースは更に、前記新しいパーティションデータのマイグレーションの前の個々の変更計算リソースへのプロセスのマッピングと、前記変更計算リソースへのマッピングとを提供するために使用される、
付記７に記載のプロセスマイグレーション方法。
（付記９）
マイグレートされた計算に関連する状態データの通信を用いた、マイグレートされた実行の同期化を更に有し、
前記通信は、前記現在の計算リソースと前記変更計算リソースとの間で行われ、
望ましくは、前記同期化は、望ましくはその中に埋め込まれるか又はラッパーの形をとる、前記計算を実行する求解機と関連付けられる、
付記１乃至８のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１０）
前記計算は、ループにおいて実行される求解機の逐次代入であり、同期化が１つのループの終わりに実行され、望ましくは、結果の比較と共に、前記現在の計算リソース及び前記変更計算リソースの両方において次のループのための計算を実行することを含む、
付記１乃至９のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１１）
使用されるリソースを変更すると最初に決定し、前記使用されるリソースを増やすことと、前記使用されるリソースを減らすことと、異なるリソースへ移動することとの間で選択を行うことを更に含み、
異なるリソースへ移動することは、前記使用されるリソースの増加、減少又は維持を含むことができる、
付記１乃至１０のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１２）
ユーザは、前記コンピュータプログラムが実行するプロセスの数、及び／又は前記中間計算リソース及び／又は変更計算リソースのための性能目標を特定し、
前記性能目標は、計算リソースの選択において使用される、
付記１乃至１１のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１３）
プロセスマイグレーションを実行するよう動作するコンピュータシステムであって、
インターコネクトを介して接続されている現在の計算リソース、中間計算リソース、及び変更計算リソースを有し、
前記現在の計算リソースは、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行するよう構成され、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記インターコネクトは、現在のパーティションデータを前記中間計算リソースへ送るよう構成され、
前記中間計算リソースは、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算するよう構成され、
前記インターコネクトは更に、前記変更計算リソースが前記実行を引き継ぐことができるように、前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される、
コンピュータシステム。
（付記１４）
システム内の中間計算リソースであって、前記システムが、インターコネクトを介して接続される、当該中間リソースと、計算に対する並列プロセスの現在のパーティションにおいてコンピュータプログラムを実行し、夫々の並列プロセスが少なくとも１つの計算を実行する現在の計算リソースと、変更計算リソースとを有し、プロセスマイグレーションを実行するよう動作する、中間計算リソースにおいて、
前記インターコネクトから現在のパーティションデータを受け取り、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記変更計算リソースが前記実行を引き継ぐことができるように前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される中間計算リソース。
（付記１５）
計算に対する並列プロセスの現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、パーティショニング前の計算リソースを選択し、
現在のパーティションデータを前記パーティショニング前の計算リソースへ送り、
前記パーティショニング前の計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法のためのパーティショニング前の計算リソースの選択方法。
【符号の説明】
【０１３３】
１０    現在の（計算）リソース
２０    中間（計算）リソース
３０    変更（計算）リソース
６０    プロセス
７０    プロセッシングユニット又は要素
８０    メモリ
９０    入力／出力ユニット
１００  インターコネクト
【図１】
2014235734.tif 000003
【図２】
2014235734.tif 000004
【図３Ａ】
2014235734.tif 000005
【図３Ｂ】
2014235734.tif 000006
【図４】
2014235734.tif 000007
【図５】
2014235734.tif 000008
【図６】
2014235734.tif 000009
【図７】
2014235734.tif 000010
【図８】
2014235734.tif 000011
【図９】
2014235734.tif 000012
【手続補正書】
【提出日】平成26年8月14日(2014.8.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並列プロセスに対する計算の現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
現在のパーティションデータを中間計算リソースへ送り、
前記中間計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法。
【請求項２】
前記新しいパーティションデータの計算は、前記現在の計算リソースによる継続的な実行と時間において重なり、且つ／あるいは、
前記新しいパーティションデータの計算は、前記変更計算リソース内の新たなリソースの割り当てと時間において重なる、
請求項１に記載のプロセスマイグレーション方法。
【請求項３】
前記現在の計算リソース及び前記変更計算リソースは、分散型メモリ計算リソースを有し、前記中間計算リソースは、共有型メモリ計算リソース、望ましくは、対称型マルチプロセッサＳＭＰノードを有する、
請求項１又は２に記載のプロセスマイグレーション方法。
【請求項４】
前記中間計算リソースは、再パーティショニングを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
請求項１乃至３のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項５】
前記変更計算リソースは、前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき実行に適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
請求項１乃至４のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項６】
前記構成は夫々、計算リソースの複数のカテゴリの夫々において利用可能な計算リソースの量及び／又はタイプのインジケーションを含み、
実行情報は、前記複数のカテゴリの中の少なくとも１つのカテゴリにおける計算リソースについて、当該カテゴリにおける計算リソースのどれくらい異なる量及び／タイプが実行レートと相関するかのインジケーションを符号化するスケーラビリティマトリクスを含むアプリケーション実行スケーラビリティ情報の形をとり、望ましくは、前記スケーラビリティマトリクスは、計算リソースの前記複数のカテゴリの夫々と実行レートとを含む複数の係数の中の係数の対ごとにエントリを含み、該エントリは、当該係数の対の中の第２の係数の異なる量／タイプを表す線形スケールに沿った比例変化に関して、前記第２の係数の必要とされる量／タイプに対する当該係数の対の中の第１の係数の異なる量／タイプの使用を表す線形スケールに沿った比例変化の効果を表す、
請求項４又は５に記載のプロセスマイグレーション方法。
【請求項７】
夫々のプロセスは、前記計算を実行する単一のプロセッシングユニットと、前記計算のためのプロセスデータを記憶するためのメモリの単一の領域とを含む個々の現在の計算リソース及び変更計算リソースを使用し、望ましくは、前記プロセッシングユニットは、分散型メモリ計算システムにおけるマルチコアプロセッサのコア又はノード若しくはプロセッサである、
請求項１乃至６のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項８】
前記中間計算リソースは更に、前記新しいパーティションデータのマイグレーションの前の個々の変更計算リソースへのプロセスのマッピングと、前記変更計算リソースへのマッピングとを提供するために使用される、
請求項７に記載のプロセスマイグレーション方法。
【請求項９】
マイグレートされた計算に関連する状態データの通信を用いた、マイグレートされた実行の同期化を更に有し、
前記通信は、前記現在の計算リソースと前記変更計算リソースとの間で行われ、
望ましくは、前記同期化は、望ましくはその中に埋め込まれるか又はラッパーの形をとる、前記計算を実行する求解機と関連付けられる、
請求項１乃至８のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１０】
前記計算は、ループにおいて実行される求解機の逐次代入であり、同期化が１つのループの終わりに実行され、望ましくは、結果の比較と共に、前記現在の計算リソース及び前記変更計算リソースの両方において次のループのための計算を実行することを含む、
請求項１乃至９のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１１】
使用されるリソースを変更すると最初に決定し、前記使用されるリソースを増やすことと、前記使用されるリソースを減らすことと、異なるリソースへ移動することとの間で選択を行うことを更に含み、
異なるリソースへ移動することは、前記使用されるリソースの増加、減少又は維持を含むことができる、
請求項１乃至１０のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１２】
ユーザは、前記コンピュータプログラムが実行するプロセスの数、及び／又は前記中間計算リソース及び／又は変更計算リソースのための性能目標を特定し、
前記性能目標は、計算リソースの選択において使用される、
請求項１乃至１１のうちいずれか一項に記載のプロセスマイグレーション方法。
【請求項１３】
プロセスマイグレーションを実行するよう動作するコンピュータシステムであって、
インターコネクトを介して接続されている現在の計算リソース、中間計算リソース、及び変更計算リソースを有し、
前記現在の計算リソースは、並列プロセスに対する計算の現在のパーティションにおいてコンピュータプログラムを実行するよう構成され、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記インターコネクトは、現在のパーティションデータを前記中間計算リソースへ送るよう構成され、
前記中間計算リソースは、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算するよう構成され、
前記インターコネクトは更に、前記変更計算リソースが前記実行を引き継ぐことができるように、前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される、
コンピュータシステム。
【請求項１４】
システム内の中間計算リソースであって、前記システムが、インターコネクトを介して接続される、当該中間リソースと、並列プロセスに対する計算の現在のパーティションにおいてコンピュータプログラムを実行し、夫々の並列プロセスが少なくとも１つの計算を実行する現在の計算リソースと、変更計算リソースとを有し、プロセスマイグレーションを実行するよう動作する、中間計算リソースにおいて、
前記インターコネクトから現在のパーティションデータを受け取り、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記変更計算リソースが前記実行を引き継ぐことができるように前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される中間計算リソース。
【請求項１５】
並列プロセスに対する計算の現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、パーティショニング前の計算リソースを選択し、
現在のパーティションデータを前記パーティショニング前の計算リソースへ送り、
前記パーティショニング前の計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法のためのパーティショニング前の計算リソースの選択方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１３２
【補正方法】変更
【補正の内容】
【０１３２】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
並列プロセスに対する計算の現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
現在のパーティションデータを中間計算リソースへ送り、
前記中間計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法。
（付記２）
前記新しいパーティションデータの計算は、前記現在の計算リソースによる継続的な実行と時間において重なり、且つ／あるいは、
前記新しいパーティションデータの計算は、前記変更計算リソース内の新たなリソースの割り当てと時間において重なる、
付記１に記載のプロセスマイグレーション方法。
（付記３）
前記現在の計算リソース及び前記変更計算リソースは、分散型メモリ計算リソースを有し、前記中間計算リソースは、共有型メモリ計算リソース、望ましくは、対称型マルチプロセッサＳＭＰノードを有する、
付記１又は２に記載のプロセスマイグレーション方法。
（付記４）
前記中間計算リソースは、再パーティショニングを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
付記１乃至３のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記５）
前記変更計算リソースは、前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき実行に適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、選択される、
付記１乃至４のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記６）
前記構成は夫々、計算リソースの複数のカテゴリの夫々において利用可能な計算リソースの量及び／又はタイプのインジケーションを含み、
実行情報は、前記複数のカテゴリの中の少なくとも１つのカテゴリにおける計算リソースについて、当該カテゴリにおける計算リソースのどれくらい異なる量及び／タイプが実行レートと相関するかのインジケーションを符号化するスケーラビリティマトリクスを含むアプリケーション実行スケーラビリティ情報の形をとり、望ましくは、前記スケーラビリティマトリクスは、計算リソースの前記複数のカテゴリの夫々と実行レートとを含む複数の係数の中の係数の対ごとにエントリを含み、該エントリは、当該係数の対の中の第２の係数の異なる量／タイプを表す線形スケールに沿った比例変化に関して、前記第２の係数の必要とされる量／タイプに対する当該係数の対の中の第１の係数の異なる量／タイプの使用を表す線形スケールに沿った比例変化の効果を表す、
付記４又は５に記載のプロセスマイグレーション方法。
（付記７）
夫々のプロセスは、前記計算を実行する単一のプロセッシングユニットと、前記計算のためのプロセスデータを記憶するためのメモリの単一の領域とを含む個々の現在の計算リソース及び変更計算リソースを使用し、望ましくは、前記プロセッシングユニットは、分散型メモリ計算システムにおけるマルチコアプロセッサのコア又はノード若しくはプロセッサである、
付記１乃至６のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記８）
前記中間計算リソースは更に、前記新しいパーティションデータのマイグレーションの前の個々の変更計算リソースへのプロセスのマッピングと、前記変更計算リソースへのマッピングとを提供するために使用される、
付記７に記載のプロセスマイグレーション方法。
（付記９）
マイグレートされた計算に関連する状態データの通信を用いた、マイグレートされた実行の同期化を更に有し、
前記通信は、前記現在の計算リソースと前記変更計算リソースとの間で行われ、
望ましくは、前記同期化は、望ましくはその中に埋め込まれるか又はラッパーの形をとる、前記計算を実行する求解機と関連付けられる、
付記１乃至８のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１０）
前記計算は、ループにおいて実行される求解機の逐次代入であり、同期化が１つのループの終わりに実行され、望ましくは、結果の比較と共に、前記現在の計算リソース及び前記変更計算リソースの両方において次のループのための計算を実行することを含む、
付記１乃至９のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１１）
使用されるリソースを変更すると最初に決定し、前記使用されるリソースを増やすことと、前記使用されるリソースを減らすことと、異なるリソースへ移動することとの間で選択を行うことを更に含み、
異なるリソースへ移動することは、前記使用されるリソースの増加、減少又は維持を含むことができる、
付記１乃至１０のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１２）
ユーザは、前記コンピュータプログラムが実行するプロセスの数、及び／又は前記中間計算リソース及び／又は変更計算リソースのための性能目標を特定し、
前記性能目標は、計算リソースの選択において使用される、
付記１乃至１１のうちいずれか一項に記載のプロセスマイグレーション方法。
（付記１３）
プロセスマイグレーションを実行するよう動作するコンピュータシステムであって、
インターコネクトを介して接続されている現在の計算リソース、中間計算リソース、及び変更計算リソースを有し、
前記現在の計算リソースは、並列プロセスに対する計算の現在のパーティションにおいてコンピュータプログラムを実行するよう構成され、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記インターコネクトは、現在のパーティションデータを前記中間計算リソースへ送るよう構成され、
前記中間計算リソースは、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算するよう構成され、
前記インターコネクトは更に、前記変更計算リソースが前記実行を引き継ぐことができるように、前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される、
コンピュータシステム。
（付記１４）
システム内の中間計算リソースであって、前記システムが、インターコネクトを介して接続される、当該中間リソースと、並列プロセスに対する計算の現在のパーティションにおいてコンピュータプログラムを実行し、夫々の並列プロセスが少なくとも１つの計算を実行する現在の計算リソースと、変更計算リソースとを有し、プロセスマイグレーションを実行するよう動作する、中間計算リソースにおいて、
前記インターコネクトから現在のパーティションデータを受け取り、前記変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、前記変更計算リソースが前記実行を引き継ぐことができるように前記新しいパーティションデータを前記変更計算リソースへ送るよう構成される中間計算リソース。
（付記１５）
並列プロセスに対する計算の現在のパーティションにおいて、現在の計算リソースでコンピュータプログラムを実行し、夫々の並列プロセスは少なくとも１つの計算を実行し、
前記プロセスを実行するのに利用可能な計算リソースの複数の構成を詳述する利用可能リソース情報を収集し、実行情報に基づき再パーティショニングに適した構成を前記利用可能リソース情報において詳述される前記複数の構成の中から選択することによって、パーティショニング前の計算リソースを選択し、
現在のパーティションデータを前記パーティショニング前の計算リソースへ送り、
前記パーティショニング前の計算リソースを用いて、変更計算リソースでの使用のためにプロセスへの計算の新たな割り当てを含む新しいパーティションデータを計算し、
前記新しいパーティションデータを前記変更計算リソースへ送ることによって、プロセス実行を前記変更計算リソースへマイグレートする、
プロセスマイグレーション方法のためのパーティショニング前の計算リソースの選択方法。