"少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとを含む少なくとも1つのコンピューティングデバイスと、前記少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、前記少なくとも1つのコンピューティングデバイスにおいて第1のアプリケーションを実行するリクエストを取得する論理と、前記第1のアプリケーションに関連付けられたリソース利用プロファイルが、前記第1のアプリケーションが比較的CPU集約的であるよりGPU集約的であることを示すときに、前記第1のアプリケーションに関連付けられた第2のアプリケーションを、前記少なくとも1つのCPUの代わりに前記少なくとも1つのGPUで実行されるように割り当てる論理と、前記リソース利用プロファイルが、前記第1のアプリケーションが比較的CPU集約的であるよりGPU集約的であることを示すときに、前記第2のアプリケーションを、前記少なくとも1つのGPUの代わりに前記少なくとも1つのCPUで実行されるように割り当てる論理と、を備える、サーバアプリケーションと、を備える、システム。前記第2のアプリケーションは、前記第1のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当し、前記サーバアプリケーションは、ハードウェアビデオエンコーダが利用可能であるときに、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUの代わりに、前記少なくとも1つのコンピューティングデバイスの前記ハードウェアビデオエンコーダにおいて前記ビデオエンコーダを実行する論理をさらに備える、請求項1に記載のシステム。前記第2のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも1つのGPUの現行の負荷および前記少なくとも1つのCPUの現行の負荷に基づく、請求項1に記載のシステム。前記第2のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも1つのGPUの現行の負荷および前記少なくとも1つのCPUの現行の負荷が互いに閾値だけ異なるかどうかに基づく、請求項1に記載のシステム。前記第2のアプリケーションは、データ通信ネットワーク上でのクライアントコンピューティングデバイスへの伝送のために、前記第1のアプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成されるビデオエンコーダを含む、請求項1に記載のシステム。前記少なくとも1つのコンピューティングデバイスは、前記クライアントコンピューティングデバイスに含まれていない前記第1のアプリケーションを実行するための少なくとも1つの機能を含む、請求項5に記載のシステム。前記リクエストは、アプリケーションのライブラリから前記第1のアプリケーションを選択し、前記アプリケーションのうちの少なくとも1つは、比較的GPU集約的であるよりCPU集約的であり、前記アプリケーションのうちの少なくとも1つは、比較的CPU集約的であるよりGPU集約的である、請求項1に記載のシステム。前記少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも1つのCPUから前記少なくとも1つのGPUへ前記第2のアプリケーションの実行を転送する論理を備える、請求項1に記載のシステム。前記第2のアプリケーションは、前記第1のアプリケーションの出力からビデオストリームを生成するように構成され、前記ビデオストリームは前記第2のアプリケーションの前記実行が転送されるときに中断されない、請求項8に記載のシステム。前記少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも1つのGPUから前記少なくとも1つのCPUへ前記第2のアプリケーションの実行を転送する論理を備える、請求項1に記載のシステム。前記少なくとも1つのコンピューティングデバイスは、複数のネットワーク設定されたコンピューティングデバイスを含み、前記サーバアプリケーションは、少なくとも一部において、前記ネットワーク設定されたコンピューティングデバイスのうちの1つに関連付けられた現行のGPU負荷および現行のCPU負荷、ならびに前記リソース利用プロファイルに基づいて、前記第1のアプリケーションおよび前記第2のアプリケーションを実行するための前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つを選択する論理をさらに備える、請求項1に記載のシステム。前記サーバアプリケーションは、前記現行のCPU負荷がCPU負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのCPUで実行中の少なくとも1つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのGPUで実行されるように、再構成する論理をさらに備える、請求項11に記載のシステム。前記サーバアプリケーションは、前記現行のGPU負荷がGPU負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのGPUで実行中の少なくとも1つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのCPUで実行するように、再構成する論理をさらに備える、請求項11に記載のシステム。少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとを含む少なくとも1つのコンピューティングデバイスと、前記少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、前記少なくとも1つのコンピューティングデバイスにおいて第1のアプリケーションを実行するリクエストを取得する論理と、前記少なくとも1つのCPUの現行の負荷および前記少なくとも1つのGPUの現行の負荷を判定する論理と、少なくとも一部において、前記少なくとも1つのCPUの前記現行の負荷と前記少なくとも1つのGPUの前記現行の負荷とに基づいて、前記第1のアプリケーションに関連付けられた第2のアプリケーションを、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUで実行する論理と、を備える、サーバアプリケーションと、を備えるシステム。前記第2のアプリケーションは、少なくとも一部において、前記第1のアプリケーションのCPU消費測定基準およびGPU消費測定基準を提供するリソース利用プロファイルに基づいて、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUで実行される、請求項14に記載のシステム。CPUとGPUとの間で負荷を平衡化することが所望されている。本開示の技術の一態様は、少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとを含む少なくとも1つのコンピューティングデバイスと、前記少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、前記少なくとも1つのコンピューティングデバイスにおいて第1のアプリケーションを実行するリクエストを取得する論理と、前記第1のアプリケーションに関連付けられたリソース利用プロファイルが、前記第1のアプリケーションが比較的CPU集約的であるよりGPU集約的であることを示すときに、前記第1のアプリケーションに関連付けられた第2のアプリケーションを、前記少なくとも1つのCPUの代わりに前記少なくとも1つのGPUで実行されるように割り当てる論理と、前記リソース利用プロファイルが、前記第1のアプリケーションが比較的CPU集約的であるよりGPU集約的であることを示すときに、前記第2のアプリケーションを、前記少なくとも1つのGPUの代わりに前記少なくとも1つのCPUで実行されるように割り当てる論理と、を備える、サーバアプリケーションと、を備える、システムである。CPUとGPUとの間の負荷の非平衡さを緩和する。図面を参照することにより、本開示の多くの態様をより良く理解することができる。図中の構成要素について、必ずしも拡大縮小の比率は正確ではないが、それよりも、本開示の原則を明確に示すことを重視している。さらに、図面において、同様の参照数字は、複数の図にまたがる対応する部分を指す。本開示は、中央処理装置CPUとグラフィックス処理装置GPUとの間のアプリケーションの負荷平衡化を促進することに関する。例えば、ゲームアプリケーション等のいくつかのアプリケーションは、コンピューティングデバイス内により大きいCPU負荷またはより大きいGPU負荷のいずれかをかける傾向があり得る。換言すれば、いくつかのアプリケーションは、CPU集約的またはGPU集約的のいずれかとして分類されてもよい。本開示の種々の実施形態は、少なくとも一部において、コンピューティングデバイスの現行のCPUおよびGPU負荷、ならびにアプリケーションのCPUおよびGPUリソース利用に基づいて選択されるコンピューティングデバイスで実行するように、アプリケーションを割り当てる。加えて、いくつかのアプリケーション、またはアプリケーションの一部を、少なくとも一部において、コンピューティングデバイスの現行のCPUおよびGPU負荷に基づいて、CPUまたはGPUのいずれかで実行するように割り当ててもよい。したがって、コンピューティングデバイスのCPUおよびGPUリソースは、そうでない場合に可能であるよりも、より完全に利用され得る。以下の記載において、システムおよびそのコンポーネントの概略的な説明、さらに、システムおよびそのコンポーネントの動作の説明を行う。図1を参照すると、種々の実施形態に従う、ネットワーク設定された環境100が示されている。ネットワーク設定された環境100は、ネットワーク109によって1つ以上のクライアント106とデータ通信する1つ以上のコンピューティングデバイス103を含む。ネットワーク109は、例えば、インターネット、イントラネット、エクストラネット、広域ネットワークWAN、ローカルエリアネットワークLAN、有線ネットワーク、無線ネットワーク、または他の適したネットワーク等、あるいは2つ以上のかかるネットワークの任意の組み合わせを含む。コンピューティングデバイス103は、例えば、サーバコンピュータまたはコンピューティング機能を提供する任意の他のシステムを備えてもよい。あるいは、例えば、1つ以上のサーババンクまたはコンピュータバンクあるいは他の配置において配置される複数のコンピューティングデバイス103を採用してもよい。例えば、複数のネットワーク設定されたコンピューティングデバイス103は、共に、クラウドコンピューティングリソース、グリッドコンピューティングリソース、および/または任意の他の分散コンピューティングの配置を備えてもよい。かかるコンピューティングデバイス103は、単一の設置として配置されてもよい、または多くの異なる地理的な位置に分散されてもよい。便宜上、コンピューティングデバイス103は、本明細書では単数で称される。コンピューティングデバイス103が単数で称されていても、上記のように、種々の構成において、複数のコンピューティングデバイス103が採用されてもよいことが理解される。種々の実施形態に従うコンピューティングデバイス103において、種々のアプリケーションおよび/または他の機能を実行してもよい。さらに、コンピューティングデバイス103にアクセス可能なデータストア112に、種々のデータが格納される。データストア112は、理解されるように、複数のデータストア112を表してもよい。例えば、データストア112に格納されたデータは、以下に記載される種々のアプリケーションおよび/または機能エンティティの動作に関連付けられる。コンピューティングデバイス103上で実行されるコンポーネントは、例えば、サーバアプリケーション115、複数のアプリケーション118a、118b...118N、複数のビデオエンコーダ119a、119b...119N、複数のラッパ121a、121b...121N、および本明細書では詳細に記載されていない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能を含む。サーバアプリケーション115は、例えば、ゲームサーバアプリケーションまたは別の種類のアプリケーションセッションサーバに相当してもよい。サーバアプリケーション115は、視覚化された環境を提供するラッパ121内で実行されてもよいアプリケーション118を開始するように実行される。サーバアプリケーション115は、クライアント106から入力データ122を取得し、それぞれのラッパ121に入力データ122を提供するようにさらに実行される。サーバアプリケーション115は、キャプチャされるビデオデータ123をアプリケーション118からクライアント106へ送信するためにさらに実行される。サーバアプリケーション115は、例えば、ハイパーテキスト転送プロトコルHTTP、シンプルオブジェクトアクセスプロトコルSOAP、表現状態転送REST、リアルタイム転送プロトコルRTP、リアルタイムストリーミングプロトコルRTSP、リアルタイムメッセージングプロトコルRTMP、ユーザデータグラムプロトコルUDP、伝送制御プロトコルTCP、および/またはネットワーク109上でデータを通信するための他のプロトコル等の種々のプロトコルによって、クライアント106と通信してもよい。実行中のアプリケーション118に関連付けられた状態情報124を維持するようにサーバアプリケーション115が構成される。アプリケーション118は、例えば、ゲームまたは別の種類のアプリケーションに相当してもよい。非制限的な例として、アプリケーション118は、一人称シューターゲーム、アクションゲーム、アドベンチャーゲーム、パーティゲーム、ロールプレイングゲーム、シミュレーションゲーム、戦略ゲーム、カーシミュレーションゲーム、および/または他の種類のゲームに相当してもよい。アプリケーション118は、汎用コンピューティングデバイスまたは、例えば、ビデオゲームコンソール、ハンドヘルドゲームデバイス、アーケードゲームデバイス等の専用のビデオゲームデバイスでの実行のために元々設計されたゲームであってもよい。アプリケーション118は、さらに、携帯電話アプリケーション、コンピュータ支援設計CADアプリケーション、コンピュータ支援製造CAMアプリケーション、写真操作アプリケーション、ビデオ編集アプリケーション、オフィス生産性アプリケーション、オペレーティングシステムおよび関連付けられたアプリケーション、オペレーティングシステム、アーキテクチャ、およびコンシューマデバイス上に存在しない機能のエミュレータ、ならびに他のアプリケーションおよびアプリケーションの組み合わせに相当してもよい。アプリケーション118は、実行されるデバイスのうちの1つ以上のリソースにアクセスすることを予期してもよい。かかるリソースは、ディスプレイデバイス、入力デバイス、または他のデバイスに相当してもよい。いくつかの場合において、アプリケーション118は、リソースのうちの1つ以上への排他的アクセスをリクエストしてもよいため、他のアプリケーションは特定のリソースへのアクセス権がない可能性がある。種々のアプリケーション118は、CPUリソースより多くのGPUリソース、またはGPUリソースより多くのCPUリソースを使用してもよい。ビデオエンコーダ119は、ネットワーク109によるクライアント106への伝送のために、アプリケーション118によって生成されたビデオ信号をビデオストリームに符号化することができる。ビデオストリームは、アプリケーション118によって生成されたオーディオ信号も含んでもよい。このため、ビデオエンコーダ119は、例えば、MovingPicturesExpertsGroupMPEGエンコーダ、H.264エンコーダ、Flash登録商標ビデオエンコーダ等の種々の種類のビデオおよびオーディオエンコーダを含んでもよい。かかるエンコーダは、例えば、データ縮小、符号化品質、レイテンシ等の要素に従って選択されてもよい。種々のビデオエンコーダ119は、1つ以上のGPUまたは1つ以上のCPUで実行するように構成されてもよい。種々の実施形態において、コンピューティングデバイス103は、ビデオエンコーダ119を実行してもよい1つ以上の専用のハードウェアビデオエンコーダを含んでもよい。利用可能であればかかるハードウェアビデオエンコーダを採用してもよい。ラッパ121は、アプリケーション118の実行のために視覚化された環境を提供するアプリケーションに相当する。特に、ラッパ121は、アプリケーション118がアクセスすることを予期するリソースのうちの1つ以上を仮想化するように構成されてもよい。かかるリソースは、キーボード、マウス、ジョイスティック、ビデオデバイス、音声デバイス等を含んでもよい。このように、ラッパ121は、ラッパ121がキーボード、マウス、または別の種類の入力デバイスをエミュレートするかのように、アプリケーション118へ入力コマンドを提供することができる。異なるアプリケーション118またはアプリケーション118のクラスについて、異なる種類のラッパ121を提供してもよい。非制限的な例として、異なるラッパ121を、OpenGL登録商標、DirectX登録商標、GraphicsDeviceInterfaceGDI等の異なるアプリケーションプログラミングインタフェースAPIを使用するアプリケーション118に提供してもよい。ラッパ121は、実行されるアプリケーション118に特定のオペレーティングシステムを含んでもよい。アプリケーション118が携帯電話アプリケーションを含む場合、例えば、ラッパ121は、アンドロイドオペレーティングシステムまたは別のオペレーティングシステムを含んでもよい。専用のビデオゲームデバイスまたは別の種類のコンピューティングデバイスでの実行のためにアプリケーション118が構成される場合、ラッパ121は、デバイスをエミュレートするエミュレーションアプリケーションを含んでもよい。アプリケーション118によって生成されたビデオ信号を、符号化のためにビデオエンコーダ119へ送達させるためにラッパ121を構成してもよい。アプリケーション118に関連する種々のラッパ121は、CPUリソースよりも多くGPUリソースを、またはGPUリソースよりも多くCPUリソースを使用してもよい。サーバアプリケーション115によって維持される状態情報124は、現在アクティブであるアプリケーションセッションに関する種々のデータを含む。例えば、状態情報124は、アプリケーションセッションに現在参加しているユーザ、ユーザに関連付けられた状態情報、アプリケーションセッションに関連付けられたセキュリティ許可例えば、参加できる人または参加できない人等を追跡してもよい。いくつかの実施形態では、状態情報124のうちのいくつかまたはすべてを、アプリケーションセッションが終了するときに破棄してもよい。データストア112に格納されたデータは、例えば、アプリケーション127、リソース利用プロファイル128、ビデオエンコーダ129、ラッパ130、保存された状態データ133、ユーザデータ136、およびおそらくは他のデータを含む。アプリケーション127は、アプリケーション118として開始されるように利用可能であるアプリケーションのライブラリに相当する。アプリケーション127は、コンピューティングデバイス103内の実行可能なコードに相当してもよい。あるいは、アプリケーション127は、別の種類のデバイス内で実行可能であるがコンピューティングデバイス103内では実行不可能であるコードに相当してもよい。かかるアプリケーション127は、バイナリ、読み込み専用メモリイメージROM、および他の用語で称されてもよい。特定のアプリケーション127を、複数のアプリケーションセッションのために、アプリケーション118の複数のインスタンスとして実行してもよい。リソース利用プロファイル128は、アプリケーション127のそれぞれについて、それぞれのリソース利用プロファイル128を記述する。各リソース利用プロファイル128は、それぞれのアプリケーション127が、より多くのCPUリソースまたはGPUリソースを使用する傾向があるどうかを示す。いくつかのアプリケーション127は、よりCPU集約的である傾向がある一方で、他のアプリケーション127は、よりGPU集約的である傾向がある。例えば、リソース利用プロファイル128は、典型的にはそれぞれのアプリケーション127によって消費されるCPUまたはGPUのパーセンテージを示してもよい。エミュレーションアプリケーションと共にアプリケーション127を実行する場合、リソース利用プロファイル128は、さらに、エミュレーションアプリケーションによって消費されるリソースを反映してもよい。いくつかの実施形態において、リソース利用プロファイル128は、さらに、ラッパ130によって消費されるリソースを反映してもよい。種々の実施形態において、リソース利用プロファイル128は、アプリケーション127のメモリ消費プロファイルについて記述してもよい。ビデオエンコーダ129は、コンピューティングデバイス103に採用されてもよい種々の種類のビデオエンコーダ119に相当する。いくつかのビデオエンコーダ129は、例えば、H.264、MPEG-4、MPEG-2、および/または他のフォーマット等の指定のフォーマットに相当してもよい。GPUでいくつかのビデオエンコーダ129を実行してもよく、CPUでいくつかのビデオエンコーダ129を実行してもよく、GPUおよびCPUの両方でいくつかのビデオエンコーダ129を実行してもよい。ラッパ130は、種々の種類のラッパ121を実装する実行可能なコードに相当する。ラッパ130は、コンピューティングデバイス103において実行可能であり、複数のアプリケーションセッションのために、ラッパ121の複数のインスタンスとして実行されてもよい。保存された状態データ133は、アプリケーション118によって保存されたアプリケーション状態に相当する。アプリケーション118は視覚化された環境で実行されるため、アプリケーション118は、状態情報を仮想的な位置に書き込んでもよく、これは、次いで、保存された状態データ133としてデータストア112に格納するためにマッピングされる。保存された状態データ133は、アプリケーション118によって通常保存されるデータに相当してもよい、または、任意の時点で回復resumeされてもよいアプリケーション118のメモリイメージに相当してもよい。ユーザデータ136は、例えば、セキュリティ証明書、アプリケーション設定、請求情報、ユーザによって開始されるアプリケーションセッションに参加することが許可されている他のユーザのリスト等のアプリケーション118のユーザに関する種々のデータを含む。クライアント106は、ネットワーク109に結合されてもよい複数のクライアントデバイスを表している。クライアント106は、地理的に散らばっていてもよい。クライアント106は、例えば、コンピュータシステム等のプロセッサベースのシステムを備えてもよい。かかるコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレイヤ、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子書籍リーダ、または同様の機能を有する他のデバイスの形態で実施されてもよい。クライアント106は、ディスプレイ139を含んでもよい。ディスプレイ139は、例えば、陰極線管CRT、液晶ディスプレイLCD画面、ガスプラズマベースのフラットパネルディスプレイ、LCDプロジェクタ、または他の種類のディスプレイデバイス等の1つ以上のデバイスを備えてもよい。クライアント106は、1つ以上の入力デバイス142を含んでもよい。入力デバイス142は、例えば、キーボード、マウス、ジョイスティック、加速度計、レーザーガン、ゲームコントローラ、タッチパッド、タッチスティック、プッシュボタン、光センサ、マイクロフォン、ウェブカム、および/またはユーザ入力を提供することができる任意の他のデバイス等のデバイスを備えてもよい。クライアント106は、クライアントアプリケーション145および/または他のアプリケーション等の種々のアプリケーションを実行するように構成されてもよい。クライアントアプリケーション145は、ユーザが、コンピューティングデバイス103において実行されるアプリケーション118を開始、参加、プレイ、あるいはこれと相互にやりとりができるように実行される。このため、クライアントアプリケーション145は、入力デバイス142のうちの1つ以上によって、ユーザによって提供される入力をキャプチャし、入力データ122としてネットワーク109によりコンピューティングデバイス103へこの入力を送信するように構成される。クライアントアプリケーション145は、コンピューティングデバイス103からネットワーク109上でビデオデータ123を取得し、ディスプレイ139上で画面148をレンダリングするようにさらに構成される。このため、クライアントアプリケーション145は、ビデオエンコーダ119によって生成されたビデオストリームをプレイするために1つ以上のビデオおよびオーディオプレイヤを含んでもよい。一実施形態では、クライアントアプリケーション145は、ブラウザアプリケーション内にプラグインを備える。クライアント106は、例えば、ブラウザアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および/または他のアプリケーション等のクライアントアプリケーション145以外のアプリケーションを実行するように構成されてもよい。次に図2を参照すると、本開示の一実施形態に従うコンピューティングデバイス103の略ブロック図が示される。コンピューティングデバイス103は、例えば、そのすべてがローカルインタフェース209に結合される、プロセッサ203、メモリ206、および1つ以上のグラフィックスデバイス207を有する少なくとも1つのプロセッサ回路を含む。このため、コンピューティングデバイス103は、例えば、少なくとも1つのサーバコンピュータまたは同様のデバイスを備えてもよい。ローカルインタフェース209は、理解されるように、例えば、添付のアドレス/制御バスまたは他のバス構造を有するデータバスを備えてもよい。グラフィックスデバイス207は、1つ以上のグラフィックスプロセッサ212を含む、高性能のグラフィックスハードウェアに相当してもよい。市販のグラフィックスプロセッサ212の非制限的な例は、NVIDIA登録商標Teslaシリーズを含む。グラフィックスデバイス207は、コンピューティングデバイス103において実行されるアプリケーション118に相当するグラフィックスをレンダリングするように構成される。一実施形態では、グラフィックスデバイス207は、専用のハードウェアビデオエンコーダに相当してもよい。プロセッサ203によって実行可能なデータおよびいくつかのコンポーネントの両方がメモリ206に格納される。特に、サーバアプリケーション115、アプリケーション118、ビデオエンコーダ119、ラッパ121、およびおそらくは他のアプリケーションがメモリ206に格納され、プロセッサ203によって実行可能である。さらに、データストア112および他のデータを、メモリ206に格納してもよい。加えて、オペレーティングシステムをメモリ206に格納してもよく、プロセッサ203によって実行可能であってもよい。理解されるように、メモリ206に格納され、プロセッサ203によって実行可能な他のアプリケーションが存在してもよいことが理解される。本明細書に記載される任意のコンポーネントがソフトウェアの形態で実装される場合、例えば、C、C、C、ObjectiveC、Java登録商標、JavaScript登録商標、Perl、PHP、VisualBasic登録商標、Python登録商標、Ruby、Delphi登録商標、Flash登録商標、または他のプログラミング言語等の多数のプログラミング言語のうちの任意の1つを採用してもよい。次に、図1および図2の両方を参照し、ネットワーク設定された環境100の種々のコンポーネントの動作について概略的に説明する。まず、クライアント106において、ユーザは、サーバアプリケーション115へアプリケーション118を開始するリクエストを送信する。サーバアプリケーション115は、データストア112から相当するアプリケーション127およびラッパ130を取得する。サーバアプリケーション115は、次いで、相当するラッパ121のアプリケーション118を開始する。サーバアプリケーション115は、状態情報124内のアプリケーションの状態を追跡してもよい。アプリケーション118を、一部、アプリケーション118に関連付けられたリソース利用プロファイル128に基づいて、コンピューティングデバイス103のうちの指定の1つで開始してもよい。リソース利用プロファイル128は、アプリケーション118が、グラフィックスプロセッサ212のリソースと比較して、プロセッサ203のより多くのリソースを使用する傾向があることを示してもよい。あるいは、リソース利用プロファイル128は、アプリケーション118が、プロセッサ203のリソースと比較して、グラフィックスプロセッサ212のより多くのリソースを使用する傾向があることを示してもよい。このため、サーバアプリケーション115は、アプリケーション118を、コンピューティングデバイス103のうちの1つのリソース負荷に従ってコンピューティングデバイス103のうちの指定の1つと一致させることができてもよい。非制限的な例として、CPU集約的である傾向があるアプリケーション118を、大量のCPU容量を有するコンピューティングデバイス103に割り当ててもよい。別の非制限的な例として、GPU集約的である傾向があるアプリケーション118を、大量のGPU容量を有するコンピューティングデバイス103に割り当ててもよい。一実施形態では、アプリケーション118を、コンピューティングデバイス103における閾値範囲内のほぼ均等なGPUおよびCPU利用を維持するように割り当ててもよい。さらに、使用されているコンピューティングデバイス103の数を最小限にするために、アプリケーション118を、リソース利用を最大限にするように割り当ててもよい。加えて、ビデオエンコーダ119を、プロセッサ203またはグラフィックスプロセッサ212のいずれかで実行するように構成してもよい。一実施形態では、ビデオエンコーダ119を、相当するアプリケーション118から逆のリソースを使用するように構成する。例えば、アプリケーション118がCPU集約的である場合、ビデオエンコーダ119を、GPUを使用するように構成してもよい。逆に、アプリケーション118がGPU集約的である場合、ビデオエンコーダ119を、CPUを使用するように構成してもよい。したがって、ビデオエンコーダ119を含む、アプリケーション118に関連付けられたリソース利用を一定にし得る。さらに、少なくとも一部において、コンピューティングデバイス103のリソース負荷に基づいて、または一定の基準が適合するときに、現在実行中のビデオエンコーダ119を、CPUからGPUへおよびその逆に伝送してもよい。非制限的な例として、GPUで実行中のビデオエンコーダ119を、現行のGPU負荷が閾値に適合するときに、CPUで実行するように再構成してもよい。別の非制限的な例として、CPUで実行中のビデオエンコーダ119を、現行のCPU負荷が閾値に適合するときに、GPUで実行するように再構成してもよい。ビデオエンコーダ119のかかる転送は、仮想化レイヤによって促進されてもよい。かかる仮想化レイヤによって、例えば、ビデオエンコーダ119が仮想デバイスで実行される、または、プロセッサ203またはグラフィックスプロセッサ212のいずれかにマップされてもよい仮想符号化デバイスを含むように見せてもよい。ビデオエンコーダ119を再構成および転送することにより、プロセッサ203とグラフィックスプロセッサ212との間の負荷平衡が、さらなるアプリケーション118および関連付けられたアプリケーションを収容するように変化してもよい。一実施形態では、ビデオエンコーダ119の実行が転送される場合、ビデオエンコーダ119によって生成されたビデオストリームは中断されない。種々の実施形態において、例えば、サーバ側のリソース利用を管理するためにビデオエンコーダ119によって生成されたビデオストリームの品質を調整してもよい。ビデオストリームの品質は、ネットワーク109上のトラフィックを考慮するようにさらに調整されてもよい。さらに、ビデオストリームの品質は、ビデオストリームを復号化するクライアント106の能力により、調整されてもよい。ラッパ121は、コンピューティングデバイス103の1つ以上のリソースを仮想化するアプリケーション118の視覚化された環境を提供する。かかるリソースは、排他的リソース、つまりアプリケーション118が排他的アクセスをリクエストするリソースを含んでもよい。例えば、通常、1つのアプリケーションしか全画面アクセスを有することができないため、アプリケーション118は、排他的リソースであるビデオデバイスからの全画面アクセスをリクエストしてもよい。さらに、ラッパは、コンピューティングデバイス103に実際には存在しなくてもよい、例えば、キーボード、マウス等の入力デバイスを仮想化してもよい。種々の実施形態において、ラッパ121は、仮想マシンに相当してもよい、および/または仮想マシン内においてラッパ121を実行してもよい。クライアント106において、ユーザは、クライアント106の入力デバイス142の使用によって、アプリケーション118の入力コマンドを入力する。非制限的な例として、ユーザは、左マウスボタンを押してもよい。したがって、クライアントアプリケーション145は、入力データ122内のネットワーク109上を伝送されてもよいフォーマットで、入力コマンドを符号化するように機能する。サーバアプリケーション115は、入力コマンドを受信し、これをラッパ121に受け渡す。ラッパ121は、次いで、仮想化されたマウスによって、アプリケーション118に対し、左マウスボタン押下を行う。いくつかの実施形態において、クライアント106によって生成されたものとは異なる入力コマンドがアプリケーション118に表示されてもよい。非制限的な例として、ユーザがマウスダウンコマンドを送信し、クライアントアプリケーション145が集中できなくなる場合、ラッパ121は、マウスダウンコマンド、次にマウスアップコマンドを送信するように構成されてもよい。種々の実施形態において、入力コマンドはできる限り早くラッパ121に中継されてもよい、または別のアプローチに従い、入力コマンドがラッパ121によって行列待ちとなりqueued、行列から順次、アプリケーション118へ中継されてもよい。一方で、アプリケーション118のグラフィックス出力は、ラッパ121によってキャプチャされ、ビデオストリームに符号化される。さらに、アプリケーション118のオーディオ出力がキャプチャされ、ビデオストリームに多重化されてもよい。ビデオストリームは、ビデオデータ123として、サーバアプリケーション115によってネットワーク109上をクライアント106へと伝送される。クライアントアプリケーション145は、ビデオデータ123を取得し、これを画面148内のディスプレイ139でプレイする。種々の実施形態により、クライアント106内の1種類の入力デバイス142によって生成された入力を、全く異なる種類の仮想入力デバイスによって、アプリケーション118へ提供される入力コマンドへと、ラッパ121によって変化させることを可能にする。非制限的な例として、クライアント106内の加速度計によって生成された入力は、仮想マウスによって提供される入力へ、ラッパ121によって変換されてもよい。このため、アプリケーション118が実装されたときに考慮されなかった可能性のあるアプリケーション118への入力の提供に、完全に異なる種類の入力デバイス142を使用してもよい。さらに、アプリケーション118のハードウェア要件からクライアント106が分離されるため、ネットワーク109で許容可能な帯域幅およびレイテンシを有するビデオのストリーミングを可能にする多様な種類のクライアント106上で、アプリケーション118を使用してもよい。例えば、実質的なグラフィックスレンダリングリソースを必要とするゲームが、スマートフォンであるクライアント106上でプレイされてもよい。このため、クライアント106は、アプリケーション118を実行するために必要であり得る複雑な3次元レンダリングを実行するために、高価なグラフィックスハードウェアを含む必要はない。対照的に、コンピューティングデバイス103のハードウェアを、最新のおよび最も計算的に集約的なアプリケーション118のハードウェア要件に適合するように、必要に応じてアップグレードしてもよい。種々の実施形態において、ビデオエンコーダ119によって符号化されたビデオストリームは、ネットワーク109においてコンピューティングデバイス103とクライアント106との間の接続のビットレートおよび/または他の特性に従ってスケールされてもよい。アプリケーション118の別の指定の非制限的な例には、携帯電話アプリケーションを含んでもよい。クライアント106において、顧客は、種々の携帯電話の特徴および機能を閲覧してもよい。ラッパ121は、携帯電話オペレーティングシステム内の携帯電話アプリケーションを実行してもよい。携帯電話アプリケーションによって生成されたビデオ信号を、ビデオストリームとしてクライアント106へキャプチャおよび送信してもよい。したがって、ユーザは、指定の携帯電話ハードウェアがなくても、任意のクライアント106内で実際の携帯電話アプリケーションをテストしたりこれと相互にやりとりしたりすることができる。本開示の原則は、プロセッサ203および/またはグラフィックスプロセッサ212を使用してもよい種々のアプリケーションに適用してもよいことが理解される。さらに、ビデオエンコーダ119は、アプリケーション118と共に動作する別のアプリケーションの指定の例として記載されているが、本開示の原則は、プロセッサ203またはグラフィックスプロセッサ212のいずれかの上で実行するように構成されてもよい種々のアプリケーションに適用されてもよいことが理解される。別の非制限的な例は、動画またはテレビで使用するためにグラフィックスをレンダリングするアプリケーションを伴ってもよい。続いて図3を参照すると、種々の実施形態に従い、サーバアプリケーション115の一部の動作の一例を提供するフローチャートが示される。図3のフローチャートは、本明細書に記載されるように、サーバアプリケーション115の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的な構成の一例を提供するにすぎないことが理解される。代替として、図3のフローチャートは、1つ以上の実施形態に従うコンピューティングデバイス103図1に実装された方法のステップの一例を表すものとして表示されてもよい。まずボックス303を参照すると、サーバアプリケーション115は、クライアント106図1から新しいアプリケーション118図1を開始するリクエストを取得する。ボックス306において、サーバアプリケーション115は、アプリケーション118に関連付けられたリソース利用プロファイル128図1を判定する。ボックス309において、サーバアプリケーション115は、リソース利用プロファイル128から、アプリケーション118がGPU集約的として分類されるかどうかを判定する。アプリケーション118がGPU集約的として分類されない場合、アプリケーション118はCPU集約的として分類されてもよく、サーバアプリケーション115は、ボックス312に進む。ボックス312において、サーバアプリケーション115は、プロセッサ203図2ではなく、グラフィックスプロセッサ212図2で実行されるアプリケーション118のためにビデオエンコーダ119図1を構成する。ボックス315において、サーバアプリケーション115は、ビデオエンコーダ119および任意のラッパ121図1と共に、アプリケーション118のインスタンスを実行するために、コンピューティングデバイス103のうちの1つを割り当てる。コンピューティングデバイス103がクラウドコンピューティングリソースを備える場合、アプリケーション118が割り当てられる指定のコンピューティングデバイス103は、クラウドコンピューティングリソース内に仮想マシンインスタンスを備えてもよい。コンピューティングデバイス103へアプリケーション118を割り当てる機能が、さらに、図4のフローチャートに関連して記載される。その後、サーバアプリケーション115の一部が終了する。ボックス309において、アプリケーション118がGPU集約的として分類される場合、サーバアプリケーション115は、ボックス318に進み、グラフィックスプロセッサ212ではなくプロセッサ203内で実行されるアプリケーション118のビデオエンコーダ119を構成する。次いで、サーバアプリケーション115は、引き続きボックス315に進み、ビデオエンコーダ119および任意のラッパ121と共に、アプリケーション118のインスタンスを実行するために、コンピューティングデバイス103のうちの1つを割り当てる。その後、サーバアプリケーション115の一部が終了する。次に図4を参照すると、種々の実施形態に従うサーバアプリケーション115の別の一部の動作の別の例を提供するフローチャートが示される。特に、図4に示される機能は、指定のコンピューティングデバイス103図1にアプリケーション118図1の新しいインスタンスを割り当てる一例を提供する。図4のフローチャートは、本明細書に記載されるように、サーバアプリケーション115の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的構成の一例を提供するにすぎないことが理解される。代替として、図4のフローチャートは、1つ以上の実施形態に従う、コンピューティングデバイス103において実装された方法のステップの一例を示すものと考えられてもよい。まず、ボックス403において、サーバアプリケーション115は、コンピューティングデバイス103のリソース利用状態を判定する。コンピューティングデバイス103がクラウドコンピューティングリソースを備える場合、クラウドコンピューティングリソース内で実行中の仮想マシンインスタンスについて、リソース利用状態が判定されてもよい。リソース利用状態は、1つ以上のプロセッサ203図2に関連付けられた負荷、1つ以上のグラフィックスプロセッサ212図2に関連付けられた負荷、および/または他のリソース利用情報を示してもよい。ボックス404において、サーバアプリケーション115は、特定のアプリケーション118図1を実行するために最も適したコンピューティングデバイス103を判定する。例えば、アプリケーション118は、非常に高いグラフィックスレンダリング要求を有してもよく、優れたハードウェアベースのグラフィックス加速度で構成されるコンピューティングデバイス103は、アプリケーション118の実行に最も適していてもよい。ボックス406において、サーバアプリケーション115は、現在アプリケーション118に割り付けられているコンピューティングデバイス103のうちの任意の1つが、アプリケーション118の新しいインスタンスを収容するために利用可能な容量を有するかどうかを判定する。一実施形態では、サーバアプリケーション115は、アプリケーション118に関連付けられた予期されるリソース消費量を判別するために、リソース利用プロファイル128図1を調査してもよい。別の実施形態において、サーバアプリケーション115は、アプリケーション118を実行するために必要なコンピューティング容量の判定において、参照リソース消費量を用いてもよい。アプリケーション118に関連付けられたビデオエンコーダ119図1がグラフィックスプロセッサ212またはプロセッサ203で実行されるように構成されてもよいかどうかにより、アプリケーション118を、CPUおよびGPU負荷のさまざまな組み合わせで、コンピューティングデバイス103で実行できるようにしてもよい。換言すれば、コンピューティングデバイス103がより利用可能なCPUリソースを有する場合、プロセッサ203で実行されるようにビデオエンコーダ119を構成してもよい。逆に、コンピューティングデバイス103がより利用可能なGPUリソースを有する場合、グラフィックスプロセッサ212で実行されるようにビデオエンコーダ119を構成してもよい。コンピューティングデバイス103が利用可能な容量を有する場合、サーバアプリケーション115は、ボックス409において利用可能な容量を有するコンピューティングデバイス103で実行されるアプリケーション118を割り当てる。一実施形態では、現行のGPU負荷がGPU利用の最大閾値未満である場合にコンピューティングデバイス103を選択してもよく、アプリケーション118に関連付けられたリソース利用プロファイルは、アプリケーション118がCPUリソースよりも多くGPUリソースを使用する傾向があることを示す。あるいは、現行のCPU負荷がCPU利用の最大閾値未満である場合に、コンピューティングデバイス103を選択してもよく、アプリケーション118に関連付けられたリソース利用プロファイルは、アプリケーション118がGPUリソースよりも多くCPUリソースを使用する傾向があることを示す。そのため、プロセッサ203および/またはグラフィックスプロセッサ212の利用を最大限にすることを目的として、アプリケーション118をコンピューティングデバイス103に割り付けてもよい。一実施形態では、現行のGPU負荷がGPU利用の最大閾値に適合するときにコンピューティングデバイス103が選択されてもよく、アプリケーション118に関連付けられたリソース利用プロファイルは、アプリケーション118がGPUリソースよりも多くCPUリソースを使用する傾向があることを示す。あるいは、現行のCPU負荷がCPU利用の最大閾値に適合するときにコンピューティングデバイス103が選択されてもよく、アプリケーション118に関連付けられたリソース利用プロファイルは、アプリケーション118がCPUリソースよりも多くGPUリソースを使用する傾向があることを示す。したがって、現在、プロセッサ203またはグラフィックスプロセッサ212のいずれかに十分な負荷がかかっている場合には、他のプロセッサの空き容量を使用してもよい。アプリケーション118がコンピューティングデバイス103に割り当てられると、サーバアプリケーション115の一部が終了する。しかしながら、サーバアプリケーション115が、ボックス406において、アプリケーション118に現在割り付けられているコンピューティングデバイス103のいずれも、アプリケーション118の新しいインスタンスを収容するために利用可能な容量を有していないことを判定する場合、サーバアプリケーション115は、代わりにボックス412に移動する。ボックス412において、サーバアプリケーション115は、再構成される場合にコンピューティングデバイス103のうちのいずれかが利用可能な容量を有するかどうかを判定する。非制限的な例として、コンピューティングデバイス103で実行中のビデオエンコーダ119は、ビデオエンコーダ119の実行により、グラフィックスプロセッサ212からプロセッサ203へ、またその反対に伝送することを可能にする仮想化レイヤによって実行してもよい。かかる再構成により、特定のアプリケーション118について十分な処理容量が利用可能になるfreedupことを可能にしてもよい。サーバアプリケーション115が、再構成される場合にコンピューティングデバイス103が利用可能な容量を有すると判定する場合に、サーバアプリケーション115はボックス415に移動し、アプリケーション118の新しいインスタンスを収容するために、コンピューティングデバイス103上で実行されるビデオエンコーダ119を再構成する。ボックス418において、サーバアプリケーション115は、再構成されていたコンピューティングデバイス103へアプリケーション118の新しいインスタンスを割り当てる。その後、サーバアプリケーション115の一部が終了する。サーバアプリケーション115が、代わりに、再構成される場合においてもコンピューティングデバイス103は利用可能な容量を有さないことをボックス412において判定すると、サーバアプリケーション115は、ボックス421に進む。ボックス421において、サーバアプリケーション115は、アプリケーション118を収容するために別のコンピューティングデバイス103を構成または割り付ける。換言すれば、コンピューティングデバイス103のうちの他の割り付けられているものがアプリケーション118を収容するために十分な処理リソースを有しない場合に、コンピューティングデバイス103のうちの割り付けられていないものがアプリケーション118に選択される。コンピューティングデバイス103がクラウドコンピューティングリソースを備える場合、サーバアプリケーション115は、アプリケーション118を収容するために新しい仮想マシンインスタンスを構成してもよい。既存のコンピューティングデバイス103の利用可能な容量が先に使用されるため、さらなるコンピューティングデバイス103の割り付けは最小化され得るため、コストが削減される。ボックス424において、サーバアプリケーション115は、新しく割り付けられたコンピューティングデバイス103で実行されるアプリケーション118の新しいインスタンスを割り当てる。その後、サーバアプリケーション115の一部が終了する。再び図2を参照すると、メモリ206に多数のソフトウェアコンポーネントが格納され、プロセッサ203によって実行可能である。この点において、実行可能なという語は、プロセッサ203によって最終的に実行できる形態であるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ206のランダムアクセス部分にロードすることができ、かつプロセッサ203によって実行できるフォーマットのマシンコード、メモリ206のランダムアクセス部にロードすることができ、かつプロセッサ203によって実行できるオブジェクトコード等の適正なフォーマットで表現されてもよいソースコード、またはプロセッサ203等によって実行されるメモリ206のランダムアクセス部において命令を生成するために別の実行可能なプログラムによって解釈されてもよいソースコードに変換することができる、コンパイルされたプログラムであってもよい。実行可能なプログラムは、例えば、ランダムアクセスメモリRAM、読み込み専用メモリROM、ハードドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカード、コンパクトディスクCDまたはデジタル多用途ディスクDVD等の光ディスク、フロッピードライブ、磁気テープ、または他のメモリコンポーネントを含む、メモリ206の任意の部分またはコンポーネントに格納されてもよい。メモリ206は、揮発および不揮発メモリ、ならびにデータ格納コンポーネントの両方を含むものとして、本明細書で定義されている。揮発コンポーネントは、電力喪失の際にデータ値を保持しないコンポーネントである。不揮発コンポーネントは、電力喪失の際にデータを保持するコンポーネントである。このため、メモリ206は、例えば、ランダムアクセスメモリRAM、読み込み専用メモリROM、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダによってアクセスされるメモリカード、関連付けられたフロッピーディスクドライブによってアクセスされるフロッピーディスク、光ディスクドライブによってアクセスされる光ディスク、適切なテープドライブによってアクセスされる磁気テープ、および/または他のメモリコンポーネント、あるいはこれらのメモリコンポーネントのうちの任意の2つ以上の組み合わせを含んでもよい。加えて、RAMは、例えば、静的ランダムアクセスメモリSRAM、動的ランダムアクセスメモリDRAM、または磁気ランダムアクセスメモリMRAM、および他のかかるデバイスを含んでもよい。ROMは、例えば、プログラム可能な読み込み専用メモリPROM、消去可能なプログラム可能な読み込み専用メモリEPROM、電気的に消去可能なプログラム可能な読み込み専用メモリEEPROM、または他の同様のメモリデバイスを含んでもよい。さらに、プロセッサ203は複数のプロセッサ203を表してもよく、メモリ206は、それぞれ並列処理回路で動作する複数のメモリ206を表してもよい。かかる場合において、ローカルインタフェース209は、複数のプロセッサ203の任意の2つの間、任意のプロセッサ203とメモリ206のうちのいずれかとの間、またはメモリ206の任意の2つの間等の通信を促進する適切なネットワーク109図1にしてもよい。ローカルインタフェース209は、例えば、負荷平衡化の実行を含む、この通信を統合するように設計されたさらなるシステムを備えてもよい。プロセッサ203は、電気的またはいくつかの他の利用可能な構成であってもよい。本明細書に記載されるサーバアプリケーション115、アプリケーション118、ビデオエンコーダ119、ラッパ121、および他の種々のシステムは、上記に記載されるように、汎用ハードウェアによって実行されるソフトウェアまたはコードで実施されてもよいが、代替として、同じものを、さらに、専用のハードウェアまたはソフトウェア/汎用ハードウェアおよび専用ハードウェアの組み合わせで実施してもよい。専用のハードウェアで実施される場合、それぞれは、多数の技術のいずれか1つまたは組み合わせを採用する回路またはステートマシンとして実装可能である。これらの技術は、1つ以上のデータ信号の適用時に種々の論理機能を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途向け集積回路、または他のコンポーネント等を含んでもよいが、これらに制限されない。かかる技術は、概して当業者には公知であるため、本明細書において詳細に記載しない。図3および図4のフローチャートは、サーバアプリケーション115の一部の実装の機能および動作を示す。ソフトウェアで実施される場合、各ブロックは、指定された論理機能を実装するためにプログラム命令を備えるコードのモジュール、セグメント、または部分を表してもよい。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサ203等の適した実行システムによって認識可能な多数の命令を備えるプログラムミング言語またはマシンコードで記述される人間が読むことのできるステートメントを備えるソースコードの形態で実施されてもよい。マシンコードは、ソースコード等から変換されてもよい。ハードウェアにおいて実施される場合、各ブロックは、指定された論理機能を実装するために、回路または多数の相互接続された回路を表してもよい。図3および図4のフローチャートは指定の実行の順序を示すが、実行の順序は、図示されているものとは異なってもよいことが理解される。例えば、2つ以上のブロックの実行の順序は、示される順序に対してその通りでなくてもよい。さらに、図3および図4に連続して示される2つ以上のブロックを、同時にまたは部分的に同時に実行してもよい。さらに、いくつかの実施形態において、図3および図4に示されるブロックのうちの1つ以上をスキップまたは省略してもよい。加えて、実用性の向上、課金、パフォーマンス計測、またはトラブルシューティング支援の提供等のために、任意の数のカウンタ、状態変数、警告セマフォwarningsemaphores、またはメッセージを、本明細書に記載される論理の流れに追加してもよい。すべてのかかる変形は、本開示の範囲内にあると理解される。さらに、ソフトウェアまたはコードを備える、サーバアプリケーション115、アプリケーション118、ビデオエンコーダ119、およびラッパ121を含む、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ203等の命令実行システムによって、またはこれに関連して、任意の持続的コンピュータ可読媒体で実施することができる。この意味で、論理は、例えば、コンピュータ可読媒体からフェッチでき、命令実行システムによって実行できる命令および宣言を含むステートメントを備えてもよい。本開示の文脈において、コンピュータ可読媒体は、命令実行システムによって、またはこれと共に使用するために、本明細書に記載されている論理またはアプリケーションを含有、格納または維持することができる任意の媒体にすることができる。コンピュータ可読媒体は、例えば、磁気、光、または半導体媒体等の多くの物理的媒体のうちの任意の1つを含むことができる。適したコンピュータ可読媒体のより具体的な例は、磁気テープ、磁気フロッピーディスケット、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、USBフラッシュドライブ、または光ディスクを含むが、これらに制限されない。さらに、コンピュータ可読媒体は、例えば、静的ランダムアクセスメモリSRAMおよび動的ランダムアクセスメモリDRAM、または磁気ランダムアクセスメモリMRAMを含む、ランダムアクセスメモリRAMであってもよい。加えて、コンピュータ可読媒体は、読み込み専用メモリROM、プログラム可能な読み込み専用メモリPROM、消去可能なプログラム可能な読み込み専用メモリEPROM、電気的に消去可能なプログラム可能な読み込み専用メモリEEPROM、または他の種類のメモリデバイスであってもよい。付記付記1.コンピューティングデバイスにおいて実行可能なプログラムを具現化する持続的コンピュータ可読媒体であって、プログラムは、クライアントコンピューティングデバイスからクラウドコンピューティングリソースにおいてアプリケーションを実行するリクエストを取得するコードであって、アプリケーションはアプリケーションのライブラリから選択され、アプリケーションのそれぞれはそれぞれのリソース利用プロファイルに関連付けられ、各リソース利用プロファイルは、それぞれのアプリケーションがグラフィックス処理装置GPUリソースよりも多く中央処理装置CPUリソースを使用する傾向があるかどうか、またそれぞれのアプリケーションがCPUリソースよりもGPUリソースをより多く使用する傾向があるかどうかを示す、コードと、少なくとも一部において、マシンインスタンスの現行のCPU負荷および現行のGPU負荷と、アプリケーションのリソース利用プロファイルとに基づいて、クラウドコンピューティングリソースからマシンインスタンスを選択するコードと、マシンインスタンスの少なくとも1つのCPUの代わりに、マシンインスタンスの少なくとも1つのGPUでビデオエンコーダを実行するかどうかを判定するコードであって、ビデオエンコーダは、クライアントへの伝送のために、アプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成される、コードと、マシンインスタンスにおいてアプリケーションを実行するコードと、ビデオエンコーダが少なくとも1つのCPUの代わりに少なくとも1つのGPUで実行されることが判定されるときに、少なくとも1つのGPUでビデオエンコーダを実行するコードと、ビデオエンコーダが少なくとも1つのGPUの代わりに少なくとも1つのCPUで実行されることが判定されるときに、少なくとも1つのCPUでビデオエンコーダを実行するコードと、を備える、持続的コンピュータ可読媒体。付記2.プログラムは、ビデオエンコーダが少なくとも1つのCPUで実行中であり、かつ第1の基準セットが適合するときに、少なくとも1つのCPUから少なくとも1つのGPUへビデオエンコーダの実行を転送するコードと、ビデオエンコーダが少なくとも1つのGPUで実行中であり、かつ第2の基準セットが適合するときに、少なくとも1つのGPUから少なくとも1つのCPUへビデオエンコーダの実行を転送するコードと、をさらに備える、付記1に記載の持続的コンピュータ可読媒体。付記3.少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとを含む少なくとも1つのコンピューティングデバイスと、少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、少なくとも1つのコンピューティングデバイスにおいて第1のアプリケーションを実行するリクエストを取得する論理と、第1のアプリケーションに関連付けられたリソース利用プロファイルが、第1のアプリケーションが比較的GPU集約的であるよりCPU集約的であることを示すときに、第1のアプリケーションに関連付けられた第2のアプリケーションを、少なくとも1つのCPUの代わりに少なくとも1つのGPUで実行されるように割り当てる論理と、リソース利用プロファイルが、第1のアプリケーションが比較的CPU集約的であるよりGPU集約的であることを示すときに、第2のアプリケーションを、少なくとも1つのGPUの代わりに少なくとも1つのCPUで実行されるように割り当てる論理と、を備える、サーバアプリケーションと、を備える、システム。付記4.第2のアプリケーションは、第1のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当し、サーバアプリケーションは、ハードウェアビデオエンコーダが利用可能であるときに、少なくとも1つのCPUまたは少なくとも1つのGPUの代わりに、少なくとも1つのコンピューティングデバイスのハードウェアビデオエンコーダにおいてビデオエンコーダを実行する論理をさらに備える、付記3に記載のシステム。付記5.第2のアプリケーションの割り当ては、少なくとも一部において、少なくとも1つのGPUの現行の負荷および少なくとも1つのCPUの現行の負荷に基づく、付記3に記載のシステム。付記6.第2のアプリケーションの割り当ては、少なくとも一部において、少なくとも1つのGPUの現行の負荷および少なくとも1つのCPUの現行の負荷が互いに閾値だけ異なるかどうかに基づく、付記3に記載のシステム。付記7.第1のアプリケーションは、ゲームアプリケーションを含む、付記3に記載のシステム。付記8.第1のアプリケーションは、携帯電話アプリケーションを含む、付記3に記載のシステム。付記9.第2のアプリケーションは、データ通信ネットワーク上でのクライアントコンピューティングデバイスへの伝送のために、第1のアプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成されるビデオエンコーダを含む、付記3に記載のシステム。付記10.少なくとも1つのコンピューティングデバイスは、クライアントコンピューティングデバイスに含まれていない第1のアプリケーションを実行するための少なくとも1つの機能を含む、付記9に記載のシステム。付記11.リクエストは、アプリケーションのライブラリから第1のアプリケーションを選択し、アプリケーションのうちの少なくとも1つは、比較的GPU集約的であるよりCPU集約的であり、アプリケーションのうちの少なくとも1つは、比較的CPU集約的であるよりGPU集約的である、付記3に記載のシステム。付記12.少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して少なくとも1つのCPUから少なくとも1つのGPUへ第2のアプリケーションの実行を転送する論理を備える、付記3に記載のシステム。付記13.第2のアプリケーションは、第1のアプリケーションの出力からビデオストリームを生成するように構成され、ビデオストリームは第2のアプリケーションの実行が転送されるときに中断されない、付記12に記載のシステム。付記14.少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して少なくとも1つのGPUから少なくとも1つのCPUへ第2のアプリケーションの実行を転送する論理を備える、付記3に記載のシステム。付記15.少なくとも1つのコンピューティングデバイスは、複数のネットワーク設定されたコンピューティングデバイスを含み、サーバアプリケーションは、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つに関連付けられた現行のGPU負荷および現行のCPU負荷、ならびにリソース利用プロファイルに基づいて、第1のアプリケーションおよび第2のアプリケーションを実行するためのネットワーク設定されたコンピューティングデバイスのうちの1つを選択する論理をさらに備える、付記3に記載のシステム。付記16.ネットワーク設定されたコンピューティングデバイスは、クラウドコンピューティングリソースに相当する、付記15に記載のシステム。付記17.サーバアプリケーションは、現行のCPU負荷がCPU負荷閾値に適合するときに、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUにおいて実行中の少なくとも1つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUにおいて実行されるように、再構成する論理をさらに備える、付記15に記載のシステム。付記18.サーバアプリケーションは、現行のGPU負荷がGPU負荷閾値に適合するときに、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUにおいて実行中の少なくとも1つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUにおいて実行するように、再構成する論理をさらに備える、付記15に記載のシステム。付記19.少なくとも1つのコンピューティングデバイスにおいて、第1のアプリケーションを実行するリクエストを取得するステップであって、第1のアプリケーションは、少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとで実行されるように構成され、第1のアプリケーションは、リソース利用プロファイルに関連付けられる、ステップと、少なくとも1つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つの現行のGPU負荷および現行のCPU負荷、ならびにリソース利用プロファイルに基づいて、複数のネットワーク設定されたコンピューティングデバイスのうちの1つを選択するステップと、ネットワーク設定されたコンピューティングデバイスのうちの1つにおいて、第1のアプリケーションを実行するステップと、を含む、方法。付記20.リソース利用プロファイルは、第1のアプリケーションがGPUリソースよりも多くCPUリソースを使用する傾向があるかどうか、また第1のアプリケーションがCPUリソースよりもGPUリソースを多く使用する傾向があるかどうかを示す、付記19に記載の方法。付記21.選択するステップは、少なくとも1つのコンピューティングデバイスにおいて、現行のGPU負荷がGPU利用の最大閾値未満であり、リソース利用プロファイルが、第1のアプリケーションがCPUリソースよりもGPUリソースを多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの1つを選択するステップと、少なくとも1つのコンピューティングデバイスにおいて、現行のCPU負荷がCPU利用の最大閾値未満であり、リソース利用プロファイルが、第1のアプリケーションがGPUリソースよりもCPUリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの1つを選択するステップと、をさらに含む、付記19に記載の方法。付記22.選択するステップは、少なくとも1つのコンピューティングデバイスにおいて、現行のGPU負荷がGPU利用の最大閾値に適合し、リソース利用プロファイルが、第1のアプリケーションがGPUリソースよりもCPUリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの1つを選択するステップと、少なくとも1つのコンピューティングデバイスにおいて、現行のCPU負荷がCPU利用の最大閾値に適合し、リソース利用プロファイルが、第1のアプリケーションがCPUリソースよりもGPUリソースをより多く使用する傾向があることを示すときに、複数のネットワーク設定されたコンピューティングデバイスのうちの1つを選択するステップと、をさらに含む、付記19に記載の方法。付記23.選択するステップは、少なくとも1つのコンピューティングデバイスにおいて、他の割り付けられたコンピューティングデバイスのいずれも、第1のアプリケーションを収容するために十分な処理リソースを有しないときに、ネットワーク設定されたコンピューティングデバイスのうちの1つとして、ネットワーク設定されたコンピューティングデバイスのうちの割り付けられていない1つを選択するステップをさらに含む、付記19に記載の方法。付記24.少なくとも1つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUの代わりに、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUで実行するように、第1のアプリケーションと共に動作する第2のアプリケーションを構成するステップをさらに含む、付記19に記載の方法。付記25.少なくとも1つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUの代わりに、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUで実行するように、第1のアプリケーションと共に動作する第2のアプリケーションを構成するステップをさらに含む、付記19に記載の方法。付記26.少なくとも1つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUで実行中の少なくとも1つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUで実行するように構成するステップをさらに含む、付記19に記載の方法。付記27.少なくとも1つのコンピューティングデバイスにおいて、少なくとも一部において、ネットワーク設定されたコンピューティングデバイスのうちの1つのリソース負荷に基づいて、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのCPUで実行中の少なくとも1つのアプリケーションを、ネットワーク設定されたコンピューティングデバイスのうちの1つの少なくとも1つのGPUで実行するように構成するステップをさらに含む、付記19に記載の方法。付記28.少なくとも1つのグラフィックス処理装置GPUと少なくとも1つの中央処理装置CPUとを含む少なくとも1つのコンピューティングデバイスと、少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、少なくとも1つのコンピューティングデバイスで第1のアプリケーションを実行するリクエストを取得する論理と、少なくとも1つのCPUの現行の負荷および少なくとも1つのGPUの現行の負荷を判定する論理と、少なくとも一部において、少なくとも1つのCPUの現行の負荷と少なくとも1つのGPUの現行の負荷とに基づいて、第1のアプリケーションに関連付けられた第2のアプリケーションを、少なくとも1つのCPUまたは少なくとも1つのGPUで実行する論理と、を備える、サーバアプリケーションと、を備える、システム。付記29.第2のアプリケーションは、少なくとも一部において、第1のアプリケーションのCPU消費測定基準およびGPU消費測定基準を提供するリソース利用プロファイルに基づいて、少なくとも1つのCPUまたは少なくとも1つのGPUで実行される、付記28に記載のシステム。付記30.第2のアプリケーションは、第1のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当する、付記28に記載のシステム。付記31.実行する論理は、ハードウェアビデオエンコーダが利用可能であるときに、少なくとも1つのCPUまたは少なくとも1つのGPUの代わりに、少なくとも1つのコンピューティングデバイスのハードウェアビデオエンコーダでビデオエンコーダを実行するようにさらに構成される、付記30に記載のシステム。付記32.少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、仮想化レイヤは、リクエストに応答して第2のアプリケーションの実行を少なくとも1つのCPUから少なくとも1つのGPUへ転送する論理を備える、付記28に記載のシステム。本開示の上記の実施形態は、本開示の原則の明確な理解のために述べられる可能な実装の例にすぎないことが強調されるべきである。多くの変形および修正を、本開示の精神および原則から実質的に逸脱せずに、上記の実施形態に実施してもよい。すべてのかかる修正および変形は、本開示の範囲内に含まれ、以下の特許請求の範囲によって保護されることが意図されている。関連する出願の相互参照本出願は、2010年12月14日に出願された米国特許出願第12/967,171号の利益を主張し、これは、参照することにより本明細書に組み込まれる。"