(57)【要約】  ホリスティックグローバルなパフォーマンス及び電力管理を提供する方法及び装置が記載されている。実施形態においては、（例えば、複数の計算ノードのうちの各計算ノードに結合されている）ロジックは、複数の計算ノードにわたる電力及びパフォーマンス管理のためのポリシーの決定を引き起こす。ポリシーは、複数の計算ノードにわたり調整され、１つ以上の目的関数に向けてジョブを管理する。ここで、ジョブは、複数の計算ノードで同時に動作する複数のタスクを含む。他の実施形態も開示され、特許請求の範囲に記載されている。
2018500673.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードの各ノードに結合され、複数のノードに送信するための電力及びパフォーマンス管理のためのポリシーの決定を引き起こすロジックを含み、
前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、１つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、装置。
【請求項２】
前記ロジックは、前記複数のノードの各々に対して別個のポリシーを決定するものである、請求項１に記載の装置。
【請求項３】
前記ロジックは、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するものである、請求項１に記載の装置。
【請求項４】
前記１つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小化すること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの１つ以上を含むものである、請求項１に記載の装置。
【請求項５】
前記ロジックは、階層的機械学習操作に従って動作する、請求項１に記載の装置。
【請求項６】
前記ロジックは、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの１つ以上を解くための１つ以上の動作を実行するものである、請求項１に記載の装置。
【請求項７】
前記ポリシーは、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整するものである、請求項１に記載の装置。
【請求項８】
前記ポリシーは、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる電力及びパフォーマンス管理を調整するものである、請求項１に記載の装置。
【請求項９】
前記ロジックは、確率的ポリシー勾配法に従って前記ポリシーを決定するものである、請求項１に記載の装置。
【請求項１０】
前記複数のノードはキャビネットを形成し、前記ポリシーは１つ以上のキャビネット間で階層的に分解され、次いで、前記複数のノード間で分解される、請求項１に記載の装置。
【請求項１１】
前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含む、請求項１に記載の装置。
【請求項１２】
前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、請求項１に記載の装置。
【請求項１３】
システムオンチップ（ＳＯＣ）集積回路が前記ロジック及びメモリを含む、請求項１に記載の装置。
【請求項１４】
前記複数のノードの各ノードは、１つ以上のプロセッサコアを有するプロセッサと、１つ以上のプロセッサコアを有する画像処理ユニットと、ネットワークファブリックへの接続、ログインコンポーネント、サービスコンポーネント、メモリ、又は入出力デバイスの１つ以上を含むものである、請求項１に記載の装置。
【請求項１５】
複数のノードの各ノードに対して電力及びパフォーマンス管理のためのポリシーの決定を引き起こすステップと、
前記ポリシーを前記複数のノードに送信するステップと、を含み、
前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、１つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、方法。
【請求項１６】
前記複数のノードの各々に対して別個のポリシーを決定するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するステップをさらに含む、請求項１５に記載の方法。
【請求項１８】
前記１つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小限に抑えること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの１つ以上を含む、請求項１５に記載の方法。
【請求項１９】
前記決定は階層的機械学習操作に従って動作する、あるいは
前記決定は、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの１つ以上を解くように実行される、請求項１５に記載の方法。
【請求項２０】
前記ポリシーが、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整することをさらに含む、請求項１５に記載の方法。
【請求項２１】
前記ポリシーが、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる、電力及びパフォーマンス管理を調整することをさらに含む、請求項１５に記載の方法。
【請求項２２】
確率的ポリシー勾配法に従って前記ポリシーを決定するステップをさらに含む、あるいは
前記複数のノードはキャビネットを形成し、前記ポリシーは１つ以上のキャビネット間で階層的に分解され、次いで、前記複数のノード間で分解される、請求項１５に記載の方法。
【請求項２３】
スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含む、あるいは
スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、請求項１５に記載の方法。
【請求項２４】
プロセッサ上で実行されて、該プロセッサに請求項１５から２３のいずれか一項に記載の方法の１つ以上の動作を実行させる１つ以上のプログラム。
【請求項２５】
請求項１５から２３のいずれか一項に記載の方法を実行する手段を含む装置。
【請求項２６】
請求項２４に記載の１つ以上のプログラムを記憶しているコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、電子工学の分野に関する。より詳細には、実施形態によっては、サーバ及び他のコンピューティングデバイスについての電力管理に関する。
【背景技術】
【０００２】
高パフォーマンスコンピューティング（ＨＰＣ）システムは、分散コンピューティングのためにファブリックによって接続された多数のノードを含むことができる。さらに、アプリケーションは、ＨＰＣシステム内のノード間で同時に動作するタスクに分割される。これらのタスクは順次のマイルストーンにブレークダウンされ、タスクはこれらのマイルストーンのそれぞれに同時に到達することが期待される。
【０００３】
残念ながら、いずれかのノードが他のノードより遅く次のマイルストーンに向けて作業を完了すると、最も遅いタスクがその作業を完了するまでは、アプリケーション全体の進行が停止する。この状況が発生すると、アプリケーションは潜在的なパフォーマンスを失い、待機しなければならないノードでは電力が無駄になる。
【図面の簡単な説明】
【０００４】
発明を実施するための形態は、添付図面を参照して提供される。図面において、参照番号の最も左の桁は、その参照番号が最初に現れる図を識別する。異なる図面での同じ参照番号の使用は、類似または同一の項目を示す。
【０００５】
【図１】図１は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【図２】図２は、実施形態による、ホリスティックグローバルなパフォーマンス及び電力管理（ＨＧＰＰＭ）システムのブロック図を示す。
【図３】図３は、実施形態による、階層的部分観測マルコフ決定プロセス（Ｈ−ＰＯＭＤＰ）エージェントの相互作用の詳細のブロック図を示す。
【図４】図４は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【図５】図５は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【図６】図６は、いくつかの実施形態による、様々なコンピューティングシステムのブロック図を示す。
【発明を実施するための形態】
【０００６】
以下の説明では、様々な実施形態の十分な理解を提供するために、多数の特定の詳細が述べられる。しかし、様々な実施形態を特定の詳細なしに実施することができる。他の例では、周知の方法、手順、コンポーネント、及び回路は、特定の実施形態を不明瞭にしないようにするため、詳細には説明していない。さらに、実施形態の様々な態様は、集積半導体回路（「ハードウェア」）、１つ以上のプログラム（「ソフトウェア」）に編成されたコンピュータ読み取り可能命令、ハードウェアとソフトウェアのいくつかの組み合わせ等の様々な手段を使用して実行されることができる。本開示の目的のために、「ロジック」とは、ハードウェア、ソフトウェア、又はそれらのいくつかの組み合わせを意味するものとする。
【０００７】
上述のように、高パフォーマンスコンピューティング（ＨＰＣ）システムは、分散コンピューティングのために高速ネットワークファブリックによって結合された多数のノードを含むことができる。本明細書で説明するように、「ノード」は、概して、（本明細書で説明する汎用プロセッサ、グラフィックスプロセッサ等の１つ以上のプロセッサを含み得る）計算要素、ネットワークファブリックへの接続、ログインコンポーネント、サービスコンポーネント、場合によってはメモリ、ＩＯ（入力／出力）装置又は他のコンポーネントを示す。概して、アプリケーション（本明細書では、「ジョブ」とも呼ぶ）は、ＨＰＣシステム内の多数のノード（例えば、数万）にわたって同時に動作するタスクに分割される。各ノードに１つ又は多数のタスクがマップされることもあれば、１つ以上のコアにわたって単一のタスクが動作することもある。タスクは、同じ問題セットの異なるデータで動く同じプログラムからなることができる。タスクは順次のマイルストーン（milestones）にブレークダウン（broken  down）され、全てのタスクは同じ時間量内にマイルストーン間での計算を完了することが期待され、いわゆるバルク同期スタイルの計算につながる。マイルストーンでは、タスクはグローバル障壁のようなオペレーションを通じて同期することができる。
【０００８】
残念ながら、任意のコア又はノードが（多くの理由のいずれか１つにより）他のものよりもゆっくりと同期化の間での作業を完了する場合、最も遅いタスクが作業を完了するまで、アプリケーション全体の進行が停止する。これが起こると、アプリケーションは潜在的なパフォーマンスを失い、待機しなければならないコア又はノードでは電力が無駄になる。この問題には、負荷不均衡、アプリケーション又はオペレーティングシステムのジッタ及びパフォーマンス変動を含む多くの名前がある。負荷不均衡には、ハードウェアコンポーネントのパフォーマンスの分布（distribution）につながる製造変動性などの静的要因から、異なるコア上の異なる時間に発生するページフォルト、一部のコアだけに影響を与えるオペレーティングシステムの干渉、１つのコア又はノードだけを一時的に機能を損なわせる回復可能なハードウェアエラー、アプリケーション内のタスク間の作業の不均一な分布等の動的要因にまでわたる多数の原因があり得る。
【０００９】
ＨＰＣシステムの規模と複雑さが増し続けるにつれて、負荷不均衡がパフォーマンスの低下と電力の無駄についての重大な発信元になりつつある。製造変動性は特に問題である。最近のプロセッサでは、熱的設計及び電力制限を超えないで、最大コア周波数で浮動小数点集約型ワークロードを実行することができない。さらに、同じモデル及びステッピングの２つのプロセッサは、同じコア周波数を達成するために異なる電力を必要とする。産業界は、所与の電力バジェット（power  budget）においてプロセッサパフォーマンスの変動が２０％を超えると予想している。
【００１０】
この目的のため、いくつかの実施形態は、ホリスティックグローバルな（holistic  global）パフォーマンス及び電力管理を提供する。より具体的には、構成可能な目的関数（objective  functions）に向けてジョブを管理しながら（例えば、ジョブ電力上限内でのパフォーマンス最大化、ジョブ電力上限内での効率最大化等）、ジョブ内の（例えば、全ての）ノードにわたるソフトウェア及びハードウェアポリシーを調整するための新しいパフォーマンス及び電力管理フレームワークが記述される。フレームワークの１つの用途は、上記の負荷均衡についての問題を解決することである。
【００１１】
付加的に、いくつかの実施形態は、パフォーマンス最大化、効率最大化（例えば、最小エネルギー遅延製品）、ジョブ電力上限に向けて管理しながらのパフォーマンス最大化、ジョブ電力上限に向けて管理しながらの効率最大化等、ジョブ電力上限又は他の構成可能な目的関数に向けてジョブを管理しながら、ジョブ内の（例えば、全ての）ノードにわたるパフォーマンス及び電力管理の決定を調整するホリスティックグローバルなパフォーマンス及び電力管理（ＨＧＰＰＭ）フレームワークを提供する。ＨＧＰＰＭ技術は、少なくとも部分的には、高速階層的部分観測マルコフ決定過程（Ｈ−ＰＯＭＤＰ）強化学習（ＲＬ）法で実装された、階層的フィードバック誘導制御システムに基づいている。そのような実施形態は、階層システムドメイン間で電力を導き（steering）、ソフトウェア及びハードウェア抽象化境界にわたる他のより幅広い最適化を調整するための重要な機能を導入することによってアプリケーション負荷不均衡を緩和することができる。例えば、いくつかの実施形態では、ＨＧＰＰＭは、負荷均衡を達成するため、階層システムドメイン間の電力割り当てを選択することと、所与のシステムアーキテクチャ、問題サイズ又は電力割り当てについての最高の実行オプションを見つけるため、レパートリーからのアプリケーションアルゴリズムの選択を、同時に調整、最適化することによってより高いパフォーマンス又は効率を達成することができる。
【００１２】
さらに、本明細書で説明する技術は、図１から図６を参照して説明するものを含め、様々なコンピューティングシステム（例えば、デスクトップ、ワークステーション、サーバ、ラックシステム等の非モバイルコンピューティングデバイス、及びスマートフォン、タブレット、ＵＭＰＣ（ウルトラモバイルパーソナルコンピュータ）、ラップトップコンピュータ、ウルトラブック（登録商標）コンピューティングデバイス、スマートウォッチ、スマートグラス等のモバイルコンピューティングデバイス）に提供されることができる。より詳細には、図１は、実施形態によるコンピューティングシステム１００のブロック図を示す。図１は、模式的な表現であり、物理的な構成を反映することは意味しない。システム１００は、１つ以上のプロセッサ１０２−１から１０２−Ｎ（一般的に、本明細書では「複数のプロセッサ１０２」又は「プロセッサ１０２」と呼ばれる）を含む。プロセッサ１０２は、相互接続（ファブリック）１０４を介して通信することができる。また、１つ以上のプロセッサが相互接続・ファブリックへの接続を共有し得る可能性がある。各プロセッサは、様々なコンポーネントを含むことができるが、明瞭性のため、その一部のみをプロセッサ１０２−１を参照して説明する。そして、残りのプロセッサ１０２−２〜１０２−Ｎの各々は、プロセッサ１０２−１を参照して説明するものと同一又は類似のコンポーネントを含むことができる。
【００１３】
実施形態では、プロセッサ１０２−１は、１つ以上のプロセッサコア１０６−１〜１０６−Ｍ（本明細書では「複数のコア１０６」又はより一般的に「コア１０６」と呼ばれる）、キャッシュ１０８様々な実施形態では共有キャッシュ又はプライベートキャッシュであり得る）及び／又はルータ１１０を含むことができる。プロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上に実装されることができる。これは、同じパッケージ内の複数の集積回路で実装されることもできる。さらに、チップは、１つ以上の共有及び／又はプライベートキャッシュ（キャッシュ１０８など）、バス又は相互接続（バス又は相互接続１１２など）、ロジック１５０、図４から図６を参照して説明するようなメモリコントローラ（例えば、フラッシュメモリ、ＳＳＤ（ソリッドステートドライブ）等のＮＶＭ（不揮発性メモリ）を含む）又は他のコンポーネントを含むことができる。他の実施形態では、図１のコンポーネントは、異なるやり方でアレンジされることができ、例えば、ルータをプロセッサの外部にする一方で、ＶＲ、メモリコントローラ及びメインメモリをプロセッサの内部とすることができる。
【００１４】
一実施形態では、ルータ１１０は、プロセッサ１０２−１及び／又はシステム１００の様々なコンポーネント間で通信するために使用されることができる。さらに、プロセッサ１０２−１は、複数のルータ１１０を含むことができる。さらに、多数のルータ１１０は、プロセッサ１０２−１の内部又は外部の様々なコンポーネント間のデータルーティングを可能にするために通信していることができる。いくつかの実施形態では、多数のルータがある場合、その一部がプロセッサの内部にあることができるし、その一部が外部にあることもできる。
【００１５】
キャッシュ１０８は、コア１０６などのプロセッサ１０２−１の１つ以上のコンポーネントによって利用されるデータ（例えば、命令を含む）を記憶することができる。例えば、キャッシュ１０８は、プロセッサ１０２のコンポーネントによる高速アクセスのため、（揮発性及び／又は不揮発性）メモリ１１４（本明細書では、相互変換可能に「メインメモリ」とも呼ばれる）に記憶されているデータを局所的にキャッシュすることができる。図１に示すように、メモリ１１４は、相互接続１０４を介してプロセッサ１０２と通信していることができる。実施形態では、（共有され得る）キャッシュ１０８は、様々なレベルを有することができ、例えば、キャッシュ１０８は、中間レベルキャッシュ及び／又は最終レベルキャッシュ（ＬＬＣ）（Ｌ１、Ｌ２キャッシュ等）とすることができる。また、各コア１０６は、レベル１（Ｌ１）キャッシュ（１１６−１）（本明細書では、一般的に「Ｌ１キャッシュ１１６」と呼ばれる）を含むことができる。プロセッサ１０２−１の様々なコンポーネントは、バス・ファブリック（例えば、バス１１２）及び／又はメモリコントローラ・ハブを介して、直接キャッシュ１０８と通信することができる。
【００１６】
システム１００はまた、システム１００の１つ以上のコンポーネントに電力を供給するための（例えば、プラットフォーム）電源１２５（例えば、直流（ＤＣ）電源又は交流電源）を含むことができる。電源１２５は、ＰＶ（太陽光発電）パネル、風力発電機、熱による発電機、水／水力タービン等を含むことができる。いくつかの実施形態では、電源１２５は、１つ以上のバッテリパック（例えば、ＰＶパネル、風力発電機、熱による発電機、水／水力タービン、プラグイン電源（例えば、ＡＣ電力網に結合されたもの）の１つ以上によりチャージされる）及び／又はプラグイン電源を含む。
【００１７】
電源１２５は、電圧レギュレータ（ＶＲ）１３０を介してシステム１００のコンポーネントに結合されることができる。さらに、図１は、１つの電源１２５及び単一の電圧レギュレータ１３０を示しているが、追加の電源及び／又は電圧レギュレータが利用されることができる。例えば、１つ以上のプロセッサ１０２は、対応する電圧レギュレータ及び／又は電源を有することができる。また、電圧レギュレータ１３０は、単一電力プレーン（例えば、全てのコア１０６に電力を供給する）又は複数の電力プレーン（例えば、各電力プレーンが、異なるコア若しくはコアのグループ及び／又はシステム１００の他のコンポーネントに電力を供給することができる）を介してプロセッサ１０２に結合されることができる。追加的に、図１は、電源１２５及び電圧レギュレータ１３０を別個のコンポーネントとして示しているが、電源１２５及び電圧レギュレータ１３０は、システム１００の他のコンポーネントに組み込まれることができる。例えば、ＶＲ１３０の全て又は一部は、ソース１２５、ＳＯＣ（図６を参照して説明するものなど）及び／又はプロセッサ１０２に組み込まれることができる。
【００１８】
図１に示すように、メモリ１１４は、メモリコントローラ１２０を通してシステム１００の他のコンポーネントに結合されることができる。システム１００はまた、本明細書で説明するＨＧＰＰＭ技術／実施形態を参照して１つ以上の動作を容易にする及び／又は実行するロジック１５０を含む。例えば、ロジック１５０は、１つ以上の計算ノード及び／又はシステム１００のコンポーネント（例えば、プロセッサ１０２、メモリコントローラ１２０、メモリ１１４（本明細書では、「外部メモリ」と呼ばれることもある）、キャッシュ１１６、１０８及び／又は相互接続・ファブリック１０４、１１２など））のパフォーマンス及び／又は電力管理に対応する動作を実行することができる。さらに、ロジック１５０がシステム１００内のいくつかの任意の位置に示されているが、ロジック１５０はシステム１００内の他の場所に配置されることができる。
【００１９】
さらに、実施形態は、構成可能な目的関数に向けてジョブを全面的に管理しながら、ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたるパフォーマンス及び電力管理ポリシーを調整するスケーラブルな動的技術を提供する。目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながら計算要素（ノード又はコア）間のパフォーマンス差を最小化すること（負荷不均衡を緩和する）、効率を最大化すること等を含むことができるが、これらに限定されない。そのような技術は、本明細書では、包括的に、ホリスティックグローバルなパフォーマンス及び電力管理（ＨＧＰＰＭ）と呼び、それは、一実施形態では、階層的機械学習アルゴリズムに少なくとも部分的に基づくものである。
【００２０】
従来のＨＰＣ電力マネージャには多くの制限がある。第１に、各ノードに均一の電力上限を適用することにより、ノード間のパフォーマンス差を悪化させ、各ノードの周波数が不均一になり、アプリケーションのパフォーマンスが低下する。産業界は、一般に、所与の電力上限でノードのパフォーマンスが２０％以上変動すると予想しているため、これらのパフォーマンスの差を悪化させないように緩和することが重要である。第２に、従来の電力マネージャは、ソフトウェア及びハードウェアポリシーを調整する機能に欠けている。残念ながら、ソフトウェア及びハードウェアポリシーは、歴史的には、独立した制御システムを介して調整されてきた。これは結果を低下させる制御システム間の干渉を招く。統一された制御システム下でソフトウェア及びハードウェアポリシーの調整を行うことが重要である。第３に、従来のＨＰＣ電力マネージャはスケーラビリティに欠けている。それらは、将来のシステムにおいて多数の（例えば、数万）ノードにわたるポリシーを調整するようにはできない集中設計を採用している。根本的に異なる設計が必要とされている。最後に、従来のＨＰＣシステムはフレキシビリティに欠けている。エクサスケールシステムの最も高いパフォーマンスと効率の課題を満たすには、新しいポリシーノブ（policy  knob）が設計される必要があり、システムを最適化するためにより多くの機会が利用される必要があるが、現在のソリューションでは新しいポリシーの理解と制御が可能な電力マネージャフレームワークに欠けている。また、電力マネージャが行うパフォーマンスと電力との間のトレードオフをプログラムする際にフレキシビリティが必要とされる（例えば、場合によっては、効率がパフォーマンスより優先される）が、従来の電力マネージャはパフォーマンスに偏った目的関数をのみをサポートする傾向がある。現在の管理技術では、あまりにももろい（brittle）。
【００２１】
ＨＧＰＰＭの実施形態は、ソフトウェア及びハードウェアポリシーを調整する重要な機能を導入しながら、負荷不均衡の問題、スケーラビリティの問題、及びフレキシビリティの問題を同時に解決する画期的なものである。これらは、エクサスケールシステムのパフォーマンスと効率を高めるための重要な要件と考えられる。より詳細には、ＨＧＰＰＭは、従来技術を多くの重要な点で改善する。ＨＧＰＰＭは、計算要素に割り当てられた電力の均衡をとり、それらの負荷を等しくすることによって、ジョブ内の負荷不均衡を検出し緩和する機能を導入している。ＨＧＰＰＭは、製造変動性からアプリケーション又はオペレーティングシステムのジッタ、ハードウェアのエラー、アプリケーション又はオペレーティングシステムなどが計算要素（本明細書では相互変換可能に「ノード」又は「コア」とも呼ばれる）間で均等に作業を分割しないという不均衡の内在的原因にまでわたる様々な負荷不均衡の原因を緩和することができる初めての技術である。さらに、少なくとも１つの実施形態は、これと同時にジョブを電力上限に向けて管理することと相乗的な負荷均衡技術を提供する。
【００２２】
ＨＧＰＰＭの実施形態はまた、以下の重要な新機能を導入している。（ａ）ソフトウェア及びハードウェアの抽象化境界にわたるポリシー最適化の調整、（ｂ）ポリシー最適化のための堅牢な技術による新しいタイプのポリシーへの拡張性、及び／又は（ｃ）構成可能な目的関数に向けた管理のためのサポートを介したフレキシビリティである。ジョブ内の全ての計算要素にわたるポリシーを調整するためのスケーリングを同時に行いながら、これらの機能をサポートする他のパフォーマンス又は電力マネージャはない。そのような実施形態のスケーラビリティ、堅牢性及びフレキシビリティは画期的なものである。
【００２３】
ＨＧＰＰＭの実施形態によって可能にされる新しいポリシー及び最適化の例は、（ａ）各アプリケーションタスクが利用することができるコアの数を制御する新しいポリシーノブを通じてパフォーマンス又は効率の最大化のためにアプリケーションを調整すること、（ｂ）プロセッサが投機的に算術演算、メモリプリフェッチ動作等をどれほど積極的に実行するかを制御する新しいポリシーノブを通じてよりよいパフォーマンス又は効率のためにプロセッサを調整することを含むが、これらに限定されない。新しいポリシー及び最適化の設計は、エクサスケールシステムのパフォーマンス及び効率の課題を満たすのに重要であると考えられ、ＨＧＰＰＭ実施形態は、そのような最適化を画策することができる初めてのパフォーマンス及び電力管理フレームワークである。さらに、ＨＧＰＰＭの階層的学習フレームワークは、スケーラビリティをさらに向上させ、アプリケーションのより良好なパフォーマンス又は効率に対する負荷均衡の応答性を高める。
【００２４】
実施形態では、ＨＧＰＰＭを使用して、構成可能な目的関数に向けてジョブを管理しながら、ジョブ内の（例えば、全ての）ノードにわたるパフォーマンス及び電力ポリシーを全体的に（globally）調整する。各ジョブにバインドされたＨＧＰＰＭインスタンスがある。ＨＧＰＰＭアプローチは、階層的部分観測マルコフ決定プロセス（Ｈ−ＰＯＭＤＰ）機械学習に基づく階層設計を採用することによって、ジョブ内の多くのノード（例えば、数万ノード）に対するポリシーを決定するスケーラビリティの課題を解決する。特に、一実施形態は、同一の強化学習エージェントの階層を採用している。本明細書で説明するように、「ノード」、「コア」、「計算要素」等の使用は、相互変換可能であり、例えば、そのようなユニットの各々は、そのユニットを参照して本明細書で説明する１つ以上の動作を実行することができるコンピューティングコンポーネントを示す。
【００２５】
強化学習エージェントは、モデルを通じてではなく、環境との相互作用及び経験的な実験によってポリシーを最適化する。それらは、行動を最良の結果に適合させるためにアクション（actions）の結果を継続的に評価する。ここで、結果の質は、目的関数により定義される。実験は、全ての可能なポリシーオプションの空間を効率的にナビゲートする（navigate）体系的な方法で選択される。実施形態によれば、強化学習アルゴリズムは、依然として良好な又は許容可能な結果を達成しながら効率的にナビゲートするために確率的ポリシー勾配（Stochastic  Policy  Gradient）と呼ばれる技術を採用している。
【００２６】
Ｈ−ＰＯＭＤＰでは、各エージェントは同一であり、全体問題のサブ問題に対して独立して動作するが、全てのエージェントは同じ目的関数を使用し、１つのエージェントの決定がその子供が考慮することができるオプション空間を抑制するように、サブ問題は階層的に定義されている。そのようにして、親は子供の行動を導いて、子供が最良のポリシーをより迅速に特定するのを手助けする、又は子供が特定のポリシーオプションを選択するのを排除する。この階層的なやり方では、強化学習エージェントツリー階層のルートからリーフにまで、パフォーマンス及び電力ポリシーの決定が調整される。
【００２７】
図２は、実施形態による、ＨＧＰＰＭシステムのブロック図を示す。図２は、ツリーの深さが３であるものを示すが、これは例示的な目的のためだけのものであり、より深い又はより浅いツリーの深さが様々な実施形態で使用されることができる。実施形態では、図２に示すシステムの各計算ノードは、図１、図４、図５及び／又は図６のコンピューティングシステムで説明する１つ以上のコンポーネントを含むことができる。より詳細には、全体的な調整は、スケーラブルで階層的なｋ変数のツリー設計によって可能になる。システムポリシーは、階層的に分解される（例えば、キャビネット２０２−０〜２０２−ｍ（ここで、「キャビネット」とは一般に、複数のノードを示す）間で電力を割り当て、次いで、ノード間で電力を割り当てる）。本明細書でさらに説明するように、ツリーの各ノードで動作するＨ−ＰＯＭＤＰ強化学習エージェントを介して、良好な全体的な電力割り当て決定が得られる。電力及び／又はパフォーマンステレメトリの集約（リーフからルートへ向かってツリーを逆流する）及び制御の分散（親から子供へ）が、スケーラブルなオーバレイネットワーク（ＳＣＯＮ）２０４により提供される。ＳＣＯＮは、ＨＰＣシステムにおいて物理ネットワークの１つのトップ（top）で実装される論理ネットワークである。物理ネットワークは、アプリケーション（例えば、ネットワークファブリック）によって使用される帯域内ネットワークであってもよいし、イーサネット（登録商標）（例えば、ＩＥＥＥ（米国電気電子学会）８０２．３標準に従ったもの）などの帯域外ネットワークであってもよい。一実施形態では、物理ネットワークは、図４及び図５を参照して説明するネットワーク４０３と同じであってもよいし、類似していてもよい。図２において、「ＤＮ」は、専用ノード（例えば、アプリケーションによって予約され、使用されていないノード）を示し、各ＤＮ及び計算ノード内の小さなボックスは、Ｈ−ＰＯＭＤＰエージェントを示す。本明細書で説明するように、実施形態では、Ｈ−ＰＯＭＤＰエージェントは強化学習エージェントとすることができる。本明細書で説明するように、コアごとの（又はコアの一部ごとの）ポリシー（各コア又はコア部分への電力の割り当てなど）が提供されることができる。図２に示すように、各計算ノードは、１つ以上のコアを含むことができる。また、実施形態では、リーフのＨ−ＰＯＭＤＰエージェントは、計算ノード内の任意のポリシー（コアごとのポリシーの調整を含むことができる）を調整する役割を担う。
【００２８】
一実施形態では、確率的ポリシー勾配技術が使用される。ＨＧＰＰＭツリーの各ノードは強化学習ＰＯＭＤＰアルゴリズムを実装し、ポリシー勾配法を適用して最適なポリシーを探索する。例えば、ポリシーは、ディスクリートなノブ設定のセットに対する確率分布と考えられる。例えば、ノブは、親エージェントが子供達の間でどのように電力を割り当てることができるかの選択肢のセットを含む。ポリシーは、分布からノブの設定をサンプリングし、何回かテストし、結果として生じる報酬を測定することによって評価される。実施形態における勾配上昇と類似の方法を通じてポリシーが改善される。勾配ベースの方法を使用するため、ポリシーは微分可能にされる、確率的ソフトマックスポリシーを適合させることによって微分可能にされることができる。次いで、報酬の勾配がポリシーに関して推定され、ポリシーを勾配方向にステップして、報酬を最大化するポリシーに移動させることができる。確率的ポリシーは、よりシンプルな勾配方法の「局所的最大の」落とし穴（local  maxima  pitfall）を避け、探索（exploration）と利用（exploitation）のトレードオフのバランスをとるように適合されることができる。
【００２９】
一実施形態では、以下の操作が、確率的なポリシー勾配を実装するために使用されることができる。確率的ポリシー勾配アルゴリズムは、Natural  Actor-Criticフレームワークを使用して実装されることができる。ここで、ａはアクション（別名ノブ設定）であり、ｒは報酬であり、αはステップサイズである。
【数１】
2018500673.tif 000003
【００３０】
前述したように、ポリシーを微分可能にし、勾配ベースの学習に適したものにするために、確率的ソフトマックスポリシーが使用されることができる。特に、多項分布の指数関数族パラメータ化が使用されて、各ノブｉに実数重みθｉのセットを与える。ノブｉに対する確率分布からサンプリングするときにｎ個の可能性からノブ設定ｊを得る確率は、
【数２】
2018500673.tif 000004
によって与えられる。
【００３１】
Natural  Actor  Criticアルゴリズムに必要とされる勾配は、
【数３】
2018500673.tif 000005
によって（効率的に）計算されることができる。ここで、
【数４】
2018500673.tif 000006
は、ノブｉが取ることのできる設定についての現在の確率分布であり、ｔは、アルゴリズムの時間ステップであり、∇は勾配演算子であり、∇θはθに関する勾配である。
【数５】
2018500673.tif 000007
は、
【数６】
2018500673.tif 000008
によって与えられるインデックスにおいてａ１を備えたゼロベクトルである。
【００３２】
本明細書で説明するように、ＨＧＰＰＭは、ジョブ内のノード間で電力の均衡をとることによってアプリケーションの負荷不均衡を修正するために適用されることができる。負荷均衡の問題が階層的にどのように分解されることができるのかについての一例では、ジョブ全体に対する負荷均衡の問題は、ジョブで使用されるキャビネット間での負荷均衡に、次いで、各キャビネット内のノード間での負荷均衡に、次いで、各ノードにマップされたタスク間での負荷均衡に、次いで、各タスクを実行しているコア間での負荷均衡に分割される。各粒度では、パフォーマンスが動的に比較され、電力は、アプリケーションのパフォーマンスを最大化又は向上させるために、先行する計算要素から遅れている要素に（シーケンスにおいて次のマイルストーンへの到達及び障壁への到達を参照して）導かれる。
【００３３】
ある実施形態は、ａ）子供エージェントのパフォーマンスの不一致はペナルティーを科される、ｂ）集約パフォーマンスが報酬を受けているように、各エージェントに、子供達の間でのその入力電力バジェットの最良配分を学習させ、目的関数を定義することによって、ジョブの負荷分散のプロセスを強化学習の抽象化にマッピングする。ここで、集約パフォーマンスは、子供エージェントによって取得された最小パフォーマンスとみなされる。各子供エージェントのパフォーマンスは、いくつかのサンプル数の平均値又は中央値（又は他の関数）である。各エージェントは、（その親からの）その入力バジェットを子供達の間でどのように分割して、子供達から最高の成果を得るかを学習する。子供達は、今度は、彼らのバジェットを取り、その彼らの子供達などにバジェット（budget）を分割する。ツリーの最下位レベルでの決定では、ハードウェアが異なるタイプのプロセッサと外部メモリリソースとでどのように電力を分割すべきかを指定することができる。パフォーマンスは、多くの指標（metrics）に基づいて定義されることができる。例えば、Ｈ−ＰＯＭＤＰツリーの最下位レベルでは、指標は、コア周波数、次のアプリケーションマイルストーン（プログラマが作成した注釈を介してＨＧＰＰＭに提供される、若しくはパフォーマンスカウンタの分析によって自動的に推察される又は他の手段）又は他の手段）に向けた各コアの進行の測定、マイルストーン間で今までに完了したアプリケーションのフェーズのランタイム、リタイアした命令の割合（rate）、メインメモリアクセスの割合等とすることができる。
【００３４】
一般に、Ｈ−ＰＯＭＤＰにおける各強化学習エージェントによって評価される目的関数は、各子供の目的関数値の集約である。子供の目的関数値の最小、平均、変動等を含め、多くの集約が可能である。一実施形態では、目的関数は、パフォーマンスを最大化することである場合、ノードのパフォーマンスは、ノード内のプロセッサの任意のアクティブコアの最小パフォーマンスとして定義されることができ、キャビネットのパフォーマンスは、キャビネット内の任意のアクティブノードの最小パフォーマンスとして定義され、ジョブのパフォーマンスは、ジョブ内のアクティブキャビネットの最小パフォーマンスとして定義されることができる。集約計算は、ＨＧＰＰＭ技術によって、及び／又はＨＰＣシステム内のＳＣＯＮの支援を通じて実行されることができる。
【００３５】
本明細書で説明するように、ＨＧＰＰＭの実施形態は、（電力バジェットを超える）異なる種類のポリシーを調整し、一度に複数のタイプを調整することができる。このモードでは、ＨＧＰＰＭ技術はポリシーを結合ポリシー（joint  policy）に構成する。強化学習エージェントは、結合ポリシーオプションで実験し、目的関数に従って結合ポリシーを最適化する。一例では、各ノードに対して１つの強化学習エージェントで終了する階層を考える。エージェントが、ノードにおける様々なタイプのハードウェアリソース間でノードの電力バジェットをどうのように分割するかということと、ノード上の各ソフトウェアプロセスが利用するスレッド／コアの数はいくつかということの、２つのポリシーを結合して学習することが任せられている場合を考える。エージェントは、電力バジェットの選択肢と並列性の選択肢の各組み合わせに対して１つのオプションを有する結合ポリシーを作成する。学習エージェントは、新しい電力バジェットの選択肢と新しい並列性の選択肢を一緒にテストして、目的関数での組み合わせ効果を測定し、経時的に最良の結合ポリシーに向けてナビゲートする。
【００３６】
図３は、図２の計算ノードの１つのうち、リーフＨ−ＰＯＭＤＰ  ＲＬエージェントに拡大表示している。ＲＬエージェントへの入力（図３では、観測量（Observables）とラベル付けされている）及びＲＬによって出力される新しいポリシー設定を含め、ＲＬエージェント、アプリケーション、及びノード内のプロセッサ間の相互作用が示されている。この図は、上記で説明したポリシー例の管理を示す。アプリケーションプロセスごとのスレッド数と、ハードウェアリソース間でのノード電力バジェットの分割である。一実施形態では、Ｈ−ＰＯＭＤＰ  ＲＬエージェントは、アプリケーションからパフォーマンス及び位相信号を取り込む。他の実施形態では、パフォーマンス及び位相信号は、（前述のように）アプリケーションのプログラマ注釈なしでＨＧＰＰＭによって自動的に推察されてもよい。プロセッサから、Ｈ−ＰＯＭＤＰ  ＲＬエージェントはエネルギー信号を取り込む。ＲＬエージェントの出力は、新しいポリシー設定（例えば、アプリケーションプロセスごとのスレッド数についての新しい設定、又はノードのハードウェアコンポーネント間でのノード電力バジェットの新たな再分割）である。
【００３７】
観測量は、様々な方法で合成されて、所望の目的関数を定義する。目的関数は評価され、（前述のように）報酬として学習（Learning）アルゴリズムに供給される。ＲＬエージェントは、この報酬信号を使用して、異なるポリシー設定の影響を測定する。ＲＬエージェントはポリシーを制定することによってポリシー設定で実験し（図３では、出力ポリシー設定はアクション（Actions）としてラベル付けされている）、観測量及び報酬信号への影響を測定して、経時的にポリシー空間を探索する。前述のように、ＲＬエージェントは、最良のポリシー設定を識別するまで、効率的なやり方で探索して、経時的にポリシー空間をナビゲートする。
【００３８】
図３の図は、複数のポリシーが合成されたＨＧＰＰＭの実施形態の例である。より多くのポリシーが合成されるにつれて、探索空間のサイズが指数関数的に増加することがある。また、探索空間を複雑にするポリシー間の依存関係もある。上述した結合ポリシー（ノードハードウェアリソース間でのノード電力バジェットの分割とソフトウェアプロセスごとのスレッド／コア数）は、複雑な相互依存関係を持つ結合ポリシーの一例である。リソース間での最適な電力分割は、通信、メモリ、及びアプリケーションプロセス内での計算のバランスに依存し、そのバランスはアプリケーションプロセスによって採用されているスレッド／コアの数に依存し、アプリケーションプロセスが使用するスレッド／コアの最適な数は、利用可能な通信、メモリ、及び計算帯域幅に依存する（ただし、帯域幅の量は、各リソースがどの位の電力を割り当てられたかよって異なる）。
【００３９】
ＨＧＰＰＭの一実施形態は、確率的ポリシー勾配強化学習技術を採用することによって、複雑なトレードオフを伴う大きな探索空間を処理するようにスケールする。確率的ポリシー勾配技術は、ポリシーに関する目的関数指標の勾配を推定し、次に勾配方向にステップする。次の回では、試行される結合ポリシーオプションは、（勾配方向において）前のものから離れたステップのものである。確率的ポリシー勾配法は、空間全体を徹底的に探索するのではなく、結果の改善が期待される方向のみ試行して、勾配方向にステップを取得し、指数関数的な探索空間をナビゲートする。
【００４０】
勾配ベースの探索技術の１つの欠点は、探索空間が凸形状であると仮定する傾向があることである。もしそうでなければ、この方法は全体的に最適な決定に着地することが保証されない。このため、通常のポリシー勾配アルゴリズムではなく、確率的ポリシー勾配アルゴリズムが採用され得る。勾配方向に基づいて次のポリシーオプションを選択する代わりに、確率が全てのオプション及び分布からのサンプルに割り当てられる。非ゼロの確率であれば、勾配によって示されていない方向にステップが取られ、最適となる。そうすることで、この実施形態は極大値を免れることができる。確率的ポリシー勾配アルゴリズムでは、目的関数を最大化するポリシーオプションを学習する代わりに、それを最大化するポリシー分布が学習される。勾配方向のステップは、確率分布を更新し、勾配と一致する方向により多くの確率を割り当てる傾向があるが、他のオプションを選択する可能性が依然としてある。
【００４１】
一実施形態で適合されるアプローチは、強化学習技術及びＨ−ＰＯＭＤＰを用いて３つの古典的な課題にも対処する。第１の課題は、強化学習が、ポリシー空間の新しい領域の探索と最もよく知られている最適なポリシーを利用とのバランスを取ることと関係している。探索を重視しすぎる方法は、大部分の時間に次善のポリシーを使用する。利用を重視する方法は、次善のポリシーで妥協してしまい、潜在的な利益をテーブルに残す可能性がある。いくつかの実施形態で使用される確率的ポリシー勾配技術は、全てのポリシーオプションがポリシー分布において非ゼロ確率を有するため、探索空間の新しい領域が試行されることを保証する。
【００４２】
さらに、勾配ステップを取って有望な方向に重みを加えるために分布を更新することは、「最もよく知られている」オプション及び探索を台無しにする強い偏りを徐々に作り出してしまう危険性があるように見えるが、一実施形態は、分布をゆっくりと均一な分布にすることによって過大な偏りにカウンターバランスととる正規化（regularizer）コンポーネントを組み込む。これらの相反する力の強さは、ランタイム時に体系的に調整される。一実施形態は、目的関数指標とポリシーとの間の関係がどれほど安定的で予測できるかを測定する。関係がより安定的で予測できるほど、勾配ステップの力が強くなる（注：各ステップで追加されるバイアスの量は一定であるが、勾配ステップが頻繁に取られることで、力を効果的に強くすることになり得る）。関係が不安定である、又は予測できない場合、正規化が勝つ。
【００４３】
第２の課題は、強化学習制御システムだけでなく、全ての制御システムに影響を及ぼすものである。それはノイズの課題である。実施形態は、上記の対向する力機構を通じて部分的に、そして、デジタル信号処理技術を通じて部分的に、ノイズの課題を解決する。特に、ノイズは、目的関数指標とポリシーとの間の関係が不十分に予測されてしまう原因となる。実施形態は、ノイズが直近で低レベルであり、その関係が予測可能であるとき（言い換えると、勾配結果がより良好なポリシーに向けて導くように信頼し得るとき）にのみ勾配ステップを取る。高ノイズの期間では、正規化が勝ることになる。一実施形態は、各勾配ステップ及び各正規化ステップのバイアス強度を設定する自由パラメータを有する。これらのパラメータは、アプリケーションが目的関数指標とポリシーとの間に安定した予測可能な関係を備えた期間を経験している限り、勾配ステップのバイアスが全体的に勝り、ポリシー分布が時間の経過とともに最適に近づくように設定されている。多くの方法が、バイアス及び正規化ステップサイズを設定するために使用されることができる。いくつかは手動であるが、標準的な技術に従うことができ、いくつかは自動のオンライン方法である。
【００４４】
ノイズの課題を解決するためにいくつかの実施形態が使用する他のメカニズムは、デジタル信号処理である。多くの信号処理方法が使用されることができる。一例では、移動平均又はメジアンフィルタが目的関数信号に適用される。この種のフィルタは、以前の値の短い履歴を使用して信号を平滑化する傾向がある。目的関数の入力にフィルタを適用することが可能である。これは、目的関数が、分母のノイズが除算演算によって増幅されるため、比較的小さな振幅の信号で除算する場合、利点を有することができる。
【００４５】
第３の課題は、Ｈ−ＰＯＭＤＰ強化学習の階層全体に分散された調整であるにもかかわらず、制御の安定性を保証することである。次の例を考える。その子供達の間でそのバジェットの最適な分割を子供が探索する機会を得る前に、親が新たな電力バジェットに変更する場合を想定する。それが起こる場合、親は電力バジェットがどの位うまく働くのかについての推察について子供たちからの不完全なデータを基礎とする可能性がある。実際には、両親は子供達から完全なデータを得ることは決してない可能性があり、データは確率的なものではある。それでも、子供達がバジェットの良好な分割を見つける時間が与えられていない限り、Ｈ−ＰＯＭＤＰは収束することは決してない可能性がある、又は良好な全体的なポリシーに収束するには時間がかかりすぎる可能性がある。
【００４６】
いくつかの実施形態による、この問題に対する多くの解決策がある。１つの例は、強化習得エージェントが予め定められた時間間隔において、移動が階層を上がるにつれて（リーフからルートへ）粗となる（coarsening）継続期間で動作するようにアレンジすることを含む。もう１つのアプローチは、エージェントの階層全体で調整タイムスケールを自己設定できるようにすることである。階層のレベルは可能な限り速く動作するが、速度は正確性を保証するようにレート制限される。つまり、親のブロックは子供からの入力を待ち、子供は、子供が良好なポリシー（例えば、電力の良好な割り当て）を達成したときに、目的関数を評価するために必要なパフォーマンス又は他の情報のみを親まで送信する。その結果、子供は準備が整う前に、親は新しいポリシー（例えば、子供のための新たな電力バジェット）を設定することができない。この自己設定戦略には、全体的なポリシー最適化の応答性を最大化するという利点がある。いくつかの実施形態によれば、良好なポリシーにいつ到達したかを決定する多くの方法がある。１つの標準的な方法が収束テストである。つまり、最後のｋ回の反復でのポリシーの変更がイプシロン未満である場合は、良好なポリシーに達したことになる。ｋ及びイプシロンは、オフラインの手動手順に従って調整され得る自由パラメータである。
【００４７】
Ｈ−ＰＯＭＤＰ階層の最後のレベルでは、強化学習エージェントは子供を有していない。この階層レベルでは、エージェントはいつ目的関数指標をサンプリングし、新しいポリシーオプションを試行するかを選択することができる。目的関数は、例えば、フェーズ期間（phase  duration）よりも粗い一定の時間間隔でサンプリングされる、又はフェーズ期間よりも細かい一定の時間間隔でサンプリングされる、フェーズ変化事象でサンプリングされることができる。新しいポリシーは、１つ以上のサンプルが収集された後でテストされることができるが、各テストに対して取得するサンプル数は可変でも、固定でもよい。
【００４８】
さらに、いくつかの実施形態は、フェーズベースの最適化と相乗的とすることができる。フェーズベースの最適化では、各アプリケーションフェーズに対する強化学習エージェント用に１つの状態のコピーがインスタンス化される。強化学習エージェントの類似又は同一のＨ−ＰＯＭＤＰ階層が使用されることができるが、それらは、アプリケーションがどのフェーズにあるかに応じて異なる状態で動作する。任意の所与の時間で、実施形態は現在のアプリケーションフェーズを決定し、正確な状態をロードする。強化学習エージェントは、全てのフェーズで同じ目的関数に対して最適化することを任されているが、異なるフェーズは独自のポリシーを有する可能性がある。さらに、現在のフェーズ及び各フェーズに対するポリシーの定義は、前述のように多くの方法で決定されることができる。いくつかの例は、アプリケーション（又は他のソフトウェア層）の注釈を介してプログラマから情報を得ることを含む。現在のフェーズを決定する場合、異なる計算リソース内のアクティビティの動的分析を通じて（ハードウェアのイベントカウンタの使用を介して）推察されることもできる。
【００４９】
図４は、実施形態によるコンピューティングシステム４００のブロック図を示す。コンピューティングシステム４００は、相互接続ネットワーク（又はバス）４０４を介して通信する１つ以上の中央処理装置（ＣＰＵ）４０２又はプロセッサを含むことができる。プロセッサ４０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク４０３を介して通信されるデータを処理するもの）、アプリケーションプロセッサ（携帯電話、スマートフォンなどで使用されるもの等）、又は他のタイプのプロセッサ（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ又は複合命令セットコンピュータ（ＣＩＳＣ）を含む）。
【００５０】
有線（例えば、イーサネット（登録商標）、ギガビット、ファイバ等）又は無線ネットワーク（セルラー、３Ｇ（第３世代携帯電話技術又は第３世代無線フォーマット（ＵＷＣＣ））、４Ｇ（第４世代（無線／移動通信））、低電力埋め込み（例えば、ＬＰＥ）等）を含む様々なタイプのコンピュータネットワーク４０３が利用されることができる。さらに、プロセッサ４０２は、単一又は複数のコア設計を有することができる。マルチコア設計を備えるプロセッサ４０２は、同一の集積回路（ＩＣ）ダイ上に異なるタイプのプロセッサコアを集積することができる。また、マルチコア設計を備えるプロセッサ４０２は、対称又は非対称のマルチプロセッサとして実装されることができる。
【００５１】
実施形態では、１つ以上のプロセッサ４０２は、図１のプロセッサ１０２と同じであってもよく、類似していてもよい。例えば、１つ以上のプロセッサ４０２は、１つ以上のコア１０６及び／又はキャッシュ１０８を含むことができる。また、図１から３を参照して説明された動作は、システム４００の１つ以上のコンポーネントによって実行されることができる。
【００５２】
チップセット４０６はまた、相互接続ネットワーク４０４と通信することができる。チップセット４０６は、グラフィックス及びメモリ制御ハブ（ＧＭＣＨ）４０８を含むことができる。ＧＭＣＨ４０８は、メモリ１１４と通信するメモリコントローラ４１０（これは、図１のメモリコントローラ１２０と同じであってもよく、類似しいてもよい）。システム４００はまた、様々な場所（図４に示されているもの等があるが、システム４００内の他の場所（図示せず）に存在することができる）にロジック１５０を含むことができる。メモリ１１４は、ＣＰＵ４０２、又はコンピューティングシステム４００に含まれる任意の他のデバイスによって実行される一連の命令を含むデータを記憶することができる。一実施形態では、メモリ１１４は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等の１つ以上の揮発性／不揮発性の記憶（若しくはメモリ）デバイス又はハードディスク、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ（ＦｅＴＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、フラッシュメモリ、スピン注入メモリ（ＳＴＴＲＡＭ）、抵抗ランダムアクセスメモリ、ＰＣＭ（相変化メモリ）などの３Ｄクロスポイントメモリ、ＮＡＮＤ／ＮＯＲメモリを備えるソリッドステートドライブ（ＳＳＤ）等の他のタイプの記憶デバイスを含むことができる。追加のデバイスは、複数のＣＰＵ及び／又は複数のシステムメモリなどの相互接続ネットワーク４０４を介して通信することができる。
【００５３】
ＧＭＣＨ４０８はまた、グラフィックスアクセラレータ４１６と通信するグラフィックスインタフェース４１４を含むことができる。一実施形態では、グラフィックスインタフェース４１４は、アクセラレーテッドグラフィックスポート（ＡＧＰ）又はペリフェラルコンポーネントインターコネクト（ＰＣＩ）（若しくはＰＣＩエクスプレス（ＰＣＩｅ）インタフェース）を介してグラフィックスアクセラレータ４１６と通信することができる。実施形態では、（フラットパネルディスプレイ、タッチスクリーン等の）表示装置４１７は、例えば、ビデオメモリ、システムメモリ等の記憶デバイスに記憶されている画像のデジタル表現を、ディスプレイによって解釈され、表示される表示信号に変換する信号変換器を介してグラフィックスインタフェース４１４と通信することができる。表示装置によって生成された表示信号は、表示装置４１７によって解釈され、続いて表示される前に、様々な制御装置を通過することができる。
【００５４】
ハブインタフェース４１８は、ＧＭＣＨ４０８と入出力制御ハブ（ＩＣＨ）４２０とが通信するのを可能にすることができる。ＩＣＨ４２０は、コンピューティングシステム４００と通信するＩ／Ｏデバイスへのインタフェースを提供することができる。ＩＣＨ４２０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、他のタイプの周辺ブリッジ又はコントローラ等の周辺ブリッジ（又はコントローラ）４２４を介してバス４２２と通信することができる。ブリッジ４２４は、ＣＰＵ４０２と周辺装置との間にデータ経路を提供することができる。他のタイプのトポロジが利用されてもよい。また、複数のバスが、例えば複数のブリッジ又はコントローラを介してＩＣＨ４２０と通信することができる。さらに、ＩＣＨ４２０と通信する他の周辺機器は、様々な実施形態において、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）若しくはスモールコンピュータシステムインタフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルシリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインタフェース（ＤＶＩ））、又は他の装置を含むことができる。
【００５５】
バス４２２は、オーディオデバイス４２６、１つ以上のディスクドライブ４２８及びネットワークインタフェースデバイス４３０（例えば、有線又は無線インタフェースを介してコンピュータネットワーク４０３と通信する）と通信することができる。図示しているように、ネットワークインタフェースデバイス４３０はアンテナ４３１に結合されることができ、無線（例えば、米国電気電子学会（ＩＥＥＥ）８０２．１１１インタフェース（ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどを含む）、セルラーインタフェース、３Ｇ、４Ｇ、ＬＰＥ等を介して）でネットワーク４０３と通信する。他のデバイスは、バス４２２を介して通信することができる。また、いくつかの実施形態では、様々なコンポーネント（ネットワークインタフェースデバイス４３０など）がＧＭＣＨ４０８と通信することができる。さらに、プロセッサ４０２及びＧＭＣＨ４０８は、単一のチップを形成するように組み合わせられることができる。さらに、他の実施形態ではグラフィックスアクセラレータ４１６は、ＧＭＣＨ４０８内に含まれてもよい。
【００５６】
さらに、コンピューティングシステム４００は、揮発性及び／又は不揮発性メモリ（又はストレージ）を含むことができる。例えば、不揮発性メモリは、リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、４２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク又は電子データ（例えば、命令を含む）を記憶することができる他のタイプの不揮発性の機械読み取り可能媒体を含む。
【００５７】
図５は、実施形態による、ポイントツーポイント（ＰｔＰ）構成でアレンジされたコンピューティングシステム５００を示す。特に、図５は、プロセッサ、メモリ、及び入出力装置が多数のポイントツーポイントインタフェースによって相互接続されているシステムを示す。図１〜図４を参照して説明した動作は、システム５００の１つ以上のコンポーネントによって実行されることができる。
【００５８】
図５に示すように、システム５００はいくつかのプロセッサを含むことができ、そのうちの２つのプロセッサ５０２及び５０４のみが明確性のために示されている。プロセッサ５０２及び５０４はそれぞれ、メモリ５１０及び５１２との通信を可能にするローカルメモリコントローラハブ（ＭＣＨ）５０６及び５０８を含むことができる。メモリ５１０及び／又は５１２は、図１及び／又は図４のメモリ１１４を参照して説明したような様々データを記憶することができる。また、いくつかの実施形態では、ＭＣＨ５０６及び５０８は、図１〜図４のメモリコントローラ１２０及び／又はロジック１５０を含むことができる。
【００５９】
実施形態では、プロセッサ５０２及び５０４は、図２を参照して説明したプロセッサ４０２のうちの１つとすることができる。プロセッサ５０２及び５０４は、ＰｔＰインタフェース回路５１６及び５１８をそれぞれ使用して、ポイントツーポイント（ＰｔＰ）インタフェース５１４を介してデータを交換することができる。また、プロセッサ５０２及び５０４は、ポイントツーポイントインタフェース回路５２６，５２８，５３０及び５３２を使用して、個々のＰｔＰインタフェース５２２及び５２４を介してチップセット５２０とそれぞれデータを交換することができる。チップセット５２０は、高パフォーマンスグラフィックスインタフェース５３６を介して、例えば、ＰｔＰインタフェース  回路５３７を使用して、高パフォーマンスグラフィックス回路５３４とデータを交換することができる。図４で説明したように、いくつかの実施形態では、グラフィックスインタフェース５３６は表示装置（例えば、ディスプレイ４１７）に結合されることができる。
【００６０】
図５に示すように、図１のコア１０６及び／又はキャッシュ１０８の１つ以上は、プロセッサ５０２及び５０４内に位置することができる。しかし、他の実施形態は、図１のシステム５００内の他の回路、ロジックユニット又は装置に存在してもよい。さらに、他の実施形態は、図５に示すいくつかの回路、ロジックユニット又はデバイス全体に分散することができる。
【００６１】
チップセット５２０は、ＰｔＰインタフェース回路５４１を使用してバス５４０と通信することができる。バス５４０は、それと通信する、バスブリッジ５４２、Ｉ／Ｏデバイス５４３等の１つ又は複数のデバイスを有することができる。バス５４４を介して、ブリッジ５４２は、キーボード／マウス５４５、通信デバイス５４６（例えば、アンテナ４３１を介したものを含めて、ネットワークインタフェースデバイス４３０を参照して説明したように、モデム、ネットワークインタフェースデバイス、コンピュータネットワーク４０３と通信することができる他の通信装置等）オーディオＩ／Ｏデバイス及び／又はデータ記憶装置５４８と通信することができる。データ記憶装置５４８は、プロセッサ５０２及び／又は５０４によって実行され得るコード５４９を記憶することができる。
【００６２】
いくつかの実施形態では、本明細書で説明したコンポーネントの１つ以上は、システムオンチップ（ＳＯＣ）デバイス上に具体化されることができる。図６は、実施形態によるＳＯＣパッケージのブロック図を示す。図６に示すように、ＳＯＣ６０２は、１つ以上の中央処理装置（ＣＰＵ）コア６２０と、１つ以上のグラフィックスプロセッサユニット（ＧＰＵ）コア６３０と、入力／出力（Ｉ／Ｏ）インタフェース６４０と、メモリコントローラ１２０とを含む。他の図を参照して本明細書で説明したＳＣＯＮ２０４等、ＳＯＣパッケージ６０２の様々なコンポーネントが相互接続又はバス／ネットワークに結合されることができる。また、ＳＯＣパッケージ６０２は、他の図を参照して本明細書で説明したような、より多くの又はより少ないコンポーネントを含むことができる。さらに、ＳＯＣパッケージ６０２の各コンポーネントは、例えば、本明細書の他の図を参照して説明したように、１つ以上の他のコンポーネントを含むことができる。一実施形態では、ＳＯＣパッケージ６０２（及びそのコンポーネント）は、例えば、単一の半導体デバイス上にパッケージ化された１つ以上の集積回路（ＩＣ）ダイ上に提供される。
【００６３】
図６に示すように、ＳＯＣパッケージ６０２は、メモリコントローラ１２０などのインタフェースを介して（ＳＯＣパッケージ６０２の外部にある）メインメモリ１１４に結合される。実施形態では、メモリ１１４（又はその一部）は、ＳＯＣパッケージ６０２上に統合されることができる。
【００６４】
Ｉ／Ｏインタフェース６４０は、例えば、他の図を参照して本明細書で説明したような相互接続及び／又はバスを介して、１つ以上のＩ／Ｏデバイス６７０に結合されることができる。Ｉ／Ｏデバイス６７０は、キーボード、マウス、タッチパッド、ディスプレイ、画像／ビデオキャプチャデバイス（カメラ、ビデオカメラ／ビデオレコーダなど）、タッチスクリーン、スピーカ等の１つ以上を含むことができる。さらに、実施形態では、ＳＯＣパッケージ６０２は、ロジック１５０を含む／統合することができる。あるいは、ロジック１５０は、ＳＯＣパッケージ６０２の外部に（すなわち、ディスクリートなロジックとして）提供されることができる。
【００６５】
以下の例は、さらなる実施形態に関連する。
例１は、複数のノードの各ノードに結合され、複数のノードに送信するための電力及びパフォーマンス管理のためのポリシーの決定を引き起こすロジックを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、１つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、装置を含む。
例２は、前記ロジックは、前記複数のノードの各々に対して別個のポリシーを決定するものである、例１に記載の装置を含む。
例３は、前記ロジックは、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するものである、例１に記載の装置を含む。
例４は、前記１つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小限に抑えること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの１つ以上を含むものである、例１に記載の装置を含む。
例５は、前記ロジックは、階層的機械学習操作に従って動作する、例１に記載の装置を含む。
例６は、前記ロジックは、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの１つ以上を解くための１つ以上の動作を実行するものである、例１に記載の装置を含む。
例７は、前記ポリシーは、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整するものである、例１に記載の装置を含む。
例８は、前記ポリシーは、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる電力及びパフォーマンス管理を調整するものである、例１に記載の装置を含む。
例９は、前記ロジックは、確率的ポリシー勾配法に従って前記ポリシーを決定するものである、例１に記載の装置を含む。
例１０は、前記複数のノードはキャビネットを形成し、前記ポリシーは１つ以上のキャビネット間で階層的に分解され（decomposed）、次いで、前記複数のノード間で分解される、例１に記載の装置を含む。
例１１は、前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含む、例１に記載の装置を含む。
例１２は、前記複数のノードを結合するスケーラブルオーバレイネットワークをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、例１に記載の装置を含む。
例１３は、システムオンチップ（ＳＯＣ）集積回路が前記ロジック及び前記メモリを含む、例１に記載の装置を含む。
例１４は、前記複数のノードの各ノードは、１つ以上のプロセッサコアを有するプロセッサと、１つ以上のプロセッサコアを有する画像処理ユニットと、ネットワークファブリックへの接続、ログインコンポーネント、サービスコンポーネント、メモリ、又は入出力デバイスの１つ以上を含むものである、例１に記載の装置を含む。
【００６６】
例１５は、複数のノードの各ノードに対して電力及びパフォーマンス管理のためのポリシーの決定を引き起こすステップと、前記ポリシーを前記複数のノードに送信するステップとを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、１つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む、方法を含む。
例１６は、前記複数のノードの各々に対して別個のポリシーを決定するステップをさらに含む、例１５に記載の方法を含む。
例１７は、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するステップをさらに含む、例１５に記載の方法を含む。
例１８は、前記１つ以上の目的関数は、電力上限を満たしながらパフォーマンスを最大化すること、電力上限を満たしながらエネルギー効率を最大化すること、前記電力上限を満たしながら前記複数のノードの間のパフォーマンス差を最小限に抑えること、パフォーマンスを最大化すること若しくは効率を最大化すること又は電力上限を満たしながらパフォーマンスを最大化しつつ効率を最大化することの１つ以上を含む、例１５に記載の方法を含む。
例１９は、前記決定は階層的機械学習操作に従って動作する、例１５に記載の方法を含む。
例２０は、前記決定は、負荷不均衡の問題、スケーラビリティの問題、又はフレキシビリティの問題のうちの１つ以上を解くように実行される、例１５に記載の方法を含む。
例２１は、前記ポリシーが、前記ジョブ内の全てのノードにわたる電力及びパフォーマンス管理を調整することをさらに含む、例１５に記載の方法を含む。
例２２は、前記ポリシーが、前記ジョブ内の全てのノードにわたり、かつ、ソフトウェア及びハードウェア抽象化層にわたる電力及びパフォーマンス管理を調整することをさらに含む、例１５に記載の方法を含む。
例２３は、確率的ポリシー勾配法に従って前記ポリシーを決定するステップをさらに含む、例１５に記載の方法を含む。
例２４は、前記複数のノードはキャビネットを形成し、前記ポリシーは１つ以上のキャビネット間で階層的に分解され、次いで、前記複数のノード間で分解される、例１５に記載の方法を含む。
例２５は、スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含む、例１５に記載の方法を含む。
例２６は、スケーラブルオーバレイネットワークを介して、前記複数のノードを結合するステップをさらに含み、該スケーラブルオーバレイネットワークは、電力又はパフォーマンステレメトリの集約及び制御の分散を提供する、例１５に記載の方法を含む。
【００６７】
例２７は、プロセッサ上で実行されて、該プロセッサが１つ以上の動作を実行するように構成する該１つ以上の命令を含むコンピュータ読み取り可能媒体であって、該１つ以上の命令は、複数のノードの各ノードに対して電力及びパフォーマンス管理のためのポリシーの決定を引き起こすステップと、前記ポリシーを前記複数のノードに送信するステップとを含み、前記ポリシーは、前記複数のノードにわたる電力及びパフォーマンス管理の調整を引き起こすものであり、前記ポリシーは、１つ以上の目的関数に向けてジョブを管理するものであり、前記ジョブは前記複数のノード上で同時に動作する複数のタスクを含む。
例２８は、前記プロセッサ上で実行されて、前記プロセッサが前記１つ以上の動作を実行するように構成する前記１つ以上の命令を含み、前記１つ以上の命令は、前記複数のノードの各々に対して別個のポリシーを決定するステップをさらに含む、例２７に記載のコンピュータ読み取り可能媒体を含む。
例２９は、前記プロセッサ上で実行されて、前記プロセッサが前記１つ以上の動作を実行するように構成する前記１つ以上の命令を含み、前記１つ以上の命令は、前記複数のノードの各々の少なくとも一部に対して別個のポリシーを決定するステップをさらに含む、例２７に記載の方法を含む。
【００６８】
例３０は、前述の例のいずれか一つに記載の方法を実行する手段を含む装置を含む。
【００６９】
例３１は、実行されると、前述の例のいずれか一つに記載の方法を実装する又は装置を実現する機械読み取り可能命令を含む機械読み取り可能媒体を含む。
【００７０】
様々な実施形態において、例えば、図１から６を参照して、本明細書で説明されている動作は、ハードウェア（例えば、回路）、ソフトウェア、ファームウェア、マイクロコード又はそれらの組み合わせで実装され、本明細書で説明されているプロセスを実行するようにコンピュータをプログラムするために使用される命令（又は、ソフトウェア手順）を記憶した有形の（例えば、非一時的な）機械読み取り可能又はコンピュータ読み取り可能媒体を含むコンピュータプログラム製品として提供されることができる。また、用語「ロジック」は、例として、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの組み合わせを含むことができる。機械読み取り可能媒体は、図１〜図３に関して説明したような記憶装置を含むことができる。
【００７１】
さらに、そのような有形のコンピュータ読み取り可能媒体は、コンピュータプログラム製品としてダウンロードされてもよく、ここで、プログラムは、通信リンク（例えば、バス、モデム又はネットワーク接続）を介して、データ信号（例えば、搬送波、他の伝播媒体等における）によりリモートコンピュータ（例えば、サーバ）から要求コンピュータ（例えば、クライアント）に転送される。
【００７２】
明細書中の「一実施形態」又は「実施形態」とは、実施形態に関連して説明されている特定の特徴、構造、又は特性が少なくとも１つの実装に含められることができることを意味する。本明細書の様々な場所での語句「一実施形態では」が出現しているが、全て同じ実施形態を示すこともできるし、示さないこともできる。
【００７３】
また、明細書及び特許請求の範囲において、用語「結合された」及び「接続された」は、それらの派生語と共に使用されることができる。いくつかの実施形態では、「接続された」は、２つ以上の要素が互いに直接的に物理的又は電気的に接触していることを示すために使用されることができる。「結合された」とは、２つ以上の要素が直接的に物理的又は電気的に接触していることを意味することがある。しかし、「結合された」とは、２つ以上の要素が互いに直接的に接触していないが、依然として互いに協働し又は相互作用していることを意味することもできる。
【００７４】
したがって、実施形態は、構造的特徴及び／又は方法論的行為に特有の言語で説明されているが、特許請求の範囲に記載されている主題は、説明されている特定の特徴又は動作に限定されないことを理解されたい。むしろ、特定の特徴及び動作は、特許の請求の範囲に記載されている主題を実装するための実例形式として開示されている。
【図１】
2018500673.tif 000009
【図２】
2018500673.tif 000010
【図３】
2018500673.tif 000011
【図４】
2018500673.tif 000012
【図５】
2018500673.tif 000013
【図６】
2018500673.tif 000014
【国際調査報告】
2018500673.tif 000015
2018500673.tif 000016