JP2014505913A - 汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化 - Google Patents

汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化 Download PDF

Info

Publication number
JP2014505913A
JP2014505913A JP2013536943A JP2013536943A JP2014505913A JP 2014505913 A JP2014505913 A JP 2014505913A JP 2013536943 A JP2013536943 A JP 2013536943A JP 2013536943 A JP2013536943 A JP 2013536943A JP 2014505913 A JP2014505913 A JP 2014505913A
Authority
JP
Japan
Prior art keywords
application
gpu
cpu
computing device
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013536943A
Other languages
English (en)
Other versions
JP5745079B2 (ja
Inventor
イアン エム. ボーン
エデン アシュレイ ジェイエヌ バプティステ
Original Assignee
アマゾン テクノロジーズ インク
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン テクノロジーズ インク filed Critical アマゾン テクノロジーズ インク
Publication of JP2014505913A publication Critical patent/JP2014505913A/ja
Application granted granted Critical
Publication of JP5745079B2 publication Critical patent/JP5745079B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/803Application aware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/72Admission control; Resource allocation using reservation actions during connection setup
    • H04L47/726Reserving resources in multiple paths to be used simultaneously
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

中央処理装置(CPU)とグラフィックス処理装置(GPU)との間の負荷平衡化を促進するための種々の実施形態が開示される。1つ以上のコンピューティングデバイスにおいて、第1のアプリケーションを実行するリクエストが取得される。一実施形態では、第1のアプリケーションに関連付けられた第2のアプリケーションは、第1のアプリケーションに関連付けられたリソース利用プロファイルが、第1のアプリケーションが比較的GPU集約的であるよりもCPU集約的であることを示すときに、1つ以上のコンピューティングデバイスのCPUの代わりに、1つ以上のコンピューティングデバイスのGPUで実行されるように割り当てられる。逆に、第2のアプリケーションは、リソース利用プロファイルが、第1のアプリケーションが比較的CPU集約的であるよりもGPU集約的であることを示すときに、GPUの代わりに、CPUで実行されるように割り当てられる。
【選択図】なし

Description

汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化に関する。
グラフィックス処理装置(GPU)は、グラフィックス関連の動作に専用のプロセッサである。多くのコンピューティングデバイスは、2次元および/または3次元グラフィックスのレンダリングを負荷軽減(offload)および促進するために、1つ以上のGPUを含む。GPUの高度並列構造は、GPUを、種々の複雑なアルゴリズムについて、中央処理装置(CPU)等の汎用プロセッサよりも効果的なものにし得る。特に、コンピュータゲームは、コンピューティングデバイスのGPU利用可能性によって恩恵を受けることが多い。
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との間の負荷の非平衡さを緩和する。
本開示の種々の実施形態に従う、ネットワーク設定された環境の図である。 本開示の種々の実施形態に従う、図1のネットワーク設定された環境で採用されたコンピューティングデバイスの1つの例示的な図を提供する略ブロック図である。 本開示の種々の実施形態に従う、図1のネットワーク設定された環境においてコンピューティングデバイスで実行されたサーバアプリケーションの一部として実装された機能の例を示すフローチャートである。 本開示の種々の実施形態に従う、図1のネットワーク設定された環境においてコンピューティングデバイスで実行されたサーバアプリケーションの一部として実装された機能の例を示すフローチャートである。
図面を参照することにより、本開示の多くの態様をより良く理解することができる。図中の構成要素について、必ずしも拡大縮小の比率は正確ではないが、それよりも、本開示の原則を明確に示すことを重視している。さらに、図面において、同様の参照数字は、複数の図にまたがる対応する部分を指す。
本開示は、中央処理装置(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は、例えば、Moving Pictures Experts Group(MPEG)エンコーダ、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(登録商標)、Graphics Device Interface(GDI)等の異なるアプリケーションプログラミングインタフェース(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#、Objective C、Java(登録商標)、JavaScript(登録商標)、Perl、PHP、Visual Basic(登録商標)、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について十分な処理容量が利用可能になる(freed up)ことを可能にしてもよい。
サーバアプリケーション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つ以上をスキップまたは省略してもよい。加えて、実用性の向上、課金、パフォーマンス計測、またはトラブルシューティング支援の提供等のために、任意の数のカウンタ、状態変数、警告セマフォ(warning semaphores)、またはメッセージを、本明細書に記載される論理の流れに追加してもよい。すべてのかかる変形は、本開示の範囲内にあると理解される。
さらに、ソフトウェアまたはコードを備える、サーバアプリケーション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号の利益を主張し、これは、参照することにより本明細書に組み込まれる。

Claims (15)

  1. 少なくとも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. 前記第2のアプリケーションは、前記第1のアプリケーションによって生成されたビデオ信号をビデオストリームに符号化するように構成されるビデオエンコーダに相当し、前記サーバアプリケーションは、ハードウェアビデオエンコーダが利用可能であるときに、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUの代わりに、前記少なくとも1つのコンピューティングデバイスの前記ハードウェアビデオエンコーダにおいて前記ビデオエンコーダを実行する論理をさらに備える、請求項1に記載のシステム。
  3. 前記第2のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも1つのGPUの現行の負荷および前記少なくとも1つのCPUの現行の負荷に基づく、請求項1に記載のシステム。
  4. 前記第2のアプリケーションの前記割り当ては、少なくとも一部において、前記少なくとも1つのGPUの現行の負荷および前記少なくとも1つのCPUの現行の負荷が互いに閾値だけ異なるかどうかに基づく、請求項1に記載のシステム。
  5. 前記第2のアプリケーションは、データ通信ネットワーク上でのクライアントコンピューティングデバイスへの伝送のために、前記第1のアプリケーションによって生成されたビデオ信号をビデオストリームへ符号化するように構成されるビデオエンコーダを含む、請求項1に記載のシステム。
  6. 前記少なくとも1つのコンピューティングデバイスは、前記クライアントコンピューティングデバイスに含まれていない前記第1のアプリケーションを実行するための少なくとも1つの機能を含む、請求項5に記載のシステム。
  7. 前記リクエストは、アプリケーションのライブラリから前記第1のアプリケーションを選択し、前記アプリケーションのうちの少なくとも1つは、比較的GPU集約的であるよりCPU集約的であり、前記アプリケーションのうちの少なくとも1つは、比較的CPU集約的であるよりGPU集約的である、請求項1に記載のシステム。
  8. 前記少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも1つのCPUから前記少なくとも1つのGPUへ前記第2のアプリケーションの実行を転送する論理を備える、請求項1に記載のシステム。
  9. 前記第2のアプリケーションは、前記第1のアプリケーションの出力からビデオストリームを生成するように構成され、前記ビデオストリームは前記第2のアプリケーションの前記実行が転送されるときに中断されない、請求項8に記載のシステム。
  10. 前記少なくとも1つのコンピューティングデバイスにおいて実行可能な仮想化レイヤをさらに備え、前記仮想化レイヤは、リクエストに応答して前記少なくとも1つのGPUから前記少なくとも1つのCPUへ前記第2のアプリケーションの実行を転送する論理を備える、請求項1に記載のシステム。
  11. 前記少なくとも1つのコンピューティングデバイスは、複数のネットワーク設定されたコンピューティングデバイスを含み、
    前記サーバアプリケーションは、
    少なくとも一部において、前記ネットワーク設定されたコンピューティングデバイスのうちの1つに関連付けられた現行のGPU負荷および現行のCPU負荷、ならびに前記リソース利用プロファイルに基づいて、前記第1のアプリケーションおよび前記第2のアプリケーションを実行するための前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つを選択する論理をさらに備える、
    請求項1に記載のシステム。
  12. 前記サーバアプリケーションは、前記現行のCPU負荷がCPU負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのCPUで実行中の少なくとも1つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのGPUで実行されるように、再構成する論理をさらに備える、請求項11に記載のシステム。
  13. 前記サーバアプリケーションは、前記現行のGPU負荷がGPU負荷閾値に適合するときに、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのGPUで実行中の少なくとも1つのアプリケーションを、前記ネットワーク設定されたコンピューティングデバイスのうちの前記1つの前記少なくとも1つのCPUで実行するように、再構成する論理をさらに備える、請求項11に記載のシステム。
  14. 少なくとも1つのグラフィックス処理装置(GPU)と少なくとも1つの中央処理装置(CPU)とを含む少なくとも1つのコンピューティングデバイスと、
    前記少なくとも1つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
    前記少なくとも1つのコンピューティングデバイスにおいて第1のアプリケーションを実行するリクエストを取得する論理と、
    前記少なくとも1つのCPUの現行の負荷および前記少なくとも1つのGPUの現行の負荷を判定する論理と、
    少なくとも一部において、前記少なくとも1つのCPUの前記現行の負荷と前記少なくとも1つのGPUの前記現行の負荷とに基づいて、前記第1のアプリケーションに関連付けられた第2のアプリケーションを、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUで実行する論理と、
    を備える、サーバアプリケーションと、
    を備えるシステム。
  15. 前記第2のアプリケーションは、少なくとも一部において、前記第1のアプリケーションのCPU消費測定基準およびGPU消費測定基準を提供するリソース利用プロファイルに基づいて、前記少なくとも1つのCPUまたは前記少なくとも1つのGPUで実行される、請求項14に記載のシステム。
JP2013536943A 2010-12-14 2011-12-12 汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化 Active JP5745079B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/967,171 US8830245B2 (en) 2010-12-14 2010-12-14 Load balancing between general purpose processors and graphics processors
US12/967,171 2010-12-14
PCT/US2011/064348 WO2012082589A2 (en) 2010-12-14 2011-12-12 Load balancing between general purpose processors and graphics processors

Publications (2)

Publication Number Publication Date
JP2014505913A true JP2014505913A (ja) 2014-03-06
JP5745079B2 JP5745079B2 (ja) 2015-07-08

Family

ID=46199904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013536943A Active JP5745079B2 (ja) 2010-12-14 2011-12-12 汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化

Country Status (7)

Country Link
US (3) US8830245B2 (ja)
EP (1) EP2654911A4 (ja)
JP (1) JP5745079B2 (ja)
KR (1) KR101523861B1 (ja)
CN (2) CN108052395A (ja)
CA (1) CA2814420C (ja)
WO (1) WO2012082589A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069622B2 (en) * 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US8970603B2 (en) 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
US8806054B1 (en) * 2010-12-15 2014-08-12 Amazon Technologies, Inc. Sending application input commands over a network
US9467507B2 (en) * 2011-01-03 2016-10-11 Verizon Patent And Licensing Inc. Wireless network cloud computing resource management
US9424052B2 (en) 2011-03-21 2016-08-23 Amazon Technologies, Inc. Remotely emulating computing devices
US9564672B2 (en) 2011-03-22 2017-02-07 Intel Corporation Lightweight cavity filter structure
US9312594B2 (en) 2011-03-22 2016-04-12 Intel Corporation Lightweight cavity filter and radio subsystem structures
US9345061B1 (en) 2011-06-29 2016-05-17 Amazon Technologies, Inc. Remote access to mobile communication devices
KR20130019674A (ko) * 2011-08-17 2013-02-27 삼성전자주식회사 단말 및 그 단말에서 어플리케이션 수행 방법
US9058194B2 (en) * 2012-03-02 2015-06-16 Google Inc. Software application previews
WO2014019127A1 (en) 2012-07-31 2014-02-06 Intel Corporation (A Corporation Of Delaware) Hybrid rendering systems and methods
US8972956B2 (en) * 2012-08-02 2015-03-03 International Business Machines Corporation Application deployment in heterogeneous environments
EP2893435B1 (en) * 2012-09-07 2019-05-08 Carnegie Mellon University Methods for hybrid gpu/cpu data processing
US11082490B2 (en) 2012-11-28 2021-08-03 Nvidia Corporation Method and apparatus for execution of applications in a cloud system
DE112013005688T5 (de) * 2012-11-28 2015-08-06 Nvidia Corporation Verfahren und System für eine wolkenbasierte virtualisierte Graphikverarbeitung für Fernanzeigen
JP5919179B2 (ja) * 2012-12-07 2016-05-18 日本電信電話株式会社 情報処理装置及び情報処理プログラム
US9665921B2 (en) * 2012-12-29 2017-05-30 Futurewei Technologies, Inc. Adaptive OpenGL 3D graphics in virtual desktop infrastructure
EP2763038A3 (en) * 2013-02-01 2017-03-01 Samsung Electronics Co., Ltd Method and apparatus for processing multimedia content on a graphic cloud
US9298511B2 (en) 2013-03-15 2016-03-29 International Business Machines Corporation Resolving deployment conflicts in heterogeneous environments
US9292349B2 (en) 2013-03-15 2016-03-22 International Business Machines Corporation Detecting deployment conflicts in heterogenous environments
WO2014188642A1 (ja) * 2013-05-22 2014-11-27 日本電気株式会社 スケジュールシステム、スケジュール方法、及び、記録媒体
CN104298556B (zh) * 2013-07-17 2018-01-09 华为技术有限公司 流处理单元的分配方法及装置
US9842532B2 (en) 2013-09-09 2017-12-12 Nvidia Corporation Remote display rendering for electronic devices
CN104580338B (zh) * 2013-10-29 2018-09-07 华为技术有限公司 一种业务处理方法、系统及设备
EP2887219A1 (en) 2013-12-23 2015-06-24 Deutsche Telekom AG System and method for mobile augmented reality task scheduling
US10114431B2 (en) 2013-12-31 2018-10-30 Microsoft Technology Licensing, Llc Nonhomogeneous server arrangement
US20150188765A1 (en) * 2013-12-31 2015-07-02 Microsoft Corporation Multimode gaming server
CN106164839B (zh) * 2014-02-04 2019-10-22 触觉实验室股份有限公司 以减小的等待时间提供对输入的视觉响应的方法
JP6373620B2 (ja) 2014-04-01 2018-08-15 株式会社ソニー・インタラクティブエンタテインメント ゲーム提供システム
JP6055433B2 (ja) * 2014-04-01 2016-12-27 株式会社ソニー・インタラクティブエンタテインメント ゲーム提供サーバ
JP6412708B2 (ja) 2014-04-01 2018-10-24 株式会社ソニー・インタラクティブエンタテインメント プロセッシングシステムおよびマルチプロセッシングシステム
US9694281B2 (en) 2014-06-30 2017-07-04 Microsoft Technology Licensing, Llc Data center management of multimode servers
EP2995494B1 (en) * 2014-09-11 2020-04-08 Continental Automotive GmbH Animation arrangement
CN106796636A (zh) * 2014-10-25 2017-05-31 迈克菲股份有限公司 计算平台安全方法和装置
US9690928B2 (en) 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US10073972B2 (en) 2014-10-25 2018-09-11 Mcafee, Llc Computing platform security methods and apparatus
CN105808342B (zh) * 2014-12-30 2019-12-13 中国电信股份有限公司 用于分配客户请求的方法、判断装置和系统
CN104572298B (zh) * 2014-12-31 2017-11-24 北京四达时代软件技术股份有限公司 视频云平台的资源调度方法及装置
US9697046B2 (en) * 2015-06-19 2017-07-04 Vmware, Inc. Managing resource reservations in a highly parallel application
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
US10162684B2 (en) * 2015-10-15 2018-12-25 International Business Machines Corporation CPU resource management in computer cluster
KR101721341B1 (ko) * 2015-12-31 2017-04-10 전북대학교산학협력단 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
US10277911B2 (en) * 2016-01-22 2019-04-30 Wowza Media Systems, LLC Video processing workload management
US10453445B2 (en) * 2016-02-16 2019-10-22 Carnegie Mellon University System and method for multi-user GPU-accelerated speech recognition engine for client-server architectures
US10579350B2 (en) 2016-02-18 2020-03-03 International Business Machines Corporation Heterogeneous computer system optimization
US10425472B2 (en) * 2017-01-17 2019-09-24 Microsoft Technology Licensing, Llc Hardware implemented load balancing
KR102091152B1 (ko) 2017-03-22 2020-03-19 정기웅 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치
CN107515736B (zh) * 2017-07-01 2021-01-15 广州深域信息科技有限公司 一种在嵌入式设备上加速深度卷积网络计算速度的方法
WO2019075428A1 (en) * 2017-10-12 2019-04-18 Shouty, LLC SYSTEMS AND METHODS FOR DIRECT CONTINUOUS DIFFUSION OF CLOUD STORAGE
CN109726005B (zh) * 2017-10-27 2023-02-28 伊姆西Ip控股有限责任公司 用于管理资源的方法、服务器系统和计算机可读介质
CN109981699A (zh) * 2017-12-27 2019-07-05 中国移动通信集团云南有限公司 一种云计算系统的资源分配方法、装置及云计算系统
CN110275771B (zh) * 2018-03-15 2021-12-14 中国移动通信集团有限公司 一种业务处理方法、物联网计费基础设施系统及存储介质
KR102034845B1 (ko) * 2018-03-23 2019-10-21 에스케이플래닛 주식회사 선택적 인코딩 기반의 클라우드 스트리밍 서비스 방법 및 위한 장치
US11262831B2 (en) 2018-08-17 2022-03-01 Hewlett-Packard Development Company, L.P. Modifications of power allocations for graphical processing units based on usage
CN109788325B (zh) * 2018-12-28 2021-11-19 网宿科技股份有限公司 视频任务分配方法及服务器
US11347621B1 (en) * 2020-03-17 2022-05-31 Core Scientific, Inc. Application performance characterization and profiling as a service
CN111258526B (zh) * 2020-05-06 2020-08-28 上海幻电信息科技有限公司 投屏方法和系统
CN113259680B (zh) * 2021-06-25 2021-10-01 腾讯科技(深圳)有限公司 视频流解码方法、装置、计算机设备和存储介质
US11947941B2 (en) 2021-08-24 2024-04-02 Red Hat, Inc. Dynamic computation offloading to graphics processing unit
CN113867961B (zh) * 2021-09-30 2022-07-22 中国矿业大学(北京) 一种异构gpu集群深度学习混合负载调度优化方法
CN114157850A (zh) * 2021-11-26 2022-03-08 珠海视熙科技有限公司 一种数据传输方法、装置及计算机可读存储介质
WO2024034708A1 (ko) * 2022-08-11 2024-02-15 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011523141A (ja) * 2008-06-06 2011-08-04 アップル インコーポレイテッド マルチプロセッサにおけるデータパラレルコンピューティングのためのアプリケーションプログラミングインターフェイス
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11261702A (ja) * 1998-03-06 1999-09-24 Fujitsu Ltd 負荷予測によるシステム最適化制御装置
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
US20060242647A1 (en) * 2005-04-21 2006-10-26 Kimbrel Tracy J Dynamic application placement under service and memory constraints
US7827491B2 (en) 2006-05-12 2010-11-02 Tran Bao Q Systems and methods for video editing
US7694160B2 (en) 2006-08-31 2010-04-06 Ati Technologies Ulc Method and apparatus for optimizing power consumption in a multiprocessor environment
US7444459B2 (en) * 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8861591B2 (en) * 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
EP2006770B1 (en) * 2007-06-19 2014-01-01 VirtualLogix SA Load balancing
KR101467558B1 (ko) * 2007-07-26 2014-12-01 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
US8610725B2 (en) * 2007-10-10 2013-12-17 Apple Inc. Framework for dynamic configuration of hardware resources
US8610727B1 (en) * 2008-03-14 2013-12-17 Marvell International Ltd. Dynamic processing core selection for pre- and post-processing of multimedia workloads
US8199158B2 (en) * 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
US9081624B2 (en) * 2008-06-26 2015-07-14 Microsoft Technology Licensing, Llc Automatic load balancing, such as for hosted applications
CN101599009A (zh) * 2009-04-30 2009-12-09 浪潮电子信息产业股份有限公司 一种异构多处理器上并行执行任务的方法
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
CN101908035B (zh) * 2010-07-30 2012-09-05 北京华傲精创科技开发有限公司 视频编解码方法、gpu及其与cpu的交互方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
JP2011523141A (ja) * 2008-06-06 2011-08-04 アップル インコーポレイテッド マルチプロセッサにおけるデータパラレルコンピューティングのためのアプリケーションプログラミングインターフェイス

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法

Also Published As

Publication number Publication date
WO2012082589A3 (en) 2013-11-07
CA2814420A1 (en) 2012-06-21
CN108052395A (zh) 2018-05-18
WO2012082589A2 (en) 2012-06-21
CN103582509A (zh) 2014-02-12
US8830245B2 (en) 2014-09-09
US9455931B2 (en) 2016-09-27
US20150256485A1 (en) 2015-09-10
KR20130108609A (ko) 2013-10-04
EP2654911A2 (en) 2013-10-30
CA2814420C (en) 2016-06-07
US20140347372A1 (en) 2014-11-27
EP2654911A4 (en) 2018-01-03
JP5745079B2 (ja) 2015-07-08
CN103582509B (zh) 2018-01-12
US20120149464A1 (en) 2012-06-14
US9052959B2 (en) 2015-06-09
KR101523861B1 (ko) 2015-05-28

Similar Documents

Publication Publication Date Title
JP5745079B2 (ja) 汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化
US11077363B2 (en) Video game overlay
US20180117463A1 (en) Gaming System
CN102946409B (zh) 从多个服务器向客户机递送单个终端用户体验
CN102591418B (zh) 具有qos保证的可缩放多媒体计算机系统体系结构
US8924985B2 (en) Network based real-time virtual reality input/output system and method for heterogeneous environment
CN111417978A (zh) 游戏渲染中的内存管理
US8888592B1 (en) Voice overlay
US8902970B1 (en) Altering streaming video encoding based on user attention
WO2010141522A1 (en) Qualified video delivery
US9948691B2 (en) Reducing input processing latency for remotely executed applications
US9392047B1 (en) Facilitating application compatibility across devices
US9497238B1 (en) Application control translation
JP6539278B2 (ja) マルチモード・ゲーミング・サーバー
US9954718B1 (en) Remote execution of applications over a dispersed network
Wen et al. GBooster: Towards Acceleration of GPU-Intensive Mobile Applications
Kannan Enhancing cloud gaming user experience through docker containers in fog nodes
US20230199062A1 (en) Data center wide network storage load balancing
Cai et al. Cloud Gaming
Zhuo A Performance Comparison of VMware GPU Virtualization Techniques in Cloud Gaming
Chan et al. A Hybrid Game Contents Streaming Method: Improving Graphic Quality Delivered on Cloud Gaming

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150430

R150 Certificate of patent or registration of utility model

Ref document number: 5745079

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250