(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】アップスケーラ動作のためのプラットフォームリソース選択
(51)【国際特許分類】
G06F 9/50 20060101AFI20240912BHJP
【FI】
G06F9/50 120Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024519001
(86)(22)【出願日】2022-09-23
(85)【翻訳文提出日】2024-05-08
(86)【国際出願番号】 US2022044565
(87)【国際公開番号】W WO2023049368
(87)【国際公開日】2023-03-30
(32)【優先日】2021-09-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ウィリアム ハーズ
(72)【発明者】
【氏名】ドミトリー ティコストウプ
(72)【発明者】
【氏名】ダニエル ウェイヒム ウォン
(72)【発明者】
【氏名】ミッチェル エイチ. シンガー
(72)【発明者】
【氏名】ブルーノ ステファニッチ
(57)【要約】
プラットフォームリソースを使用したアップスケーラ動作の複合処理は、アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップであって、複数のプラットフォームリソースは、1つ以上のグラフィックスプロセッサユニット(GPU)及び1つ以上の加速処理ユニット(APU)を含む、ステップと、アップスケーリング動作のワークロードを、アップスケーリング動作のモダリティに基づいてプラットフォームリソースのうち1つ以上に動的に割り当てるステップと、ワークロードが割り当てられたプラットフォームリソースによってアップスケーリング動作のワークロードを処理するステップと、を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プラットフォームリソースを使用して複合処理するための方法であって、
アップスケーリング動作を実行するのに利用可能な複数のプラットフォームリソースを識別するステップであって、前記複数のプラットフォームリソースは、1つ以上のグラフィックスプロセッサユニット(GPU)及び1つ以上の加速処理ユニット(APU)を含む、ステップと、
前記アップスケーリング動作のモダリティに基づいて、前記アップスケーリング動作のワークロードを前記プラットフォームリソースのうち1つ以上に動的に割り当てるステップと、
前記ワークロードが割り当てられたプラットフォームリソースによって前記アップスケーリング動作のワークロードを処理するステップと、を含む、
方法。
【請求項2】
ユーザ選好に基づいて前記アップスケーリング動作のモダリティを選択するステップを含む、
請求項1の方法。
【請求項3】
前記プラットフォームリソースの性能能力に基づいて前記アップスケーリング動作のモダリティを選択するステップを含む、
請求項1の方法。
【請求項4】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記プラットフォームリソースの性能能力に基づいて前記ワークロードを動的に割り当てるステップを含む、
請求項1の方法。
【請求項5】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、ユーザ選好に基づいて前記アップスケーリング動作のワークロードを前記1つ以上のプラットフォームリソースに動的に割り当てるステップを含む、
請求項1の方法。
【請求項6】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、並びに、前記第1のプラットフォームリソース及び前記第2のプラットフォームリソースの性能能力に基づいて、前記アップスケーリング動作のワークロードを前記第1のプラットフォームリソースと前記第2のプラットフォームリソースとの間で動的に割り当てるステップを含む、
請求項1の方法。
【請求項7】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、前記複数のプラットフォームリソースのうち1つ以上の電力状態、及び、前記複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、前記複数のプラットフォームリソースのうち1つ以上の間で前記ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てるステップを含む、
請求項1の方法。
【請求項8】
プラットフォームリソースを使用して複合処理するための装置であって、
前記装置は、コンピュータプロセッサと、前記コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備え、
前記コンピュータメモリは、コンピュータプログラム命令を備え、
前記コンピュータプログラム命令は、前記コンピュータプロセッサによって実行されると、
アップスケーリング動作を実行するのに利用可能な複数のプラットフォームリソースを識別するステップであって、前記複数のプラットフォームリソースは、1つ以上のグラフィックスプロセッサユニット(GPU)及び1つ以上の加速処理ユニット(APU)を含む、ステップと、
前記アップスケーリング動作の少なくともモダリティに基づいて、前記アップスケーリング動作のワークロードを前記プラットフォームリソースのうち1つ以上に動的に割り当てるステップと、
ワークロードが割り当てられたプラットフォームリソースによって前記アップスケーリング動作のワークロードを処理するステップと、
を前記装置に行わせる、
装置。
【請求項9】
実行されると、ユーザ選好に基づいて前記アップスケーリング動作のモダリティを選択するステップを前記装置に行わせるコンピュータプログラム命令を含む、
請求項8の装置。
【請求項10】
実行されると、前記プラットフォームリソースの性能能力に基づいて前記アップスケーリング動作のモダリティを選択するステップを前記装置に行わせるコンピュータプログラム命令を含む、
請求項8の装置。
【請求項11】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記プラットフォームリソースの性能能力に基づいて前記ワークロードを動的に割り当てるステップを含む、
請求項8の装置。
【請求項12】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、ユーザ選好に基づいて前記アップスケーリング動作のワークロードを前記1つ以上のプラットフォームリソースに動的に割り当てるステップを含む、
請求項8の装置。
【請求項13】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、並びに、前記第1のプラットフォームリソース及び前記第2のプラットフォームリソースの性能能力に基づいて、前記アップスケーリング動作のワークロードを前記第1のプラットフォームリソースと前記第2のプラットフォームリソースとの間で動的に割り当てるステップを含む、
請求項8の装置。
【請求項14】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、前記複数のプラットフォームリソースのうち1つ以上の電力状態、及び、前記複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、前記複数のプラットフォームリソースのうち1つ以上の間で前記ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てるステップを含む、
請求項8の装置。
【請求項15】
プラットフォームリソースを使用して複合処理するためのコンピュータプログラム製品であって、
前記コンピュータプログラム製品は、コンピュータ可読記憶媒体に配置されており、コンピュータプログラム命令を備え、
前記コンピュータプログラム命令は、実行されると、
アップスケーリング動作を実行するのに利用可能な複数のプラットフォームリソースを識別するステップであって、前記複数のプラットフォームリソースは、1つ以上のグラフィックスプロセッサユニット(GPU)及び1つ以上の加速処理ユニット(APU)を含む、ステップと、
前記アップスケーリング動作のモダリティに基づいて、前記アップスケーリング動作のワークロードを前記プラットフォームリソースのうち1つ以上に動的に割り当てるステップと、
前記ワークロードが割り当てられたプラットフォームリソースによって前記アップスケーリング動作のワークロードを処理するステップと、
をコンピュータに行わせる、
コンピュータプログラム製品。
【請求項16】
実行されると、
ユーザ選好に基づいて前記アップスケーリング動作のモダリティを選択するステップと、
前記複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、前記アップスケーリング動作のモダリティを選択するステップと、
を前記コンピュータに行わせるコンピュータプログラム命令を含む、
請求項15のコンピュータプログラム製品。
【請求項17】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記プラットフォームリソースの性能能力に基づいて前記ワークロードを動的に割り当てるステップを含む、
請求項15のコンピュータプログラム製品。
【請求項18】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、ユーザ選好に基づいて前記アップスケーリング動作のワークロードを前記1つ以上のプラットフォームリソースに動的に割り当てるステップを含む、
請求項15のコンピュータプログラム製品。
【請求項19】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、並びに、前記第1のプラットフォームリソース及び前記第2のプラットフォームリソースの性能能力に基づいて、前記アップスケーリング動作のワークロードを前記第1のプラットフォームリソースと前記第2のプラットフォームリソースとの間で動的に割り当てるステップを含む、
請求項15のコンピュータプログラム製品。
【請求項20】
前記アップスケーリング動作のワークロードを動的に割り当てるステップは、前記アップスケーリング動作のモダリティ、ユーザ選好、前記複数のプラットフォームリソースのうち1つ以上の電力状態、及び、前記複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、前記複数のプラットフォームリソースのうち1つ以上の間で前記ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てるステップを含む、
請求項15のコンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングシステムは、多くの場合、命令を取り出して実行し、実行した命令の結果を適切な場所に記憶するか又は計算結果を出力することができる、いくつかの処理リソース(例えば、1つ以上のプロセッサ)を含む。処理リソース(例えば、中央処理装置(CPU)又はグラフィックスプロセッサユニット(GPU))は、データ(例えば、1つ以上のオペランド)に対して論理演算を実行することによって命令を実行するために使用することができる、例えば、算術論理ユニット(ALU)回路、浮動小数点ユニット(FPU)回路及び/又は組み合わせ論理ブロック等のいくつかの機能ユニットを備え得る。例えば、機能ユニット回路は、いくつかの論理演算を介してオペランドに対して加算、減算、乗算及び/又は除算等の算術演算を実行するために使用され得る。
【0002】
そのようなコンピュータシステム上で実行されるアプリケーションには、特定のワークロードを実行するために特定の処理リソースを選択する機会を与えることができる。例えば、CPU及び1つ以上のGPUを含むコンピューティングシステムにおいて、アプリケーションは、アプリケーションワークロードを実行するために特定のプロセッサを選択することができる。アプリケーションは、コンピューティングシステムのオペレーティングシステムに問い合わせることによって、何れの処理リソースがコンピューティングシステムに常駐しているかを判定することができる。一例では、マルチメディア再生アプリケーションは、メディア再生が可能なデバイスのリストについてオペレーティングシステムに問い合わせ、例えば、ビデオ再生ワークロードを実行するための特定のGPUを選択することができる。
【図面の簡単な説明】
【0003】
【
図1】本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを提供するための例示的なシステムのブロック図である。
【
図2】本開示のいくつかの実施形態による、プラットフォームリソース候補を提供するプラットフォームリソース推奨サービス(platform resource recommendation service)(例えば、プラットフォームリソース完全性サービス(platform resource integrity service))を提供するための例示的なシステム200の追加のブロック図である。
【
図3A】本開示のいくつかの実施形態による、クライアント-サーバ割り当て(alloc)のための例示的なトップレベルシステムの追加のブロック図である。
【
図3B】本開示のいくつかの実施形態による、サーバモードのプラットフォームリソースライブラリとしてプラットフォームリソース推奨サービスを提供するための例示的なシステムの追加のブロック図である。
【
図3C】本開示のいくつかの実施形態による、プラットフォームリソースライブラリを使用してクライアントモードで動的割り当てサービスを提供するための例示的なシステム325の追加のブロック図である。
【
図4】本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを提供するためにユーザモードでプラットフォームリソースライブラリを使用するための例示的なシステムのブロック図である。
【
図5A】本開示のいくつかの実施形態による、オーディオノイズ低減(ANR)のためのプラットフォームリソース候補を提供するためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステムの追加のブロック図である。
【
図5B】本開示のいくつかの実施形態による、ビデオ前処理のためのプラットフォームリソース候補を提供するためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステムの追加のブロック図である。
【
図5C】本開示のいくつかの実施形態による、ビデオ記録/ストリーミングのためのプラットフォームリソース候補を提供するためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステムの追加のブロック図である。
【
図5D】本開示のいくつかの実施形態による、後処理及びスケールのためのプラットフォームリソース候補を提供するためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステムの追加のブロック図である。
【
図6】本開示のいくつかの実施形態による、アップスケーリング動作の複合処理のためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステムの追加のブロック図である。
【
図7】本開示のいくつかの実施形態による、ワークロードイニシエータにプラットフォームリソース候補を提供する例示的な方法を示すフロー図である。
【
図8】本開示のいくつかの実施形態による、ワークロードイニシエータにプラットフォームリソース候補を提供する別の例示的な方法を示すフロー図である。
【
図9】本開示のいくつかの実施形態による、ワークロードイニシエータにプラットフォームリソース候補を提供する別の例示的な方法を示すフロー図である。
【
図10】本開示の実施形態による、ランタイム中にプラットフォームリソース候補が更新される例示的な方法を示すフロー図である。
【
図11】本開示のいくつかの実施形態による、プラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を使用したレンダリングされたフレームのアップスケーリング動作の複合処理の例示的な方法を示すフロー図である。
【
図12】本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを使用したレンダリングされたフレームのアップスケーリング動作の複合処理の別の例示的な方法を示すフロー図である。
【
図13】本開示のいくつかの実施形態による、ワークロードの割り当てがいくつかの異なる方法で実行されるアップスケーリング動作の複合処理の別の例示的な方法を示すフロー図である。
【発明を実施するための形態】
【0004】
上述したように、コンピュータシステム上で実行されるアプリケーションには、特定のワークロードを実行するために特定の処理リソースを選択する機会を与えることができる。いくつかのシナリオでは、アプリケーションが実行のためにワークロードを割り当てる準備ができている場合、アプリケーションは、最初に、オペレーティングシステムに問い合わせて、何れの処理リソースが利用可能であるかを判定する。例えば、ワークロードがグラフィックス(例えば、ゲームのためのグラフィックスレンダリング)又はマルチメディアワークロード(例えば、マルチメディア再生)である場合、アプリケーションは、最初に、GPUがコンピューティングデバイス内に存在するかどうかを判定することができる。いくつかのコンピューティングデバイスでは、2つ以上のGPUが存在し得る。例えば、コンピューティングデバイスは、統合CPU及びGPUを含むことができる一方で、ディスクリートGPU(すなわち、個別のチップ上)も含むことができる。更に、アプリケーションは、例えば、ワークロードを配置できる場所を判定するために、GPUによって何れのビデオコーデックがサポートされているかを判定することができる。例えば、ストリーミングメディアサービスプレーヤは、ソース解像度、ビットレート、コーデック、ディスプレイ解像度、フレームレート等に関して特定のワークロード(例えば、映画)を記述し、ワークロードを実行することができるプロセッサリソースについてオペレーティングシステムに問い合わせることができる。オペレーティングシステムは、ワークロードを実行する能力を有するGPUを識別することによって応答することができる。オペレーティングシステムの応答に基づいて、アプリケーションは、GPUを選択し、そのGPUにワークロードを割り当てることができる。例えば、アプリケーションは、統合GPUにワークロードを割り当てることができる。なぜなら、統合GPUは、典型的には、ディスクリートGPUよりも少ない電力を消費するからである。これは、コンピューティングデバイスがバッテリ電力で動作している場合に特に懸念され得る。
【0005】
しかしながら、オペレーティングシステムがコンピューティングデバイスの能力に関する情報を提供する場合、オペレーティングシステムは、システムのランタイム挙動に関する如何なる洞察もなしにそれを行う。すなわち、オペレーティングシステムは、統合GPUのビデオコーデックがどのくらいビジーであるかを知らない。アプリケーションが、ビデオ会議アプリケーション等の他のビデオワークロードも実行している可能性がある統合GPU上にワークロードを置くことを決定した場合、統合GPUのビデオコーデックがオーバーサブスクライブ(oversubscribed)される可能性がある。言い換えれば、アプリケーション及びオペレーティングシステムは、プロセッサリソースの実際のランタイム利用に関して可視性を有さず、したがって、コンピューティングデバイスがワークロードに対して予想されるユーザエクスペリエンスを配信することができるかどうかを知らない。
【0006】
加えて、オペレーティングシステムは、実際のプラットフォームリソース(例えば、ハードウェア)の能力及び制限を完全に理解していない。実際、いくつかのプラットフォームリソース能力は、オペレーティングシステムによって発見不可能である。したがって、アプリケーションを、そのアプリケーションを処理するのに最も適切又は最適なリソースではないプラットフォームリソースに割り当てる場合がある。
【0007】
加えて、画像フレームを定義するデータは、通常、提示のために様々なサイズにスケーリングされる。すなわち、画像スケーリングは、デジタル画像をサイズ変更することを指す。アップスケーリング又は「解像度向上」は、低解像度入力から高解像度画像を生成するプロセスである。アップスケーリングは、より高い解像度のディスプレイで画像を提示する。例えば、ビデオストリームからのピクチャ又はフレーム(例えば、画像)は、より低い解像度からより高い解像度にアップスケールされる。次いで、アップスケールされた画像は、例えば、画像がディスプレイ全体を満たすように、ディスプレイ上に表示され得る。アップスケーリングに伴う課題の1つは、プラットフォームリソース能力、可用性及び制限をユーザ選好と共に考慮せずに、プラットフォームリソースを包括的且つ網羅的に使用することである。更に、アップスケーリング動作のモダリティ(modality)は、処理効率及び電力消費に悪影響を及ぼす可能性がある。
【0008】
したがって、本開示による実施形態は、アプリケーション又は他のワークロードイニシエータが、性能能力及び利用メトリクスに基づいてワークロードを実行するために複数のプラットフォームリソースのうち1つ以上を選択するためのプラットフォームリソース推奨を受信することができる、プラットフォームリソース推奨サービスのための機構を提供する。
【0009】
実施形態は、プラットフォームリソースを推奨する方法を対象とする。本方法は、プラットフォームリソース候補に対するワークロードイニシエータからの要求を受信するステップを含む。また、本方法は、複数のプラットフォームリソースの要求並びに性能能力及び利用メトリクスに基づいて、1つ以上のプラットフォームリソース候補を識別するステップであって、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上の加速処理ユニット(APU)を含む、ステップを含む。APUは、広義の表現であると考えられることに留意されたい。例えば、APUは、従来のCPU、従来のGPU、ソフトウェア及び/又はそれらの組み合わせと比較して、加速されたグラフィックス処理タスク、データパラレルタスク、又は、ネストされたデータパラレルタスクに関連する機能及び計算を加速された方法で実行するハードウェア及び/又はソフトウェアの任意の協働セットを指す。例えば、APUは、CPU及びGPUの両方として機能することができる処理ユニット(例えば、処理チップ/デバイス)である。更に、APUは、汎用CPUの外部で1つ以上のタイプの計算を加速するために使用される追加の処理能力を含むチップである。一実施形態では、APUは、GPU、FPGA、機械学習プロセッサ、デジタル信号プロセッサ(DSP)、オーディオ/サウンドプロセッサ、又は、他の処理ユニットと同じダイ上に統合汎用CPUを含むことができ、したがって、電力消費を低減しながら、これらのユニット間のデータ転送レートを改善する。いくつかの実施形態では、APUは、ビデオ処理及び他の特定用途向けアクセラレータを含むことができる。
【0010】
GPUは、コンピュータ、ワークステーション、ゲームコンソール、及び、同様のデジタル処理デバイスのためのグラフィックス及びビデオレンダリングデバイスである。GPUは、概して、コンピュータのCPUに対するコプロセッサコンポーネントとして実装され、アドインカード(例えば、ビデオカード)、コプロセッサの形態で、又は、コンピュータのマザーボード若しくは他のデバイスに直接統合される機能性として提供されることができる。GPUは、ディスクリートGPUであり得る。
【0011】
また、方法は、識別された1つ以上のプラットフォームリソース候補をワークロードイニシエータに動的に提供するステップを含む。「動的」又は「動的」という用語は、本明細書では、アクションが静的ではなく非同期のオンデマンド方式で実行されることを示すために使用される。この例では、「提供」は、プラットフォームリソース候補が識別され、システムの動作中を含む任意の時間にワークロードイニシエータに提供され得るという点で、動的に実行されると言われる。このようにして、リソース候補は、現在の利用の如何なる知識もなしに静的にではなく、リアルタイムの現在の利用及びシステム構成に基づいて識別され得る。
【0012】
いくつかの実施形態では、本方法は、複数のプラットフォームリソースの非性能能力及び性能制限に基づいて、識別された1つ以上のプラットフォームリソース候補を動的に提供するステップを含む。いくつかの実施形態では、本方法は、性能能力プラットフォームリソースライブラリ内の複数のプラットフォームリソースの各々についての利用メトリクス、発見不可能性能能力及び性能制限を収集するステップを含む。
【0013】
いくつかの実施形態では、本方法は、プラットフォームリソース推奨のためのワークロードイニシエータからの要求に基づいて、複数のプラットフォームリソースの各々の発見不可能性能能力、性能制限及び履歴性能データを判定するために、プラットフォームリソースライブラリを参照するステップを含む。いくつかの実施形態では、本方法は、ワークロードの起動時又はランタイム中に、複数のプラットフォームリソースの各々について、性能能力、利用メトリクス、発見不可能性能能力及び性能制限を監視するステップを含む。
【0014】
いくつかの実施形態では、本方法は、ワークロードのランタイム中に、複数のプラットフォームリソースの調整された性能能力及び調整された利用メトリクスに基づいて、更新されたプラットフォームリソース候補を動的に提供するステップを含む。
【0015】
いくつかの実施形態では、本方法は、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて、複数のプラットフォームリソースの各々をランク付けするステップを含む。いくつかの実施形態では、本方法は、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて、複数のプラットフォームリソースのうち1つ以上の各々についてワークロードを実行するための利用影響を予測するステップを含む。性能能力は、複数のプラットフォームリソースの動作モード、複数のプラットフォームリソース間の相互接続能力、複数のプラットフォームリソースの電力能力、及び、周辺デバイス能力を含むことができる。また、複数のプロセッサリソースは、ローカルメモリ、システムメモリ、1つ以上の周辺デバイス、ディスプレイコントローラ、バスインターフェースコントローラ、メモリサブシステムコントローラを含むことができる。また、GPUは、ディスクリートGPUであり得る。
【0016】
別の実施形態は、プラットフォームリソース候補を提供する装置を対象とする。本装置は、コンピュータプロセッサと、コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備え、コンピュータメモリは、コンピュータプロセッサによって実行されると、装置に、プラットフォームリソース推奨のためのワークロードイニシエータからの要求を行わせるコンピュータプログラム命令を内部に配置している。要求は、ワークロードイニシエータからのワークロードの記述を含むことができる。また、コンピュータプログラム命令は、装置に、複数のプラットフォームリソースの性能能力及び利用メトリクスを分析するステップを行わせ、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む。また、コンピュータプログラム命令は、装置に、識別された1つ以上のプラットフォームリソース候補をワークロードイニシエータに動的に提供するステップを行わせる。一態様では、ワークロードイニシエータは、プロファイルされたワークロードのセットを提供し、プラットフォームリソース又はユーザ設定の能力に適合/一致するワークロードタイプを選択する。
【0017】
また、コンピュータプログラム命令は、装置に、プラットフォームリソース推奨のためのワークロードイニシエータからの要求に基づいて、複数のプラットフォームリソースの各々についての発見不可能性能能力、性能制限及び履歴性能データを判定するために、プラットフォームリソースライブラリを参照するステップを行わせる。
【0018】
また、コンピュータプログラム命令は、装置に、ワークロードの起動時又はランタイム中に、複数のプラットフォームリソースの各々について、性能能力、利用メトリクス、発見不可能性能能力及び性能制限を監視するステップを行わせる。また、コンピュータプログラム命令は、装置に、ワークロードのランタイム中に、複数のプラットフォームリソースの調整された性能能力及び調整された利用メトリクスに基づいて、更新されたプラットフォームリソース候補を動的に提供する。
【0019】
また、コンピュータプログラム命令は、装置に、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて、複数のプラットフォームリソースの各々をランク付けするステップを行わせる。また、コンピュータプログラム命令は、装置に、ワークロードを実行するための複数のプラットフォームリソースのうち1つ以上の各々についての利用影響を、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて予測するステップを行わせる。
【0020】
更に別の実施形態は、プラットフォームリソース候補を提供するコンピュータプログラム製品を対象とする。コンピュータプログラム製品は、コンピュータ可読媒体上に配置され、実行されると、コンピュータに、プラットフォームリソース推奨のための要求をワークロードイニシエータから受信させるコンピュータプログラム命令を含む。要求は、ワークロードイニシエータからのワークロードの記述を含むことができる。すなわち、記述は、プロファイルされたワークロードのセットを含むことができ、ワークロードイニシエータが、プラットフォームリソース又はユーザ設定の能力に適合/一致するワークロードタイプを選択することを可能にする。
【0021】
また、コンピュータプログラム命令は、装置に、複数のプラットフォームリソースの性能能力及び利用メトリクスを分析するステップを行わせ、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む。また、コンピュータプログラム命令は、装置に、識別された1つ以上のプラットフォームリソース候補をワークロードイニシエータに動的に提供する。
【0022】
一実施形態は、プラットフォームリソースを使用して複合処理する方法を対象とする。本方法は、アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップであって、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む、ステップを含む。また、本方法は、アップスケーリング動作の少なくとも1つのモダリティに基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを含む。また、本方法は、ワークロードを動的に割り当てるステップに基づいて、複数のプラットフォームリソースのうち1つ以上によるアップスケーリング動作のワークロードを処理するステップを含む。
【0023】
いくつかの実施形態では、本方法は、ユーザ選好に基づいてアップスケーリング動作のモダリティを選択するステップを含む。いくつかの実施形態では、本方法は、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、アップスケーリング動作のモダリティを選択するステップを含む。
【0024】
いくつかの実施形態では、方法は、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、複数のプラットフォームリソースのうち1つ以上にアップスケーリング動作のワークロードを動的に割り当てるステップを含む。いくつかの実施形態では、本方法は、ユーザ選好に基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを含む。いくつかの実施形態では、本方法は、アップスケーリング動作のモダリティ、ユーザ選好、並びに、第1のプラットフォームリソース及び第2のプラットフォームリソースの性能能力に基づいて、複数のプラットフォームリソースのうち第1のプラットフォームリソースと第2のプラットフォームリソースとの間でアップスケーリング動作のワークロードを動的に割り当てるステップを含む。いくつかの実施形態では、本方法は、アップスケーリング動作のモダリティ、ユーザ選好及び複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、複数のプラットフォームリソースのうち1つ以上の間で、ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てるステップを含む。
【0025】
別の実施形態は、プラットフォームリソースを使用する複合処理のための装置を対象とする。本装置は、コンピュータプロセッサと、コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備え、コンピュータメモリは、コンピュータプロセッサによって実行されると、装置に、アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップであって、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む、ステップを行わせるコンピュータプログラム命令を内部に配置している。また、コンピュータプログラム命令は、装置に、アップスケーリング動作の少なくともモダリティに基づいて、複数のプラットフォームリソースのうち1つ以上にアップスケーリング動作のワークロードを動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、装置に、ワークロードを動的に割り当てるステップに基づいて、複数のプラットフォームリソースのうち1つ以上によるアップスケーリング動作のワークロードを処理するステップを行わせる。
【0026】
また、コンピュータプログラム命令は、装置に、ユーザ選好に基づいてアップスケーリング動作のモダリティを選択するステップを行わせる。また、コンピュータプログラム命令は、装置に、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、アップスケーリング動作のモダリティを選択するステップを行わせる。
【0027】
また、コンピュータプログラム命令は、装置に、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、装置に、ユーザ選好に基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、装置に、アップスケーリング動作のモダリティ、ユーザ選好、並びに、第1のプラットフォームリソース及び第2のプラットフォームリソースの性能能力に基づいて、複数のプラットフォームリソースのうち第1のプラットフォームリソースと第2のプラットフォームリソースとの間でアップスケーリング動作のワークロードを動的に割り当てるステップを行わせる。
【0028】
また、コンピュータプログラム命令は、装置に、アップスケーリング動作のモダリティ、ユーザ選好及び複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、複数のプラットフォームリソースのうち1つ以上の間で、ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てるステップを行わせる。
【0029】
更に別の実施形態は、プラットフォームリソースを使用する複合処理のためのコンピュータプログラム製品を対象とする。コンピュータプログラム製品は、コンピュータ可読記憶媒体上に配置され、実行されると、コンピュータに、アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップであって、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む、ステップを行わせるコンピュータプログラム命令を含む。また、コンピュータプログラム命令は、コンピュータに、アップスケーリング動作の少なくともモダリティに基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、コンピュータに、ワークロードを動的に割り当てるステップに基づいて、複数のプラットフォームリソースのうち1つ以上によるアップスケーリング動作のワークロードを処理するステップを行わせる。
【0030】
また、コンピュータプログラム命令は、コンピュータに、ユーザ選好に基づいて、アップスケーリング動作のモダリティを選択するステップを行わせる。また、コンピュータプログラム命令は、コンピュータに、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、アップスケーリング動作のモダリティを選択するステップを行わせる。
【0031】
また、コンピュータプログラム命令は、コンピュータに、複数のプラットフォームリソースのうちの1つ以上の性能能力に基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、コンピュータに、ユーザ選好に基づいて、アップスケーリング動作のワークロードを複数のプラットフォームリソースのうち1つ以上に動的に割り当てるステップを行わせる。また、コンピュータプログラム命令は、コンピュータに、アップスケーリング動作のモダリティ、ユーザ選好、並びに、第1のプラットフォームリソース及び第2のプラットフォームリソースの性能能力に基づいて、複数のプラットフォームリソースのうち第1のプラットフォームリソースと第2のプラットフォームリソースとの間でアップスケーリング動作のワークロードを動的に割り当てるステップを行わせる。
【0032】
また、コンピュータプログラム命令は、コンピュータに、複数のプラットフォームリソースのうち1つ以上の間で、ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を、アップスケーリング動作のモダリティ、ユーザ選好及び複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて動的に割り当てるステップを行わせる。
【0033】
本開示による実施形態は、
図1から始めて更に詳細に説明される。明細書及び図面を通じて、同じ符号は同じ構成要素を指す。
図1は、本開示のいくつかの実施形態による、プラットフォームリソース推奨サービス(例えば、動的割り当てサービス)を提供するための例示的なシステム100のブロック図である。
図1の例示的なシステム100は、ラップトップ又はデスクトップパーソナルコンピュータ、サーバ、スマートフォン又はタブレット等のモバイルデバイス、ゲームコンソール等のコンピューティングデバイスにおいて実装することができる。例示的なシステム100は、2つのGPU104、134を含むが、当業者であれば、本開示の趣旨から逸脱することなく、他のシステムがより多くのGPUを含むことができ、又は、他のタイプの加速処理デバイスを使用することができることを理解するであろう。
【0034】
図1の例では、例示的なシステム100は、CPU106及びGPU104(本明細書では「統合GPU」と呼ばれる)を統合するAPU102を含む。CPU106及び統合GPU104は、同じチップ上に実装することができ、したがって、システムメモリ160、メモリコントローラ114及びシステムメモリ160にアクセスするための直接メモリアドレス指定(DMA)エンジン118等のいくつかのコンポーネント及びインターフェース、パーソナルコンピューティングインターフェースエクスプレス(PCIe)インターフェース116等のバスインターフェース、並びに、ネットワークインターフェース、ユニバーサルシリアルバス(USB)インターフェース、ハードディスクドライブ(HDD)及びソリッドステートドライブ(SSD)インターフェース等の永続的記憶インターフェース等の
図1に示されていない他のインターフェース及びアダプタを共有することができる。CPU106は、1つ以上のコア108(すなわち、実行エンジン)、キャッシュ構造(図示せず)、パイプラインコンポーネント(図示せず)等を含む。CPU106及び他の共有コンポーネントは、高速オンチップ通信ファブリック(図示せず)を介してGPU104に接続される。
【0035】
図1の例示的なシステム100では、統合GPU104は、多くの並列処理ユニット(図示せず)を有する複数の単一命令複数データ(SIMD)処理コア112を含むGPU計算エンジン110を含む。また、GPU計算エンジン110は、ジオメトリプロセッサ、ラスタライザ、グラフィックコマンドプロセッサ、ハードウェアスケジューラ、非同期計算エンジン、キャッシュ、データ共有等の
図1に示されていない他のコンポーネントを含む。
図1の例において、統合GPU104は、加速されたビデオの符号化及び復号のためのビデオエンコーダ/デコーダ120(すなわち、「コーデック」)、加速されたオーディオの符号化及び復号のためのオーディオコーデック122、加速された表示処理のためのディスプレイコントローラ124、並びに、加速されたセキュリティプロトコルの実施及び遵守のためのセキュリティプロセッサ126等の特定用途向け集積回路又は機能論理ブロックの形態のハードウェアアクセラレータを含む。
【0036】
図1の例では、APU102は、PCIe相互接続190等の相互接続を介してディスクリートGPU134(dGPU)と通信する。APU102のPCIeインターフェース116及びdGPU134のPCIeインターフェース146は、PCIe相互接続190を介して通信する。いくつかの例では、APU102及びdGPU134は、同じ基板(例えば、プリント回路基板)上に実装することができる。別の例では、dGPU134は、APU102の基板とは別のビデオカード又はグラフィックスカード上に実装される。
【0037】
統合GPU104と同様に、
図1の例におけるdGPU134は、多くの並列処理ユニット(図示せず)を有する複数のSIMD処理コア142を含むGPU実行エンジン140(例えば、「GPU計算エンジン」)を含む。また、GPU計算エンジン140は、ジオメトリプロセッサ、ラスタライザ、グラフィックコマンドプロセッサ、ハードウェアスケジューラ、非同期計算エンジン、キャッシュ、データ共有等の
図1に示されていない他のコンポーネントを含む。
図1の例では、dGPU134は、加速されたビデオ符号化及び復号のためのビデオ符号化器/復号器150(すなわち、「コーデック」)、加速されたオーディオ符号化及び復号のためのオーディオコーデック152、加速された表示処理のためのディスプレイコントローラ154、並びに、加速されたセキュリティプロトコルの実施及び遵守のためのセキュリティプロセッサ156等の特定用途向け集積回路又は機能論理ブロックの形態のハードウェアアクセラレータを含む。また、dGPU134は、グラフィックスメモリ180(例えば、ローカルメモリ)にアクセスするためのメモリコントローラ144及びDMAエンジン148を含む。いくつかの例では、メモリコントローラ144及びDMAエンジン148は、システムメモリ160の共有部分にアクセスするように構成されている。
【0038】
図1の例示的なシステム100では、システムメモリ160(例えば、動的ランダムアクセスメモリ(DRAM))は、上述したプロセッサリソース(すなわち、APU及びディスクリートGPU並びにそれらのコンポーネント)のためのデバイスドライバ166とインターフェースするオペレーティングシステム164をホストする。また、システムメモリ160は、1つ以上のアプリケーション162をホストする。本開示に関連して、1つ以上のアプリケーションは、グラフィックスアプリケーション、マルチメディアアプリケーション、ビデオ編集アプリケーション、ビデオ会議アプリケーション、高性能コンピューティングアプリケーション、機械学習アプリケーション、又は、統合GPU104及びdGPU134の並列性及び/又はグラフィックス及びビデオ能力を利用する他のアプリケーションであり得る。1つ以上のアプリケーション162は、オペレーティングシステム164への呼び出しによって統合GPU104又はディスクリートGPU(又は両方の組み合わせ)に割り当てられるワークロード(例えば、グラフィックスレンダリングワークロード、オーディオ/ビデオ転移ワークロード、メディア再生ワークロード、機械学習ワークロード等)を生成する。当業者であれば、1つ以上のアプリケーションは、様々なワークロードタイプを生成する様々な追加のアプリケーションタイプであってもよく、その全てがここで特定されているわけではないことを理解するであろう。しかしながら、本開示内のアプリケーションタイプ及びワークロードタイプへの具体的な言及は、アプリケーションタイプ及びワークロードタイプをここで識別されるものに限定すると解釈すべきではない。
【0039】
また、システムメモリ160は、アプリケーション162等のワークロードイニシエータからワークロードの記述を含む要求を受信し、複数のプラットフォームリソースの性能能力及び利用メトリクスを分析し、複数のプラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含み、例えば、性能能力及び利用メトリクスに基づいてワークロードを実行するために複数のプラットフォームリソースのうち1つ以上を選択するために、アプリケーション162等のワークロードイニシエータにプラットフォームリソース推奨を動的に提供するリソースマネージャ170をホストする。いくつかの例では、リソースマネージャ170は、有形のコンピュータ可読記憶媒体上に記憶されるコンピュータ実行可能命令において具現化され、プロセッサによって実行されると、システム100に、上述したステップ、並びに、以下で説明されるリソースマネージャによって実行される他のステップ及び動作を行わせる。
【0040】
リソースマネージャは、アプリケーション162がワークロードを特定のGPUに割り当てる前にリソースマネージャ170からaプラットフォームリソース推奨を要求することを可能にするAPI172を含むことができる。ワークロード割り当て推奨は、このコンテキストでは、ワークロードが何処に(すなわち、何れのGPU上に)配置されるか(すなわち、ワークロードの実行のために)に関する推奨である。プラットフォームリソース推奨は、システム100内の様々なプラットフォームリソースの性能能力及び利用メトリクスに基づいており、発見不可能性能能力、及び、システム100内の各プラットフォームリソース推奨の性能制限に基づくこともできる。
【0041】
いくつかの例では、リソースマネージャ170は、ランタイム性能能力の現在値及びシステム100内のプラットフォームリソースの利用メトリクスに基づいて、システム100内のプラットフォームリソースへのワークロードの最適なプラットフォームリソース推奨を判定することに関連する1つ以上のポリシー176を解釈するポリシーエンジン174を含む。プラットフォームリソース推奨は、次いで、アプリケーション162に返され、アプリケーション162は、それを使用して、ワークロードを何処に配置するかを決定することができる。様々な実施形態では、リソースマネージャ170は、ドライバ166と通信して利用メトリクスの値を取得するか、又は、他の機構によって利用メトリクスの値を取得する。そのような例では、ドライバ166は、特定のプロセッサリソースのための利用モニタと、利用メトリクス値をリソースマネージャに提供するためのインターフェースと、を含むことができる。
【0042】
様々な実施形態において、リソースマネージャ170は、プラットフォームリソース推奨において、プラットフォームリソース割り当ての推奨を提供することができる。プラットフォームリソースは、特定のタスクを実行するために割り当てられる、システム100内のデバイスであり得る。リソースマネージャ170は、アプリケーション162等のワークロードイニシエータにプラットフォームリソース推奨を提供して、ワークロードイニシエータが推奨されたプラットフォームリソース(例えば、システム100内の様々なデバイス)のうち1つ以上を選択又は拒否してワークロードを実行することを可能にする。これは、ワークロードイニシエータにとって有利になる。なぜなら、従来、プラットフォームリソースは、プラットフォームリソースの完全な能力又はプラットフォームリソースについての詳細な知識なしに、OS164によって割り当てられるからである。例えば、APU102及びGPUの性能能力又は制限(ライセンス又は設計による)は、OS164には見えない。また、アプリケーション162及びOS164の各々は、タスククラスドメインごとに、利用可能なリソースを評価するための詳細なランタイムプラットフォームロード情報を欠く可能性がある。
【0043】
様々なタイプのアプリケーションがワークロードイニシエータであってもよく、各々が様々なタイプのワークロードを有する。いくつかの例では、ワークロードイニシエータからの要求は、ワークロードのタイプ、ワークロード特性、処理要件及び/又はワークロードに対する性能期待値を記述する。例えば、メディアプレーヤアプリケーションは、コンピューティングシステム上で実行しようとするメディア再生ワークロードを有することができる。そのような例では、ワークロードの記述は、再生ワークロードのためのソース解像度、ディスプレイ解像度、ビットレート、ビデオコーデック、オーディオコーデック及びフレームレートを含む。別の例として、ビデオ会議アプリケーションは、コンピューティングシステムを実行しようとするトランスコードワークロードを有することができる。そのような例では、ワークロードの記述は、ソースビデオコーデックと、ターゲットビデオコーデックと、フレームレートと、を含むことができる。ビデオ会議アプリケーションは、注視補正又は画面上の参加者の背景を除去/置換するための人工知能(AI)アルゴリズムを含むAIワークロードを含むこともできる。
【0044】
いくつかの例では、ワークロードの記述は、リソースマネージャによって解析可能な記述言語を使用して提供され得る。例えば、記述言語は、ビットレートのための記述子タグ、ディスプレイ解像度のための記述子タグ、ビデオ符号化プロトコルのための記述子タグ等を含む。これらの例では、ワークロードの記述は、ワークロードの構造化された記述である。いくつかの例では、以下でより詳細に説明するように、要求に含まれる記述言語は、リソースマネージャ170のポリシーエンジン174によって解析可能である。
【0045】
プラットフォームリソース推奨のために要求を受信し、要求並びに複数のプラットフォームリソースの性能能力及び利用メトリクスに基づいて、1つ以上のプラットフォームリソース候補を識別し、識別された1つ以上のプラットフォームリソース候補をワークロードイニシエータに動的に提供することについて説明する追加の詳細が以下に提供される。
【0046】
更なる説明のために、
図2は、本開示のいくつかの実施形態による、プラットフォームリソース候補を提供する推奨サービス(例えば、プラットフォームリソース完全性サービス)プラットフォームリソースを提供するための例示的なシステム200の追加のブロック図である。
図2の例では、単なる例示として、例示的なシステム200は、CPU106と、GPU104と、オーディオコーデック122(例えば、オーディオコプロセッサ)と、ビデオコーデック120と、GPU計算エンジン110と、ディスプレイコントローラ124と、を統合するAPU102を含む。dGPU134は、ビデオコーデック150、GPU計算エンジン140及びディスプレイコントローラ154を含むことができる。
図1のコンポーネントの各々は、APU102及びdGPU134に含まれ得るが、
図2に示されるものは、説明の便宜上使用されることに留意されたい。プラットフォームリソース完全性サービス210(例えば、プラットフォームリソース推奨サービス)は、スマートシフトコンポーネント242及びプラットフォームコンポーネント240にも関連付けられる。
【0047】
一態様では、スマートシフトコンポーネント242は、エンジンごとの利用度の情報を提供し、特定用途向け集積回路(ASIC)に要求される追加情報を提供する。スマートシフトコンポーネント242は、ワークロードごとの電力バジェット/要件に関する情報を提供し、必要に応じて、プラットフォームリソース間で電力割り当てをシフトするのを支援する。すなわち、スマートシフトコンポーネント242は、プラットフォームリソースへの電力分配のリバランスを支援する。スマートシフトコンポーネント242は、プラットフォームリソース完全性サービス210に、例えばAPU102及びdGPU134等のプラットフォームリソースの能力に関連する電力、性能、熱及びポリシーを提供する。
【0048】
図示したように、APU102及びdGPU134は、プラットフォームリソース完全性サービス210と通信する。すなわち、プラットフォームリソース完全性サービス210は、「スマートアロケータ」(例えば、「SmartAlloc」)と称され得る。プラットフォームリソース完全性サービス210は、APU102に関連付けられたシステムメモリ160にも関連付けられる。また、プラットフォームリソース完全性サービス210は、dGPU134のグラフィックスメモリ180(例えば、ローカルメモリ)に関連付けられる。
【0049】
再び、
図1と同様に、APU102は、PCIe相互接続190等の相互接続を介してdGPU134と通信する。いくつかの例では、APU102及びdGPU134は、同じ基板(例えば、プリント回路基板)上に実装することができる。プラットフォームコンポーネント240は、プラットフォームリソース完全性サービス210と通信するためのAPU102とdGPU134との間のインターフェースであり得る。
【0050】
プラットフォームリソース完全性サービス210は、エンジン選択ガイダンスを提供するためにプラットフォーム能力を収集、記憶及び監視するためのユーザモードサブシステムである。すなわち、プラットフォームリソース完全性サービス210は、APU102、dGPU134、システムメモリ160及びローカルメモリ180(例えば、
図1のグラフィックスメモリ180)の能力に関する全てのデータへのアクセスを有し、それらを記憶する。プラットフォームリソース完全性サービス210は、例えば、それらの動作モードの各々、APU102とdGPU134との間の相互接続機能、交流(AC)モード及び直流(DC)モード用の電力エンベロープ、並びに、接続可能な周辺デバイス能力(例えば、カメラ、ディスプレイパネル等であるが、説明の便宜のために示されていない)と共にコンピュータプラットフォーム上にインストールされたAPU102、dGPU134、システムメモリ160及びローカルメモリ180能力等の全てのプラットフォームリソースにアクセスし、それらの全てのプラットフォームリソースに関する知識を有する集中型プラットフォーム「ブレーン」として機能する。
【0051】
加えて、プラットフォームリソース完全性サービス210、例えば、APU102、dGPU134、システムメモリ160及びローカルメモリ180等のプラットフォームリソースの発見不可能な能力(例えば、OSによって発見不可能)又は既知の制限さえも完全な知識及び認識を有する。プラットフォームリソース完全性サービス210は、プラットフォームコンポーネント240を使用して、例えば
図1のアプリケーション162等のワークロードイニシエータからプラットフォームリソース推奨の要求を受信することができる。したがって、プラットフォームリソース完全性サービス210ワークロードの起動時又はランタイム中に、使用中のプラットフォームハードウェアリソースに関する情報を収集し、ワークロードイニシエータ自体が調整を行い、利用可能なリソースを使用することを可能にし得る。プラットフォームリソース完全性サービス210は、ワークロードイニシエータによって照会されると、ユースケースクラスごとに推奨リソースヒント(例えば、GPU又はAPU及びそれらのエンジン)を返すことができる。
【0052】
プラットフォームリソース完全性サービス210は、複数のプラットフォームリソース、例えば、APU102、dGPU134、システムメモリ160及びローカルメモリ180等の複数のプラットフォームリソースの性能能力及び利用メトリクスを分析及び検査する。プラットフォームリソース完全性サービス210は、例えば、性能能力及び利用メトリクスに基づいてワークロードを実行するために、APU102、dGPU134、システムメモリ160及びローカルメモリ180等の複数のプラットフォームリソースのうち1つ以上を選択するために、ワークロードイニシエータにプラットフォームリソース推奨を提供する。また、プラットフォームリソース推奨は、複数のプラットフォームリソースの非性能能力及び性能制限に基づくことができる。プラットフォームリソース完全性サービス210は、プラットフォームリソースライブラリ内の複数のプラットフォームリソースの各々について、性能能力、利用メトリクス、発見不可能性能能力及び性能制限を収集、記憶及び監視する。
【0053】
一態様では、プラットフォームリソース完全性サービス210は、プラットフォームリソース推奨のためのワークロードイニシエータからの要求に基づいて、複数のプラットフォームリソース(例えば、APU102、dGPU134、システムメモリ160及びグラフィックスメモリ180等)の各々について、発見不可能性能能力、性能制限及び履歴性能データを判定するための動的プラットフォームリソースライブラリ(SmartAllocライブラリ)である。
【0054】
プラットフォームリソース完全性サービス210は、ワークロードの起動又は実行中に、例えば、APU102、dGPU134、システムメモリ160及びローカルメモリ180等の複数のプラットフォームリソースの各々について、性能能力、利用メトリクス、発見不可能性能能力及び性能制限を監視する。プラットフォームリソース完全性サービス210は、ワークロードのランタイム中に、複数のプラットフォームリソースの調整された性能能力及び調整された利用メトリクスに基づいて、更新されたプラットフォームリソース候補を動的に提供することができる。
【0055】
プラットフォームリソース完全性サービス210は、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて、複数のプラットフォームリソースの各々をランク付けする。例えば、ランク付けは、例えば、プラットフォームリソースが追加のワークロードタスクを受信するために電力閾値レベルを下回るべきではない等のポリシーに基づくことができる。代替として、ランク付けは、ワークロード及びユーザ選好に関連するプラットフォーム能力に基づくことができる。
【0056】
プラットフォームリソース完全性サービス210は、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて、複数のプラットフォームリソースのうち1つ以上の各々についてワークロードを実行するための利用影響を予測する。
【0057】
更なる説明のために、
図3Aは、本開示のいくつかの実施形態による、例示的なシステム300、例えばクライアント-サーバスマート割り当て(alloc)のためのトップレベルシステムの追加のブロック図である。
図3の例では、単なる例示として、例示的なシステム300は、本明細書で「プラットフォームリソース完全性サービス」210(例えば、「プラットフォームリソース完全性サービス」)と呼ばれるクライアント-サーバsmart allocサービスを含む。したがって、「プラットフォームリソース完全性サービス210」への言及は、クライアント-サーバスマート割り当て又は「スマート割り当て」サービスと互換的に使用され得る。上述したように、
図2のプラットフォームリソース完全性サービス210は、サーバ側で、また例えばプラットフォームリソースライブラリ314A及び314B等のユーザモードで提供することができるプラットフォームリソースライブラリ312を含む。したがって、プラットフォームリソース完全性サービス210は、ロードされオンデマンドで呼び出されるサービス及びライブラリとしてまとめて提供することができる。
【0058】
本明細書で使用される場合、「スマート割り当て」又は「smart alloc」という用語は、プラットフォームリソース完全性サービスを提供する1つ以上の動作又はシステムを指し得る。また、「スマート割り当て」又は「smart alloc」という用語は、複数のプラットフォームリソースの要求及び性能能力並びに利用メトリクスに基づいて1つ以上のプラットフォームリソース候補を識別し、識別されたプラットフォームリソース候補をワークロードイニシエータに動的に提供することが可能な動作又はシステムを指すことができる。プラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む。また、「smart alloc」動作又はシステムは、ワークロードイニシエータ(例えば、アプリケーション)の代わりにリソースを「割り当てる」のではなく、単に推奨又は「ヒント」をワークロードイニシエータに提供し、次いでワークロードイニシエータがリソースの割り当てを選択する。
【0059】
プラットフォームリソースライブラリ312は、1)クライアント専用モード(又はクライアントモード/ユーザモード)(例えば、アプリケーション又はドライバ)、及び、2)クライアント-サーバモード(又はサーバモード)の2つのモードで動作する。本明細書で使用される場合、クライアント専用モード(又はクライアントモード/ユーザモード)への言及は、「smart allocクライアントモード」と呼ばれることもあることに留意されたい。同様に、クライアント-サーバモード(又はサーバモード)への言及は、「smart allocサーバモード」と呼ばれることもある。
【0060】
クライアント-サーバモードでは、クライアントは、アプリケーションとリンクするプラットフォームリソースライブラリとすることができ、サーバは、
図3A、
図3B、
図4で説明したように、プラットフォームリソース推奨のためのリソース推定のための動作を実行する。
【0061】
クライアントのみにおいて、クライアントは、
図3Cにおけるように、プラットフォームリソース推奨のためのリソース推定のための動作を実行するアプリケーションとリンクするプラットフォームリソースライブラリであり得る。一態様では、クライアント専用モードを使用するアプリケーションのセットは、クライアントプラットフォームリソースライブラリ通信を通して、サーバ中心モダリティを効果的に実行する、smart alloc対応アプリケーションのサーバレスメッシュを構築するためのクライアントプラットフォームリソースライブラリコードを有することができる。
【0062】
例えば、ユーザモード320A及び320B等のユーザモード(例えば、クライアントモード)では、ユーザモード320A及び320B(及び「ユーザモードドライバ」内のドライバ344も)は、プラットフォームリソースライブラリ314A及び314Bとリンクするか、又は、それらをロードすることができ、プラットフォームリソースライブラリ312(サーバ側)を用いてプラットフォームリソースライブラリ314A及び314Bによって公開されたAPI(例えば、プラットフォームリソースインターフェース又は「内部インターフェース」)を呼び出す。
【0063】
サーバモードでは、プラットフォームリソース完全性サービス210は、プラットフォームリソースライブラリ312を提供し、サーバモードをホストし、サーバモードで初期化されたプラットフォームリソースライブラリ312と連続的に実行されリンクされる。ユーザ(例えば、ワークロードイニシエータ)による要求(例えば、APIコール)があると、その要求は、同期動作においてリモートプロシージャコール(RPC)を使用して、プラットフォームリソースライブラリ312のサーバ側に渡される。
【0064】
プラットフォームリソースライブラリ312は、展開することができ、例えばリソースプラットフォームレコード340等のレコードのセットを伴うことができる。レコード340は、オペレーティングシステムによって発見不可能な能力、制限、性能メトリクス及び履歴データを含むプラットフォームリソース能力のリストであり得る。レコード340は、読み取り専用としてプラットフォームリソースライブラリ312によって使用することができる。レコード340は、プラットフォームリソースライブラリ312内に提供することができ、相手先商標製品製造会社(OEM)ごと及びプラットフォームごとの補足情報を、オーバーライドと共に照会することができる。一態様では、レコード340は、例えば、RO SmartAlloc(SA)DB(RO SA DB)等の読み取り専用(RO)データベース(DB)と見なすことができる。レコード340は、プラットフォームリソース完全性サービス210によって暗号化及び復号化され得る。
【0065】
レコード340は、ドライバ更新インストールと共に更新され、デバッグ及びテスト目的のためのドロップイン置換として使用される。ワークロードイニシエータから要求を受信すると、レコード340は、インスタンス化、マージ及び/又は更新され、例えば、完全な静的プラットフォームリソース能力リスト等の包括的なプラットフォームデータセットとして提供され、プラットフォームリソース能力リストは、プラットフォームリソースに関連する最新のアクティビティデータ/メトリクスを収集、記憶及び記録しながら、連続的に使用される。
【0066】
オペレーティングシステムブート時、又は、特定のアプリケーションの最初の実行時に、プラットフォームリソースライブラリ312は、プラットフォームリソース発見動作を実行し、全ての利用可能なプラットフォーム情報を判定/発見し、次いで、レコード340に対して発見データをクロスチェックして、システム300の完全な静的プラットフォームリソース能力リストを構築する。静的プラットフォームリソース能力リストは、プラットフォームリソースライブラリ312に記憶することができ、静的プラットフォームリソース能力リストは、プラットフォームリソースライブラリ312への後続のクエリによってアクセスすることができる。
【0067】
対照的に、動的動作(例えば、現在のステータス、ロード、及び、システム300におけるGPUエンジンごとの使用を判定するため)の場合、プラットフォームリソースライブラリ312は、現在のプラットフォームリソースメトリクスを収集、処理、記憶及び監視する。
【0068】
追加の態様では、例えば、ユーザモード320A又は320B等のユーザモードにおいて、ユーザモード完全性プロセスを使用して、プラットフォームリソースライブラリに接続し、次いで、例えば、プラットフォームリソースライブラリ314A又は314B等のユーザモードプラットフォームリソースライブラリをホストする。プラットフォームリソースライブラリ312インスタンスは、プラットフォームリソース完全性サービス210によって初期化時にサーバモードでプラットフォームリソース完全性サービス210にリンクされ得る。プラットフォームリソース完全性サービス210は、完全性タスクを実行し、リモートプロシージャコール(RPC)要求を受信すると、(クライアントとリンクされた)他のプラットフォームリソースライブラリインスタンスにサービスを提供する。
【0069】
例えば、プラットフォームリソースライブラリ314A又は314B等のプラットフォームリソースライブラリは、複数のクライアントプロセスとリンクされ、クライアントごとのプラットフォーム情報クエリを提供することができる。これらのインスタンスは、例えば、ユーザモード320A又は320B等のユーザモードで(例えば、ユーザモードプラットフォームリソースインターフェース322A及び322Bを使用して)初期化されたプラットフォームリソースライブラリ314A又は314B等のプラットフォームリソースライブラリを有する。サーバモードで初期化されるプラットフォームリソースライブラリのみが、プラットフォームリソース完全性サービス210にリンクされたプラットフォームリソースライブラリ312であり、他の全てのプラットフォームリソースライブラリはユーザモードで初期化されることに留意されたい。
【0070】
サーバモードのプラットフォームリソースライブラリ312を更に示すために、
図3Bは、サーバモード(例えば、smart allocサーバモード)におけるプラットフォームリソースライブラリとしてプラットフォームリソース推奨サービスを提供するための例示的なシステム315の追加のブロック図を示す。
【0071】
起動時に、プラットフォームリソース完全性サービス210は、プラットフォームハードウェア及び状態発見マネージャ328を使用することができるサーバモードで初期化するために、プラットフォームリソースライブラリ312をロードし、呼び出す。サーバモードで初期化するための初期呼び出しを受信すると、プラットフォームリソースライブラリ312は、プラットフォーム状態変更リスナ325(例えば、OS通知リスナ)を介してリソース推奨要求のために、オペレーティングシステム(OS)又はドライバによってトリガされたプラットフォーム及びシステムイベントをサブスクライブする。プラットフォームリソースライブラリ312は、デバイス、エンジン、プロパティ(prop)及び状態通信マネージャ324を使用して、デバイス発見(例えば、全ての利用可能なハードウェア装置を発見する)及び例えばドライバ344の発見等の他の全ての代替デバイス316(例えば、サードパーティデバイス)を初期化する。プラットフォームリソースライブラリ312は、代替デバイス通信マネージャ326を使用して、代替デバイス(例えば、サードパーティデバイス)及び例えばプラットフォームリソース等のプロパティ(例えば、デバイスエンジン、デバイスエンジン特性及び静的能力「キャップ」)のリストを構築することができる。
【0072】
プラットフォームリソースライブラリ312は、レコードデータベース346(例えば、RO SA DB)又はソフトウェア基本入出力システム(SBIOS)を読み取り、利用可能であれば、レコードにオーバーライドを適用する。プラットフォームリソースライブラリ312は、プラットフォームデータベース348において、何らかのプラットフォーム能力変更が識別された場合には更新し、プラットフォームハードウェア及び状態発見マネージャ328を介して識別されなかった場合には追加のプラットフォーム能力を生成する。また、プラットフォームリソースライブラリ312は、各プラットフォームリソースのプラットフォーム状態を判定することができ、プラットフォームハードウェア及び状態発見マネージャ328を使用して、識別された状態をプラットフォーム状態マネージャ332に設定する。
【0073】
ランタイム中に、プラットフォームに対して、静的能力330を生成又は更新することができ、デバイスの到着/除去が検出されると、プラットフォーム状態変更リスナ327は、プラットフォームハードウェア及び状態発見マネージャ328を使用して、起動のために本明細書で説明する動作を開始する。プラットフォーム状態変更リスナ327は、必要に応じて、プラットフォームデータベース348(例えば、読み取り/書き込みレコードデータベース)を更新することができ、及び/又は、プラットフォーム状態変更リスナ327内の状態を設定する。プラットフォーム状態変更リスナ327は、任意のプラットフォームリソース状態変更に関する情報をユーザプラットフォームリソースインターフェース322(例えば、ユーザプラットフォームリソースインターフェースマネージャ)に通知し、提供することができる。
【0074】
ユーザプラットフォームリソースインターフェース322は、(プラットフォームリソースライブラリ314を介して)任意の通知、任意のプラットフォームリソース状態変更をユーザに提供し、プラットフォームリソース推奨(例えば、ヒント)をユースケースごとポリシーマネージャ334にリダイレクトする。例えば、ユーザプラットフォームリソースライブラリ314等の各プラットフォームリソースライブラリ(例えば、クライアントごとの各プラットフォームリソースライブラリ)に対して追跡が必要とされる場合、(サーバモードにおける)プラットフォームリソースライブラリ312は、補助チャネル(AUX)を介して、ユーザ識別子(ID)を使用して各ユーザの登録及び登録解除を受け入れることができる。ユーザプラットフォームリソースインターフェース322は、プラットフォーム状態マネージャ332内の各登録されたクライアントと共に、アクティブユーザ/クライアント状態又は「アライブ状態」を維持することができる。ユーザプラットフォームリソースインターフェース322は、以前に「アクティブ状態」として登録されたが、アクティブユーザ/クライアント状態をより長く維持するか、又は、ユーザプラットフォームリソースインターフェース322からのアクティブユーザ状態検証に失敗したユーザ/クライアントのものをクリーンにする、排除する及び/又はスクラブするように、プラットフォーム状態マネージャ332に示すことができる。加えて、ユーザプラットフォームリソースインターフェース322は、ユーザにクロスプロセス通信チャネルを提供する。
【0075】
追加の態様では、ポリシーマネージャ334は、プラットフォームリソース推奨要求(例えば、リソース割り当てヒント要求)を受信し、処理する。そうする際に、ポリシーマネージャ334は、ユースケースクラス要求を判定し、プラットフォームデータベース348内の要求レコードから、例えば、要求の一部として特定のエンジン又はフォーマット要件があるかどうか等の要求の詳細を判定する。ポリシーマネージャ334は、プラットフォームデータベース348から、静的能力レコード及びプラットフォームリソース状態を取り出し、ユースケースごとのヒント要求を適用して、要求ごとに推奨する1つ以上のプラットフォームリソースを決定する。一態様では、プラットフォームデータベース348は、プラットフォーム不足又は他の理由の場合に、(レコードデータベース346からマージするレコードの一部として)ポリシーオーバーライドを有することができる。
【0076】
ランタイム中に、プラットフォームリソースのプラットフォーム動的能力について、動的能力が静的能力の拡張である場合、動的能力マネージャ352を初期化することができる。ワークロードイニシエータがプラットフォームリソース推奨要求を開始すると、ポリシーマネージャ334は、プラットフォームデータベース348内の動的レコードを判定し、チェックして、静的能力レコードについて上述したプロセスと同様に、リソース割り当て決定を行う。
【0077】
一態様では、動的能力マネージャ352は、サードパーティデバイス通信マネージャ326を介してデバイスのエンジンロード及び代替デバイスロード(適用可能な場合)を取得し、プラットフォームデータベース348の動的能力レコードに情報を記憶する。サードパーティデバイス通信マネージャ326は、動的能力マネージャ352から要求を受信すると、代替デバイス(例えば、ドライバ344)の各々についての電力管理状態及び消費をチェック及び判定する。
【0078】
動的能力マネージャ352は、例えば、プラットフォーム状態変更、ユーザプラットフォームリソース推奨/ヒント要求(応答時間が損なわれない場合)又は周期的チェック要求等の1つ以上のイベントに続いて、プラットフォームリソース上のロードのチェックをトリガする。動的能力マネージャ352は、プラットフォームデバイスエンジンの使用の履歴プロファイルを構築及び維持することができ、プラットフォームデータベース348の動的能力記録に履歴プロファイルを記憶する。
【0079】
追加の態様では、ユーザ/クライアント追跡が必要とされ、各ユーザ/クライアントプラットフォームリソース推奨/ヒント要求が記憶及びログ記録される必要がある場合、ユーザプラットフォームリソースインターフェース320は、そのような要件を動的能力マネージャ352に通知することができる。クライアントは(プラットフォームリソースライブラリ314を介して)、プラットフォームリソースライブラリ314によって生成され、ユーザプラットフォームリソースインターフェース320によって供給されるクライアントIDによって識別される。また、ユーザプラットフォームリソースインターフェース320は、クライアントが接続を終了した場合に動的能力マネージャ352に通知し、予約されたリソースを解放するために、終了したクライアントユーザIDを提供する。
【0080】
イベントサブスクリプションの場合、プラットフォームリソースライブラリ312内に常駐することができるプラットフォーム状態変更リスナ327は、サーバモードでアクティブである。プラットフォーム状態変更リスナ327は、様々なイベントを監視リッスンし、システムイベント又はドライバイベントのリストを提供/含む。イベントのリストは、時間と共に増加及び成長する可能性がある。一態様では、プラットフォーム状態変更リスナ327は、例えば、AC/DCスイッチイベント、プラットフォームリソースの追加若しくは除去、又は、電源(例えば、バッテリ/性能スライダ)を介したユーザ要求に基づく電力エンベロープへの変更、又は、例えば、AC及びDCモードへの変更等の制御パネル設定への変更等のように、プラットフォームリソースライブラリ312に常に登録されなければならない様々な必須イベントを監視及びリッスンする。一態様では、同時に発生する複数のイベントがあり得る。プラットフォームリソースライブラリ312は、イベントの各々を待ち行列に入れ、それらが発生した順序で処理する。オペレーティングシステムは、デバイス(例えば、非プライマリディスプレイGPU)を、例えば、D3ホット又はD3コールド状態等のホット又はコールド状態に設定することに留意されたい。そのようなデバイスへの任意のアクセスは、デバイスをウェイクアップさせる。したがって、プラットフォームリソースライブラリ312は、任意の非D0状態(例えば、D1、D2及びD3電力状態)にあるデバイスにサブスクライブし、アクセスを回避する。むしろ、プラットフォームリソースライブラリ312は、全てのプラットフォームリソース能力を記憶及びキャッシュし、プラットフォームリソース推奨をワークロードイニシエータに提供する場合に、全てのプラットフォームリソースを利用可能であると見なす。
【0081】
プラットフォームリソースライブラリ312を更に示すために、
図3Cは、プラットフォームリソースライブラリを使用してクライアントモードでスマート割り当てサービスを提供するための例示的なシステム325の追加のブロック図を示す。すなわち、
図3Cは、プラットフォームリソースライブラリ自体がサーバ部分なしで(又はスマート割り当てサーバモードなしで)リソース推定を提供する場合のクライアント専用モードの変形例を示す。本明細書で使用されるように、プラットフォームリソースライブラリを使用するクライアントモードにおけるスマート割り当てサービスは、スマート割り当てサーバモードを伴わないクライアントモード(例えば、ユーザモード)におけるプラットフォームリソースライブラリとしてのプラットフォームリソース推奨サービスと称され得る。
【0082】
再び、上述したように、
図3Cは、クライアントが、プラットフォームリソース推奨のためのリソース推定のための動作を実行するアプリケーションとリンクするプラットフォームリソースライブラリであり得る、クライアント専用モードにおける動作を示す。加えて、クライアント専用モードを使用するワークロードイニシエータ(例えば、アプリケーション)のセットは、クライアントプラットフォームリソースライブラリコードを有し、クライアントプラットフォームリソースライブラリ通信を通して、smart alloc対応アプリケーションのサーバレスメッシュを構築し、クライアント-サーバモダリティを効果的に実行することができる。
【0083】
システム325は、本明細書で説明される同様のコンポーネントを使用しながら、ユーザモード(例えば、smart allocクライアントモード)におけるプラットフォームリソース完全性サービス210及びプラットフォームリソースライブラリ314の必須コンポーネントの例示的な実施形態を提供する。このようにして、例示的なシステム325は、プラットフォームリソース完全性サービス210の完全なクライアント-サーバアーキテクチャ又は他のタイプのコンピューティングシステムへの将来の拡張及び移植に対応するように調整され得る。
【0084】
一実施形態では、クライアントアプリケーション(例えば、ユーザモードアプリケーション)又はユーザモードドライバは、プラットフォームリソース推奨の要求を発行するユーザモードにおいて、プラットフォームリソースライブラリ314をロード又はそれとリンクし、初期化する。
図3Cに示すように、プラットフォームリソースライブラリ314は、
図3Bで説明したようなサーバモードではなくクライアントモードで初期化されることに留意されたい。
【0085】
プラットフォームリソースライブラリ314の初期化及び移植は、以下のアクティビティを初期化及び実装するステップを含むことができる。一態様では、プラットフォームリソースライブラリ314の初期化及び移植は、様々な通知を提供及び実装するために、ユーザプラットフォームリソースインターフェース320を介してインターフェース定義を提供するステップを含むことができる。プラットフォーム状態変更リスナ327は、例えば、AC/DC電力イベント等の1つ以上のプラットフォームシステムイベントにサブスクライブする。全てのプラットフォーム能力は、インターフェースサポートドメインのみに低減され得る。また、プラットフォームリソースの静的能力は、不変であると考えることができ、プラットフォームデータベース348を使用して一度だけ発見することができる。プラットフォームリソースの動的能力は、プラットフォームリソース推奨要求時に動的能力マネージャ352を介して問い合わせることができる。また、プラットフォームリソースライブラリ314の初期化及び移植は、本明細書で説明されるように、D3状態デバイスを認識し、不要なウェイクアップを回避するステップを含むことができる。動的能力マネージャ352に記憶された動的能力の全ての履歴データを使用して、様々なプラットフォームリソースのプラットフォーム能力を判定するために必要なロード履歴を判定することができる。
【0086】
プラットフォームリソースライブラリ314は、クライアントアプリケーション(例えば、ワークロードイニシエータ)が推奨プラットフォームリソース又はヒントについて問い合わせることができるエントリポイントをクライアントアプリケーションに提供する。
【0087】
一態様では、クライアントは、1つ以上のタイプの通知に関する通知を受信するために、プラットフォームリソースライブラリ314にサブスクライブする。サブスクライブすると、プラットフォームリソースライブラリ314は、プラットフォーム状態マネージャ332を介して、例えば、AC/DCスイッチ又はデバイス到着/除去等の様々なプラットフォームリソース状態変更に関する任意の通知をクライアントに提供する。いくつかのイベントについては、以前に発行されたプラットフォームリソース推奨/ヒントを無効にすることができる。この場合、プラットフォームリソースライブラリ314は、更新されたプラットフォームリソース推奨又は割り当てヒントを動的に提供することができる。しかしながら、プラットフォームリソースを再割り当てするか、又は、以前に割り当てられたプラットフォームリソースの使用を維持するかの決定は、クライアントの裁量であり得る。すなわち、プラットフォームリソースライブラリ314は、プラットフォームリソース推奨又は割り当てヒントを提供するだけであり、以前に割り当てられたプラットフォームリソースを再割り当てするか又は使用し続けるかの決定を行わない。
【0088】
一態様では、プラットフォームリソース推奨は、ユースケースクラスごとに提供され得る。クラスごとのプラットフォームリソースのリストを提供し、ユーザプラットフォームリソースインターフェース320と共に使用することができる。ユーザプラットフォームリソースインターフェース320は、プラットフォームリソースライブラリ314を介して、階層的ユースケースクラスを、階層的ユースケースクラスの各々に関連付けられた詳細及びリソースと共に提供する。全ての利用可能なユースケースドメインクラス及びクラスごとのプラットフォームリソースリストは、ユーザプラットフォームリソースインターフェース320と共に提供され得る。
【0089】
追加の態様では、プラットフォームリソースライブラリ314は、ユーザ/クライアントに、ユーザプラットフォームリソースインターフェース320を介してプラットフォームリソース推奨を提供する。プラットフォームリソース推奨は、プラットフォームリソースクラス、詳細、並びに、性能能力及び利用メトリクスを含む。
【0090】
プラットフォームリソースライブラリ314によって受信されるリソース照会は、プラットフォームリソース(例えば、ビデオ又はオーディオ)のユースケースクラス(例えば、ドメイン)と、例えば、ビデオクラスのための符号化規格のタイプ等のプラットフォームリソース推奨要求についての具体的詳細と、を指定する。ユースケースクラス及びユースケースの具体的詳細は、使用する最良又は「最適」プラットフォームリソースのプラットフォームリソース推奨を提供するために、プラットフォームリソースライブラリ314への入力として使用されることができる。プラットフォームリソース推奨は、例えば、推奨されるCPU又はGPUシェーダを提供する等のように、特有であることができ、専用ハードウェアを提供することさえできる。したがって、プラットフォームリソースライブラリ314は、ユーザ(例えば、ワークロードイニシエータ)に、特定のデバイスと、要求の目的及び詳細に適切であり得るリソース記述と、を含むプラットフォームリソース推奨を提供する。
【0091】
追加の態様では、プラットフォームリソースライブラリ314は、例えば、省電力(例えば、より少ない電力)等の効率と比較した品質(例えば、より多くの電力)に関するクラス(ドメイン)ごとの性能選好等の性能プロファイルをオプションで提供することができる。このオプションは、クライアントが、プラットフォームリソース推奨において、同じ特徴の実装の複数の変形の場合に実行のために特定の推奨されるソリューションを選択するオプションを受信することを可能にする。一態様では、性能プロファイルは、特定のプラットフォームリソースの性能能力及び制限を含む。性能プロファイルデータは、収集され、監視され、プラットフォームデータベースに記憶され得る。
【0092】
更なる説明のために、
図4は、本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを提供するためにユーザモードでプラットフォームリソースライブラリを使用するための例示的なシステム400の追加のブロック図を示す。より具体的には、
図4は、
図3B(サーバモードが示されている)を補足し、
図3Aで説明されているクライアント-サーバsmart allocシステムのクライアント又は「クライアントモード」の論理図を示す。
図4の例では、単なる例示として、例示的なシステム400は、サーバ側に設けることができるプラットフォームリソースライブラリ312と通信するユーザモードアプリケーション/ドライバ410を含む。ユーザモードアプリケーション/ドライバ410は、内部又は外部にプラットフォームリソースライブラリ314を含む。したがって、
図2のプラットフォームリソース完全性サービス210は、サーバモードのプラットフォームリソースライブラリ312及びユーザモードのプラットフォームリソースライブラリ314がロードされ、オンデマンドで又は必要に応じて呼び出されるように、プラットフォームリソース完全性サービス及びプラットフォームリソースライブラリとしてまとめて提供することができる。
【0093】
一実施形態では、プラットフォームリソース推奨サービスを提供するための初期化中に、例えば、ユーザモードアプリケーション/ドライバ410等のクライアントアプリケーションは、ユーザモードでプラットフォームリソースライブラリ314をロード又はプラットフォームリソースライブラリ314とリンクし、プラットフォームリソースライブラリ314を初期化する。一態様では、プラットフォームリソースライブラリ314はクライアントモードで初期化することができ、サーバプラットフォームリソースライブラリ312はサーバモードで初期化される。初期化されると、プラットフォームリソースライブラリ314は、ユーザモードで、サーバモードのプラットフォームリソースライブラリ312との通信を確立する。しかしながら、プラットフォームリソースライブラリ312及びプラットフォームリソースライブラリ314との接続が確立できない場合、エラーがユーザモードアプリケーション/ドライバ410に返される。
【0094】
初期化時に、プラットフォームリソースライブラリ312は、サーバプラットフォームリソースライブラリ312とのクロスプロセス通信チャネルを確立しようと試みる。プラットフォームリソースインターフェース320は、クロスプロセス通信チャネルを提供する。初期化されると、プラットフォームリソースライブラリ314は、ユーザモードアプリケーション/ドライバ410の代わりにプラットフォームリソースライブラリ314と通信して、a)プラットフォームリソース推奨(例えば、ユースケースごとのプラットフォームリソースヒント推奨)に対する要求/応答を提供又は受信し、b)任意のプラットフォーム状態変更に関する通知を受信し、c)プラットフォームリソース使用に関する情報、メトリクス及び能力をオプションで提供する。
【0095】
例えば、ユーザモードアプリケーション/ドライバ410は、プラットフォームリソースインターフェース320を使用してプラットフォームリソースライブラリ314を呼び出して、例えば、ドメインユースケースごとのリソース割り当て推奨に関する要求又は問い合わせ等のプラットフォームリソース推奨を要求する。プラットフォームリソースライブラリ312は、プラットフォームリソース推奨をプラットフォームリソースライブラリ314に提供する。しかしながら、プラットフォームリソース推奨サービス通知が、プラットフォーム状態変更に起因してプラットフォームリソースを再割り当てすることを示唆する場合、プラットフォームリソースを再割り当てするのは、ユーザモードアプリケーション/ドライバ410の責任である。スレッドプール422は、ユーザモードアプリケーション/ドライバ410に通知を提供するために、プラットフォームリソースライブラリ314によって使用され得る。また、コールバックは、プラットフォームリソースライブラリ314上で、スレッドプール422を使用してアンブロッキング形式で実施することができ、その結果、コールバック自体の中からのプラットフォームリソースインターフェース320の呼び出しのブロッキングは存在せず、したがって、ユーザモードアプリケーション/ドライバ410は、再初期化を完全に完了し、プラットフォームリソースライブラリ314の他のインターフェース機能を呼び出すことができる。
【0096】
再び、本明細書で言及されるように、例えば、要求/応答、通知、補助(AUX)及び状態変更インターフェース接続等の様々な接続及びインターフェースが、プラットフォームリソースインターフェース320とサーバプラットフォームリソースライブラリ312との間に確立され得る。
【0097】
一態様では、プラットフォームリソースインターフェース320は、ユーザモードアプリケーション/ドライバ410が、プラットフォームリソース推奨のための要求を発行し、応答(例えば、要求/応答)を受信することを可能にする。一態様では、プラットフォームリソース推奨は、プラットフォームリソース能力、制限、利用メトリクス及び特定の要件に対するプラットフォームリソースのタイプを含む。また、プラットフォームリソースインターフェース320は、ユーザモードアプリケーション/ドライバ410が、例えば、任意のプラットフォーム状態変更等の様々な通知をサブスクライブすることを可能にする。また、プラットフォーム状態変更は、リソース割り当て又は再割り当てイベントのための更新されたプラットフォームリソース推奨に含まれるか又は提供され得る。
【0098】
AUX情報チャネルは、プラットフォームリソースライブラリ314によって生成され、例えば、クライアントごとの追跡が必要とされる場合等に、サーバプラットフォームリソースライブラリ312への登録を暗黙的に維持し、「キープアクティブ」(又は「キープアライブ」)にすることができる。
【0099】
識別されたユーザ(ID)は、プラットフォームリソースライブラリ314によって提供及び生成することができ(ID GEN)、これは、ユーザモードアプリケーション/ドライバ410を追跡するために使用することができる。プラットフォームリソースライブラリ314は、補助チャネルをアンロードするが、サーバプラットフォームリソースライブラリ312によって登録解除することができる。また、AUX情報チャネルは、(ユーザモードアプリケーション/ドライバ410からの関与なしに)メッセージをアクティブ/アライブに維持/維持するために、及び、サーバモードシャットダウンがサーバプラットフォームリソースライブラリ312に再接続しようとする場合に、使用され得る。AUX情報チャネルは、接続損失に関する通知を提供するために使用することができ、接続回復は、プラットフォームリソースインターフェース320に送信されるものとする。AUX情報チャネルは、提供されたユーザIDを用いて、ロード/アンロード時にプラットフォームリソースライブラリ314を登録及び登録解除するために使用することができる。ユーザIDは、ユーザモードアプリケーション/ドライバ410の状態(例えば、クライアント状態)を追跡し、ユーザモードアプリケーション/ドライバ410との接続が終了した場合にリソースをクリーンアップするために、サーバプラットフォームリソースライブラリ312によって使用され得る。
【0100】
加えて、サーバプラットフォームリソースライブラリ312は、プラットフォームレベルリソース(例えば、静的能力)の全ての能力及び制限を収集、収集、監視及び発見し、メトリクスを介して、能力(例えば、動的能力)ごとのプラットフォームリソースのランタイム使用を監視及び維持する。サーバプラットフォームリソースライブラリ312は、ドメインクラスごとの所望の又は「好ましい」プラットフォームリソース(例えば、ビデオ、オーディオ、3次元(3D)及び/又は計算クラス等のドメインクラスごとのデバイス/エンジン等)のプラットフォームリソース推奨を提供する。クラスごとのポリシーを定義し、使用することもできる。ポリシーはルールとすることができ、経時的に変更又は調整することができる。ポリシールールは、新しいドメインクラス、ユーザタスク及びワークロードに対して拡張可能であり得る。
【0101】
更なる説明のために、
図5Aは、本開示のいくつかの実施形態による、オーディオノイズ低減(ANR)のためのプラットフォームリソース候補を提供するプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステム500の追加のブロック図を示す。例示的なシステム500は、CPU106、GPU104、オーディオコーデック122、ビデオコーデック120及びGPU計算エンジン110を統合するAPU102と、ディスプレイコントローラ124と、を含む。例示的なシステム500は、ビデオコーデック150と、GPU計算エンジン140と、ディスプレイコントローラ154と、を含むdGPU134を含む。APU102は、GPU/CPUコヒーレントメモリ544及びディスプレイ542を有するシステムメモリ160と通信することができる。dGPU134は、ローカルメモリ180及びディスプレイ542Bと通信することができる。
図1又は
図2のコンポーネントの各々は、APU102及びdGPU134に含まれ得るが、
図5Aに示されたコンポーネントは、説明の便宜上使用されるに過ぎないことに留意されたい。APU102は、オーディオ入力546Aデータを受信し、オーディオ出力546Bとしてオーディオデータを出力する。
【0102】
例示的なシステム500は、APU102及びdGPU134と通信するプラットフォームリソースライブラリ312を含む。プラットフォームリソースライブラリ312は、例えば、APU102及びdGPU134等の各プラットフォームリソースの静的及び動的能力を収集及び記憶する役割を果たすことができる。
【0103】
動作中、例えば、仮想オーディオドライバ510等のワークロードイニシエータは、例えば、オーディオノイズ低減(ANR)のための割り当て推奨に関する情報を要求に問い合わせる等のようなプラットフォームリソース推奨ヒントを要求することができる。プラットフォームリソースライブラリ312は、例えば、APU102、dGPU134、及び、それらの内部/関連コンポーネント(例えば、計算エンジン110、ディスプレイコントローラ124等)等の全てのプラットフォームリソースの静的能力(例えば、リソース可用性)及び動的能力(リソース占有率)を分析及び判定する。
【0104】
プラットフォームリソースライブラリ312は、例えば、効率を最大化し、電力/性能比を最適化するために品質要求ごとに何れのリソースを使用するかを推奨する等のように、ドライバ510から発行された要求の特定の詳細に基づいてプラットフォームリソース推奨を提供する。プラットフォームリソースライブラリ312から受信されたプラットフォームリソース推奨を使用して、ワークロードイニシエータ(例えば、ドライバ510)は、プラットフォームリソース推奨を受け入れる又は拒否することができる。例えば、ワークロードイニシエータ(例えば、ドライバ510)がプラットフォームリソース推奨を受け入れた場合、ワークロードイニシエータ(例えば、ドライバ510)は、電力/性能比の効率及び最適化を最大化するように推奨プラットフォームリソースを割り当てる。
【0105】
図5Bは、本開示のいくつかの実施形態による、ビデオ前処理のためのプラットフォームリソース候補を提供するプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステム500の追加のブロック図を示す。
【0106】
動作において、例えば、カメラ562に接続され得るビデオキャプチャパイプラインデバイスメディアファウンデーション変換(DMFT)コンポーネント514等のワークロードイニシエータは、例えば、ビデオ前処理のための割り当て推奨に関する情報を要求に問い合わせる等のようなプラットフォームリソース推奨ヒントを要求する。プラットフォームリソースライブラリ312は、例えば、APU102、dGPU134、及び、それらの内部/関連コンポーネント(例えば、計算エンジン110、ディスプレイコントローラ124等)等の全てのプラットフォームリソースの静的能力(例えば、リソース可用性)及び動的能力(リソース占有率)を分析及び判定する。
【0107】
例えば、ビデオキャプチャパイプラインデバイスDMFTコンポーネント514等のワークロードイニシエータは、例えば、ノイズ除去、輝度レベル、コントラスト及び他の画像エンハンスメント等のビデオ品質改善のために、コンピュータビジョン及び機械学習(CVML)ソフトウェア開発キット(SDK)566とリンクする。CVML SDK566は、プラットフォームリソースライブラリ312をロードする。プラットフォームリソースライブラリ312は、例えば、APU102、dGPU134、及び、それらの内部/関連コンポーネント(例えば、計算エンジン110、ディスプレイコントローラ124等)等の全てのプラットフォームリソースの静的能力(例えば、リソース可用性)及び動的能力(リソース占有率)を分析及び判定する。
【0108】
プラットフォームリソースライブラリ312は、ワークロードイニシエータ(例えば、ビデオキャプチャパイプラインDMFTコンポーネント514)から発行された要求に関する具体的詳細に基づいて、例えば、効率を最大化し、電力/性能比を最適化するために、品質要求ごとに何れのリソースを使用すべきかを推奨する等のようなプラットフォームリソース推奨を提供する。プラットフォームリソースライブラリ312から受信したプラットフォームリソース推奨を使用して、ワークロードイニシエータ(例えば、ビデオキャプチャパイプラインDMFTコンポーネント514)は、プラットフォームリソース推奨を受け入れるか拒否することができる。例えば、ワークロードイニシエータ(例えば、ビデオキャプチャパイプラインDMFTコンポーネント514)がプラットフォームリソース推奨を受け入れる場合、ワークロードイニシエータ(例えば、ビデオキャプチャパイプラインDMFTコンポーネント514)は、電力/性能比の効率及び最適化を最大化するように推奨プラットフォームリソースを割り当てる。
【0109】
図5Cは、本開示のいくつかの実施形態による、ビデオ記録/ストリーミングのためのプラットフォームリソース候補を提供するプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステム500の追加のブロック図を示す。
【0110】
動作中、例えば、メディア/ビデオ及び画像をキャプチャ、ストリーミング及び共有するためのゲーミング/ゲームプレイアプリケーション550等のワークロードイニシエータ、並びに、オープンブロードキャスタソフトウェア(OBS)アプリケーション552は、例えば、ビデオ前処理のための割り当て推奨に関する情報を要求に問い合わせる等のようなプラットフォームリソース推奨ヒントを要求する。
【0111】
ゲーミング/ゲームプレイアプリケーション550及びOBSアプリケーション552は、例えば、要求を符号化する等のように符号化するためのアドバンストメディアフレームワーク(AMF)570を開くことができる。AMF570は、プラットフォームリソースライブラリ312を開くことができる。プラットフォームリソースライブラリ312は、例えば、APU102、dGPU134、及び、それらの内部/関連コンポーネント(例えば、計算エンジン110、ディスプレイコントローラ124並びにビデオコーデック120及び150等)等の全てのプラットフォームリソースの静的能力(例えば、リソース可用性)及び動的能力(リソース占有率)を分析及び判定する。
【0112】
プラットフォームリソースライブラリ312は、ワークロードイニシエータ(例えば、ゲーミング/ゲームプレイアプリケーション550及びOBSアプリケーション552)から発行された要求に関する具体的詳細に基づいて、例えば、効率を最大化し、電力/性能比を最適化するために、品質要求ごとに何れのリソースを使用すべきかを推奨する等のようなプラットフォームリソース推奨を提供する。プラットフォームリソースライブラリ312から受信されたプラットフォームリソース推奨を使用して、ワークロードイニシエータ(例えば、ゲーミング/ゲームプレイアプリケーション550及びOBSアプリケーション552)は、プラットフォームリソース推奨を受け入れるか又は拒否する。例えば、ワークロードイニシエータ(例えば、ゲーミング/ゲームプレイアプリケーション550及びOBSアプリケーション552)がプラットフォームリソース推奨を受け入れる場合、ワークロードイニシエータ(例えば、ゲーミング/ゲームプレイアプリケーション550及びOBSアプリケーション552)は、電力/性能比の効率及び最適化を最大化するように推奨プラットフォームリソースを割り当てる。
【0113】
図5Dは、本開示のいくつかの実施形態による、後処理及びスケールのためのプラットフォームリソース候補を提供するプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステム500の追加のブロック図を示す。
【0114】
動作中、例えば、メディア/ビデオ及び画像をキャプチャし、ストリーミングし、共有するためのゲーミング/ゲームプレイアプリケーション550等のワークロードイニシエータは、例えば、ビデオ前処理のための割り当て推奨に関する情報を要求に問い合わせる等のようなプラットフォームリソース推奨ヒントを要求する。
【0115】
例えばゲーミング/ゲームプレイアプリケーション550等のワークロードイニシエータは、プラットフォームリソースライブラリ312を開くことができる。プラットフォームリソースライブラリ312は、例えば、APU102、dGPU134、及び、それらの内部/関連コンポーネント(例えば、計算エンジン110、ディスプレイコントローラ124、並びにビデオコーデック120及び150等)等の全てのプラットフォームリソースの静的能力(例えば、リソース可用性)及び動的能力(リソース占有率)を分析及び判定する。
【0116】
プラットフォームリソースライブラリ312は、ワークロードイニシエータから発行された要求に関する具体的詳細に基づいて、例えば、アップスケーリング及び後処理のために何れのリソースを使用するかを推奨する等のようなプラットフォームリソース推奨を提供する。ワークロードイニシエータ514は、プラットフォームリソースライブラリ312から受け取ったプラットフォームリソース推奨を使用して、プラットフォームリソース推奨を受け入れるか拒否する。
【0117】
図5Dに示すように、ゲーミングアプリケーションは、レンダリングのためにdGPU134又はAPU102を使用することができることに留意されたい。したがって、
図5Dは、更なるアップスケール/後処理のアプリケーション認識を伴わない、dGPU134又はAPU102の何れかにおけるレンダリングされたフレームの後処理を表す。しかしながら、
図5Dは、ゲーミングアプリケーションがプラットフォームリソースについて問い合わせを行い、後処理アクションを要求する場合にも適用することができる。
【0118】
次に
図6を参照すると、本開示のいくつかの実施形態による、アップスケーリング動作の複合処理のためのプラットフォームリソース推奨サービス(例えば、プラットフォームリソース完全性サービス)を提供するための例示的なシステム600のブロック図が示されている。また、
図6は、アップスケーリングプロセスに適用することができる複合処理のための一般化された動作である。すなわち、
図6は、本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを使用するアップスケーリング動作の複合処理に適用され得る。
【0119】
動作中、プラットフォームリソース完全性サービス210は、アップスケーリングサービス(例えば、「スマートアップスケーリング」サービス)を提供することができる。すなわち、アップスケーリングサービスは、アップスケーリングを実行するために最適なリソースアクセスを選択する。より具体的には、プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、APU102及びdGPU134の存在又は可用性を正確に識別し、APU102及びdGPU134にわたって又はそれらの間で、ラスタ化及びアップスケーリングワークロードを分散させる。追加の態様では、プラットフォームリソース完全性サービス210は、画像のレンダリング、アップスケーリング及びスキャンアウトの配置のために、APU102、dGPU134又はそれらの組み合わせを割り当てる。
【0120】
追加の態様では、プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスデータをアップスケールするために1つ以上のGPU及び1つ以上のAPUを動的に識別する。プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、アップスケーリング動作の少なくともモダリティに基づいて、アップスケーリング動作のワークロードをAPU102、dGPU134又はそれらの組み合わせに動的に割り当てる。一態様では、アップスケーリング動作のモダリティは、最近傍補間、双線形(基本補間)及び双三次アルゴリズム(複素補間)を含むが、これらに限定されない。モダリティの各々は、異なるアップスケーリング動作を構成し、各々は、同様の画像を異なるように処理する。アップスケーリング動作のワークロードは、ワークロードの動的割り当てに基づいて、APU102、dGPU134又はそれらの組み合わせによって処理することができる。プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、ユーザ選好、APU102、dGPU134の能力、又は、それらの組み合わせに基づいて、アップスケーリング動作のワークロードを動的に割り当てる。
【0121】
追加の態様ではプラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、ユーザ選好、APU102のプラットフォーム能力、dGPU134又はそれらの組み合わせによってアップスケーリング動作のモダリティを動的に選択する。
【0122】
例えば、アップスケーリングサービスが、光線追跡を用いてフルフレームレンダリングを完了するために、dGPU134の処理サイクルを保存又はセーブしようと試みると仮定する。これを行うために、dGPU134は、より低い空間単位でレンダリングする。アップスケーリングサービスを使用してプラットフォームリソース完全性サービス210は、APU102に割り当て、APU102は、例えばエッジ強調等のフィルタリングを使用して、低解像度レンダリングを高解像度に復元する。したがって、プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、ユーザ選好及びプラットフォーム能力に基づいて適切なアップスケーリングアルゴリズムを選択することによって、アップスケーリングのための柔軟性を提供する。
【0123】
一態様では、ユーザ選好は、限定はしないが、アップスケーリングモダリティ(例えば、アップスケーリング動作のモード又はタイプ)、値、閾値、容量、利用メトリクスを定義するステップを含む。ユーザ選好は、様々なタイプのヘッドルームバイアス、電力バイアス、品質バイアス及び速度バイアスを含む。例えば、ユーザ選好は、1)ヘッドルームバイアスに対して定義された利用閾値未満(例えば、60パーセント未満)にAPU102を制限する最高品質のアップスケーラモダリティを使用するステップ、2)電力バイアスに対してベースラインアップスケーラモダリティを使用するステップ、3)品質バイアスに対して定義された利用閾値(例えば、APU102による少なくとも80パーセントの利用容量)までAPU102によってサポートされる最高品質のアップスケーラモダリティを使用するステップ、又は、4)速度バイアスに対してベースラインアップスケーラモダリティを使用するステップを含む。
【0124】
アップスケーラモダリティ品質に関して、アップスケーラモダリティは、ランク付けされた又は好ましい品質レベルに基づくことができる。例えば、アップスケーラモダリティは、配信される品質に基づいてランク付け、選択又は配列され得る。アップスケーラモダリティは、例えば、1)出力解像度への時間ベースの超解像、2)出力解像度近くへの時間ベースの超解像(すなわち、ディスプレイコントローラにおける各方向の1.3倍未満のアップスケーリング)、3)出力解像度への空間のみ知覚ベースのアップスケーリング、4)出力解像度近くへの空間のみ知覚ベースのアップスケーリング、及び、5)出力解像度近くへのオーバーシュート/アンダーシュートフィルタを有する入力解像度及びアルゴリズム上の改善されたRCASを含む。入力解像度のRCASと、出力解像度に近いオーバーシュート/アンダーシュートフィルタを有するアルゴリズム。
【0125】
したがって、プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、dGPU134、APU102、又は、dGPU134及びAPU102の両方におけるレンダリング動作を選択する。プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、dGPU134、APU102、又は、dGPU134及びAPU102の両方に対するアップスケーリング動作を選択する。プラットフォームリソース完全性サービス210によって提供されるアップスケーリングサービスは、dGPU134、APU102、又は、dGPU134及びAPU102の両方における表示動作を選択する。例えば、プラットフォームリソース完全性サービス210は、dGPU134上でのレンダリング、APU102上でのアップスケーリング、及び、APU102のディスプレイコントローラ124を使用した表示を選択する。或いは、プラットフォームリソース完全性サービス210は、dGPU134上でのレンダリング、APU102上でのアップスケーリング、及び、dGPU134のディスプレイコントローラ154を使用した表示を選択する。別の態様では、プラットフォームリソース完全性サービス210は、dGPU134上でのレンダリング、dGPU134上でのアップスケーリング、及び、dGPU134のディスプレイコントローラ154を使用した表示を選択する。追加の態様では、プラットフォームリソース完全性サービス210は、APU102上でのレンダリング、APU102上でのアップスケーリング、及び、APU102のディスプレイコントローラ124を使用した表示を選択する。
【0126】
更に説明するために、以下の例示的な動作を考える。予備的事項として、例の各々において、プラットフォームリソース完全性サービス210は、プラットフォームコンポーネント240を使用して、静的及び動的プラットフォームリソースチェックを実行する(例えば、能力を分析する)。スマートシフト242は、プラットフォームリソース完全性サービス210に、例えば、APU102及びdGPU134等のプラットフォームリソースの能力に関する電力、性能、温度及びポリシーを提供する。
【0127】
第1の例では、プラットフォームリソース完全性サービス210が、レンダリング動作を実行するためにdGPU134を選択し、ゲーミングアプリケーション(例えば、画像表示)を表示するためにAPU102を選択すると仮定する。一態様では、プラットフォームリソース完全性サービス210は、ユーザ選好がフレームレート及びレイトレーシングを最大化することを望むか又は意図する場合、この選択を行う。しかしながら、レイトレーシングは、空間解像度が低下した場合にフレームレートに悪影響を及ぼす可能性がある。したがって、フレームを用いた光線追跡は、空間解像度を犠牲にしながらより高いフレームレートを達成するというトレードオフの結果をもたらす。したがって、この例では、ユーザは、フレームレートを最大化する(例えば、最高フレームレートを達成する)ように選択する選好を示すが、この選択は、空間解像度の品質の低下をもたらす。
【0128】
このシナリオでは、プラットフォームリソース完全性サービス210は、空間解像度を復元するためにAPU102を選択する。このようにして、プラットフォームリソース完全性サービス210は、ユーザ選好に基づいて、何れのプラットフォームリソースを使用するかを判定する。例えば、プラットフォームリソース完全性サービス210は、ユーザが、画像詳細を損なう、より高いフレームレートに対する選好を示すことを学習又は判定することができ、或いは、ユーザが、例えば、高解像度ビデオ(例えば、「4K」ビデオ)等の最大詳細に対する選好を示し、ユーザが、準最適フレームレートに満足しているか、又は、光線追跡について選好を有していないことを学習又は判定することができる。一態様では、ワークロード要求は、ユーザ選好を提供し、一方、機械学習動作は、履歴データに基づいてユーザ挙動を学習するために、プラットフォームリソース完全性サービス210によって実行され得る。
【0129】
したがって、この例では、ディスプレイ542Bの現在の表示設定よりも低い解像度でdGPU134においてゲームが実行される(例えば、プレイされる)。このシナリオでは、レンダリングされた画像は、アップスケーリング及び後処理のために処理される。一態様では、後処理は、画像の鮮鋭化、カラーグレードの調整、又は、dGPU134がレンダリングを終了した後に必要とされる任意の他の処理動作であり得る。GPU計算エンジン140は、dGPU134上で、例えば時間再構成スーパーサンプリング(TRSS)等の選択されたアップスケーリング動作を実行することができる。
【0130】
再び、動作中、プレイされたゲームは、dGPU134上でレンダリングされ、次いで、他のアップスケーリングワークロードが、例えば、ディスプレイコントローラ124を使用する等して、表示のためにAPU102に転送/送信される。APU102は、プラットフォームリソース完全性サービス210の指示で、高度なアップスケーリング動作、機械学習推論ベースのアップスケーリング又はシェーダアップスケーリング(APU102の能力及びユーザ選好に基づく)を、APU102によって実行される後処理と共に提供する。一態様では、画像がより低い解像度でレンダリングされたので、APU102は、後処理のために、画像鮮鋭化を実行することができる。次いで、画像は、例えば、APUのディスプレイコントローラ124を使用する等して、ディスプレイパイプ(例えば、ディスプレイコアネクスト「DCN」スケール)内で鮮鋭化及びアップスケールされる。
【0131】
第2の例では、dGPU134が高電力であり、低レイテンシ出力を提供すると仮定する。このシナリオでは、プラットフォームリソース完全性サービス210は、dGPU134を選択して、フルフレームレートゲームプレイを実行し、(オプションで)dGPU134上に出力するか、又は、ハイブリッドグラフィックス状況においてAPU102上に出力する。
【0132】
第3の例では、ユーザ選好が、例えば、高度機械学習推論ベースのアップスケーリング等の基本アップスケーラを使用する代わりに、高度アップスケーラを使用することであると仮定する。dGPU134が、高度機械学習推論ベースのアップスケーリングを実行する能力を欠いている場合、プラットフォームリソース完全性サービス210は、APU102を選択して、機械学習推論ベースのアップスケーリングの特殊化されたモダリティにおいてアップスケールし、ここで、APU102は、推論プロセッサユニット(例えば、図示されていない機械学習コンポーネント)を含み、シェーダの完全な補体を使用してアップスケーリングを行うことができるか、又は、推論処理ユニットに基づいてアップスケーリングを行うことができ、アップスケーリングのより良好な又は増加した結果をもたらす。したがって、この第3の例では、dGPU134上でゲームをプレイすることができ、APU102が機械学習推論アップスケーラを実行し、次いで、画像の追加の鮮鋭化を用いてAPU102上で後処理を行うこともできる。このようにして、APU102は、アップスケーリングのために機械学習を使用し、次いで、更なる後処理のためにシェーダ(例えば、APU102上のGPU計算エンジン110)を使用する。
【0133】
第4の例では、ユーザ選好が、例えば、最低電力でゲームをプレイすること等のように、アプリケーションを実行することであると仮定する。プラットフォームリソース完全性サービス210は、dGPU134を完全に無視しながら、APU102上でゲームをプレイし、APU102上で出力することを選択することができる。したがって、この例は、プラットフォームリソース推奨のために本明細書で説明される動作がスマートアップスケーラと共にどのように機能し得るかを示す。例えば、プラットフォームリソース完全性サービス210は、低バッテリに基づいてプラットフォームリソースを切り替える推奨を提供し、全ての動作をdGPU134からAPU102に移動させ、dGPU134を無視してゲームをプレイし続けることを暗示又は示唆する。
【0134】
要約すると、プラットフォームリソース完全性サービス210は、各プラットフォームのプラットフォーム能力を識別する。プラットフォームリソース完全性サービス210は、次いで、スマートアップスケーリングを使用して、動作条件に基づいてアップスケーリングのモダリティ(例えば、アップスケーリングをどのように行うか)を判定することができる。すなわち、プラットフォームリソース完全性サービス210は、ユーザ選好並びにAPU102及びdGPU134のプラットフォーム能力に基づいて、プラットフォームリソースのうち何れがアップスケーリングを実行するかを理解し、判定する。例えば、dGPU134が特定のアップスケール比に調整される場合、プラットフォームリソース完全性サービス210は、ユーザが、例えばアスペクト比を変更する選好を示すか、異なるスケール比を使用したい選好を示すか、又は、例えばリンギング又はエイリアスライン等のアップスケールのいくつかの結果を相殺したい選好を示し、その後シェーダを使用して後処理する場合に、他のプラットフォームリソースがあるとしても何が選択され使用され得るかを判定することができる。このようにして、プラットフォームリソース完全性サービス210は、少なくともアップスケーリング動作のモダリティ、プラットフォーム能力及びユーザ選好に基づいて、アップスケーリング動作のアップスケーリングワークロードをAPU102、dGPU134又はその両方に動的に割り当てることができる。次いで、APU102、dGPU134又はその両方は、ワークロードを動的に割り当てるステップに基づいて、アップスケーリング動作のワークロードを処理することができる。
【0135】
更なる説明のために、
図7は、本開示のいくつかの実施形態による、ワークロードイニシエータにプラットフォームリソース候補を提供する例示的な方法を示すフロー図を示す。
図7の例示的な方法は、プラットフォームリソース推奨を求める要求をワークロードイニシエータから受信するステップ710を含む。いくつかの例では、要求は、ワークロードを実行することが可能な処理リソースの中でワークロードが何処に配置されるべきかを示す情報に対するものであり得る。例えば、ワークロードがビデオ処理又はグラフィックス処理タスクを含む場合、ワークロードを実行するコンピューティングシステム(例えば、
図1のシステム100)は、ワークロードを実行することができる複数のGPUを含む。特定の例では、コンピューティングシステムは、統合GPU(例えば、
図1の統合GPU104)及びディスクリートGPU(例えば、
図1のdGPU134)を含む。そのような例では、ワークロードイニシエータからの要求は、ワークロードを統合GPU若しくはディスクリートGPU又はそれらの組み合わせに配置する必要がある推奨又は「ヒント」についてのプラットフォームリソース完全性サービス210への問い合わせである。場合によっては、ワークロードは、統合GPU上で実行され得るワークアイテムと、ディスクリートGPU上で同時に実行され得る他のワークアイテムと、を含む。
【0136】
様々なタイプのアプリケーションがワークロードイニシエータであってもよく、各々が様々なタイプのワークロードを有する。いくつかの例では、ワークロードイニシエータからの要求は、ワークロードのタイプ、ワークロード特性、処理要件及び/又はワークロードに対する性能期待値を記述する。例えば、メディアプレーヤアプリケーションは、コンピューティングシステム上で実行しようとするメディア再生ワークロードを有することができる。そのような例では、ワークロードの記述は、再生ワークロードのためのソース解像度、ディスプレイ解像度、ビットレート、ビデオコーデック、オーディオコーデック、及び、フレームレートを含む。別の例として、ビデオ会議アプリケーションは、コンピューティングシステムを実行しようとするトランスコードワークロードを有することができる。そのような例では、ワークロードの記述は、ソースビデオコーデックと、ターゲットビデオコーデックと、フレームレートと、を含む。ビデオ会議アプリケーションは、注視補正又は画面上の参加者の背景を除去/置換するための人工知能(AI)アルゴリズムを含むAIワークロードを含むこともできる。
【0137】
図7の例示的な方法は、要求並びに複数のプラットフォームリソースの性能能力及び利用メトリクスに基づいて、1つ以上のプラットフォームリソース候補を識別するステップ720を含む。プラットフォームリソースは、1つ以上のGPU及び1つ以上のAPUを含む。いくつかの例では、1つ以上のプラットフォームリソース候補を識別すること720は、統合GPU計算エンジン(例えば、
図1の統合GPU計算エンジン110)及びディスクリートGPU計算エンジン(例えば、
図1のディスクリートGPU計算エンジン140)の能力及び利用メトリクスを含む、APU及びdGPUからのランタイム利用メトリクスと共に静的及び動的能力を収集することによって実行される。
【0138】
APU及びdGPUの能力は、当業者によって認識される様々な方法で表すことができる。例えば、プラットフォーム能力は、処理速度、電力状態、エンジン利用、メモリコントローラ/PCIe利用及び能力、電力制限又は制約、アップスケーリング能力及び制限、レンダリング能力及び制限、並びに、表示能力及び制限を含む。プラットフォーム能力は、ビデオ/ビデオ会議通話又はストリーミングのためのビデオ拡張能力及び人工知能(AI)特徴を含むことができる。プラットフォーム能力は、例えば、アップスケーリング、レンダリング又は表示等のワークロード又はアプリケーションの様々なタイプのモダリティを実行する能力を含む。プラットフォーム能力は、例えば、最低電力消費でゲーミングアプリケーションを実行する等のように、低バッテリモードでワークロードを処理する能力を含む。
【0139】
いくつかの例では、1つ以上のプラットフォームリソース候補を識別するステップ720は、あるプロセッサリソースが別のプロセッサリソースよりも良好にタスクを実行するプラットフォームリソース能力の性能因子に基づいて実行される。一例では、プラットフォームリソース完全性サービス210ゲーミングワークロードがディスクリートGPUのオーバーサブスクリプションをもたらすと予測されない限り、ゲーミングワークロードがディスクリートGPUに配置されるべきであると判定する。別の態様では、プラットフォームリソース完全性サービス210は、オーディオコーデック122を使用してビデオ再生が実行されるべきであると判定する。GPUの一方がオーディオコーデック122アクセラレータを含み、他方が含まない場合があり得る。
【0140】
APU及びdGPUの利用は、当業者によって認識される様々な方法で表すことができる。例えば、APU及びdGPUの利用メトリクスは、ビジー時間に対するアイドル時間の比として、アクティブプロセスの数として、アクティブスレッドの数として、電力消費として、又は、それらの組み合わせとして、プロセッサ利用を含む。統合GPU及びディスクリートGPUは、これらのメトリクスを提供するための様々なカウンタを含む。
【0141】
図7の例示的な方法は、識別されたプラットフォームリソース候補をワークロードイニシエータに動的に提供するステップ730を含む。いくつかの例では、識別されたプラットフォームリソース候補をワークロードイニシエータに動的に提供するステップ730は、プラットフォームリソース完全性サービス210が、識別されたプラットフォームリソース候補を含む通知をワークロードイニシエータに送信することによって実行される。
【0142】
追加の例では、プラットフォームリソース推奨は、複数のプラットフォームリソースのうち少なくとも2つがワークロードを実行するために利用可能である場合に、ワークロードを実行するために複数のプラットフォームリソースのうち少なくとも1つを選択する推奨を含む。例えば、推奨又はリソースヒントは、何れのプラットフォームリソース(例えば、GPU、APU等)がワークロードをかけるかについてのヒント又は推奨を含み、複数のオプションが利用可能である場合に何れのプラットフォームリソースを使用するかについての推奨/リソースヒントを提供することもできる。
【0143】
更なる説明のために、
図8は、本開示のいくつかの実装による、ワークロードイニシエータにプラットフォームリソース候補を提供する別の例示的な方法を示すフロー図を示す。
図8の方法は、
図7の方法と同様であるが、
図8の方法は、プラットフォームリソースライブラリに、各プラットフォームリソースの性能能力、利用メトリクス、発見不可能性能能力及び性能制限(参照を容易にするためにまとめて「パラメータ」又は「メトリック」と呼ばれる)を収集するステップ810も含む点が異なる。そのようなパラメータの収集810は、最初の「発見」タスクとしてシステムのワークロード又はブート時間の起動時に実行される。パラメータを収集するステップは、プラットフォームハードウェアリソースに関する情報を収集するステップを含むことができる。
【0144】
オペレーティングシステムブート時、又は、アプリケーションの最初の実行時に、プラットフォームリソースライブラリ312は、プラットフォームリソース発見動作を実行し、全ての利用可能なプラットフォーム情報を判定する。次いで、プラットフォームリソースライブラリ312は、リソースプラットフォームレコード(340として上述した)に対して発見データをクロスチェックして、システム300の完全な静的プラットフォームリソース能力リストを構築する。静的プラットフォームリソース能力リストは、プラットフォームリソースライブラリ312によってアクセス可能であるように記憶することができる。対照的に、動的動作の場合(例えば、現在のシステム300のステータス、ロード及びGPUエンジンごとの使用を判定するため)、プラットフォームリソースライブラリ312は、現在のプラットフォームリソースメトリクス又はパラメータを収集、処理、記憶及び監視する。また、プラットフォームリソース利用メトリクスは、利用可能な動的ロード範囲内の各プラットフォームリソース(例えば、各エンジン/コア)ロードに対して収集され得る。そのような動的ロード範囲は、任意のプラットフォームリソース能力又は制限に基づくことができる。そのような能力又は制限は、動作モードのタイプ、メモリ帯域幅に基づく制限又はシステム相互接続ロードに起因し得る。
【0145】
図8の方法は、ワークロードのランタイム中に、複数のプラットフォームリソースの各々について、性能能力、利用メトリクス、発見不可能性能能力及び性能制限を監視するステップ820を含む。すなわち、初期発見プロセス及びリソース利用メトリクスのベースラインの設定の後、システムは、リソースのリアルタイム利用及び能力を用いてメトリクスを監視及び更新することができる。監視の一部として、プラットフォームリソース完全性サービス210は、システム又はドライバイベントのリストで指定された様々なイベントを監視及びリッスンするプラットフォーム状態変更リスナ327を利用することができる。イベントのリストは、時間と共に増加及び成長する可能性がある。一態様では、プラットフォーム状態変更リスナ327は、プラットフォームリソースライブラリ312に常に登録されなければならない様々な必須イベントを監視し、リッスンする。そのような必須イベントは、例えば、交流/直流(AC/DC)スイッチイベント、プラットフォームリソースの追加若しくは除去、電源(例えば、バッテリ/性能スライダ)を介したユーザ要求に基づく電力エンベロープへの変更、又は、制御パネル設定への変更を含む。制御パネル設定に対する変更は、例えば、AC及びDCモードに対する変更を含むことができる。これらの監視されたイベントは、プラットフォームリソース完全性サービス210にリアルタイムデータを提供し、プラットフォームリソース候補の識別720により良く通知することができる。
【0146】
また、
図8の方法において、プラットフォームリソース候補を識別するステップ720は、プラットフォームリソース推奨についてのワークロードイニシエータからの要求に基づいて、複数のプラットフォームリソースの各々についての発見不可能性能能力、性能制限及び履歴性能データを判定するために、プラットフォームリソースライブラリを参照するステップ830を含む。プラットフォームリソース完全性サービス210は、例えばレコード340等のレコードのセットを含むプラットフォームリソースライブラリ312を配備する。レコード340は、プラットフォームリソース能力(オペレーティングシステムによって発見不可能な能力を含む)、制限、性能メトリクス及び履歴データの完全なリストを含む包括的なリソースプラットフォームデータセットを有するリソースプラットフォームレコードであり得る。レコード340は、読み取り専用としてプラットフォームリソースライブラリ312によって使用することができる。レコード340は、相手先商標製品製造会社(OEM)及びプラットフォーム補足情報からプラットフォームリソースライブラリ312内に提供することができる。
【0147】
プラットフォームリソースライブラリを参照した後830、
図8の方法は、複数のプラットフォームリソースの非性能能力及び性能制限に基づいて、プラットフォームリソース候補を識別するステップ840によって継続する。すなわち、性能能力に加えて、リソース候補識別は、非性能能力及び性能制限に依存し得る。
【0148】
更なる説明のために、
図9は、本開示のいくつかの実装による、ワークロードイニシエータにプラットフォームリソース候補を提供する別の例示的な方法を示すフロー図を示す。
図9の方法は、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて複数のプラットフォームリソースの各々をランク付けするステップ910を含むことを除いて、
図7の方法と同様である。いくつかの例では、性能能力、利用メトリクス、発見不可能性能能力及び性能制限に基づいて複数のプラットフォームリソースの各々をランク付けするステップ910は、APU102又は以下のdGPUの能力、性能能力、利用メトリクス、発見不可能性能能力及び性能制限をランク付けすることによって、1)APU102又はdGPUによって許容される最大プラットフォーム容量の下で可能な最大フレームレート及び/又は最高品質を配信し、2)メモリ帯域幅、3)計算帯域幅、4)リアルタイムの様々なタイプのユースケースのフレームレートを維持する能力又は容量、5)例えば、最低電力オプション又は最高性能オプションに基づいてワークロードを実行する能力、APU102又はdGPU間のメモリ転送を最小化する能力、及び、6)メモリを最小化する能力、に基づいてプラットフォームリソース完全性サービス210によって実行される。ユーザ選好は、容量をランク付けするためにも使用され得ることに留意されたい。
【0149】
システムの動作中に、リソース利用及び能力が変化する。そのために、
図10は、本開示の実施形態による、ランタイム中にプラットフォームリソース候補が更新される例示的な方法を示すフロー図を示す。
図10の方法は、ワークロードのランタイム中に、複数のプラットフォームリソースの調整された性能能力及び調整された利用メトリクスに基づいて、更新されたプラットフォームリソース候補を動的に提供するステップ1010も含むことを除いて、
図7の方法と同様である。いくつかの例では、更新されたプラットフォームリソース候補を動的に提供するステップ1010は、プラットフォームリソースを再割り当てするためにワークロードイニシエータに更新された推奨を提供することによって実行される。例えば、以前に提供されたリソース候補のセットにおいて提供されたプラットフォームリソースにおいて変更が検出された場合、プラットフォームリソース候補は、検出された変更に基づいて再識別されてもよく、リソース候補の更新された推奨がワークロードイニシエータに提供され得る。そのような変更は、例えば、性能の変化、アクティブプロセスの数、アクティブスレッドの数、電力消費の損失若しくは利得、又は、それらの組み合わせを含むことができる。
【0150】
更なる説明のために、
図11は、本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを使用したレンダリングされたフレームのアップスケーリング動作の複合処理の例示的な方法を示すフロー図を示す。本明細書で説明するように、スケーリング動作又は「アップスケーリング」は、例えば、フレームがエンドユーザに提示されるよりも高い解像度でレンダリングされる場合等のように、ダウンスケーリングも含むことができることに留意されたい。したがって、概して、スケーリング動作は、スケーリング動作と共に又は独立して、スケーリングなしに、クロスデバイス方式で、スケーリングなしの画像処理(例えば、画像鮮鋭化)を含むことができる。
【0151】
図11の例示的な方法は、(レンダリングされたフレームの)アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップ1110であって、リソースは、(少なくとも)1つ以上のGPU及び1つ以上のAPUを含む、ステップを含む。いくつかの例では、データをアップスケールするためにdGPU134及びAPU102の可用性を動的に識別することによって、アップスケーリング動作を実行するために利用可能な複数のプラットフォームリソースを識別するステップ1110。
【0152】
図11の例示的な方法は、アップスケーリング動作の少なくともモダリティに基づいて、複数のプラットフォームリソースのうち1つ以上にアップスケーリング動作のワークロードを動的に割り当てるステップ1120を含む。いくつかの例では、ワークロードをプラットフォームリソースのうち1つ以上に動的に割り当てるステップ1120は、APUとdGPUとの間でラスタライゼーション及びワークロードのアップスケーリングを拡散するプラットフォームリソース完全性サービス210によって実行される。すなわち、プラットフォームリソース完全性サービス210は、統合GPU計算エンジン(例えば、
図1の統合GPU計算エンジン110)及びディスクリートGPU計算エンジン(例えば、
図1のディスクリートGPU計算エンジン140)の能力及び利用メトリクスに基づいて、APUとdGPUとの間でラスタ化及びアップスケーリングワークロードを分散させることができる。
【0153】
図11の例示的な方法は、ワークロードを動的に割り当てるステップに基づいて、複数のプラットフォームリソースのうち1つ以上によるアップスケーリング動作のワークロードを処理するステップ1130を含む。いくつかの例では、ワークロードを動的に割り当てることに基づいて複数のプラットフォームリソースのうち1つ以上によるアップスケーリング動作のワークロードを処理するステップ1130は、アップスケーリング動作がAPU102、dGPU134又はその両方に割り当てられていることを特定のプラットフォームリソースに示すことによって実行される。指標に基づいて、APU102、dGPU134又はその両方は、プロセスを実行することができる。
【0154】
更なる説明のために、
図12は、本開示のいくつかの実施形態による、プラットフォームリソース推奨サービスを使用したレンダリングされたフレームのアップスケーリング動作の複合処理の別の例示的な方法を示すフロー図を示す。
図12の方法は、アップスケーリング動作を実行するために利用可能なプラットフォームリソースを識別する(1110)代替実施形態を示すことを除いて、
図11の方法と同様である。一実施形態では、本方法は、ユーザ選好に基づいてアップスケーリング動作のモダリティを選択するステップ1210を含む。いくつかの例ではユーザ選好に基づいてアップスケーリング動作のモダリティを選択するステップ1210は、アップスケーリング及びアップスケーリング動作のモダリティの選択のためのユーザ選好を識別又は学習することによって、(機械学習動作を介して)実行される。例えば、アップスケーリング動作のモダリティは、ユーザ選好又は学習されたユーザプロファイルに基づく最近傍補間、バイリニア(基本補間)及びバイキュービックアルゴリズム(複素補間)であり得る。
【0155】
別の実施形態では、アップスケーリング動作を実行するために利用可能なプラットフォームリソースの識別1110は、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいてアップスケーリング動作のモダリティを選択するステップ1220を含む。いくつかの例では、複数のプラットフォームリソースのうち1つ以上の性能能力に基づいてアップスケーリング動作のモダリティを選択するステップ1210は、アップスケーリング及びアップスケーリング動作のモダリティの選択のために複数のプラットフォームリソースのうち1つ以上の性能能力を識別又は学習することによって、機械学習動作を介して実行される。
【0156】
プラットフォームリソースの識別1110と同様に、様々な方法で実行することができ、ワークロードの割り当ても実行することができる。そのために、
図13は、本開示のいくつかの実施形態による、ワークロードの割り当てがいくつかの異なる方法で実行されるアップスケーリング動作の複合処理の別の例示的な方法を示すフロー図を示す。より具体的には、
図13の例示的な方法は、以下を含むユーザ選好に基づいてワークロードを動的に割り当てるステップ1310、及び、複数のプラットフォームリソースの性能能力に基づいてワークロードを動的に割り当てるステップ1320を含む。
【0157】
いくつかの例では、(レンダリングされたフレームの)アップスケーリング動作のワークロードを動的に割り当てるステップ1310は、ユーザ選好に応じてAPU102、dGPU134又はその両方でレンダリング動作、アップスケーリング動作及び表示動作を選択することによって実行される。例えば、最低電力でのゲーミングアプリケーションの実行を指定するユーザ選好低電力モードにある間にゲームをプレイし続けるために、プラットフォームリソース完全性サービス210は、APU102上で全ての動作を実行するように推奨を提供し、dGPU143を無視する。別の例では、ユーザ選好が、レイトレーシングを用いてフレームレートを最大化することである場合、プラットフォームリソース完全性サービス210は、dGPU134を利用して、より低い空間単位で画像をレンダリングすることができ、その間にワークフロータスクをAPU102に割り当てて、より低い解像度レンダリングを高解像度に復元する。そのような復元は、ユーザ選好及びプラットフォーム能力に基づいて適切なアップスケーリングアルゴリズムを選択することによって、アップスケーリングのための柔軟性を提供するために、エッジ強調等のフィルタリングを含むことができる。
【0158】
図13の例示的な方法は、プラットフォームリソースの性能能力に基づいてワークロードを動的に割り当てるステップ1320を含む。いくつかの例では、プラットフォームリソースの性能能力に基づいてワークロードを割り当てるステップ1320は、APU102及びdGPU134のプラットフォーム能力に応じて、APU102、dGPU134又はその両方でレンダリング動作、アップスケーリング動作及び表示動作を選択することによって実行される。例えば、APU102、dGPU134又はその両方は、1つ以上のポリシーに基づいて、リソースに割り当てられたワークロードがリソースのオーバーサブスクリプションをもたらさないと判定することによって、ラスタライゼーション又はアップスケーリングを実行するように選択することができる。一例として、ポリシーは、APU102、dGPU134の何れか、又は、両方がオーバーサブスクライブされない限り、追加されたワークロードを有するAPUにレンダリング及び表示を割り当てることができる一方で、フレームレートを最大化する能力に起因して、可能であれば、dGPUに配置されるワークロードをアップスケールするためにdGPUを推奨することができると述べることができる。例えば、そのようなポリシーは、アップスケーリングワークロード又はアップスケーリングワークロードのコンポーネントが配置されるべき場所に関する選好、ワークロードの側面(例えば、速度、電力消費、画質等)に関する列挙された優先順位、ワークロードに関する基本要件(例えば、フレームレート、レイテンシ、出力解像度)、ワークロードに関するクリティカルリソース(例えば、何れのリソースがワークロードによって頻繁に利用されるか)、セキュリティ及び保護ポリシー等を指定する。
【0159】
ポリシーは、ポリシーに基づいて、アップスケーリング動作のワークロードをAPU102、dGPU134又はその両方に割り当てることを要求することができる、1)APU102又はdGPUによって許容される最大プラットフォーム容量の下で可能な最大フレームレート及び/又は最高品質を配信する、2)メモリ帯域幅に基づいて割り当てる、3)計算帯域幅に基づいて優先順位を付ける、4)リアルタイムの様々なタイプのユースケースのためにフレームレートを維持する能力又は能力に基づいて割り当てる、5)例えば、最低電力オプション又は最高性能オプションに基づいてワークロードを実行する能力、APU102又はdGPU間のメモリ転送を最小限に抑える能力等のように、エネルギーを節約する能力に基づいて割り当てる、6)メモリフットプリントを最小限に抑える能力に基づいて割り当てる。
【0160】
加えて、複数のプラットフォームリソースのうち1つ以上の間でワークロードのレンダリング動作、アップスケーリング動作及び表示動作を割り当てることは、複数のプラットフォームリソースのうち1つ以上の電力状態(例えば、AC電力からDC電力への変化、又は、DC電力からAC電力への変化)、及び、複数のプラットフォームリソースのうち1つ以上の性能能力に基づくことができる。
【0161】
上記を考慮して、当業者の読者は、本開示によるいくつかの実施形態がいくつかの利点を提供することを理解するであろう。実施形態は、アプリケーションが過度に利用されるリソース上にワークロードを置かないように、システムのランタイム挙動への可視性を有するマルチGPUシステム上でワークロードを初期化することを意図するアプリケーションを提供する。更に、特徴/ワークロードタイプに対するポリシーは、リソースマネージャのポリシーエンジンが、その特徴/ワークロードタイプに対する最適なワークロード割り当て推奨を行うことを可能にする定義を提供する。したがって、システムは、ワークロードが予想通りに実行されることを保証することができ、又は、アプリケーションは、ワークロードを初期化する前に、性能が保証され得ないことを通知される。このようにして、ユーザエクスペリエンスが改善される。
【0162】
いくつかの実施形態は、メモリ-ローカルコンピューティングがアトミック動作に効率的に使用されることを可能にし、これは、ある範囲の重要なワークロード(例えば、グラフ分析、スパース行列代数、機械学習等)の性能を改善することができる。そのようなアプリケーションは、利用可能な場合にはキャッシュ局所性を活用し、合体機会を動的に識別して、より効率的なマルチモジュールメモリローカル処理動作を可能にすることができる。
【0163】
いくつかの実施形態は、システム、装置、方法及び/又は論理回路であり得る。本開示のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++等のオブジェクト配向プログラミング言語、並びに、「C」プログラミング言語又は同様のプログラミング言語等の従来の手続き型プログラミング言語等の1つ以上のプログラミング言語の任意の組み合わせで書き込まれたソースコード若しくはオブジェクトコードの何れかであり得る。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブル論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行する。
【0164】
本開示の態様は、本開示のいくつかの実施形態による方法、装置(システム)及び論理回路のフロー図及び/又はブロック図を参照して本明細書に記載されている。フロー図及び/又はブロック図の各ブロック、並びに、フロー図及び/又はブロック図におけるブロックの組み合わせは、論理回路によって実施され得ることが理解されよう。
【0165】
また、論理回路は、プロセッサ、他のプログラマブルデータ処理装置又は他のデバイスに実装され、コンピュータ実施プロセスを生成するために、プロセッサ、他のプログラマブル装置又は他のデバイス上で実行される一連の動作ステップを行わせ、そのため、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令は、フロー図及び/又はブロック図のブロックに指定される機能/行為を実施する。
【0166】
図中のフロー図及びブロック図は、本開示の様々な実施形態によるシステム、方法及び論理回路の可能な実施形態のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実施形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する可能性がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、又は、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図及び/又はフロー図の各ブロック、並びに、ブロック図及び/又はフロー図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は、専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実施することができることにも留意されたい。
【0167】
本開示は、その実施形態を参照して具体的に示され、説明されてきたが、以下の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び詳細で様々な変更が行われ得ることを理解されたい。したがって、本明細書に記載された実施形態は、説明のためのものに過ぎず、本発明を限定するものではない。本開示は、詳細な説明ではなく添付の特許請求の範囲によって定義され、その範囲内の全ての差異は本発明に含まれると解釈されるべきである。
【手続補正書】
【提出日】2024-05-29
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
装置であって、
前記装置は、コンピュータプロセッサと、前記コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備え、
前記コンピュータメモリは、コンピュータプログラム命令を備え、
前記コンピュータプログラム命令は、前記コンピュータプロセッサによって実行されると、
アップスケーリング動作を実行するのに利用可能な複数のプラットフォームリソースを識別する
ことであって、前記複数のプラットフォームリソースは、1つ以上のグラフィックスプロセッサユニット(GPU)及び1つ以上の加速処理ユニット(APU)を含む、
ことと、
前記アップスケーリング動作の少なくともモダリティに基づいて、前記アップスケーリング動作のワークロードを前記プラットフォームリソースのうち1つ以上に動的に割り当てる
ことと、
ワークロードが割り当てられたプラットフォームリソースによって前記アップスケーリング動作のワークロードを処理する
ことと、
を前記
コンピュータプロセッサに行わせる、
装置。
【請求項2】
ユーザ選好に基づいて前記アップスケーリング動作のモダリティを選択する
ことを前記
コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【請求項3】
前記プラットフォームリソースの性能能力に基づいて前記アップスケーリング動作のモダリティを選択する
ことを前記
コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【請求項4】
前記プラットフォームリソースの性能能力に基づいて前記ワークロードを動的に割り当てる
ことを前記コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【請求項5】
ユーザ選好に基づいて前記アップスケーリング動作のワークロードを前記1つ以上のプラットフォームリソースに動的に割り当てる
ことを前記コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【請求項6】
前記アップスケーリング動作のモダリティ、ユーザ選好、並びに、前記第1のプラットフォームリソース及び前記第2のプラットフォームリソースの性能能力に基づいて、前記アップスケーリング動作のワークロードを前記第1のプラットフォームリソースと前記第2のプラットフォームリソースとの間で動的に割り当てる
ことを前記コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【請求項7】
前記アップスケーリング動作のモダリティ、ユーザ選好、前記複数のプラットフォームリソースのうち1つ以上の電力状態、及び、前記複数のプラットフォームリソースのうち1つ以上の性能能力に基づいて、前記複数のプラットフォームリソースのうち1つ以上の間で前記ワークロードのレンダリング動作、アップスケーリング動作及び表示動作を動的に割り当てる
ことを前記コンピュータプロセッサに行わせるコンピュータプログラム命令を含む、
請求項
1の装置。
【国際調査報告】