(57)【要約】【課題】コンピュータ・システムにおいてジョブを実行する方法、資源マネージャおよび高性能コンピュータ・システムを提供する。【解決手段】複数の異なる許容される構成を有するコンピュータ・システムにおいてジョブを実行する方法であって：ジョブを受領する段階と；前記ジョブの一つまたは複数の代表的なサンプルを同定する段階と；実験フェーズにおいて前記一つまたは複数の代表的なサンプルを実行する段階であって、当該または各代表的なサンプルは、前記コンピュータ・クラスターのそれぞれの異なる許容される構成を用いて実行される、段階と；前記一つまたは複数の代表的なサンプルの実行中に各構成における実行速度および使用されるエネルギーを含む実行データを収集する段階と；実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適な構成を選択する段階と；完了フェーズにおいて、前記ジョブの残りを前記好適な構成を用いて実行する段階とを含む、方法。【選択図】図２
2015118705.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なる許容されるハードウェア構成を有するコンピュータ・システムにおいてジョブを実行する方法であって、当該方法は：
実行のために提出されたジョブを受領する段階と；
前記ジョブの一つまたは複数の代表的なサンプルを同定する段階であって、当該または各代表的なサンプルは前記ジョブの一部である、段階と；
前記ジョブが部分的に実行される実験フェーズおよび前記ジョブの残りが実行される完了フェーズの二つのフェーズにおいて前記ジョブを実行する段階とを含み、
前記実験フェーズでは、当該または各代表的なサンプルは、前記コンピュータ・システムのそれぞれの異なる許容されるハードウェア構成を用いて実行され；
前記一つまたは複数の代表的なサンプルの実行中に各ハードウェア構成における実行速度および使用されるエネルギーを含む実行データが収集され、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適なハードウェア構成が選択され；
前記完了フェーズでは、前記ジョブの残りが前記好適なハードウェア構成を用いて実行される、
方法。
【請求項２】
前記ジョブが、同じ実行可能形式の、異なる入力をもつサブジョブ・アレイの形で受領され、前記一つまたは複数の代表的なサンプルは、前記サブジョブ・アレイのあるセレクションのみとして同定される、請求項１記載の方法。
【請求項３】
前記ジョブが、反復する入れ替わるサブジョブのリンクされたシーケンスの形で受領され、各サブジョブは二回以上現われ、前記代表的なサンプルは前記シーケンス中の最初のいくつかのサブジョブである、請求項１記載の方法。
【請求項４】
各サブジョブはアプリケーションであり、各アプリケーションについて一つで、二つ以上の好適なハードウェア構成が選択される、請求項３記載の方法。
【請求項５】
前記ジョブが巡回的であり、前記ジョブ内で諸サイクルが認識され、前記ジョブの一つまたは複数のサイクルが、当該または各代表的なサンプルとして同定される、請求項１記載の方法。
【請求項６】
代表的なサンプルが、前記ジョブ内の事前同定を調べることによって同定され、これが成功しない場合には、前記ジョブ記述言語をパースし、それでも成功しない場合には実行中の同定を試みる、請求項５記載の方法。
【請求項７】
前記ジョブが、メイン・ジョブと、該メイン・ジョブに対応するエネルギー使用特性をもつ該メイン・ジョブの一つまたは複数のプローブ・バージョンの形のサブジョブとを含み；該サブジョブが、前記実験フェーズにおいて実行される前記一つまたは複数の代表的なサンプルとして同定され、前記メイン・ジョブは前記完了フェーズにおいて実行される、請求項１記載の方法。
【請求項８】
前記コンピュータ・システムの各ハードウェア構成が異なるエネルギー使用特性をもち、計算性能に対して異なる影響をもち、好適なハードウェア構成は、実行を完了するための最低のエネルギー使用および受け容れ可能な時間をもつハードウェア構成である、請求項１ないし７のうちいずれか一項記載の方法。
【請求項９】
前記異なるハードウェア構成は、前記コンピュータ・システムにおける、適用される電圧、サイクル周波数、アクティブ化されるコンピューティング資源の量のうち一つまたは複数における変化を含む、請求項１ないし８のうちいずれか一項記載の方法。
【請求項１０】
前記ジョブが受領されるときに、ジョブ言語がパースされて、前記記述ジョブ言語から前記一つまたは複数の代表的なサンプルを同定する、または、前記実験フェーズの前に、前記一つまたは複数の代表的なサンプルを同定するために使用されるデフォルト・ハードウェア構成フェーズにおいてジョブ実行が始まる、請求項１ないし９のうちいずれか一項記載の方法。
【請求項１１】
当該または各代表的なサンプルがジョブ全体の3%以下、好ましくは1%以下をなす、請求項１ないし１０のうちいずれか一項記載の方法。
【請求項１２】
前記実験フェーズおよび前記完了フェーズは、ジョブが提出されるたびに実行され、好ましくは、さらに、前記完了フェーズの間にその後の実行データを収集し、その後の実行データが前記好適なハードウェア構成がもはや適切でないことを示す場合には前記実験フェーズまたは適応された実験フェーズに戻ることを含む、請求項１ないし１１のうちいずれか一項記載の方法。
【請求項１３】
前記実験フェーズが、前記ハードウェア構成の全部が試験され終わるまでまたは好適なハードウェア構成が見出されるまで継続する、請求項１ないし１２のうちいずれか一項記載の方法。
【請求項１４】
前記コンピュータ・システムはコンピュータ・クラスターを含み、前記ジョブは、いくつかのタスクに分割される少なくとも一つのアプリケーションからなり、それらのタスクは資源マネージャによって前記コンピュータ・クラスターのノードに割り当てられる、請求項１ないし１３のうちいずれか一項記載の方法。
【請求項１５】
実行のために提出されたコンピューティング・ジョブを実行するようコンピュータ・システムにおいてコンピューティング資源を管理する資源マネージャであって、当該資源マネージャは：
資源にジョブを割り当て、前記コンピュータ・システムの異なるハードウェア構成を生成するよう前記コンピュータ・システムの動作を制御するよう構成された制御モジュールであって、前記制御モジュールはまた、前記ジョブが部分的に実行される実験フェーズおよび前記ジョブの残りが実行される完了フェーズの二つのフェーズにおいて前記ジョブの実行を許容するよう構成されている、制御モジュールと；
前記ジョブの一つまたは複数の代表的なサンプルを同定し、前記コンピュータ・システムの前記異なるハードウェア構成を記憶し、前記実験フェーズにおいて前記一つまたは複数の代表的なサンプルの実行を許容するよう、前記制御モジュールに、前記ジョブを前記コンピュータ・システム内の諸資源に割り当てるよう要求するよう構成されたエネルギー最適化器であって、当該または各代表的なサンプルは前記ジョブの一部であり、当該または各代表的なサンプルは前記コンピュータ・システムの各異なるハードウェア構成をもって実行される、エネルギー最適化器と；
前記一つまたは複数の代表的なサンプルの実行中の各ハードウェア構成における実行速度および使用されるエネルギーを含む実行データを収集するよう構成されているモニタリング・モジュールとを有しており、
前記エネルギー最適化器は、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適なハードウェア構成を選択し、前記制御モジュールに、前記アプリケーションの残りを、前記好適なハードウェア構成をもって前記完了フェーズにおいて実行するよう要求するよう構成されている、
資源マネージャ。
【請求項１６】
相互接続によって一緒に結合されてクラスターを形成するノードと、請求項１５記載の資源マネージャとを有する高性能コンピュータ（HPC）・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、高性能コンピュータ・システム（HPCシステム）のようなコンピュータ・システムにおける、エネルギーを意識したスケジューリングに関する
【背景技術】
【０００２】
本発明は、コンピュータ・システムにおけるエネルギー消費に、たとえば大規模コンピュータ・クラスター、特に高性能コンピューティング（HPC）システム上で走るプログラムによって消費されるエネルギーの量を扱う。HPCクラスターは、一緒に結合され、一つの大きなモノリシック・アプリケーションを実行するために使用されうる多数の準独立なコンピュータ（ノード）からなる。アプリケーション（または他のジョブ）はいくつかの通信するタスクに分割され、それらのタスクが資源マネージャによってノードに割り当てられる。
【０００３】
図１は、本発明に関連するHPCクラスターの諸部分の概略図である。ノードは相互接続によってリンクされて示されており、一緒になってHPC資源５０２を形成する。資源マネージャ５０１がこのクラスターを制御し、ノードによって実行されるアプリケーションまたは他のタスクのようなジョブは資源マネージャに供給される。なお、ノードの例は、プロセッサのコア、プロセッサ、特定用途向け集積回路、ブレードまたは他のサーバーまたは他の任意の準独立なコンピュータを含む。
【０００４】
資源マネージャは、HPCシステムの効率的な運用を受け持ち、ノード（および簡単のため図示していない他の任意の資源）を含む資源が要求に対してサービスを与えることを保証する。支配的なサービス要求は一般に、できるだけ速くアプリケーションを完了させることであるが、ノードはハイエンド・コンピュータであってもよく、大量のエネルギーを使うことがあるので、できるだけエネルギーの使用を少なくするという副次的な要求の重要性が高まりつつある。コンピュータ・ノードは、エネルギーを減らすために使用できる多様な機構をもつが、これらは通例、計算性能の代償を伴う。
【０００５】
クラスター中のサーバー（またはノード）は、資源マネージャによって集団的に管理される。資源マネージャの役割は、たとえば一群のタスクが最短時間で完了するまたは特定のタスクがある時刻までに終了するといった適切なサービス品質指標が達成されるよう、サーバーの間でタスクを割り当てることである。資源マネージャは、サーバー集合上での資源の利用可能性の知識に依拠する洗練されたアルゴリズムおよびヒューリスティクスを使う。資源は、プロセッサ時間、サーバー・メモリ、ネットワーク帯域幅またはソフトウェア・ライセンスの利用可能性を含むことができる。資源マネージャはまた、クラスターができるだけ効率的に使用されることを保証する。特に大きなHPCクラスターについて、効率性の指標の一つは、使用するエネルギーの量である。
【０００６】
サーバーのコアをなすマイクロプロセッサの機能の向上は増大したエネルギー使用につながる。しかしながら、現代のマイクロプロセッサ設計は、最高性能が要求されないときに電力消費を減らす能力をももつ。これは、電圧および周波数のスケーリングまたはマイクロプロセッサの不使用のセクションをオフにするなど多様な技法を通じて達成される。この機能は、資源マネージャがクラスターの電力消費を減らすことができるよう、オペレーティング・システムを通じて、資源マネージャにとって利用可能にされる。だが、電力消費の節減は、クラスター上で実行中のアプリケーションの性能を維持する必要性に対して、バランスを取る必要がある。
【０００７】
アプリケーションの全体的な性能は、いくつかの要因に依存する。計算性能は多くのHPCアプリケーションにおいて重要であり、そうしたアプリケーションは「計算バウンド」であると言われる。いくつかのアプリケーションはメモリへのデータの読み書きまたはノード間のデータ通信のような他の因子によって支配される。そうしたアプリケーションは「IO（入出力）バウンド」であると言われる。計算バウンドのアプリケーションの性能は、ノードをエネルギー節約状態に入れることによって悪影響を受けるが、IOバウンドのアプリケーションは性能への影響を最小限にしてノードをエネルギー節約状態にすることができる。資源マネージャは、その制御下にあるアプリケーションが計算バウンドであるかIOバウンドであるかを知るすべがなく、よってどんなアプリケーションも安全にエネルギー節約モードにすることはできない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第20120216205号
【特許文献１】米国特許出願公開第20090100437号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
多くの資源マネージャは、ジョブのエネルギー節約モードを設定する能力をHPCクラスターのユーザーに対して呈する。しかしながら、この機能は常にうまく使われるわけではない。ユーザーは、（たとえば使用される他の資源に加えて使用されるエネルギーに対して課金されるのでない限り）エネルギーを節約しようとする動機がないことがあるからである。また、ユーザーは自分のアプリケーションの実行性能を低下させることを望まないであろう（つまり、解が出るまでの時間を最小にしたい）。よって、性能〔パフォーマンス〕が影響を受けないことが保証される場合に資源マネージャが自動的にエネルギー節約モードを適用することが望ましい。
【００１０】
以前に提出されたジョブに依拠しないエネルギーを意識した実行を提供することが望ましい。
【課題を解決するための手段】
【００１１】
本発明のある側面のある実施形態によれば、複数の異なる許容される構成を有するコンピュータ・システムにおいてジョブを実行する方法であって：ジョブを受領する段階と；ジョブの一つまたは複数の代表的なサンプルを同定する段階と；前記一つまたは複数の代表的なサンプルを実験フェーズにおいて実行する段階であって、（単一の代表的なサンプルがある場合）当該または（二つ以上ある場合）各代表的なサンプルは、前記コンピュータ・クラスターのそれぞれの異なる許容される構成を用いて実行される、段階と；前記一つまたは複数の代表的なサンプルの実行中の各構成における実行速度および使用されるエネルギーを含む実行データを収集し、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適な構成を選択する段階と；前記ジョブの残りの部分を完了フェーズにおいて前記好適な構成を用いて実行する段階とを含む方法が提供される。
【００１２】
このように、発明実施形態は、前記アプリケーションまたは他のジョブの少なくとも一つの代表的なサンプルを使い、前記代表的なサンプルは、前記ジョブの一部（前記ジョブの全体より少ない部分）であり、そのエネルギー使用特性はジョブ全体のエネルギー使用特性に対応する。エネルギー使用特性は、ジョブ全体についてのエネルギー使用特性と同じであってもよく（代表的なサンプルとジョブ全体のサイズの違いは斟酌して）、あるいは異なることが許容されるが指定された範囲内、たとえば全体的なエネルギー使用および／またはエネルギー「スパイク」の数、継続時間およびサイズなどといった一つまたは複数のエネルギー使用パラメータの点で10%または5%の偏差以内であるのでもよい。
【００１３】
ジョブは二つのフェーズにおいて実行される。たとえば1から15個までの間の代表的なサンプルのそれぞれが、コンピュータ・システムのいくつかの異なる構成のそれぞれを用いて実行される実験フェーズと、選択された構成を使っての完了フェーズである。以下では複数の代表的なサンプルが想定されることがあるが、当業者は、特定の実施形態の技術的な要求に関して不適切でない限り、代表的なサンプルは単数でも複数でもよいことを理解するであろう。単一の代表的なサンプルはより迅速な結果を与える可能性が高い一方、より多くのサンプルは、特にそれらが異なっていれば、複雑な実行のためのより好適な構成を与えることを許容しうる。
【００１４】
ひとたび当該または各代表的サンプルが、それぞれの許容される構成を用いて実行されたら（あるいはそれらのサンプルの実行の間に）、実行速度およびエネルギー使用を含む収集された実行データに基づいて好適な構成が選択される。
【００１５】
本発明の実施形態は、好適な構成での実行を許容し、該好適な構成は、許容される構成の別のものでの実行に比べてエネルギーの節約を達成する傾向がある。
【００１６】
発明実施形態は、資源マネージャまたはコンピュータ・システムにおける他の匹敵する機能が、アプリケーションの属性についての情報を、該アプリケーションが提出されるときに、取得し、それにより該アプリケーションの実行中にエネルギーを節約できるようにすることを、好ましくは計算性能への影響なしに、許容することができる。実験フェーズは、ジョブが提出されるたびに毎回実行されることができる。
【００１７】
「エネルギーを意識する（energy-aware）」資源マネージャの現状技術は、特許文献１および２に代表される。これらの文献は、以前に提出されたジョブの性能特性と、クラスターをエネルギー節約モードにすることの、所与の性能特性をもつジョブに対する効果の計算モデルとのデータベースをもつ資源マネージャ機能を記載している。資源マネージャがジョブを以前に提出されたものとして同定できる場合、資源マネージャは記録された特性を使って、性能に影響しない最良のエネルギー構成を計算する。
【００１８】
従来技術が対処していない問題は、再提出されたジョブが以前の提出と同じ性能特性をもつという保証がないということである。資源マネージャは、アプリケーションの外からは、エネルギー効率のためには最適設定がどのようなものであるかを知ることができない。同じアプリケーションが以前に提出されていたことがありうるとしても、資源マネージャには見えないが、エネルギー使用特性に影響する変化があるかもしれない。そうした変化は、コードへの修正、異なる解法アルゴリズムの選択、計算ノードへの負荷の異なるマッピング、問題サイズへの変更または有効にされるオプションへの変更を含む。これらの変更のすべては、アプリケーションのエネルギー使用特性や、構成と計算性能との間の相互作用に影響することがあり、よってアプリケーションについての過去の経験は現在の初期化ファイルでの現在のアプリケーションの実行に対する信頼できるガイドとはならない。
【００１９】
本発明のHPC実施形態は、HPCクラスターおよび他のシステム上でのコンピュータ・ジョブの、必ずしも性能に影響しないエネルギー節約モードのような好適な構成での実行を許容する。これは、クラスターに提出されたジョブの特性の同定を使う。HPCジョブの特性は、提出から提出へと非常に可変的であり、以前に提出されたジョブの知識を使うことは、信頼できないことがあり、発明実施形態によれば、すべてのジョブの特性が提出時に個々に決定される。
【００２０】
代表的なサンプルは、いかなる好適な仕方で決定されてもよい。ある代替では、ジョブは、同じ実行可能形式の、異なる入力をもつサブジョブ・アレイの形で受領され、代表的なサンプルは、前記サブジョブ・アレイのあるセレクションのみとして同定される。こうして、ジョブの一つの形は、同じ実行可能形式（アプリケーションまたは他のジョブの実行可能な形）について異なる入力値をもつ大きなグループにおいて提出されてもよい。入力だけが変わるので、代表的な例は単に、入力値のセレクションとして取られることができる。たとえば、当該または各代表的なサンプルは、同じ実行可能形式における入力の約1%から形成されてもよいし、あるいは各代表的なサンプルは入力値の一つのセットのみに関わってもよい。
【００２１】
このサブジョブ・アレイの代替では、ジョブ提出言語またはジョブ記述言語（コンピュータ管理システムにどのタスクをどの順序で実行すべきかを伝えるために使われる）における構造体がサブジョブ・アレイを指示してもよく、あるいは同じ実行可能形式の繰り返される呼び出しを同定するために提出スクリプトがパースされることもできる。いずれの場合にも、資源マネージャまたは等価な機能が該検出を実行できる。
【００２２】
第二の代替では、ジョブは、反復する入れ替わる（interchanging）サブジョブのリンクされたシーケンスの形で受領される。ここで、各サブジョブは、二回以上現われ、代表的なサンプルはシーケンス中の初期の入れ替わるサブジョブである。この場合、代表的なサンプルの数は少なくともサブジョブの数に等しいべきである。
【００２３】
いくつかのタスクは、二つ以上のジョブを一緒に結合し、一つのジョブの出力が次のジョブの入力をなす。入れ替わり（interchanging）は、交互（alternation）または異なる方式であってもよい。これらの状況において、シーケンス中の初期のサブジョブは、完了フェーズを実行するのに十分な実行データが得られるまで情報を集めるよう実行されてもよい。有利には、各サブジョブはアプリケーションであり、各アプリケーションについて一つで、二つ以上の好適な構成が選択される。
【００２４】
この場合、ジョブの型、よって代表的なサンプルの型の決定は、ループ構造のようなジョブ記述言語中の構造体から生起することができる。
【００２５】
第三の代替では、ジョブは巡回的であり、ジョブ内で諸サイクルが認識され、ジョブの一つまたは複数のサイクルが、当該または各代表的なサンプルとして同定される。
【００２６】
多くのアプリケーションはよく定義された巡回的な性質をもち、それはプログラマーまたはユーザーによって事前に同定されていてもよいし、ジョブ記述言語を吟味することによって推定されてもよいし、あるいは実行中に同定されてもよい。
【００２７】
第四の代替では、ジョブは、メイン・ジョブと、該メイン・ジョブに対応するエネルギー使用特性をもつ該メイン・ジョブの一つまたは複数のプローブ・バージョンの形のサブジョブとを含み；該サブジョブが、実験フェーズにおいて実行される代表的なサンプルとして同定され、メイン・ジョブは完了フェーズで実行される。こうして、（コンパイルされた実行可能なプログラムを受け、たとえばジョブ記述言語を使ってデータおよびパラメータを入力し得る）ユーザーまたは（ジョブについてのコードへのアクセスをもつことがあり、よってたとえばジョブ内の諸サイクルを同定できる）プログラマーは、エネルギーを節約するようコンピュータ・システムを構成するのを補助するよう、メイン・アプリケーションの短いプローブ・バージョンを供給することができる。
【００２８】
実行速度およびエネルギー使用を考慮に入れる好適な構成の選択は、いかなる好適な仕方でなされてもよい。
【００２９】
たとえば、コンピュータ・システムの各構成が異なるエネルギー使用特性をもち、問題のジョブについて異なる仕方で計算性能に影響する場合、好適な構成は、最低のエネルギー使用および実行を完了するための受け容れ可能な時間をもつ構成でありうる。
【００３０】
あるいはまた、エネルギー使用における指定された節約についての実行時間の受け容れ可能な増加に対する許容値が設定されてもよく、それにより、好適な構成は、よりエネルギー効率的でない構成に関して実行時間を増大させてもよい。
【００３１】
好適な構成の決定は、他の代表的なサンプルおよび他の構成の実行からのデータに対する追加または代替として、デフォルト構成からの実行データを比較の目的で考慮に入れてもよい。デフォルト構成は、一般的な事前設定されたデフォルト構成であってもよく、たとえばジョブの型に依存してもよい。構成は、好適な構成を与えるのに十分な実行データが得られたらすぐに選ばれてもよい（すなわち、実験フェーズと実行データの収集とは並列に実行されてもよい）。あるいは実行データの集合全体が考慮されてもよい。
【００３２】
上述した代替のすべてについて、異なる構成は、コンピュータ・クラスターにおける次のもののうち一つまたは複数における変化を含んでいてもよい：適用される電圧、サイクル周波数（クロック速度）、アクティブ化されるコンピューティング資源の量。
【００３３】
本方法は、上記の代替の任意のものまたは全部をカバーするために代表的なサンプルを同定しようとする試みを含んでいてもよい。たとえば、代表的なサンプルがプログラマーまたはユーザーによって事前に同定されている場合、同定段階は代表的なサンプルの単純な入力であってもよい。代表的なサンプルの事前同定された集合がない場合、代表的なサンプルを同定するためにジョブ記述言語をパース（parse）する段階があってもよい。以前の同定方法が利用可能でないまたは不成功である場合、代表的なサンプルは実行中に同定されてもよい。
【００３４】
ある実施形態では、代表的なサンプルは、ジョブ中の事前同定があるかどうかをチェックすることによって同定される。これがうまくいかない場合には、ジョブ記述（または提出）言語をパースし、それでもうまくいかない場合には、実行中の同定を試みる。
【００３５】
このように、有利には、（必要であれば）ジョブ記述言語から代表的なサンプルを同定するために、ジョブが受領されるときにジョブ記述言語がパースされる。追加的または代替的に、実験フェーズの前に、代表的なサンプルを同定するために使用されるデフォルト構成フェーズにおいてジョブ実行が始まってもよい。
【００３６】
当業者は、このことおよび一般的なコンテキストから、本稿で言及する方法段階が、定義の順序とは異なる順序で実行されて、それでいて好ましい結果を生じることがあることを理解するであろう。
【００３７】
本技法が効果的であるためには、代表的なサンプルは全体的なアプリケーションの小さな割合、たとえばジョブ全体の2%以下、あるいはより好ましくはジョブ全体の1%以下をなすべきである。いずれにせよ、代表的なサンプルの全実行時間は全体的な実行時間の20%未満を、より好ましくは10%未満をなすことが期待される。
【００３８】
発明実施形態によれば、実験フェーズおよび完了フェーズは、ジョブが提出されるたびに実行される。好ましくは、本方法はさらに、完了フェーズの間にその後の実行データを収集し、その後の実行データが上記好適な構成がもはや適切でないことを示す場合には実験フェーズに戻ることを含む。あるいはまた、実行は適応された実験フェーズに戻ってもよい（たとえば、入れ替わるサブジョブでは、一つ以外の他のジョブがまだ好適な構成で実行中である場合、一つのサブジョブが実験フェーズに再入するだけでよい）。他の状況では、実行はデフォルト構成に変わってもよい。
【００３９】
コンピュータ・システムは、コンピュータ・クラスターであっても、あるいは別の構造を有していてもよい。クラスターの場合、ジョブは、いくつかのタスクに分割される少なくとも一つのアプリケーションからなっていてもよく、それらのタスクは資源マネージャによってコンピュータ・クラスターのノードに割り当てられてもよい。
【００４０】
本発明の第二の側面のある実施形態では、コンピューティング・ジョブを実行するようコンピュータ・システムにおいてコンピューティング資源を管理する資源マネージャが提供される。本資源マネージャは：資源にジョブを割り当て、コンピュータ・システムの異なる構成を生成するようコンピュータ・システムの動作を制御するよう構成された制御モジュールと；ジョブの代表的なサンプルを同定し、コンピュータ・システムの前記異なる構成を記憶し、実験フェーズにおいて前記代表的なサンプルの実行を許容するよう、制御モジュールに前記ジョブをコンピュータ・システム内の諸資源に割り当てるよう要求するよう構成されたエネルギー最適化器であって、各代表的なサンプルはコンピュータ・システムの各異なる構成をもって実行される、エネルギー最適化器と；前記代表的なサンプルの実行中の各構成における実行速度および使用されるエネルギーを含む実行データを収集するよう構成されているモニタリング・モジュールとを有しており、前記エネルギー最適化器は、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適な構成を選択し、前記制御モジュールに、前記アプリケーションの残りの部分を、前記好適な構成をもって完了フェーズにおいて実行するよう要求するよう構成されている。
【００４１】
本発明のあるさらなる側面のある実施形態では、相互接続によって一緒に結合されてクラスターを形成するノードまたはサーバーと、上記のような資源マネージャとを有する高性能コンピュータ・システムが提供される。
【００４２】
本発明のこれらの側面は、上記でより詳細に述べた方法側面の個々の特徴およびサブ特徴を含んでいてもよい。このように、上述した好ましい方法特徴は、エネルギー最適化器または資源マネージャ全般の向上した機能の点で資源マネージャに適用されてもよい。
【００４３】
資源マネージャ自身は、ソフトウェア、ハードウェア、ミドルウェアにおいて、特定用途向け集積回路（ASIC）として、あるいは他の任意の形で、実装されてもよい。
【図面の簡単な説明】
【００４４】
単に例として、付属の図面が参照される。
【図１】コンピュータ・クラスターの概略図である。
【図２】発明実施形態に基づく方法の一般的な実施形態の概略図である。
【図３】発明実施形態に基づくサブジョブ・アレイの処理のフローチャートである。
【図４】発明実施形態に基づく、入れ替わる一連のサブジョブからなる結合されたジョブの処理の流れ図である。
【図５】発明実施形態に基づく巡回的なジョブの処理の流れ図である。
【図６】事前同定されたプローブの処理の流れ図である。
【図７】資源マネージャの概略図である。
【図８】代表的なサンプルの同定を概観において示すフローチャートである。
【発明を実施するための形態】
【００４５】
図２は、部分１、２、３などから構成され、長さXをもって示されるジョブの実行を示している。ステップS10では、ジョブの代表的なサンプルが同定され、部分１、２、３などとして、長さYをもって示される。XはYよりずっと大きく、これら代表的なサンプルは一緒になっても全体的なジョブ長さのかなり小さな割合をなす。単一の代表的なサンプルがあるのでもよい。各代表的なサンプルは、ステップS20において、コンピュータ・システムのいくつかの異なる構成のそれぞれにおいて実行される。さまざまな構成はａ、ｂ、ｃとして示され、それぞれはエネルギー使用を変化させうるいくつかの特徴を含んでいてもよく、実行されている実際のジョブに依存する実行速度に対する付随的影響をもつことがある。ステップS30では、実行データが収集される。こうして、代表的なサンプル１について、構成ａ、ｂ、ｃのそれぞれにおいて結果が与えられ、サンプル２および３についても同様である。これは、好適と思われる構成の選択を許容する。
【００４６】
先述したように、ステップS20における代表的なサンプルの実行、ステップS30における実行データの収集およびステップS40における構成の選択は、逐次的に、あるいは部分的もしくは完全に並列に実行されてもよい。そのため、すべての結果が準備される前に構成が選ばれることもある。これはたとえば、所定の基準または基準の集合に従って好適である構成が、すべての構成がすべての代表的なサンプルを用いて試験される前に見出される場合に起こりうる。その場合、実験フェーズは好適な構成が見出されるまで続けられるだけでもよく、よって必ずしも実験フェーズは完了しなくてもよい。ステップS50では、ジョブの残りの部分が、選ばれた構成を使って実行される。たとえば結合されたジョブの要求を満たすため、二つ以上の構成が選ばれてもよいことを注意しておくべきである。
【００４７】
アプリケーションが実行されるコンピュータ・ハードウェアは、全体的なシステムのエネルギー使用に影響するいくつかの異なる構成オプションをもつことがある。たとえば、たいていの現代のハードウェアは、サイクル周波数への変更を許容し、周波数を下げるとエネルギー使用も減る。現代のハードウェアは計算状態への変更も許容し、たとえば集積回路の一部をオフにしてエネルギーを節約できる。説明の目的で、ここでは少数の（たとえば5ないし15個未満、たとえば10個の）離散的な構成があり、それぞれが異なるエネルギー使用特性をもち、異なる仕方で計算性能に影響できるとする。資源マネージャは、これらの許容される構成のリストをもち、発明実施形態におけるタスクは、各アプリケーションについて最適の構成を、該アプリケーションが提出される際に選択できる。
【００４８】
最適な構成は、ジョブの実行を完了するための時間に対する受け容れ可能な影響で最低のエネルギー使用をもつ構成であってもよい。（通例、これはそのジョブにかかる時間が最低であるということだが、資源マネージャまたはユーザーのいずれかによって設定される、エネルギー使用における指定された節約について、他の構成またはデフォルトの構成に比べての、実行時間の受け容れ可能な増大に対する許容度があることもある。）
上記で論じたように、資源マネージャは、アプリケーションの外からは、エネルギー効率のために最適な設定が何であるかを知ることができない。他方、ひとたび構成オプションのセットが選ばれたら、アプリケーションのその実行のエネルギー性能特性は本質的には決定される。
【００４９】
いくつかの発明実施形態の中核は、特定の提出されたアプリケーションおよび諸構成オプションについて、その提出されたジョブを使って最良の解決策を見出すよう実験することによって、資源マネージャが能動的に最適な設定を決定することを提案するというものである。資源マネージャは、提出されたジョブの小さなセクション（代表的なサンプルまたはプローブ）を、エネルギー構成設定のすべてを使って実行する。
【００５０】
特定のジョブについて最適な構成を見出すために、実行統計が収集され、解析される。この最適な設定は、提出されたジョブの残りの部分（圧倒的に最大の部分）を実行するために使用される。代表的なサンプルはジョブ全体の約1%であってもよい。このプロセスは、好ましくは、資源マネージャに提出される一つ一つのジョブについて、ジョブが提出されるたびに実行される。
【００５１】
最適な構成を見出すために実験することは、関連技術において知られているが、それはジョブ全体のレベルで適用されていた。ジョブが提出され、数回、完了まで実行されるのである。本願の一つの新規な側面は、実験が、提出されたジョブの部分的な実行を使って行なわれるということである。HPC発明実施形態は、HPCジョブが長い時間にわたって実行されることおよびHPCジョブが同じタスクを同じ性能特性をもって多数回繰り返すことという二つの観察を活用することに基づいていると見なすことができる。これらの複製を抽出し、その若干を最適構成を見出すために使うことは、全体的な実行時間に対してほとんどまたは全く代償なしに可能である。
【００５２】
いくつかの実施形態における全体的なプロセスは次のようなものである。
・資源マネージャが、実行すべきジョブを受け取る。このジョブは一つまたは複数のアプリケーションを初期化ファイルとともに有する。
・資源マネージャは後述する技法の一つを使って好適なプローブを同定する。プローブとは、全体的なジョブのエネルギー使用特性を表わす、全体的なジョブの小さなセクションである。よって、ここでは、プローブは代表的なサンプルとも称される。
・資源マネージャは、許容される構成のそれぞれと取り合わせたプローブのそれぞれを実行し、提出されたジョブの残りの部分のために使用すべき最良の構成を決定する。
【００５３】
プローブ実行は通例、ジョブ実行を前に進める。よって、このプロセスは必ずしも無駄にされる計算資源やジョブ終了までの時間の増大を生じることにはならない。
【００５４】
〈代替的な代表的なサンプル〉
以下の諸セクションは、種々の状況において使用されうる代表的なサンプルおよびその同定法のさらなる詳細を与える。
【００５５】
〈代替１：サブジョブ・アレイ〉
HPCジョブは、同じ実行可能形式を異なる入力値をもって実行させる、大きな諸グループにおいて提出されることができる。これを行なう理由は、可能な解の範囲を調査することである。すなわち、天気予報では入力条件の小さな変化に対する感度を試験し、工学では一組のパラメータの最適な組み合わせを見出す。これらのグループまたは「サブジョブ・アレイ」においては、同じ実行可能形式が、ほとんど同一の初期値を用いて多数回実行される。したがって、アルゴリズム選択および問題サイズが同じとなるので、アレイ内で提出されるすべてのサブジョブについての実行特性は非常に似通っているであろうと安全に想定できる。結果として、各メンバー・ジョブの実行時間は非常に似通っているであろう。サブジョブ・アレイが合理的な数、たとえば50ないし100のメンバーをもつ場合、資源マネージャは、その特定の実行可能形式および構成についての最適な設定を見出すために、アレイのメンバーのいくつかの実験的な実行を使うことができる。すなわち、メンバー・ジョブの最初の若干数（プローブ）について設定を変えて、最もエネルギー効率のよい構成を見出し、その構成を残っているメンバー・ジョブすべてに適用することができる。
【００５６】
図３は、このプロセスを例解している。ジョブが受領され、資源マネージャは、そのジョブがサブジョブ・アレイであることを検出する（１００）。（しばしば、ジョブ提出言語にはアレイを示す特殊な構造体がある。あるいは、提出スクリプトがパースされて、同じ実行可能形式の反復される呼び出しが同定されることができる。）上述したように、資源マネージャは、エネルギー使用のために性能をトレードする機械構成のリストを保持している。資源マネージャは、このリストを通じて、機械構成のそれぞれについて各メンバー・ジョブを提出することを逐次反復する（１０１および１０２）。実行の終わりに、実行統計が記録される（１０３）。プローブ実行を通じたすべての構成の試験に続いて、資源マネージャは結果を解析して、そのサブジョブ・アレイについての最適な機械構成、たとえば最短実行時間に近い最小エネルギー使用をもつ構成を同定する（１０４）。次いで、資源マネージャは、同定された最適構成を使って残りのメンバー・ジョブを提出する（１０５）。
【００５７】
〈アルゴリズム２：結合されたまたは入れ替わるサブジョブ〉
いくつかのHPCジョブは二つのアプリケーションを一緒に結合し、一方の出力が他方の入力になる。これらはしばしば、結合されたアプリケーションの実行が交互に起こる逐次反復式または時間進行（time  marching）方式の一部として結合される。すなわち、AおよびBと称される二つの結合されたアプリケーションが与えられるとき、結合されたジョブの実行は、これら二つのアプリケーションの、たとえば順序ABABABABA……での繰り返される実行に関わる。ひとたび資源マネージャが、提出されたジョブが結合されたアプリケーションに関わることを検出したら、実験的な実行が、結合されたアプリケーションのメンバーについての最適なシステム構成を決定することが可能である（よって、Aの実行およびBの実行がプローブとなる）。アプリケーションAおよびBが異なり、よって各アプリケーションの異なる設定が最適実行のために必要とされることがありうることを注意しておく。しかしながら、結合されたアプリケーションは固定した問題を解くので、問題サイズおよびアルゴリズム選択のような性能に関する特性の多くは一定のままであり、よって初期の実験の結果は有効なままである。ただし、場合によっては、結合されたアプリケーションの一方または両方が実行を通じて発達するにつれ、（モデル化されるシステムの物理的な属性とともに）性能特性が変化する。これは、資源マネージャが実行を通じて実行時間およびエネルギー使用をモニタリングする必要があり、メンバー・アプリケーションのいずれかが（初期の実験フェーズの間に得られる）期待される値から逸脱する場合には、資源マネージャが実験フェーズを再実行して現在の最良の値のセットを決定する必要があることを意味する。
【００５８】
実験フェーズの間、資源マネージャは、結合された諸アプリケーション（諸サブジョブまたは諸メンバー・ジョブ）をユーザーによって要求されたシーケンスで実行することを続ける。変更がされるのは、システム構成設定に対してだけであり、該設定は、最適な設定を見出すために諸メンバー・アプリケーションについて十分な情報が集まるまで、諸メンバー・ジョブが実行されるにつれて変えられていく。
【００５９】
例解目的のため、結合されたジョブを、二つのサブジョブ（AおよびB）の交互交替であると考えてきたが、この方式が、いくらでも多くのサブジョブが逐次的に実行される（たとえば、ABCDABCDABCD…またはたとえばAABBCDACDBBBのような変化する順序で）場合に拡張できることは明らかである。実験フェーズはそれでも有効である。
【００６０】
図４は、結合されたアプリケーションのためのプロセスを示している。ジョブが受領され、資源マネージャによって、結合された諸アプリケーションとして識別される（２００）（これは、ループ構造のようなジョブ記述言語における構造体からであってもよい）。資源マネージャは、それらのサブジョブを諸プローブとして使って実験モードで当該ジョブの実行を開始する（２０１）。各サブジョブは、各エネルギー構成を用いて試験され、性能データが資源マネージャによって記録される（２０３）。ひとたびあるサブジョブ型についてすべての可能な構成が試験されたら、そのサブジョブ型について最適な構成が選択され（２０４）、残りの実行はその構成を用いて実行される（２０５）。資源データは性能データをモニタリングし（２０６）、期待される最適値からの（設定された許容範囲を超えた）逸脱がある場合には（２０７）、そのジョブサブ型について実験モードに再びはいる（２０８）。
【００６１】
〈代替３：逐次反復試験――巡回的なジョブ〉
ほとんどすべてのHPCアプリケーションはよく定義された巡回的な性質をもつ。（たとえば時間を通じて）多数のステップのそれぞれについて同じ（または同様の）計算を繰り返したり、あるいはより高い精度に結果を洗練させながら一連の計算を繰り返したりするのである。
【００６２】
資源マネージャがアプリケーション内のサイクルを同定できるいくつかの方法がある。それには以下のものが含まれる。
・サイクルの開始および終了のプログラマーまたはユーザーによる同定。それが資源マネージャに送り返される。
・MPI通信プリミティブのようなライブラリによって提供される方法への呼び出しの反復されるシーケンスから、資源マネージャが推定する。（たとえば、グローバルな待ちまたはグローバルな総和がサイクルの終わりにしばしば現われる。）
・あるサイクル中に種々の資源が使われるにつれて変化する、アプリケーションの電力使用プロファイルを解析することによって、資源マネージャが推定する。（たとえば、サイクルは、ネットワーク電力使用を増加させる通信フェーズを含むことがある。）
・サイクルの間に変化する資源の使用レベルから、資源マネージャが推定する。たとえば、サイクルの結果が不揮発性記憶に保存される際、I/Oが増加する一方、CPU使用が減少することがある。
【００６３】
アプリケーションは、通例、多数の実行サイクルをもち、よってひとたび資源マネージャが信頼できる仕方でサイクルを同定できたら、資源マネージャは実験技法を適用して当該ハードウェアのための最適なエネルギー構成を見出すことができる。実行サイクルがプローブとなる。すなわち、資源マネージャは、アプリケーションについてのエネルギー構成を変え、複数サイクルを通じて走らされる実行を監視し、実行統計を記録することができる。ひとたび資源マネージャのリストにあるすべての構成についてこれがなされたら、最適な構成が、アプリケーションの実行の残りの部分について適用されることができる。アプリケーション計算が進行するにつれて特性が変わることがあるので、資源マネージャは性能をモニタリングし、必要であれば改めて最適化する。
【００６４】
サイクルの実行時間は短くてもよく、資源マネージャ動作の粒度（たとえばエネルギー構成変化への応答時間）は単一サイクルよりずっと大きくてもよいことを注意しておく。したがって、正確なデータを与えるためには、単一の構成をもつ個々の実験はいくつかのサイクル（アプリケーションおよびコンピュータ・システムに依存する）にわたって走らされる必要がある。
【００６５】
図５はこのプロセスを例解している。ジョブが受領され、資源マネージャによってモノリシックな実行可能形式として識別される（３００）。（これは、ジョブ記述言語の、結合されているとしてまたはサブジョブ・アレイとして同定できる構造の欠如からであってもよい。）資源マネージャは、デフォルト構成を使って当該ジョブの実行を開始し、その実行を観察して、上記で論じた技法の一つを使ってサイクルを識別する（３０１）。ひとたびサイクルが信頼できる形で同定できたら、各サイクルは各エネルギー構成を用いて試験され（３０２、３０３）、資源マネージャによって性能データが記録される（３０４）。ひとたびすべての構成が試験されたら、最適な構成が選択され（３０５）、残りのサイクルはその構成（３０６）を用いて走らされる。資源データは性能データをモニタリングし（３０７）、期待される最適値からの（設定された許容範囲を超えた）逸脱があれば（３０８）、実験モードに再びはいる（３０９）。
【００６６】
〈代替４：サンプル実行可能形式〉
ユーザーは、メイン実行可能形式と同じエネルギー使用特性をもつことが保証される、メイン・アプリケーションの一つまたは複数の短い、低資源使用の「プローブ」バージョンを供給することによって、資源マネージャが効率的な実験フェーズを実行することを助けることができる。たとえば、供給されるプローブ実行可能形式は、少数のサイクルを走らせるよう構成されることができる。資源マネージャは、これらのプローブを使って、メイン・アプリケーションを実行する前に、最適な構成を見出すことができる。
【００６７】
図６は、このプロセスを例解している。ジョブが受領され、資源マネージャは、そのジョブがユーザーによって同定されたプローブをもつことを検出する（４００）。資源マネージャはプローブを抽出する（４０１）。上記のように、資源マネージャは、エネルギー使用のために性能をトレードする機械構成のリストを保持している。資源マネージャは、このリストを通じて逐次反復し、各プローブを、各機械構成について実行する（４０２および４０３）。実行の終わりに、実行統計が記録される（４０４）。次いで、資源マネージャは、最適な機械構成、たとえば最短の実行時間に近い最小のエネルギー使用をもつ構成を同定する（４０５）。次いで、資源マネージャは、同定された最適な構成を使って残りのジョブを実行する（４０６）。
【００６８】
〈システム構成〉
図７は、資源マネージャ（５０１）がHPCコンピュータ（５０２）に資源を割り当てることを担う例示的なシステム構成を示している。資源マネージャは、タスク（ジョブの一部）をHPC資源に割り当てることができ、またCPUの電圧および周波数のような、資源の動作の諸側面を制御することもできる（５０３）。資源マネージャのうち関心対象となる部分は、ジョブをコンピューティング資源に割り当て、コンピューティング資源の構成を設定するコントロール（５０４）と、代表的なサンプルの実行中の各構成における実行速度および使用されるエネルギーを含む実行データを収集するモニタ（５０６）と、本発明の主たる新たなコンポーネントであるエネルギー最適化器（５０９）とである。資源についての一般的なデータ（５０５）が、資源要求（５０８）とともにコントロールに入力される。エネルギー最適化器（５０９）は、部分５１１として示されているジョブの代表的なサンプルを同定し、HPC資源の、エネルギー使用に関係する許容される構成（５１０）を記憶する。
【００６９】
最適化器は、代表的なサンプルを同定し、最良の構成を見出すプロセスを制御する。最適化器は、エネルギー使用についてのモニタからのデータおよび（必要な場合には）サンプルを同定しサンプルの開始と終了を検出するために使われる任意のさらなるデータを受領することによってこれを行なう。最適化器は、前記コントロールによって規定される構成変化の要求を定式化する。よって、最適化器は、前記コンピュータ・システムとインターフェースをもつよう前記モニタおよびコントロールを使ってプロセス適応構成全体を制御する。
【００７０】
資源マネージャは、タスク割り当ておよびシステム設定（５０３）をHPC資源に送る。
【００７１】
このように、HPC資源の構成のリストをもって初期化されているエネルギー最適化器（５０９）は、この情報を、プローブの指定または同定と組み合わせて、最適化実験プロセスを駆動する。
【００７２】
エネルギー最適化器（５０９）は、前記コントロール（５０４）に対して最適なエネルギー構成を提案する。この構成は、ジョブの諸プローブの実験的実行の間に改めてスコアされた実行統計を解析することによって決定される。解析は、プローブが最小エネルギーを使用するような構成を見出すことであることができる。
【００７３】
図８は、代表的なサンプルが上記で挙げた諸代替のカテゴリーの一つまたは同じ同定方法を許容する別のカテゴリーに属する場合に、代表的なサンプルが同定されうる方法のある実施形態を示している。ステップS60では、代表的なサンプルが、たとえばサブジョブ・アレイまたはサイクルまたはプローブ・バージョンの形で事前同定されているかどうかの第一のチェックがある。事前同定は、代表的なサンプルのいかなる型のものであってもよく、ユーザーによって入力されてもよいし、あるいはジョブ記述構造体に基づいていてもよい。
【００７４】
代表的なサンプルが事前同定されている場合、方法は、ステップS120において、実験フェーズおよび完了フェーズの方法論に進む。事前同定がなければ、S70においてジョブ記述言語がパースされ、ステップS80においてパースによって代表的なサンプルが同定される場合、ステップS120において実験フェーズおよび完了フェーズの方法論が使用される。パースは、代表的なサンプルの多くの異なる型を同定するために使用されることができる。
【００７５】
パース段のあとでもまだ代表的なサンプルが同定されていない場合には、ステップS90においてジョブはデフォルトの構成をもって実行を開始し、ステップS100において、代表的なサンプルが該実行から同定されてもよい。その場合、S120において実験および完了フェーズの方法論に進む。そうでない場合には、ジョブはデフォルトの構成をもって実行を続ける。
【００７６】
〈発明実施形態の要約〉
現代の高性能コンピュータ（HPC）システムおよび他のコンピュータ・システムは大量のエネルギーを使うが、コストおよび社会的責任の理由から、使用エネルギーを減らす必要がある。HPCクラスターのコンポーネント・コンピュータはそのエネルギー消費を減らす能力をもつが、それは全部ではないがいくつかの型のジョブについては低下した性能という代償を伴う。HPCクラスター資源マネージャは、エネルギー保存モードで実行されるときに性能を失わない（または受け容れ可能な性能損失をもつ）ようなジョブを同定することができれば、性能を維持しつつ、エネルギーを節約できる。発明実施形態は、資源マネージャがあらゆる提出されるジョブの短いセクション（プローブ）を可能な諸構成に対して試験し、特定のジョブについて最適な構成を選択することを提案することによって、好適なジョブを同定する。HPCおよび他のコンピュータ・システム・ジョブは規則的な実行パターンをもち、よってプローブが存在する。発明実施形態は、いくつかの異なるプローブ型を同定する。
【００７７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の異なる許容されるハードウェア構成を有するコンピュータ・システムにおいてジョブを実行する方法であって、当該方法は：
実行のために提出されたジョブを受領する段階と；
前記ジョブの一つまたは複数の代表的なサンプルを同定する段階であって、当該または各代表的なサンプルは前記ジョブの一部である、段階と；
前記ジョブが部分的に実行される実験フェーズおよび前記ジョブの残りが実行される完了フェーズの二つのフェーズにおいて前記ジョブを実行する段階とを含み、
前記実験フェーズでは、当該または各代表的なサンプルは、前記コンピュータ・システムのそれぞれの異なる許容されるハードウェア構成を用いて実行され；
前記一つまたは複数の代表的なサンプルの実行中に各ハードウェア構成における実行速度および使用されるエネルギーを含む実行データが収集され、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適なハードウェア構成が選択され；
前記完了フェーズでは、前記ジョブの残りが前記好適なハードウェア構成を用いて実行される、
方法。
（付記２）
前記ジョブが、同じ実行可能形式の、異なる入力をもつサブジョブ・アレイの形で受領され、前記一つまたは複数の代表的なサンプルは、前記サブジョブ・アレイのあるセレクションのみとして同定される、付記１記載の方法。
（付記３）
前記ジョブが、反復する入れ替わるサブジョブのリンクされたシーケンスの形で受領され、各サブジョブは二回以上現われ、前記代表的なサンプルは前記シーケンス中の最初のいくつかのサブジョブである、付記１記載の方法。
（付記４）
各サブジョブはアプリケーションであり、各アプリケーションについて一つで、二つ以上の好適なハードウェア構成が選択される、付記３記載の方法。
（付記５）
前記ジョブが巡回的であり、前記ジョブ内で諸サイクルが認識され、前記ジョブの一つまたは複数のサイクルが、当該または各代表的なサンプルとして同定される、付記１記載の方法。
（付記６）
代表的なサンプルが、前記ジョブ内の事前同定を調べることによって同定され、これが成功しない場合には、前記ジョブ記述言語をパースし、それでも成功しない場合には実行中の同定を試みる、付記５記載の方法。
（付記７）
前記ジョブが、メイン・ジョブと、該メイン・ジョブに対応するエネルギー使用特性をもつ該メイン・ジョブの一つまたは複数のプローブ・バージョンの形のサブジョブとを含み；該サブジョブが、前記実験フェーズにおいて実行される前記一つまたは複数の代表的なサンプルとして同定され、前記メイン・ジョブは前記完了フェーズにおいて実行される、付記１記載の方法。
（付記８）
前記コンピュータ・システムの各ハードウェア構成が異なるエネルギー使用特性をもち、計算性能に対して異なる影響をもち、好適なハードウェア構成は、実行を完了するための最低のエネルギー使用および受け容れ可能な時間をもつハードウェア構成である、付記１ないし７のうちいずれか一項記載の方法。
（付記９）
前記異なるハードウェア構成は、前記コンピュータ・システムにおける、適用される電圧、サイクル周波数、アクティブ化されるコンピューティング資源の量のうち一つまたは複数における変化を含む、付記１ないし８のうちいずれか一項記載の方法。
（付記１０）
前記ジョブが受領されるときに、ジョブ言語がパースされて、前記記述ジョブ言語から前記一つまたは複数の代表的なサンプルを同定する、または、前記実験フェーズの前に、前記一つまたは複数の代表的なサンプルを同定するために使用されるデフォルト・ハードウェア構成フェーズにおいてジョブ実行が始まる、付記１ないし９のうちいずれか一項記載の方法。
（付記１１）
当該または各代表的なサンプルがジョブ全体の3%以下、好ましくは1%以下をなす、付記１ないし１０のうちいずれか一項記載の方法。
（付記１２）
前記実験フェーズおよび前記完了フェーズは、ジョブが提出されるたびに実行され、好ましくは、さらに、前記完了フェーズの間にその後の実行データを収集し、その後の実行データが前記好適なハードウェア構成がもはや適切でないことを示す場合には前記実験フェーズまたは適応された実験フェーズに戻ることを含む、付記１ないし１１のうちいずれか一項記載の方法。
（付記１３）
前記実験フェーズが、前記ハードウェア構成の全部が試験され終わるまでまたは好適なハードウェア構成が見出されるまで継続する、付記１ないし１２のうちいずれか一項記載の方法。
（付記１４）
前記コンピュータ・システムはコンピュータ・クラスターを含み、前記ジョブは、いくつかのタスクに分割される少なくとも一つのアプリケーションからなり、それらのタスクは資源マネージャによって前記コンピュータ・クラスターのノードに割り当てられる、付記１ないし１３のうちいずれか一項記載の方法。
（付記１５）
実行のために提出されたコンピューティング・ジョブを実行するようコンピュータ・システムにおいてコンピューティング資源を管理する資源マネージャであって、当該資源マネージャは：
資源にジョブを割り当て、前記コンピュータ・システムの異なるハードウェア構成を生成するよう前記コンピュータ・システムの動作を制御するよう構成された制御モジュールであって、前記制御モジュールはまた、前記ジョブが部分的に実行される実験フェーズおよび前記ジョブの残りが実行される完了フェーズの二つのフェーズにおいて前記ジョブの実行を許容するよう構成されている、制御モジュールと；
前記ジョブの一つまたは複数の代表的なサンプルを同定し、前記コンピュータ・システムの前記異なるハードウェア構成を記憶し、前記実験フェーズにおいて前記一つまたは複数の代表的なサンプルの実行を許容するよう、前記制御モジュールに、前記ジョブを前記コンピュータ・システム内の諸資源に割り当てるよう要求するよう構成されたエネルギー最適化器であって、当該または各代表的なサンプルは前記ジョブの一部であり、当該または各代表的なサンプルは前記コンピュータ・システムの各異なるハードウェア構成をもって実行される、エネルギー最適化器と；
前記一つまたは複数の代表的なサンプルの実行中の各ハードウェア構成における実行速度および使用されるエネルギーを含む実行データを収集するよう構成されているモニタリング・モジュールとを有しており、
前記エネルギー最適化器は、実行速度およびエネルギー使用を考慮に入れて前記ジョブについての好適なハードウェア構成を選択し、前記制御モジュールに、前記アプリケーションの残りを、前記好適なハードウェア構成をもって前記完了フェーズにおいて実行するよう要求するよう構成されている、
資源マネージャ。
（付記１６）
相互接続によって一緒に結合されてクラスターを形成するノードと、付記１５記載の資源マネージャとを有する高性能コンピュータ（HPC）・システム。
【符号の説明】
【００７８】
１００  ジョブ・アレイを受領
１０１  全構成が試験済み？
１０２  次の構成でジョブを実行
１０３  実行統計を記録
１０４  最良の構成を選択
１０５  残りのジョブを実行
２００  結合ジョブを受領
２０１  AおよびBについて全構成が試験済み？
２０２  次の構成でA、Bを実行
２０３  実行統計を記録
２０４  A、Bについて最良の構成を選択
２０５  シミュレーションの次のステップを実行(A,B,…)
２０６  実行時間およびエネルギーを記録
２０７  実行時間、エネルギーが不変？
２０８  構成を再試験
３００  ジョブを受領
３０１  サイクルを同定
３０２  サイクルについて全構成が試験済み？
３０３  あるサイクルにわたりある構成で実行
３０４  実行統計を記録
３０５  最良の構成を選択
３０６  シミュレーションの残りを実行
３０７  サイクル実行時間およびエネルギーを記録
３０８  実行時間、エネルギーが不変？
３０９  構成を再試験
４００  ジョブを受領
４０１  プローブを抽出
４０２  全プローブについて全構成が試験済み？
４０３  プローブをある構成で実行
４０４  実行統計を記録
４０５  最良の構成を選択
４０６  ジョブを実行
５０１  資源マネージャ
５０２  ノード
５０５  資源についての一般的データ
５１０  エネルギー節減のための許容される構成
５０１  資源マネージャ
５０９  エネルギー最適化器
５０６  モニタ
５０４  コントロール
５０３  タスク割り当て、システム設定
５０２  HPC資源
５１１  代表的なサンプル
５０８  資源要求
５０７  ジョブ指定
S10  ジョブの代表的なサンプルを同定
S20  各代表的なサンプルを異なる各構成で実行
S30  実行データを収集
S40  構成を選択
S50  ジョブの残りを実行
S60  代表的なサンプル（例：ジョブ・アレイまたはサイクルまたはプローブ・バージョン）が事前同定されているか？
S70  ジョブ記述言語を解析
S80  代表的なサンプル（例：サイクルまたは入れ替わり現われるサブジョブまたはサブジョブのアレイ）が同定されているか？
S90  デフォルト構成でジョブを実行開始
S100  代表的なサンプルが実行から同定される
S110  デフォルト構成で実行を継続
S120  実験フェーズおよび完了フェーズの方法論を使って実行
【図１】
2015118705.tif 000003
【図２】
2015118705.tif 000004
【図３】
2015118705.tif 000005
【図４】
2015118705.tif 000006
【図５】
2015118705.tif 000007
【図６】
2015118705.tif 000008
【図７】
2015118705.tif 000009
【図８】
2015118705.tif 000010