(57)【要約】  本発明は、複数の計算ノードおよび複数のブースタノードを含む異種コンピューティングシステムを動作させる方法であって、複数の計算ノードおよび複数のブースタノードの少なくとも１つは計算タスクを計算するように構成され、計算タスクは複数のサブタスクを含み、最初の計算反復において、複数のサブタスクは、最初の分配で、複数の計算ノードおよびブースタノードのうちの一部に割り当てられて処理され、複数の計算ノードおよびブースタノードによる複数のサブタスクの処理に関する情報を使用して、計算ノードおよびブースタノードの間でのサブタスクのさらなる分配が生成されて、さらなる計算反復において計算ノードおよびブースタノードによって処理される、方法を提供する。
2021511609.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算ノードおよび複数のブースタノードを含む異種コンピューティングシステムを動作させる方法であって、前記複数の計算ノードおよび複数のブースタノードの少なくとも１つは計算タスクを計算するように構成され、前記計算タスクは複数のサブタスクを含み、
最初の計算反復において、前記複数のサブタスクは、最初の分配で、前記複数の計算ノードおよびブースタノードのうちの一部に割り当てられて処理され、
前記複数の計算ノードおよびブースタノードによる前記複数のサブタスクの処理に関する情報を使用して、前記計算ノードおよびブースタノードの間での前記サブタスクのさらなる分配が生成されて、さらなる計算反復において前記計算ノードおよびブースタノードによって処理される、
方法。
【請求項２】
アプリケーションマネージャは、前記情報を受信し、前記さらなる分配を決定する、請求項１に記載の方法。
【請求項３】
リソースマネージャは、前記最初の反復のための前記計算ノードおよびブースタノードへのタスクおよびサブタスクの割り当てを前記計算タスクに応じて決定し、前記アプリケーションマネージャは、前記情報を受信し、前記リソースマネージャへの入力として処理して、前記リソースマネージャが、前記計算タスクの計算中にさらなる分配を動的に変更するようにする、請求項２に記載の方法。
【請求項４】
前記リソースマネージャは前記情報を受信して、前記リソースマネージャが、前記計算タスクの計算中に、前記計算ノードおよびブースタノードの相互の割り当てを動的に変更するようにする、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
デーモンは、前記計算ノードおよび前記ブースタノードにおいて動作して、前記情報を生成する、請求項１または請求項２に記載の方法。
【請求項６】
前記最初の分配は、各サブタスクに対してソースコード内に提供される評価に基づいて決定される、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記情報は、前記最初の反復および２回目の反復の少なくとも一方においてサブタスクのグループ化を提供するために使用される、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
ノードで動作するデーモンは、サブタスクの処理中に前記ノードの負荷の測定値を生成する、請求項３に記載の方法。
【請求項９】
複数のサブタスクを含む１つまたは複数のタスクを計算するための複数の計算ノードおよび複数のブースタノードと、前記計算ノードおよび前記ブースタノードを互いに接続する通信インターフェースと、を含む異種コンピューティングシステムであって、前記システムは、前記タスクの計算のためにブースタノードおよび計算ノードを相互に割り当てるためのリソースマネージャを含み、前記システムはアプリケーションマネージャをさらに含み、前記アプリケーションマネージャは、前記計算ノードおよびブースタノードにおいて動作するデーモンから情報を受信して、さらなる計算反復のために前記計算ノードおよび前記ブースタノードの間の前記サブタスクの分配を更新するように構成される、異種コンピューティングシステム。
【請求項１０】
前記リソースマネージャは前記情報を受信して、前記リソースマネージャが前記計算ノードおよびブースタノードの相互の割り当てを動的に変更するようにする、請求項９に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算環境内で計算タスクを実行するためのメカニズムに関し、詳細には、計算タスクの並列処理に適合された異種計算環境に関する。
【背景技術】
【０００２】
本発明は先に出願した国際公開第２０１２／０４９２４７号、すなわち、ＷＯ’２４７に記載のシステムを発展させたものであり、ＷＯ’２４７には、通信インターフェースを介して相互に接続された複数の計算ノードおよび複数のブースタを含むクラスタコンピュータアーキテクチャを記載している。リソースマネージャは、実行時間中に動的にブースタおよび計算ノードのうちの１つまたは複数を相互に割り当てる役割を果たす。このような動的プロセス管理の一例は、Clauss et al. "Dynamic Process Management with Allocation-internal Co-Scheduling towards Interactive Supercomputing", COSH 2016 Jan 19, Prague, CZに記載されており、これはあらゆる目的のために引用により本明細書に組み込まれている。ＷＯ’２４７の構成は、ブースタを計算ノードに割り当てるための柔軟性のある構成を提供するが、計算ノードおよびブースタの間でタスクをどのように分配するかについては扱っていない。
【０００３】
ＷＯ’２４７の構成はさらに、Eicker et al. "The DEEP Project An alternative approach to heterogeneous cluster-computing in the many core era", Concurrency Computat.: Pract. Exper. 2016; 28:2394-2411に記載されている。記載された異種システムは、切り替え可能なネットワークによって接続された複数の計算ノードおよび複数のブースタノードを含む。アプリケーションを処理するために、アプリケーションは「タスク化」されて、どのタスクが計算ノードからブースタにオフロードされ得るかについての指示が提供される。このタスク化は、アプリケーション開発者が、異なるタスク間の依存関係を示すプラグマに加え、ブースタによって処理される非常にスケーラブルなコード部分を示すラベルにより、コードに注釈を付けることによって実現される。この文脈でのスケーラビリティとは、サービスに提供される負荷が増加した場合に、ハードウェアの増分的かつ線形的な増加により、ユーザごとに同じサービスレベルを維持できることを意味する。
【０００４】
米国特許出願公開第２０１７／０２６２３１９号には、一態様において、データの分配およびコンピューティングリソースへのタスクのマッピングを完全にまたは部分的に自動化できるランタイムプロセスが記載されている。利用可能なリソースにアクションをマッピングするには、いわゆるチューニングの専門家、すなわち、人間のオペレータが依然として必要であり得る。本質的には、計算対象の所与のアプリケーションを、どのようにして所与のコンピューティング階層にマッピングできるかが記載されている。
【発明の概要】
【０００５】
本発明は、複数の計算ノードおよび複数のブースタノードを含む異種コンピューティングシステムを動作させる方法であって、複数の計算ノードおよび複数のブースタノードの少なくとも１つは計算タスクを計算するように構成され、計算タスクは複数のサブタスクを含み、最初の計算反復において、複数のサブタスクは、最初の分配で、複数の計算ノードおよびブースタノードのうちの一部に割り当てられて処理され、複数の計算ノードおよびブースタノードによる複数のサブタスクの処理に関する情報を使用して、計算ノードおよびブースタノードの間でのサブタスクのさらなる分配が生成されて、さらなる計算反復において計算ノードおよびブースタノードによって処理される、方法を提供する。
【０００６】
好ましくは、その情報は、計算ノードおよびブースタノードの各々において動作するそれぞれのデーモンによって提供される。提供された情報により、アプリケーションマネージャは、計算ノードおよびブースタノードの間のサブタスクの分配を、さらなる計算反復のために適合または改善できるか否かを判定することが可能になる。
【０００７】
リソースマネージャは、計算タスクおよびさらなるパラメータに応じて、最初の反復についての計算ノードおよびブースタノードへのタスクおよびサブタスクの割り当てを決定し得る。アプリケーションマネージャは、その情報をリソースマネージャへの入力として処理して、リソースマネージャが計算タスクの計算中にさらなる分配を動的に変更するようにする。
【０００８】
本発明のさらなる態様では、リソースマネージャは、その情報に基づいて、計算タスクの計算中に、計算ノードおよびブースタノードの相互の割り当てを動的に変更する。
【０００９】
また、初期分配は、システムによる実行のためにコンパイルされるプログラミングコード内にシステムのユーザによって提供された情報を使用して、アプリケーションマネージャによって決定され得る。あるいは、アプリケーションマネージャは、サブタスクのコーディングの分析に基づいてそのような分配を生成するように構成され得る。
【００１０】
さらなる態様では、本発明は、複数のサブタスクを含む１つまたは複数のタスクを計算するための複数の計算ノードおよび複数のブースタノードと、計算ノードおよびブースタノードを互いに接続する通信インターフェースと、を含む異種コンピューティングシステムであって、システムは、タスクの計算のためにブースタノードおよび計算ノードを相互に割り当てるためのリソースマネージャを含み、システムはアプリケーションマネージャをさらに含み、アプリケーションマネージャは、計算ノードおよびブースタノードにおいて動作するデーモンから情報を受信して、最初の計算反復とさらなる計算反復との間に計算ノードおよびブースタノードの間のサブタスクの分配を更新するように構成される、異種コンピューティングシステムを提供する。
【００１１】
本発明のさらに他の態様では、リソースマネージャはその情報を受信して、リソースマネージャが計算タスクの計算中に計算ノードおよびブースタノードの相互の割り当てを動的に変更するようにする。以下、本発明の好ましい実施形態を単なる例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明を組み込んだクラスタコンピュータシステムの模式図である。
【発明を実施するための形態】
【００１３】
図１を参照すると、本発明を組み込んだクラスタコンピュータシステム１０の模式図が示されている。システム１０は、いくつかの計算ノード２０と、いくつかのブースタノード２２とを含む。計算ノード２０およびブースタノードは、通信インフラストラクチャ２４を介して接続され、ブースタノードは、ブースタインターフェース２３を介して通信インターフェースに接続される。計算ノード２０およびブースタノード２２のそれぞれは、長方形で模式的に表しており、動作時のこれらの各ノードは、それぞれのデーモン２６ａおよび２６ｂの少なくとも一方を組み込んでおり、これらはそれぞれのノードの長方形内に四角形で模式的に示している。本発明のデーモンとは、バックグラウンドプロセスとして動作し、本明細書で使用される情報を提供することが可能なアプリケーションである。Clauss et al. "Dynamic Process Management with Allocation-internal Co-Scheduling towards Interactive Supercomputing", COSH 2016 Jan 19, Prague, CZには、本明細書で扱うデーモンが開示されており、この論文の内容はあらゆる目的のために引用により本明細書に組み込まれている。
【００１４】
また、システム１０は、通信インフラストラクチャ２４およびアプリケーションマネージャ３０に接続されるように図示しているリソースマネージャ２８を含む。リソースマネージャ２８およびアプリケーションマネージャ３０の各々は、それぞれのデーモン３２および３４を含む。
【００１５】
計算ノード２０は互いに同一であり得、または異なる特徴を有し得る。各計算ノードは、Ｉｎｔｅｌ社のＸｅｏｎＥ５−２６８０プロセッサなどの１つまたは複数のマルチコアプロセッサを組み込んでいる。ノードは、高いＧｂｉｔ／ｓの速度でデータを転送可能なＭｅｌｌａｎｏｘ  ＩｎｆｉｎｉＢａｎｄ  ＣｏｎｎｅｃｔＸファブリックに基づき得る通信インターフェースを介して相互に接続される。計算ノードは、通信インターフェースを介して、理想的には一連のブースタインターフェース４０を介して複数のブースタノードにインターフェースする。図示のように、ブースタノードは、自身のオペレーティングシステムを自律的に起動して動作させることが可能な、Ｉｎｔｅｌ社のＸｅｏｎ  Ｐｈｉメニーコアプロセッサなどの、少なくとも１つのアクセラレータタイプのプロセッサをホストする。そのような技術については、上記のConcurrency Computat.: Pract. Exper. 2016; 28:2394-2411に記載されている。
【００１６】
さらに、システム１０は、あらゆる目的のために引用により本明細書に組み込まれている未公開の出願ＰＣＴ／ＥＰ２０１７／０７５３７５に記載の、デーモンとアプリケーションマネージャとの間の通信を可能にするためのモジュール式コンピューティング抽象化層を含み得る。
【００１７】
システムによって計算されるジョブは、いくつかのタスクを含み得、タスクの一部または全部は、ジョブの実行中に複数回繰り返され得る。たとえば、ジョブは、乱数を使用して結果がモデル化される「モンテカルロ」ベースのシミュレーションであり得、その計算は連続して何度も繰り返される。
【００１８】
タスクはいくつかのサブタスクまたはカーネルを含み得る。これらのサブタスクのそれぞれは、計算ノードのうちの１つまたは複数による処理、あるいはブースタのうちの１つまたは複数による処理により適しており、またはより適さない場合がある。具体的には、サブタスクのスケーラビリティは、そのサブタスクが計算ノードまたはブースタのいずれによって処理される方が適切であるかを示し得る。このシステムはあらゆる方向に柔軟性があり、本明細書で扱う全てのノードによるサブタスクの共同処理に加え、ノード間の処理の再シャッフルも可能である。
【００１９】
計算ノードおよびブースタの間の最初のサブタスクの分割を用いてタスクが計算される場合、そのような分割はタスクの計算にとって最適な分割ではない可能性がある。最初の反復においてあるブースタに割り当てられた特定のサブタスクは、実際にはそのブースタによる処理に適さない場合があり、ブースタではなく計算ノードによるサブタスクの処理が、タスクの計算を全体として最適化する場合がある。したがって、２回目および／またはそれ以降のサブタスクの分配が変更される、タスクの２回目の反復および必要に応じて行われ得るそれ以降の反復によって、タスクの計算効率が向上し得る。
【００２０】
したがって、システム１０は、デーモン２６ａ、２６ｂおよび３２が、サブタスクの処理と、それぞれの処理エンティティの現在の状態とに関する情報をデーモン３４にフィードバックするように、計算ノードおよびブースタのそれぞれが構成されるメカニズムを含む。デーモン３４は、デーモン２６ａ、２６ｂおよび３２によって提供された情報を使用して、その後の反復のためにタスクの計算を最適化するかまたは適合させるように計算ノードおよびブースタへのサブタスクの分配を調整できるか否かを判定する。また、リソースマネージャは、調整されたタスクの分配に加えて、計算ノードおよびブースタを相互に再割り当てすることができる。
【００２１】
オペレータが各サブタスクのスケーラビリティ係数を推定したタスクを含むジョブがシステムに入力される。このタスクはコンパイルされ、コンパイルされたコードが実行される。実行時に、タスクはアプリケーションマネージャによって分析され、タスクのサブタスクは計算ノードに適したサブタスクと、ブースタに適したサブタスクとに分割され、この情報は、ブースタを計算ノードに割り当てるためにリソースマネージャに渡される。タスクの最初の反復中に、サブタスクの実行の結果は、サブタスクの処理とノードのステータスとに関するデーモンからの情報と共に収集される。そして、アプリケーションマネージャは、タスクのその後の反復のためのサブタスクの再割り当てを実行し、この更新された割り当て情報をリソースマネージャに渡し、リソースマネージャは、それに応じてノードへのブースタの割り当ても調整し得る。
【００２２】
各反復について、計算ノードおよびブースタで動作するデーモンは、アプリケーションマネージャおよびリソースマネージャにステータス情報を報告して、計算ノードおよびブースタへのサブタスクの割り当てをさらに調整することにより、以後の反復の計算を最適化できるようにする。
【００２３】
上記の手順では、初期のスケーラビリティ係数がプログラムコーダによって入力され得るタスク化ステップを組み込むように説明しているが、アプリケーションマネージャがサブタスクの初期のスケーラビリティ係数を自動的に設定し、以後の反復でこの初期設定が改善されるようにすることも可能である。そのような構成には、タスクのコーディングがより簡単になるため、クラスタコンピューティングアプリケーションに不慣れなプログラムコーダにとってのシステムの使いやすさを向上させることが可能になるという利点がある。
【００２４】
サブタスクのスケーラビリティに基づいて計算ノードおよびブースタの間のサブタスクの分配を調整するだけでなく、分配はまた、サブタスクの処理に関して知った情報と、処理中にさらなるサブタスクを呼び出す必要性とによって影響され得る。ブースタによって処理されている第１のサブタスクが、そのブースタによって処理されていない第２のサブタスクからの入力を必要とする場合、これは第１のサブタスクの処理の中断につながり得る。したがって、第１のサブタスクを処理しているブースタのデーモンは、この状況をアプリケーションマネージャに報告して、さらなる反復において、第１および第２両方のサブタスクがそのブースタによって処理されるようにすることができる。したがって、アプリケーションマネージャは、計算ノードおよびブースタで動作するデーモンによって提供される情報を使用して、計算ノードおよびブースタに割り当てられるサブタスクのグループを調整するように構成される。
【００２５】
図１の計算ノードには同じ参照番号を付与しており、ブースタノードも同様であるが、これは、全ての計算ノードが互いに同一であり、全てのブースタノードも互いに同一であることを示唆するものではない。システム１０は、他の計算／ブースタノードとは特徴が異なる、システムに追加された計算ノードおよび／またはブースタノードを有し得る。したがって、計算ノードおよび／またはブースタノードのうちの特定のものは、特定のサブタスクを処理するのに特に適し得る。アプリケーションマネージャはこの構造情報を考慮に入れ、そのような割り当て情報をリソースマネージャに渡して、サブタスクが最適な方法で分配されるようにする。
【００２６】
本発明の重要な側面は、国際公開第２０１２／０４９２４７号による一例として示されるように、コンピュータ階層への計算タスクおよびサブタスクのマッピングおよび調整が、コンピュータアーキテクチャの固有の柔軟性および適応性を十分に利用していない場合があるという認識に由来している。そのため、本発明は、国際公開第２０１７／０２６２３１９号による一例のように、アプリケーションタスクを最大限に十分に調整することに加え、計算ノードおよびブースタノードを互いに対して動的に設定し、最終的に、計算タスクの実行効率に関してデーモンにより提供された情報に基づいて、実行時間中に動的に計算タスクのマッピングを再構成し、動的に計算ノードおよびブースタノードを相互に再割り当てすることを統合している。
【図１】
2021511609.tif 000003
【国際調査報告】
2021511609.tif 000004
2021511609.tif 000005