(57)【特許請求の範囲】
【請求項１】
少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とを含む少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
前記少なくとも１つのコンピューティングデバイスにおいて第１のアプリケーションを実行するリクエストを取得する論理と、
前記第１のアプリケーションに関連付けられたリソース利用プロファイルが、前記第１のアプリケーションが比較的ＧＰＵ集約的であるよりＣＰＵ集約的であることを示すときに、前記第１のアプリケーションに関連付けられた第２のアプリケーションを、前記少なくとも１つのＣＰＵの代わりに前記少なくとも１つのＧＰＵで実行されるように割り当てる論理と、
前記リソース利用プロファイルが、前記第１のアプリケーションが比較的ＣＰＵ集約的であるよりＧＰＵ集約的であることを示すときに、前記第２のアプリケーションを、前記少なくとも１つのＧＰＵの代わりに前記少なくとも１つのＣＰＵで実行されるように割り当てる論理と、
を備える、サーバアプリケーションと、
を備える、システム。
【請求項２】
前記第２のアプリケーションは、前記第１のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当し、前記サーバアプリケーションは、ハードウェアビデオエンコーダが利用可能であるときに、前記少なくとも１つのＣＰＵまたは前記少なくとも１つのＧＰＵの代わりに、前記少なくとも１つのコンピューティングデバイスの前記ハードウェアビデオエンコーダにおいて前記ビデオエンコーダを実行する論理をさらに備える、請求項１に記載のシステム。
【請求項３】
前記第２のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも１つのＧＰＵの現行の負荷および前記少なくとも１つのＣＰＵの現行の負荷に基づく、請求項１に記載のシステム。
【請求項４】
前記第２のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも１つのＧＰＵの現行の負荷および前記少なくとも１つのＣＰＵの現行の負荷が互いに閾値だけ異なるかどうかに基づく、請求項１に記載のシステム。
【請求項５】
前記第２のアプリケーションは、データ通信ネットワーク上でのクライアントコンピューティングデバイスへの伝送のために、前記第１のアプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成されるビデオエンコーダを含む、請求項１に記載のシステム。
【請求項６】
前記少なくとも１つのコンピューティングデバイスは、前記クライアントコンピューティングデバイスに含まれていない前記第１のアプリケーションを実行するための少なくとも１つの機能を含む、請求項５に記載のシステム。
【請求項７】
前記リクエストは、アプリケーションのライブラリから前記第１のアプリケーションを選択し、前記アプリケーションのうちの少なくとも１つは、比較的ＧＰＵ集約的であるよりＣＰＵ集約的であり、前記アプリケーションのうちの少なくとも１つは、比較的ＣＰＵ集約的であるよりＧＰＵ集約的である、請求項１に記載のシステム。
【請求項８】
前記少なくとも１つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも１つのＣＰＵから前記少なくとも１つのＧＰＵへ前記第２のアプリケーションの実行を転送する論理を備える、請求項１に記載のシステム。
【請求項９】
前記第２のアプリケーションは、前記第１のアプリケーションの出力からビデオストリームを生成するように構成され、前記ビデオストリームは前記第２のアプリケーションの前記実行が転送されるときに中断されない、請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも１つのＧＰＵから前記少なくとも１つのＣＰＵへ前記第２のアプリケーションの実行を転送する論理を備える、請求項１に記載のシステム。
【請求項１１】
前記少なくとも１つのコンピューティングデバイスは、複数のネットワーク設定されたコンピューティングデバイスを含み、
前記サーバアプリケーションは、
少なくとも一部において、前記ネットワーク設定されたコンピューティングデバイスのうちの１つに関連付けられた現行のＧＰＵ負荷および現行のＣＰＵ負荷、ならびに前記リソース利用プロファイルに基づいて、前記第１のアプリケーションおよび前記第２のアプリケーションを実行するための前記ネットワーク設定されたコンピューティングデバイスのうちの前記１つを選択する論理をさらに備える、
請求項１に記載のシステム。
【請求項１２】
前記サーバアプリケーションは、前記現行のＣＰＵ負荷がＣＰＵ負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記１つの前記少なくとも１つのＣＰＵで実行中の少なくとも１つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記１つの前記少なくとも１つのＧＰＵで実行されるように、再構成する論理をさらに備える、請求項１１に記載のシステム。
【請求項１３】
前記サーバアプリケーションは、前記現行のＧＰＵ負荷がＧＰＵ負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記１つの前記少なくとも１つのＧＰＵで実行中の少なくとも１つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記１つの前記少なくとも１つのＣＰＵで実行するように、再構成する論理をさらに備える、請求項１１に記載のシステム。
【請求項１４】
少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とを含む少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
前記少なくとも１つのコンピューティングデバイスにおいて、リソース利用プロファイルと関連付けられた第１のアプリケーションを実行するリクエストを取得する論理と、
前記少なくとも１つのＣＰＵの現行の負荷および前記少なくとも１つのＧＰＵの現行の負荷を判定する論理と、
少なくとも一部において、前記第１のアプリケーションに関連付けられた前記リソース利用プロファイルと前記少なくとも１つのＣＰＵの前記現行の負荷と前記少なくとも１つのＧＰＵの前記現行の負荷とに基づいて、前記第１のアプリケーションに関連付けられた第２のアプリケーションを、前記少なくとも１つのＣＰＵまたは前記少なくとも１つのＧＰＵで実行する論理と、
を備える、サーバアプリケーションと、
を備えるシステム。
【請求項１５】
前記リソース利用プロファイルは、前記第１のアプリケーションのＣＰＵ消費測定基準およびＧＰＵ消費測定基準を提供する、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化に関する。
【背景技術】
【０００２】
グラフィックス処理装置（ＧＰＵ）は、グラフィックス関連の動作に専用のプロセッサである。多くのコンピューティングデバイスは、２次元および／または３次元グラフィックスのレンダリングを負荷軽減（ｏｆｆｌｏａｄ）および促進するために、１つ以上のＧＰＵを含む。ＧＰＵの高度並列構造は、ＧＰＵを、種々の複雑なアルゴリズムについて、中央処理装置（ＣＰＵ）等の汎用プロセッサよりも効果的なものにし得る。特に、コンピュータゲームは、コンピューティングデバイスのＧＰＵ利用可能性によって恩恵を受けることが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＣＰＵとＧＰＵとの間で負荷を平衡化することが所望されている。
【課題を解決するための手段】
【０００４】
本開示の技術の一態様は、少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とを含む少なくとも１つのコンピューティングデバイスと、前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、前記少なくとも１つのコンピューティングデバイスにおいて第１のアプリケーションを実行するリクエストを取得する論理と、前記第１のアプリケーションに関連付けられたリソース利用プロファイルが、前記第１のアプリケーションが比較的ＣＰＵ集約的であるよりＧＰＵ集約的であることを示すときに、前記第１のアプリケーションに関連付けられた第２のアプリケーションを、前記少なくとも１つのＣＰＵの代わりに前記少なくとも１つのＧＰＵで実行されるように割り当てる論理と、前記リソース利用プロファイルが、前記第１のアプリケーションが比較的ＣＰＵ集約的であるよりＧＰＵ集約的であることを示すときに、前記第２のアプリケーションを、前記少なくとも１つのＧＰＵの代わりに前記少なくとも１つのＣＰＵで実行されるように割り当てる論理と、を備える、サーバアプリケーションと、を備える、システムである。
【発明の効果】
【０００５】
ＣＰＵとＧＰＵとの間の負荷の非平衡さを緩和する。
【図面の簡単な説明】
【０００６】
【図１】本開示の種々の実施形態に従う、ネットワーク設定された環境の図である。
【図２】本開示の種々の実施形態に従う、図１のネットワーク設定された環境で採用されたコンピューティングデバイスの１つの例示的な図を提供する略ブロック図である。
【図３】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてコンピューティングデバイスで実行されたサーバアプリケーションの一部として実装された機能の例を示すフローチャートである。
【図４】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてコンピューティングデバイスで実行されたサーバアプリケーションの一部として実装された機能の例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
図面を参照することにより、本開示の多くの態様をより良く理解することができる。図中の構成要素について、必ずしも拡大縮小の比率は正確ではないが、それよりも、本開示の原則を明確に示すことを重視している。さらに、図面において、同様の参照数字は、複数の図にまたがる対応する部分を指す。
【０００８】
本開示は、中央処理装置（ＣＰＵ）とグラフィックス処理装置（ＧＰＵ）との間のアプリケーションの負荷平衡化を促進することに関する。例えば、ゲームアプリケーション等のいくつかのアプリケーションは、コンピューティングデバイス内により大きいＣＰＵ負荷またはより大きいＧＰＵ負荷のいずれかをかける傾向があり得る。換言すれば、いくつかのアプリケーションは、ＣＰＵ集約的またはＧＰＵ集約的のいずれかとして分類されてもよい。本開示の種々の実施形態は、少なくとも一部において、コンピューティングデバイスの現行のＣＰＵおよびＧＰＵ負荷、ならびにアプリケーションのＣＰＵおよびＧＰＵリソース利用に基づいて選択されるコンピューティングデバイスで実行するように、アプリケーションを割り当てる。加えて、いくつかのアプリケーション、またはアプリケーションの一部を、少なくとも一部において、コンピューティングデバイスの現行のＣＰＵおよびＧＰＵ負荷に基づいて、ＣＰＵまたはＧＰＵのいずれかで実行するように割り当ててもよい。したがって、コンピューティングデバイスのＣＰＵおよびＧＰＵリソースは、そうでない場合に可能であるよりも、より完全に利用され得る。以下の記載において、システムおよびそのコンポーネントの概略的な説明、さらに、システムおよびそのコンポーネントの動作の説明を行う。
【０００９】
図１を参照すると、種々の実施形態に従う、ネットワーク設定された環境１００が示されている。ネットワーク設定された環境１００は、ネットワーク１０９によって１つ以上のクライアント１０６とデータ通信する１つ以上のコンピューティングデバイス１０３を含む。ネットワーク１０９は、例えば、インターネット、イントラネット、エクストラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、有線ネットワーク、無線ネットワーク、または他の適したネットワーク等、あるいは２つ以上のかかるネットワークの任意の組み合わせを含む。
【００１０】
コンピューティングデバイス１０３は、例えば、サーバコンピュータまたはコンピューティング機能を提供する任意の他のシステムを備えてもよい。あるいは、例えば、１つ以上のサーババンクまたはコンピュータバンクあるいは他の配置において配置される複数のコンピューティングデバイス１０３を採用してもよい。例えば、複数のネットワーク設定されたコンピューティングデバイス１０３は、共に、クラウドコンピューティングリソース、グリッドコンピューティングリソース、および／または任意の他の分散コンピューティングの配置を備えてもよい。かかるコンピューティングデバイス１０３は、単一の設置として配置されてもよい、または多くの異なる地理的な位置に分散されてもよい。便宜上、コンピューティングデバイス１０３は、本明細書では単数で称される。コンピューティングデバイス１０３が単数で称されていても、上記のように、種々の構成において、複数のコンピューティングデバイス１０３が採用されてもよいことが理解される。
【００１１】
種々の実施形態に従うコンピューティングデバイス１０３において、種々のアプリケーションおよび／または他の機能を実行してもよい。さらに、コンピューティングデバイス１０３にアクセス可能なデータストア１１２に、種々のデータが格納される。データストア１１２は、理解されるように、複数のデータストア１１２を表してもよい。例えば、データストア１１２に格納されたデータは、以下に記載される種々のアプリケーションおよび／または機能エンティティの動作に関連付けられる。
【００１２】
コンピューティングデバイス１０３上で実行されるコンポーネントは、例えば、サーバアプリケーション１１５、複数のアプリケーション１１８ａ、１１８ｂ．．．１１８Ｎ、複数のビデオエンコーダ１１９ａ、１１９ｂ．．．１１９Ｎ、複数のラッパ１２１ａ、１２１ｂ．．．１２１Ｎ、および本明細書では詳細に記載されていない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能を含む。サーバアプリケーション１１５は、例えば、ゲームサーバアプリケーションまたは別の種類のアプリケーションセッションサーバに相当してもよい。サーバアプリケーション１１５は、視覚化された環境を提供するラッパ１２１内で実行されてもよいアプリケーション１１８を開始するように実行される。サーバアプリケーション１１５は、クライアント１０６から入力データ１２２を取得し、それぞれのラッパ１２１に入力データ１２２を提供するようにさらに実行される。
【００１３】
サーバアプリケーション１１５は、キャプチャされるビデオデータ１２３をアプリケーション１１８からクライアント１０６へ送信するためにさらに実行される。サーバアプリケーション１１５は、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）、表現状態転送（ＲＥＳＴ）、リアルタイム転送プロトコル（ＲＴＰ）、リアルタイムストリーミングプロトコル（ＲＴＳＰ）、リアルタイムメッセージングプロトコル（ＲＴＭＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、伝送制御プロトコル（ＴＣＰ）、および／またはネットワーク１０９上でデータを通信するための他のプロトコル等の種々のプロトコルによって、クライアント１０６と通信してもよい。実行中のアプリケーション１１８に関連付けられた状態情報１２４を維持するようにサーバアプリケーション１１５が構成される。
【００１４】
アプリケーション１１８は、例えば、ゲームまたは別の種類のアプリケーションに相当してもよい。非制限的な例として、アプリケーション１１８は、一人称シューターゲーム、アクションゲーム、アドベンチャーゲーム、パーティゲーム、ロールプレイングゲーム、シミュレーションゲーム、戦略ゲーム、カーシミュレーションゲーム、および／または他の種類のゲームに相当してもよい。アプリケーション１１８は、汎用コンピューティングデバイスまたは、例えば、ビデオゲームコンソール、ハンドヘルドゲームデバイス、アーケードゲームデバイス等の専用のビデオゲームデバイスでの実行のために元々設計されたゲームであってもよい。アプリケーション１１８は、さらに、携帯電話アプリケーション、コンピュータ支援設計（ＣＡＤ）アプリケーション、コンピュータ支援製造（ＣＡＭ）アプリケーション、写真操作アプリケーション、ビデオ編集アプリケーション、オフィス生産性アプリケーション、オペレーティングシステムおよび関連付けられたアプリケーション、オペレーティングシステム、アーキテクチャ、およびコンシューマデバイス上に存在しない機能のエミュレータ、ならびに他のアプリケーションおよびアプリケーションの組み合わせに相当してもよい。
【００１５】
アプリケーション１１８は、実行されるデバイスのうちの１つ以上のリソースにアクセスすることを予期してもよい。かかるリソースは、ディスプレイデバイス、入力デバイス、または他のデバイスに相当してもよい。いくつかの場合において、アプリケーション１１８は、リソースのうちの１つ以上への排他的アクセスをリクエストしてもよいため、他のアプリケーションは特定のリソースへのアクセス権がない可能性がある。種々のアプリケーション１１８は、ＣＰＵリソースより多くのＧＰＵリソース、またはＧＰＵリソースより多くのＣＰＵリソースを使用してもよい。
【００１６】
ビデオエンコーダ１１９は、ネットワーク１０９によるクライアント１０６への伝送のために、アプリケーション１１８によって生成されたビデオ信号をビデオストリームに符号化することができる。ビデオストリームは、アプリケーション１１８によって生成されたオーディオ信号も含んでもよい。このため、ビデオエンコーダ１１９は、例えば、Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）エンコーダ、Ｈ．２６４エンコーダ、Ｆｌａｓｈ（登録商標）ビデオエンコーダ等の種々の種類のビデオおよびオーディオエンコーダを含んでもよい。かかるエンコーダは、例えば、データ縮小、符号化品質、レイテンシ等の要素に従って選択されてもよい。種々のビデオエンコーダ１１９は、１つ以上のＧＰＵまたは１つ以上のＣＰＵで実行するように構成されてもよい。種々の実施形態において、コンピューティングデバイス１０３は、ビデオエンコーダ１１９を実行してもよい１つ以上の専用のハードウェアビデオエンコーダを含んでもよい。利用可能であればかかるハードウェアビデオエンコーダを採用してもよい。
【００１７】
ラッパ１２１は、アプリケーション１１８の実行のために視覚化された環境を提供するアプリケーションに相当する。特に、ラッパ１２１は、アプリケーション１１８がアクセスすることを予期するリソースのうちの１つ以上を仮想化するように構成されてもよい。かかるリソースは、キーボード、マウス、ジョイスティック、ビデオデバイス、音声デバイス等を含んでもよい。このように、ラッパ１２１は、ラッパ１２１がキーボード、マウス、または別の種類の入力デバイスをエミュレートするかのように、アプリケーション１１８へ入力コマンドを提供することができる。
【００１８】
異なるアプリケーション１１８またはアプリケーション１１８のクラスについて、異なる種類のラッパ１２１を提供してもよい。非制限的な例として、異なるラッパ１２１を、ＯｐｅｎＧＬ（登録商標）、ＤｉｒｅｃｔＸ（登録商標）、Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ（ＧＤＩ）等の異なるアプリケーションプログラミングインタフェース（ＡＰＩ）を使用するアプリケーション１１８に提供してもよい。ラッパ１２１は、実行されるアプリケーション１１８に特定のオペレーティングシステムを含んでもよい。アプリケーション１１８が携帯電話アプリケーションを含む場合、例えば、ラッパ１２１は、アンドロイドオペレーティングシステムまたは別のオペレーティングシステムを含んでもよい。専用のビデオゲームデバイスまたは別の種類のコンピューティングデバイスでの実行のためにアプリケーション１１８が構成される場合、ラッパ１２１は、デバイスをエミュレートするエミュレーションアプリケーションを含んでもよい。アプリケーション１１８によって生成されたビデオ信号を、符号化のためにビデオエンコーダ１１９へ送達させるためにラッパ１２１を構成してもよい。アプリケーション１１８に関連する種々のラッパ１２１は、ＣＰＵリソースよりも多くＧＰＵリソースを、またはＧＰＵリソースよりも多くＣＰＵリソースを使用してもよい。
【００１９】
サーバアプリケーション１１５によって維持される状態情報１２４は、現在アクティブであるアプリケーションセッションに関する種々のデータを含む。例えば、状態情報１２４は、アプリケーションセッションに現在参加しているユーザ、ユーザに関連付けられた状態情報、アプリケーションセッションに関連付けられたセキュリティ許可（例えば、参加できる人または参加できない人）等を追跡してもよい。いくつかの実施形態では、状態情報１２４のうちのいくつかまたはすべてを、アプリケーションセッションが終了するときに破棄してもよい。
【００２０】
データストア１１２に格納されたデータは、例えば、アプリケーション１２７、リソース利用プロファイル１２８、ビデオエンコーダ１２９、ラッパ１３０、保存された状態データ１３３、ユーザデータ１３６、およびおそらくは他のデータを含む。アプリケーション１２７は、アプリケーション１１８として開始されるように利用可能であるアプリケーションのライブラリに相当する。アプリケーション１２７は、コンピューティングデバイス１０３内の実行可能なコードに相当してもよい。あるいは、アプリケーション１２７は、別の種類のデバイス内で実行可能であるがコンピューティングデバイス１０３内では実行不可能であるコードに相当してもよい。かかるアプリケーション１２７は、「バイナリ」、読み込み専用メモリイメージ（ＲＯＭ）、および他の用語で称されてもよい。特定のアプリケーション１２７を、複数のアプリケーションセッションのために、アプリケーション１１８の複数のインスタンスとして実行してもよい。
【００２１】
リソース利用プロファイル１２８は、アプリケーション１２７のそれぞれについて、それぞれのリソース利用プロファイル１２８を記述する。各リソース利用プロファイル１２８は、それぞれのアプリケーション１２７が、より多くのＣＰＵリソースまたはＧＰＵリソースを使用する傾向があるどうかを示す。いくつかのアプリケーション１２７は、よりＣＰＵ集約的である傾向がある一方で、他のアプリケーション１２７は、よりＧＰＵ集約的である傾向がある。例えば、リソース利用プロファイル１２８は、典型的にはそれぞれのアプリケーション１２７によって消費されるＣＰＵまたはＧＰＵのパーセンテージを示してもよい。エミュレーションアプリケーションと共にアプリケーション１２７を実行する場合、リソース利用プロファイル１２８は、さらに、エミュレーションアプリケーションによって消費されるリソースを反映してもよい。いくつかの実施形態において、リソース利用プロファイル１２８は、さらに、ラッパ１３０によって消費されるリソースを反映してもよい。種々の実施形態において、リソース利用プロファイル１２８は、アプリケーション１２７のメモリ消費プロファイルについて記述してもよい。
【００２２】
ビデオエンコーダ１２９は、コンピューティングデバイス１０３に採用されてもよい種々の種類のビデオエンコーダ１１９に相当する。いくつかのビデオエンコーダ１２９は、例えば、Ｈ．２６４、ＭＰＥＧ−４、ＭＰＥＧ−２、および／または他のフォーマット等の指定のフォーマットに相当してもよい。ＧＰＵでいくつかのビデオエンコーダ１２９を実行してもよく、ＣＰＵでいくつかのビデオエンコーダ１２９を実行してもよく、ＧＰＵおよびＣＰＵの両方でいくつかのビデオエンコーダ１２９を実行してもよい。ラッパ１３０は、種々の種類のラッパ１２１を実装する実行可能なコードに相当する。ラッパ１３０は、コンピューティングデバイス１０３において実行可能であり、複数のアプリケーションセッションのために、ラッパ１２１の複数のインスタンスとして実行されてもよい。
【００２３】
保存された状態データ１３３は、アプリケーション１１８によって保存されたアプリケーション状態に相当する。アプリケーション１１８は視覚化された環境で実行されるため、アプリケーション１１８は、状態情報を仮想的な位置に書き込んでもよく、これは、次いで、保存された状態データ１３３としてデータストア１１２に格納するためにマッピングされる。保存された状態データ１３３は、アプリケーション１１８によって通常保存されるデータに相当してもよい、または、任意の時点で回復（ｒｅｓｕｍｅ）されてもよいアプリケーション１１８のメモリイメージに相当してもよい。ユーザデータ１３６は、例えば、セキュリティ証明書、アプリケーション設定、請求情報、ユーザによって開始されるアプリケーションセッションに参加することが許可されている他のユーザのリスト等のアプリケーション１１８のユーザに関する種々のデータを含む。
【００２４】
クライアント１０６は、ネットワーク１０９に結合されてもよい複数のクライアントデバイスを表している。クライアント１０６は、地理的に散らばっていてもよい。クライアント１０６は、例えば、コンピュータシステム等のプロセッサベースのシステムを備えてもよい。かかるコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレイヤ、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子書籍リーダ、または同様の機能を有する他のデバイスの形態で実施されてもよい。
【００２５】
クライアント１０６は、ディスプレイ１３９を含んでもよい。ディスプレイ１３９は、例えば、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）画面、ガスプラズマベースのフラットパネルディスプレイ、ＬＣＤプロジェクタ、または他の種類のディスプレイデバイス等の１つ以上のデバイスを備えてもよい。クライアント１０６は、１つ以上の入力デバイス１４２を含んでもよい。入力デバイス１４２は、例えば、キーボード、マウス、ジョイスティック、加速度計、レーザーガン、ゲームコントローラ、タッチパッド、タッチスティック、プッシュボタン、光センサ、マイクロフォン、ウェブカム、および／またはユーザ入力を提供することができる任意の他のデバイス等のデバイスを備えてもよい。
【００２６】
クライアント１０６は、クライアントアプリケーション１４５および／または他のアプリケーション等の種々のアプリケーションを実行するように構成されてもよい。クライアントアプリケーション１４５は、ユーザが、コンピューティングデバイス１０３において実行されるアプリケーション１１８を開始、参加、プレイ、あるいはこれと相互にやりとりができるように実行される。このため、クライアントアプリケーション１４５は、入力デバイス１４２のうちの１つ以上によって、ユーザによって提供される入力をキャプチャし、入力データ１２２としてネットワーク１０９によりコンピューティングデバイス１０３へこの入力を送信するように構成される。
【００２７】
クライアントアプリケーション１４５は、コンピューティングデバイス１０３からネットワーク１０９上でビデオデータ１２３を取得し、ディスプレイ１３９上で画面１４８をレンダリングするようにさらに構成される。このため、クライアントアプリケーション１４５は、ビデオエンコーダ１１９によって生成されたビデオストリームをプレイするために１つ以上のビデオおよびオーディオプレイヤを含んでもよい。一実施形態では、クライアントアプリケーション１４５は、ブラウザアプリケーション内にプラグインを備える。クライアント１０６は、例えば、ブラウザアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および／または他のアプリケーション等のクライアントアプリケーション１４５以外のアプリケーションを実行するように構成されてもよい。
【００２８】
次に図２を参照すると、本開示の一実施形態に従うコンピューティングデバイス１０３の略ブロック図が示される。コンピューティングデバイス１０３は、例えば、そのすべてがローカルインタフェース２０９に結合される、プロセッサ２０３、メモリ２０６、および１つ以上のグラフィックスデバイス２０７を有する少なくとも１つのプロセッサ回路を含む。このため、コンピューティングデバイス１０３は、例えば、少なくとも１つのサーバコンピュータまたは同様のデバイスを備えてもよい。ローカルインタフェース２０９は、理解されるように、例えば、添付のアドレス／制御バスまたは他のバス構造を有するデータバスを備えてもよい。グラフィックスデバイス２０７は、１つ以上のグラフィックスプロセッサ２１２を含む、高性能のグラフィックスハードウェアに相当してもよい。市販のグラフィックスプロセッサ２１２の非制限的な例は、ＮＶＩＤＩＡ（登録商標）Ｔｅｓｌａシリーズを含む。グラフィックスデバイス２０７は、コンピューティングデバイス１０３において実行されるアプリケーション１１８に相当するグラフィックスをレンダリングするように構成される。一実施形態では、グラフィックスデバイス２０７は、専用のハードウェアビデオエンコーダに相当してもよい。
【００２９】
プロセッサ２０３によって実行可能なデータおよびいくつかのコンポーネントの両方がメモリ２０６に格納される。特に、サーバアプリケーション１１５、アプリケーション１１８、ビデオエンコーダ１１９、ラッパ１２１、およびおそらくは他のアプリケーションがメモリ２０６に格納され、プロセッサ２０３によって実行可能である。さらに、データストア１１２および他のデータを、メモリ２０６に格納してもよい。加えて、オペレーティングシステムをメモリ２０６に格納してもよく、プロセッサ２０３によって実行可能であってもよい。
【００３０】
理解されるように、メモリ２０６に格納され、プロセッサ２０３によって実行可能な他のアプリケーションが存在してもよいことが理解される。本明細書に記載される任意のコンポーネントがソフトウェアの形態で実装される場合、例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ、Ｄｅｌｐｈｉ（登録商標）、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語等の多数のプログラミング言語のうちの任意の１つを採用してもよい。
【００３１】
次に、図１および図２の両方を参照し、ネットワーク設定された環境１００の種々のコンポーネントの動作について概略的に説明する。まず、クライアント１０６において、ユーザは、サーバアプリケーション１１５へアプリケーション１１８を開始するリクエストを送信する。サーバアプリケーション１１５は、データストア１１２から相当するアプリケーション１２７およびラッパ１３０を取得する。サーバアプリケーション１１５は、次いで、相当するラッパ１２１のアプリケーション１１８を開始する。サーバアプリケーション１１５は、状態情報１２４内のアプリケーションの状態を追跡してもよい。
【００３２】
アプリケーション１１８を、一部、アプリケーション１１８に関連付けられたリソース利用プロファイル１２８に基づいて、コンピューティングデバイス１０３のうちの指定の１つで開始してもよい。リソース利用プロファイル１２８は、アプリケーション１１８が、グラフィックスプロセッサ２１２のリソースと比較して、プロセッサ２０３のより多くのリソースを使用する傾向があることを示してもよい。あるいは、リソース利用プロファイル１２８は、アプリケーション１１８が、プロセッサ２０３のリソースと比較して、グラフィックスプロセッサ２１２のより多くのリソースを使用する傾向があることを示してもよい。
【００３３】
このため、サーバアプリケーション１１５は、アプリケーション１１８を、コンピューティングデバイス１０３のうちの１つのリソース負荷に従ってコンピューティングデバイス１０３のうちの指定の１つと一致させることができてもよい。非制限的な例として、ＣＰＵ集約的である傾向があるアプリケーション１１８を、大量のＣＰＵ容量を有するコンピューティングデバイス１０３に割り当ててもよい。別の非制限的な例として、ＧＰＵ集約的である傾向があるアプリケーション１１８を、大量のＧＰＵ容量を有するコンピューティングデバイス１０３に割り当ててもよい。一実施形態では、アプリケーション１１８を、コンピューティングデバイス１０３における閾値範囲内のほぼ均等なＧＰＵおよびＣＰＵ利用を維持するように割り当ててもよい。さらに、使用されているコンピューティングデバイス１０３の数を最小限にするために、アプリケーション１１８を、リソース利用を最大限にするように割り当ててもよい。
【００３４】
加えて、ビデオエンコーダ１１９を、プロセッサ２０３またはグラフィックスプロセッサ２１２のいずれかで実行するように構成してもよい。一実施形態では、ビデオエンコーダ１１９を、相当するアプリケーション１１８から逆のリソースを使用するように構成する。例えば、アプリケーション１１８がＣＰＵ集約的である場合、ビデオエンコーダ１１９を、ＧＰＵを使用するように構成してもよい。逆に、アプリケーション１１８がＧＰＵ集約的である場合、ビデオエンコーダ１１９を、ＣＰＵを使用するように構成してもよい。したがって、ビデオエンコーダ１１９を含む、アプリケーション１１８に関連付けられたリソース利用を一定にし得る。
【００３５】
さらに、少なくとも一部において、コンピューティングデバイス１０３のリソース負荷に基づいて、または一定の基準が適合するときに、現在実行中のビデオエンコーダ１１９を、ＣＰＵからＧＰＵへおよびその逆に伝送してもよい。非制限的な例として、ＧＰＵで実行中のビデオエンコーダ１１９を、現行のＧＰＵ負荷が閾値に適合するときに、ＣＰＵで実行するように再構成してもよい。別の非制限的な例として、ＣＰＵで実行中のビデオエンコーダ１１９を、現行のＣＰＵ負荷が閾値に適合するときに、ＧＰＵで実行するように再構成してもよい。
【００３６】
ビデオエンコーダ１１９のかかる転送は、仮想化レイヤによって促進されてもよい。かかる仮想化レイヤによって、例えば、ビデオエンコーダ１１９が仮想デバイスで実行される、または、プロセッサ２０３またはグラフィックスプロセッサ２１２のいずれかにマップされてもよい仮想符号化デバイスを含むように見せてもよい。ビデオエンコーダ１１９を再構成および転送することにより、プロセッサ２０３とグラフィックスプロセッサ２１２との間の負荷平衡が、さらなるアプリケーション１１８および関連付けられたアプリケーションを収容するように変化してもよい。一実施形態では、ビデオエンコーダ１１９の実行が転送される場合、ビデオエンコーダ１１９によって生成されたビデオストリームは中断されない。
【００３７】
種々の実施形態において、例えば、サーバ側のリソース利用を管理するためにビデオエンコーダ１１９によって生成されたビデオストリームの品質を調整してもよい。ビデオストリームの品質は、ネットワーク１０９上のトラフィックを考慮するようにさらに調整されてもよい。さらに、ビデオストリームの品質は、ビデオストリームを復号化するクライアント１０６の能力により、調整されてもよい。
【００３８】
ラッパ１２１は、コンピューティングデバイス１０３の１つ以上のリソースを仮想化するアプリケーション１１８の視覚化された環境を提供する。かかるリソースは、排他的リソース、つまりアプリケーション１１８が排他的アクセスをリクエストするリソースを含んでもよい。例えば、通常、１つのアプリケーションしか全画面アクセスを有することができないため、アプリケーション１１８は、排他的リソースであるビデオデバイスからの全画面アクセスをリクエストしてもよい。さらに、ラッパは、コンピューティングデバイス１０３に実際には存在しなくてもよい、例えば、キーボード、マウス等の入力デバイスを仮想化してもよい。種々の実施形態において、ラッパ１２１は、仮想マシンに相当してもよい、および／または仮想マシン内においてラッパ１２１を実行してもよい。
【００３９】
クライアント１０６において、ユーザは、クライアント１０６の入力デバイス１４２の使用によって、アプリケーション１１８の入力コマンドを入力する。非制限的な例として、ユーザは、左マウスボタンを押してもよい。したがって、クライアントアプリケーション１４５は、入力データ１２２内のネットワーク１０９上を伝送されてもよいフォーマットで、入力コマンドを符号化するように機能する。サーバアプリケーション１１５は、入力コマンドを受信し、これをラッパ１２１に受け渡す。ラッパ１２１は、次いで、仮想化されたマウスによって、アプリケーション１１８に対し、左マウスボタン押下を行う。いくつかの実施形態において、クライアント１０６によって生成されたものとは異なる入力コマンドがアプリケーション１１８に表示されてもよい。非制限的な例として、ユーザがマウスダウンコマンドを送信し、クライアントアプリケーション１４５が集中できなくなる場合、ラッパ１２１は、マウスダウンコマンド、次にマウスアップコマンドを送信するように構成されてもよい。種々の実施形態において、入力コマンドはできる限り早くラッパ１２１に中継されてもよい、または別のアプローチに従い、入力コマンドがラッパ１２１によって行列待ちとなり（ｑｕｅｕｅｄ）、行列から順次、アプリケーション１１８へ中継されてもよい。
【００４０】
一方で、アプリケーション１１８のグラフィックス出力は、ラッパ１２１によってキャプチャされ、ビデオストリームに符号化される。さらに、アプリケーション１１８のオーディオ出力がキャプチャされ、ビデオストリームに多重化されてもよい。ビデオストリームは、ビデオデータ１２３として、サーバアプリケーション１１５によってネットワーク１０９上をクライアント１０６へと伝送される。クライアントアプリケーション１４５は、ビデオデータ１２３を取得し、これを画面１４８内のディスプレイ１３９でプレイする。
【００４１】
種々の実施形態により、クライアント１０６内の１種類の入力デバイス１４２によって生成された入力を、全く異なる種類の仮想入力デバイスによって、アプリケーション１１８へ提供される入力コマンドへと、ラッパ１２１によって変化させることを可能にする。非制限的な例として、クライアント１０６内の加速度計によって生成された入力は、仮想マウスによって提供される入力へ、ラッパ１２１によって変換されてもよい。このため、アプリケーション１１８が実装されたときに考慮されなかった可能性のあるアプリケーション１１８への入力の提供に、完全に異なる種類の入力デバイス１４２を使用してもよい。
【００４２】
さらに、アプリケーション１１８のハードウェア要件からクライアント１０６が分離されるため、ネットワーク１０９で許容可能な帯域幅およびレイテンシを有するビデオのストリーミングを可能にする多様な種類のクライアント１０６上で、アプリケーション１１８を使用してもよい。例えば、実質的なグラフィックスレンダリングリソースを必要とするゲームが、スマートフォンであるクライアント１０６上でプレイされてもよい。このため、クライアント１０６は、アプリケーション１１８を実行するために必要であり得る複雑な３次元レンダリングを実行するために、高価なグラフィックスハードウェアを含む必要はない。対照的に、コンピューティングデバイス１０３のハードウェアを、最新のおよび最も計算的に集約的なアプリケーション１１８のハードウェア要件に適合するように、必要に応じてアップグレードしてもよい。種々の実施形態において、ビデオエンコーダ１１９によって符号化されたビデオストリームは、ネットワーク１０９においてコンピューティングデバイス１０３とクライアント１０６との間の接続のビットレートおよび／または他の特性に従ってスケールされてもよい。
【００４３】
アプリケーション１１８の別の指定の非制限的な例には、携帯電話アプリケーションを含んでもよい。クライアント１０６において、顧客は、種々の携帯電話の特徴および機能を閲覧してもよい。ラッパ１２１は、携帯電話オペレーティングシステム内の携帯電話アプリケーションを実行してもよい。携帯電話アプリケーションによって生成されたビデオ信号を、ビデオストリームとしてクライアント１０６へキャプチャおよび送信してもよい。したがって、ユーザは、指定の携帯電話ハードウェアがなくても、任意のクライアント１０６内で実際の携帯電話アプリケーションをテストしたりこれと相互にやりとりしたりすることができる。
【００４４】
本開示の原則は、プロセッサ２０３および／またはグラフィックスプロセッサ２１２を使用してもよい種々のアプリケーションに適用してもよいことが理解される。さらに、ビデオエンコーダ１１９は、アプリケーション１１８と共に動作する別のアプリケーションの指定の例として記載されているが、本開示の原則は、プロセッサ２０３またはグラフィックスプロセッサ２１２のいずれかの上で実行するように構成されてもよい種々のアプリケーションに適用されてもよいことが理解される。別の非制限的な例は、動画またはテレビで使用するためにグラフィックスをレンダリングするアプリケーションを伴ってもよい。
【００４５】
続いて図３を参照すると、種々の実施形態に従い、サーバアプリケーション１１５の一部の動作の一例を提供するフローチャートが示される。図３のフローチャートは、本明細書に記載されるように、サーバアプリケーション１１５の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的な構成の一例を提供するにすぎないことが理解される。代替として、図３のフローチャートは、１つ以上の実施形態に従うコンピューティングデバイス１０３（図１）に実装された方法のステップの一例を表すものとして表示されてもよい。
【００４６】
まずボックス３０３を参照すると、サーバアプリケーション１１５は、クライアント１０６（図１）から新しいアプリケーション１１８（図１）を開始するリクエストを取得する。ボックス３０６において、サーバアプリケーション１１５は、アプリケーション１１８に関連付けられたリソース利用プロファイル１２８（図１）を判定する。ボックス３０９において、サーバアプリケーション１１５は、リソース利用プロファイル１２８から、アプリケーション１１８がＧＰＵ集約的として分類されるかどうかを判定する。
【００４７】
アプリケーション１１８がＧＰＵ集約的として分類されない場合、アプリケーション１１８はＣＰＵ集約的として分類されてもよく、サーバアプリケーション１１５は、ボックス３１２に進む。ボックス３１２において、サーバアプリケーション１１５は、プロセッサ２０３（図２）ではなく、グラフィックスプロセッサ２１２（図２）で実行されるアプリケーション１１８のためにビデオエンコーダ１１９（図１）を構成する。ボックス３１５において、サーバアプリケーション１１５は、ビデオエンコーダ１１９および任意のラッパ１２１（図１）と共に、アプリケーション１１８のインスタンスを実行するために、コンピューティングデバイス１０３のうちの１つを割り当てる。コンピューティングデバイス１０３がクラウドコンピューティングリソースを備える場合、アプリケーション１１８が割り当てられる指定のコンピューティングデバイス１０３は、クラウドコンピューティングリソース内に仮想マシンインスタンスを備えてもよい。コンピューティングデバイス１０３へアプリケーション１１８を割り当てる機能が、さらに、図４のフローチャートに関連して記載される。その後、サーバアプリケーション１１５の一部が終了する。
【００４８】
ボックス３０９において、アプリケーション１１８がＧＰＵ集約的として分類される場合、サーバアプリケーション１１５は、ボックス３１８に進み、グラフィックスプロセッサ２１２ではなくプロセッサ２０３内で実行されるアプリケーション１１８のビデオエンコーダ１１９を構成する。次いで、サーバアプリケーション１１５は、引き続きボックス３１５に進み、ビデオエンコーダ１１９および任意のラッパ１２１と共に、アプリケーション１１８のインスタンスを実行するために、コンピューティングデバイス１０３のうちの１つを割り当てる。その後、サーバアプリケーション１１５の一部が終了する。
【００４９】
次に図４を参照すると、種々の実施形態に従うサーバアプリケーション１１５の別の一部の動作の別の例を提供するフローチャートが示される。特に、図４に示される機能は、指定のコンピューティングデバイス１０３（図１）にアプリケーション１１８（図１）の新しいインスタンスを割り当てる一例を提供する。図４のフローチャートは、本明細書に記載されるように、サーバアプリケーション１１５の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的構成の一例を提供するにすぎないことが理解される。代替として、図４のフローチャートは、１つ以上の実施形態に従う、コンピューティングデバイス１０３において実装された方法のステップの一例を示すものと考えられてもよい。
【００５０】
まず、ボックス４０３において、サーバアプリケーション１１５は、コンピューティングデバイス１０３のリソース利用状態を判定する。コンピューティングデバイス１０３がクラウドコンピューティングリソースを備える場合、クラウドコンピューティングリソース内で実行中の仮想マシンインスタンスについて、リソース利用状態が判定されてもよい。リソース利用状態は、１つ以上のプロセッサ２０３（図２）に関連付けられた負荷、１つ以上のグラフィックスプロセッサ２１２（図２）に関連付けられた負荷、および／または他のリソース利用情報を示してもよい。ボックス４０４において、サーバアプリケーション１１５は、特定のアプリケーション１１８（図１）を実行するために最も適したコンピューティングデバイス１０３を判定する。例えば、アプリケーション１１８は、非常に高いグラフィックスレンダリング要求を有してもよく、優れたハードウェアベースのグラフィックス加速度で構成されるコンピューティングデバイス１０３は、アプリケーション１１８の実行に最も適していてもよい。
【００５１】
ボックス４０６において、サーバアプリケーション１１５は、現在アプリケーション１１８に割り付けられているコンピューティングデバイス１０３のうちの任意の１つが、アプリケーション１１８の新しいインスタンスを収容するために利用可能な容量を有するかどうかを判定する。一実施形態では、サーバアプリケーション１１５は、アプリケーション１１８に関連付けられた予期されるリソース消費量を判別するために、リソース利用プロファイル１２８（図１）を調査してもよい。別の実施形態において、サーバアプリケーション１１５は、アプリケーション１１８を実行するために必要なコンピューティング容量の判定において、参照リソース消費量を用いてもよい。
【００５２】
アプリケーション１１８に関連付けられたビデオエンコーダ１１９（図１）がグラフィックスプロセッサ２１２またはプロセッサ２０３で実行されるように構成されてもよいかどうかにより、アプリケーション１１８を、ＣＰＵおよびＧＰＵ負荷のさまざまな組み合わせで、コンピューティングデバイス１０３で実行できるようにしてもよい。換言すれば、コンピューティングデバイス１０３がより利用可能なＣＰＵリソースを有する場合、プロセッサ２０３で実行されるようにビデオエンコーダ１１９を構成してもよい。逆に、コンピューティングデバイス１０３がより利用可能なＧＰＵリソースを有する場合、グラフィックスプロセッサ２１２で実行されるようにビデオエンコーダ１１９を構成してもよい。
【００５３】
コンピューティングデバイス１０３が利用可能な容量を有する場合、サーバアプリケーション１１５は、ボックス４０９において利用可能な容量を有するコンピューティングデバイス１０３で実行されるアプリケーション１１８を割り当てる。一実施形態では、現行のＧＰＵ負荷がＧＰＵ利用の最大閾値未満である場合にコンピューティングデバイス１０３を選択してもよく、アプリケーション１１８に関連付けられたリソース利用プロファイルは、アプリケーション１１８がＣＰＵリソースよりも多くＧＰＵリソースを使用する傾向があることを示す。あるいは、現行のＣＰＵ負荷がＣＰＵ利用の最大閾値未満である場合に、コンピューティングデバイス１０３を選択してもよく、アプリケーション１１８に関連付けられたリソース利用プロファイルは、アプリケーション１１８がＧＰＵリソースよりも多くＣＰＵリソースを使用する傾向があることを示す。そのため、プロセッサ２０３および／またはグラフィックスプロセッサ２１２の利用を最大限にすることを目的として、アプリケーション１１８をコンピューティングデバイス１０３に割り付けてもよい。
【００５４】
一実施形態では、現行のＧＰＵ負荷がＧＰＵ利用の最大閾値に適合するときにコンピューティングデバイス１０３が選択されてもよく、アプリケーション１１８に関連付けられたリソース利用プロファイルは、アプリケーション１１８がＧＰＵリソースよりも多くＣＰＵリソースを使用する傾向があることを示す。あるいは、現行のＣＰＵ負荷がＣＰＵ利用の最大閾値に適合するときにコンピューティングデバイス１０３が選択されてもよく、アプリケーション１１８に関連付けられたリソース利用プロファイルは、アプリケーション１１８がＣＰＵリソースよりも多くＧＰＵリソースを使用する傾向があることを示す。したがって、現在、プロセッサ２０３またはグラフィックスプロセッサ２１２のいずれかに十分な負荷がかかっている場合には、他のプロセッサの空き容量を使用してもよい。アプリケーション１１８がコンピューティングデバイス１０３に割り当てられると、サーバアプリケーション１１５の一部が終了する。
【００５５】
しかしながら、サーバアプリケーション１１５が、ボックス４０６において、アプリケーション１１８に現在割り付けられているコンピューティングデバイス１０３のいずれも、アプリケーション１１８の新しいインスタンスを収容するために利用可能な容量を有していないことを判定する場合、サーバアプリケーション１１５は、代わりにボックス４１２に移動する。ボックス４１２において、サーバアプリケーション１１５は、再構成される場合にコンピューティングデバイス１０３のうちのいずれかが利用可能な容量を有するかどうかを判定する。非制限的な例として、コンピューティングデバイス１０３で実行中のビデオエンコーダ１１９は、ビデオエンコーダ１１９の実行により、グラフィックスプロセッサ２１２からプロセッサ２０３へ、またその反対に伝送することを可能にする仮想化レイヤによって実行してもよい。かかる再構成により、特定のアプリケーション１１８について十分な処理容量が利用可能になる（ｆｒｅｅｄ  ｕｐ）ことを可能にしてもよい。
【００５６】
サーバアプリケーション１１５が、再構成される場合にコンピューティングデバイス１０３が利用可能な容量を有すると判定する場合に、サーバアプリケーション１１５はボックス４１５に移動し、アプリケーション１１８の新しいインスタンスを収容するために、コンピューティングデバイス１０３上で実行されるビデオエンコーダ１１９を再構成する。ボックス４１８において、サーバアプリケーション１１５は、再構成されていたコンピューティングデバイス１０３へアプリケーション１１８の新しいインスタンスを割り当てる。その後、サーバアプリケーション１１５の一部が終了する。
【００５７】
サーバアプリケーション１１５が、代わりに、再構成される場合においてもコンピューティングデバイス１０３は利用可能な容量を有さないことをボックス４１２において判定すると、サーバアプリケーション１１５は、ボックス４２１に進む。ボックス４２１において、サーバアプリケーション１１５は、アプリケーション１１８を収容するために別のコンピューティングデバイス１０３を構成または割り付ける。換言すれば、コンピューティングデバイス１０３のうちの他の割り付けられているものがアプリケーション１１８を収容するために十分な処理リソースを有しない場合に、コンピューティングデバイス１０３のうちの割り付けられていないものがアプリケーション１１８に選択される。
【００５８】
コンピューティングデバイス１０３がクラウドコンピューティングリソースを備える場合、サーバアプリケーション１１５は、アプリケーション１１８を収容するために新しい仮想マシンインスタンスを構成してもよい。既存のコンピューティングデバイス１０３の利用可能な容量が先に使用されるため、さらなるコンピューティングデバイス１０３の割り付けは最小化され得るため、コストが削減される。ボックス４２４において、サーバアプリケーション１１５は、新しく割り付けられたコンピューティングデバイス１０３で実行されるアプリケーション１１８の新しいインスタンスを割り当てる。その後、サーバアプリケーション１１５の一部が終了する。
【００５９】
再び図２を参照すると、メモリ２０６に多数のソフトウェアコンポーネントが格納され、プロセッサ２０３によって実行可能である。この点において、「実行可能な」という語は、プロセッサ２０３によって最終的に実行できる形態であるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ２０６のランダムアクセス部分にロードすることができ、かつプロセッサ２０３によって実行できるフォーマットのマシンコード、メモリ２０６のランダムアクセス部にロードすることができ、かつプロセッサ２０３によって実行できるオブジェクトコード等の適正なフォーマットで表現されてもよいソースコード、またはプロセッサ２０３等によって実行されるメモリ２０６のランダムアクセス部において命令を生成するために別の実行可能なプログラムによって解釈されてもよいソースコードに変換することができる、コンパイルされたプログラムであってもよい。実行可能なプログラムは、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み込み専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）等の光ディスク、フロッピードライブ、磁気テープ、または他のメモリコンポーネントを含む、メモリ２０６の任意の部分またはコンポーネントに格納されてもよい。
【００６０】
メモリ２０６は、揮発および不揮発メモリ、ならびにデータ格納コンポーネントの両方を含むものとして、本明細書で定義されている。揮発コンポーネントは、電力喪失の際にデータ値を保持しないコンポーネントである。不揮発コンポーネントは、電力喪失の際にデータを保持するコンポーネントである。このため、メモリ２０６は、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み込み専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダによってアクセスされるメモリカード、関連付けられたフロッピーディスクドライブによってアクセスされるフロッピーディスク、光ディスクドライブによってアクセスされる光ディスク、適切なテープドライブによってアクセスされる磁気テープ、および／または他のメモリコンポーネント、あるいはこれらのメモリコンポーネントのうちの任意の２つ以上の組み合わせを含んでもよい。加えて、ＲＡＭは、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）、および他のかかるデバイスを含んでもよい。ＲＯＭは、例えば、プログラム可能な読み込み専用メモリ（ＰＲＯＭ）、消去可能なプログラム可能な読み込み専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能な読み込み専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリデバイスを含んでもよい。
【００６１】
さらに、プロセッサ２０３は複数のプロセッサ２０３を表してもよく、メモリ２０６は、それぞれ並列処理回路で動作する複数のメモリ２０６を表してもよい。かかる場合において、ローカルインタフェース２０９は、複数のプロセッサ２０３の任意の２つの間、任意のプロセッサ２０３とメモリ２０６のうちのいずれかとの間、またはメモリ２０６の任意の２つの間等の通信を促進する適切なネットワーク１０９（図１）にしてもよい。ローカルインタフェース２０９は、例えば、負荷平衡化の実行を含む、この通信を統合するように設計されたさらなるシステムを備えてもよい。プロセッサ２０３は、電気的またはいくつかの他の利用可能な構成であってもよい。
【００６２】
本明細書に記載されるサーバアプリケーション１１５、アプリケーション１１８、ビデオエンコーダ１１９、ラッパ１２１、および他の種々のシステムは、上記に記載されるように、汎用ハードウェアによって実行されるソフトウェアまたはコードで実施されてもよいが、代替として、同じものを、さらに、専用のハードウェアまたはソフトウェア／汎用ハードウェアおよび専用ハードウェアの組み合わせで実施してもよい。専用のハードウェアで実施される場合、それぞれは、多数の技術のいずれか１つまたは組み合わせを採用する回路またはステートマシンとして実装可能である。これらの技術は、１つ以上のデータ信号の適用時に種々の論理機能を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途向け集積回路、または他のコンポーネント等を含んでもよいが、これらに制限されない。かかる技術は、概して当業者には公知であるため、本明細書において詳細に記載しない。
【００６３】
図３および図４のフローチャートは、サーバアプリケーション１１５の一部の実装の機能および動作を示す。ソフトウェアで実施される場合、各ブロックは、指定された論理機能を実装するためにプログラム命令を備えるコードのモジュール、セグメント、または部分を表してもよい。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサ２０３等の適した実行システムによって認識可能な多数の命令を備えるプログラムミング言語またはマシンコードで記述される人間が読むことのできるステートメントを備えるソースコードの形態で実施されてもよい。マシンコードは、ソースコード等から変換されてもよい。ハードウェアにおいて実施される場合、各ブロックは、指定された論理機能を実装するために、回路または多数の相互接続された回路を表してもよい。
【００６４】
図３および図４のフローチャートは指定の実行の順序を示すが、実行の順序は、図示されているものとは異なってもよいことが理解される。例えば、２つ以上のブロックの実行の順序は、示される順序に対してその通りでなくてもよい。さらに、図３および図４に連続して示される２つ以上のブロックを、同時にまたは部分的に同時に実行してもよい。さらに、いくつかの実施形態において、図３および図４に示されるブロックのうちの１つ以上をスキップまたは省略してもよい。加えて、実用性の向上、課金、パフォーマンス計測、またはトラブルシューティング支援の提供等のために、任意の数のカウンタ、状態変数、警告セマフォ（ｗａｒｎｉｎｇ  ｓｅｍａｐｈｏｒｅｓ）、またはメッセージを、本明細書に記載される論理の流れに追加してもよい。すべてのかかる変形は、本開示の範囲内にあると理解される。
【００６５】
さらに、ソフトウェアまたはコードを備える、サーバアプリケーション１１５、アプリケーション１１８、ビデオエンコーダ１１９、およびラッパ１２１を含む、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ２０３等の命令実行システムによって、またはこれに関連して、任意の持続的コンピュータ可読媒体で実施することができる。この意味で、論理は、例えば、コンピュータ可読媒体からフェッチでき、命令実行システムによって実行できる命令および宣言を含むステートメントを備えてもよい。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって、またはこれと共に使用するために、本明細書に記載されている論理またはアプリケーションを含有、格納または維持することができる任意の媒体にすることができる。コンピュータ可読媒体は、例えば、磁気、光、または半導体媒体等の多くの物理的媒体のうちの任意の１つを含むことができる。適したコンピュータ可読媒体のより具体的な例は、磁気テープ、磁気フロッピーディスケット、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光ディスクを含むが、これらに制限されない。さらに、コンピュータ可読媒体は、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）および動的ランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含む、ランダムアクセスメモリ（ＲＡＭ）であってもよい。加えて、コンピュータ可読媒体は、読み込み専用メモリ（ＲＯＭ）、プログラム可能な読み込み専用メモリ（ＰＲＯＭ）、消去可能なプログラム可能な読み込み専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能な読み込み専用メモリ（ＥＥＰＲＯＭ）、または他の種類のメモリデバイスであってもよい。
【００６６】
付記
付記１．
コンピューティングデバイスにおいて実行可能なプログラムを具現化する持続的コンピュータ可読媒体であって、プログラムは、
クライアントコンピューティングデバイスからクラウドコンピューティングリソースにおいてアプリケーションを実行するリクエストを取得するコードであって、アプリケーションはアプリケーションのライブラリから選択され、アプリケーションのそれぞれはそれぞれのリソース利用プロファイルに関連付けられ、各リソース利用プロファイルは、それぞれのアプリケーションがグラフィックス処理装置（ＧＰＵ）リソースよりも多く中央処理装置（ＣＰＵ）リソースを使用する傾向があるかどうか、またそれぞれのアプリケーションがＣＰＵリソースよりもＧＰＵリソースをより多く使用する傾向があるかどうかを示す、コードと、
少なくとも一部において、マシンインスタンスの現行のＣＰＵ負荷および現行のＧＰＵ負荷と、アプリケーションのリソース利用プロファイルとに基づいて、クラウドコンピューティングリソースからマシンインスタンスを選択するコードと、
マシンインスタンスの少なくとも１つのＣＰＵの代わりに、マシンインスタンスの少なくとも１つのＧＰＵでビデオエンコーダを実行するかどうかを判定するコードであって、ビデオエンコーダは、クライアントへの伝送のために、アプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成される、コードと、
マシンインスタンスにおいてアプリケーションを実行するコードと、
ビデオエンコーダが少なくとも１つのＣＰＵの代わりに少なくとも１つのＧＰＵで実行されることが判定されるときに、少なくとも１つのＧＰＵでビデオエンコーダを実行するコードと、
ビデオエンコーダが少なくとも１つのＧＰＵの代わりに少なくとも１つのＣＰＵで実行されることが判定されるときに、少なくとも１つのＣＰＵでビデオエンコーダを実行するコードと、を備える、持続的コンピュータ可読媒体。
付記２．
プログラムは、
ビデオエンコーダが少なくとも１つのＣＰＵで実行中であり、かつ第１の基準セットが適合するときに、少なくとも１つのＣＰＵから少なくとも１つのＧＰＵへビデオエンコーダの実行を転送するコードと、
ビデオエンコーダが少なくとも１つのＧＰＵで実行中であり、かつ第２の基準セットが適合するときに、少なくとも１つのＧＰＵから少なくとも１つのＣＰＵへビデオエンコーダの実行を転送するコードと、をさらに備える、付記１に記載の持続的コンピュータ可読媒体。
付記３．
少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とを含む少なくとも１つのコンピューティングデバイスと、
少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
少なくとも１つのコンピューティングデバイスにおいて第１のアプリケーションを実行するリクエストを取得する論理と、
第１のアプリケーションに関連付けられたリソース利用プロファイルが、第１のアプリケーションが比較的ＧＰＵ集約的であるよりＣＰＵ集約的であることを示すときに、第１のアプリケーションに関連付けられた第２のアプリケーションを、少なくとも１つのＣＰＵの代わりに少なくとも１つのＧＰＵで実行されるように割り当てる論理と、
リソース利用プロファイルが、第１のアプリケーションが比較的ＣＰＵ集約的であるよりＧＰＵ集約的であることを示すときに、第２のアプリケーションを、少なくとも１つのＧＰＵの代わりに少なくとも１つのＣＰＵで実行されるように割り当てる論理と、を備える、サーバアプリケーションと、を備える、システム。
付記４．
第２のアプリケーションは、第１のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当し、サーバアプリケーションは、ハードウェアビデオエンコーダが利用可能であるときに、少なくとも１つのＣＰＵまたは少なくとも１つのＧＰＵの代わりに、少なくとも１つのコンピューティングデバイスのハードウェアビデオエンコーダにおいてビデオエンコーダを実行する論理をさらに備える、付記３に記載のシステム。
付記５．
第２のアプリケーションの割り当ては、少なくとも一部において、少なくとも１つのＧＰＵの現行の負荷および少なくとも１つのＣＰＵの現行の負荷に基づく、付記３に記載のシステム。
付記６．
第２のアプリケーションの割り当ては、少なくとも一部において、少なくとも１つのＧＰＵの現行の負荷および少なくとも１つのＣＰＵの現行の負荷が互いに閾値だけ異なるかどうかに基づく、付記３に記載のシステム。
付記７．
第１のアプリケーションは、ゲームアプリケーションを含む、付記３に記載のシステム。
付記８．
第１のアプリケーションは、携帯電話アプリケーションを含む、付記３に記載のシステム。
付記９．
第２のアプリケーションは、データ通信ネットワーク上でのクライアントコンピューティングデバイスへの伝送のために、第１のアプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成されるビデオエンコーダを含む、付記３に記載のシステム。
付記１０．
少なくとも１つのコンピューティングデバイスは、クライアントコンピューティングデバイスに含まれていない第１のアプリケーションを実行するための少なくとも１つの機能を含む、付記９に記載のシステム。
付記１１．
リクエストは、アプリケーションのライブラリから第１のアプリケーションを選択し、アプリケーションのうちの少なくとも１つは、比較的ＧＰＵ集約的であるよりＣＰＵ集約的であり、アプリケーションのうちの少なくとも１つは、比較的ＣＰＵ集約的であるよりＧＰＵ集約的である、付記３に記載のシステム。
付記１２．
少なくとも１つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して少なくとも１つのＣＰＵから少なくとも１つのＧＰＵへ第２のアプリケーションの実行を転送する論理を備える、付記３に記載のシステム。
付記１３．
第２のアプリケーションは、第１のアプリケーションの出力からビデオストリームを生成するように構成され、ビデオストリームは第２のアプリケーションの実行が転送されるときに中断されない、付記１２に記載のシステム。
付記１４．
少なくとも１つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して少なくとも１つのＧＰＵから少なくとも１つのＣＰＵへ第２のアプリケーションの実行を転送する論理を備える、付記３に記載のシステム。
付記１５．
少なくとも１つのコンピューティングデバイスは、複数のネットワーク設定されたコンピューティングデバイスを含み、サーバアプリケーションは、
少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つに関連付けられた現行のＧＰＵ負荷および現行のＣＰＵ負荷、ならびにリソース利用プロファイルに基づいて、第１のアプリケーションおよび第２のアプリケーションを実行するためのネットワーク設定されたコンピューティングデバイスのうちの１つを選択する論理をさらに備える、付記３に記載のシステム。
付記１６．
ネットワーク設定されたコンピューティングデバイスは、クラウドコンピューティングリソースに相当する、付記１５に記載のシステム。
付記１７．
サーバアプリケーションは、現行のＣＰＵ負荷がＣＰＵ負荷閾値に適合するときに、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵにおいて実行中の少なくとも１つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵにおいて実行されるように、再構成する論理をさらに備える、付記１５に記載のシステム。
付記１８．
サーバアプリケーションは、現行のＧＰＵ負荷がＧＰＵ負荷閾値に適合するときに、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵにおいて実行中の少なくとも１つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵにおいて実行するように、再構成する論理をさらに備える、付記１５に記載のシステム。
付記１９．
少なくとも１つのコンピューティングデバイスにおいて、第１のアプリケーションを実行するリクエストを取得するステップであって、第１のアプリケーションは、少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とで実行されるように構成され、第１のアプリケーションは、リソース利用プロファイルに関連付けられる、ステップと、
少なくとも１つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つの現行のＧＰＵ負荷および現行のＣＰＵ負荷、ならびにリソース利用プロファイルに基づいて、複数のネットワーク設定されたコンピューティングデバイスのうちの１つを選択するステップと、
ネットワーク設定されたコンピューティングデバイスのうちの１つにおいて、第１のアプリケーションを実行するステップと、を含む、方法。
付記２０．
リソース利用プロファイルは、第１のアプリケーションがＧＰＵリソースよりも多くＣＰＵリソースを使用する傾向があるかどうか、また第１のアプリケーションがＣＰＵリソースよりもＧＰＵリソースを多く使用する傾向があるかどうかを示す、付記１９に記載の方法。
付記２１．
選択するステップは、
少なくとも１つのコンピューティングデバイスにおいて、現行のＧＰＵ負荷がＧＰＵ利用の最大閾値未満であり、リソース利用プロファイルが、第１のアプリケーションがＣＰＵリソースよりもＧＰＵリソースを多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの１つを選択するステップと、
少なくとも１つのコンピューティングデバイスにおいて、現行のＣＰＵ負荷がＣＰＵ利用の最大閾値未満であり、リソース利用プロファイルが、第１のアプリケーションがＧＰＵリソースよりもＣＰＵリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの１つを選択するステップと、をさらに含む、付記１９に記載の方法。
付記２２．
選択するステップは、
少なくとも１つのコンピューティングデバイスにおいて、現行のＧＰＵ負荷がＧＰＵ利用の最大閾値に適合し、リソース利用プロファイルが、第１のアプリケーションがＧＰＵリソースよりもＣＰＵリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの１つを選択するステップと、
少なくとも１つのコンピューティングデバイスにおいて、現行のＣＰＵ負荷がＣＰＵ利用の最大閾値に適合し、リソース利用プロファイルが、第１のアプリケーションがＣＰＵリソースよりもＧＰＵリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの１つを選択するステップと、をさらに含む、付記１９に記載の方法。
付記２３．
選択するステップは、少なくとも１つのコンピューティングデバイスにおいて、他の割り付けられたコンピューティングデバイスのいずれも、第１のアプリケーションを収容するために十分な処理リソースを有しないときに、ネットワーク設定されたコンピューティングデバイスのうちの１つとして、ネットワーク設定されたコンピューティングデバイスのうちの割り付けられていない１つを選択するステップをさらに含む、付記１９に記載の方法。
付記２４．
少なくとも１つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵの代わりに、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵで実行するように、第１のアプリケーションと共に動作する第２のアプリケーションを構成するステップをさらに含む、付記１９に記載の方法。
付記２５．
少なくとも１つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵの代わりに、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵで実行するように、第１のアプリケーションと共に動作する第２のアプリケーションを構成するステップをさらに含む、付記１９に記載の方法。
付記２６．
少なくとも１つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵで実行中の少なくとも１つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵで実行するように構成するステップをさらに含む、付記１９に記載の方法。
付記２７．
少なくとも１つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの１つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＣＰＵで実行中の少なくとも１つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの１つの少なくとも１つのＧＰＵで実行するように構成するステップをさらに含む、付記１９に記載の方法。
付記２８．
少なくとも１つのグラフィックス処理装置（ＧＰＵ）と少なくとも１つの中央処理装置（ＣＰＵ）とを含む少なくとも１つのコンピューティングデバイスと、
少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
少なくとも１つのコンピューティングデバイスで第１のアプリケーションを実行するリクエストを取得する論理と、
少なくとも１つのＣＰＵの現行の負荷および少なくとも１つのＧＰＵの現行の負荷を判定する論理と、
少なくとも一部において、少なくとも１つのＣＰＵの現行の負荷と少なくとも１つのＧＰＵの現行の負荷とに基づいて、第１のアプリケーションに関連付けられた第２のアプリケーションを、少なくとも１つのＣＰＵまたは少なくとも１つのＧＰＵで実行する論理と、を備える、サーバアプリケーションと、を備える、システム。
付記２９．
第２のアプリケーションは、少なくとも一部において、第１のアプリケーションのＣＰＵ消費測定基準およびＧＰＵ消費測定基準を提供するリソース利用プロファイルに基づいて、少なくとも１つのＣＰＵまたは少なくとも１つのＧＰＵで実行される、付記２８に記載のシステム。
付記３０．
第２のアプリケーションは、第１のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当する、付記２８に記載のシステム。
付記３１．
実行する論理は、ハードウェアビデオエンコーダが利用可能であるときに、少なくとも１つのＣＰＵまたは少なくとも１つのＧＰＵの代わりに、少なくとも１つのコンピューティングデバイスのハードウェアビデオエンコーダでビデオエンコーダを実行するようにさらに構成される、付記３０に記載のシステム。
付記３２．
少なくとも１つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して第２のアプリケーションの実行を少なくとも１つのＣＰＵから少なくとも１つのＧＰＵへ転送する論理を備える、付記２８に記載のシステム。
【００６７】
本開示の上記の実施形態は、本開示の原則の明確な理解のために述べられる可能な実装の例にすぎないことが強調されるべきである。多くの変形および修正を、本開示の精神および原則から実質的に逸脱せずに、上記の実施形態に実施してもよい。すべてのかかる修正および変形は、本開示の範囲内に含まれ、以下の特許請求の範囲によって保護されることが意図されている。
【００６８】
[関連する出願の相互参照]
本出願は、２０１０年１２月１４日に出願された米国特許出願第１２／９６７，１７１号の利益を主張し、これは、参照することにより本明細書に組み込まれる。
【図１】
0005745079.tif 000002
【図２】
0005745079.tif 000003
【図３】
0005745079.tif 000004
【図４】
0005745079.tif 000005