(57)【要約】      （修正有）【課題】コンピュータクラウドへのインタフェースとしての仮想ＯｐｅｎＣＬ装置を利用することによるＯｐｅｎＣＬアプリケーションを高速化する。【解決手段】仮想ＯｐｅｎＣＬ装置を含むコンピュータシステム１００において、１つ以上のクライアント１０２のＯｐｅｎＣＬクライアントアプリケーション１０４からの要求を、仮想ＯｐｅｎＣＬ装置１１０を介して、リソースブローカ１２２により装置の特性と比較して、クラウド１３０において利用可能なサーバ１２６−１〜１２６−Ｚのうちどれが計算負荷を軽減するサービスをクライアント１０２に提供し得るかを決定し、計算動作をローカルのプロセッサからクラウドの利用可能なリソースを表す仮想装置に負荷軽減する。【選択図】図１
2011138506.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに利用可能な複数の装置のうち仮想装置の選択に応じて、仮想装置に１つ以上の計算動作の負荷を軽減することを有し、
前記仮想装置の選択は、前記仮想装置の１つ以上の特性と、前記アプリケーションにより決定される１つ以上の要求とに基づき、
前記仮想装置の前記１つ以上の特性は、クラウドの利用可能なリソースを表す方法。
【請求項２】
前記複数の装置は、プロセッサを有する、請求項１に記載の方法。
【請求項３】
前記プロセッサが、前記プロセッサから前記仮想装置に前記１つ以上の計算動作の負荷を軽減するか否かを決定することを更に有する、請求項２に記載の方法。
【請求項４】
前記プロセッサが前記アプリケーションを実行することを更に有する、請求項２に記載の方法。
【請求項５】
前記負荷の軽減は、OpenCL（Open  Computing  Language）に従って実行される、請求項１に記載の方法。
【請求項６】
前記複数の装置のうち前記仮想装置の選択に応じて、前記仮想装置の装置コンテキストを生成することを更に有する、請求項１に記載の方法。
【請求項７】
前記生成された装置コンテキストに基づいて前記仮想装置と相互作用することを更に有する、請求項６に記載の方法。
【請求項８】
前記アプリケーションによる要求に応じて前記複数の装置の１つ以上の特性を受信することを更に有する、請求項１に記載の方法。
【請求項９】
クラウドの利用可能なリソースを表す仮想装置に対応するデータを格納するメモリと、
プロセッサから前記仮想装置に１つ以上の計算動作の負荷を軽減するか否かを決定するプロセッサと
を有する装置。
【請求項１０】
前記メモリは、OpenCLクライアントアプリケーションと、OpenCL  API（Application  Programming  Interface）と、OpenCLドライバとのうち１つ以上を格納する、請求項９に記載の装置。
【請求項１１】
前記OpenCLドライバは、前記仮想装置を有する、請求項１０に記載の装置。
【請求項１２】
前記仮想装置のネットワークサービスを前記クラウドの利用可能なリソースのネットワークサービスに結合する１つ以上のリンクを更に有する、請求項９に記載の装置。
【請求項１３】
前記クラウドは、ネットワークを介して前記プロセッサに結合される、請求項９に記載の装置。
【請求項１４】
前記ネットワークは、イントラネット又はインターネットを有するグループから選択される、請求項１３に記載の装置。
【請求項１５】
前記プロセッサは、１つ以上のプロセッサコアを有する、請求項９に記載の装置。
【請求項１６】
前記クラウドでの前記利用可能なリソースのうちどれが前記１つ以上の計算動作の負荷軽減をサービス提供するかを決定するリソースブローカを更に有する、請求項９に記載の装置。
【請求項１７】
プロセッサ上で実行されたときに、前記プロセッサに対して、
アプリケーションに利用可能な複数の装置のうち仮想装置の選択に応じて、仮想装置に１つ以上の計算動作の負荷を軽減する１つ以上の動作を実行させる１つ以上の命令を有し、
前記仮想装置の選択は、前記仮想装置の１つ以上の特性と、前記アプリケーションにより決定される１つ以上の要求とに基づき、
前記仮想装置の前記１つ以上の特性は、クラウドの利用可能なリソースを表すコンピュータ可読媒体。
【請求項１８】
プロセッサ上で実行されたときに、前記プロセッサに対して、
前記複数の装置のうち前記仮想装置の選択に応じて、前記仮想装置の装置コンテキストを生成させる１つ以上の命令を更に有する、請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
プロセッサ上で実行されたときに、前記プロセッサに対して、
生成された装置コンテキストに基づいて前記仮想装置と相互作用させる１つ以上の命令を更に有する、請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
プロセッサ上で実行されたときに、前記プロセッサに対して、
前記アプリケーションによる要求に応じて、前記複数の装置の１つ以上の特性を受信させる１つ以上の命令を更に有する、請求項１７に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、概してコンピュータ分野に関する。より具体的には、本発明の実施例は、概してコンピュータクラウド（compute  cloud）へのインタフェースとして仮想OpenCL装置を利用することにより、OpenCLアプリケーションを高速化（accelerate）する技術に関する。
【背景技術】
【０００２】
OpenCL（Open  Computing  Language）は、異種のシステムの汎用の並列プログラミングの最初のオープンな使用料のない標準である。OpenCLは、ソフトウェア開発者がマルチコアCPU（Central  Processing  Unit）、GPU（Graphical  Processing  Unit）、セル型アーキテクチャ、及び他の並列プロセッサ（DSP（Digital  Signal  Processor）等）の様々な組み合わせを使用して、高性能コンピュータサーバ、デスクトップコンピュータシステム及びハンドヘルド装置のための効率的でポータブルなコードを記述する均一のプログラミング環境を提供する。この標準は、Khronos  Groupにより開発された。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化を目的とする。
【課題を解決するための手段】
【０００４】
コンピュータクラウドへのインタフェースとして仮想OpenCL装置を利用することにより、OpenCLアプリケーションを高速化する方法及び装置が記載される。一実施例では、１つ以上の計算動作は、ローカルのプロセッサからクラウドの利用可能なリソースを表す仮想装置に負荷軽減される。他の実施例も記載される。
【発明の効果】
【０００５】
本発明の実施例によれば、コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化が可能になる。
【図面の簡単な説明】
【０００６】
【図１】ここで説明する或る実施例を実装するために利用され得るコンピュータシステムの実施例のブロック図
【図２】本発明の実施例によるフローチャート
【図３】ここで説明する或る実施例を実装するために利用され得るコンピュータシステムの実施例のブロック図
【図４】ここで説明する或る実施例を実装するために利用され得るコンピュータシステムの実施例のブロック図
【発明を実施するための形態】
【０００７】
添付図面を参照して詳細な説明が提供される。図面において、参照符号の最も左の数字は、参照番号が最初に現れる図面を特定する。異なる図面における同じ参照符号の使用は、類似又は同一の項目を示す。
【０００８】
以下の説明では、様々な実施例の完全な理解を提供するため、複数の特定の詳細が示されている。しかし、本発明の様々な実施例は、特定の詳細なしに実施され得る。他にも、周知の方法、手順、構成要素及び回路は、本発明の特定の実施例をあいまいにしないように詳細に記載されていない。更に、本発明の実施例の様々な態様は、集積半導体回路（“ハードウェア”、“HW”とも呼ばれる）、１つ以上のプログラムに構成されたコンピュータ可読命令（“ソフトウェア”、“SW”とも呼ばれる）、又はハードウェアとソフトウェアとの何らかの組み合わせのような、様々な手段を使用して実行されてもよい。この開示の目的で、“ロジック（logic）”への言及は、ハードウェア、ソフトウェア（例えば、プロセッサの動作を制御するマイクロコードを含む）、又はこれらの何らかの組み合わせを意味するものとする。
【０００９】
明細書における“一実施例”又は“実施例”への言及は、実施例に関して記載した特定の機能、構造又は特徴が少なくとも１つの実装に含まれ得ることを意味する。明細書における様々な場所に“一実施例”という用語が現れることは、全て同じ実施例を示してもよく、示さなくてもよい。
【００１０】
また、詳細な説明及び特許請求の範囲において、“結合”及び“接続”並びにその派生語が使用されることがある。本発明の或る実施例では、“接続”は、２つ以上の要素が相互に直接的に物理的又は電気的な接触状態にあることを示すために使用されてもよい。“結合”は、２つ以上の要素が直接的に物理的又は電気的な接触状態にあることを意味してもよい。しかし、“結合”はまた、２つ以上の要素が相互に直接的な接触状態になくてもよいが、依然として相互に協働又は相互作用することを意味してもよい。
【００１１】
OpenCLでは、並列コンピュータカーネルは、ホスト（通常はCPU）から同じシステムのアクセラレータ装置（例えば、GPU、CPU又はFPGA（Field-Programmable  Gate  Array））に負荷軽減されてもよい。更に、OpenCLは、ポータブルの計算集約的なアプリケーションの開発を容易にするために、移動及び組み込み装置を明示的にカバーする。しかし、予見できる将来における移動装置の並列計算能力は、むしろ制限され得る。これは、小さい待ち時間の少ないグラフィック負荷にとって十分である可能性があるが、計算集約的なOpenCLアプリケーション（科学、工学及びビジネスコンピューティングにおけるシミュレーション、複雑なデータ分析等）の実行を試みることは、期待外れのユーザ経験をもたらす。また、OpenCL可能な装置を全く含まず、非常に限られた性能を備えたCPUを有する非常に軽量なプラットフォーム又は組み込みプラットフォームが存在する可能性がある。複雑なOpenCLアプリケーションは、簡単にはこれらのシステムで実行しない。
【００１２】
標準的なデスクトップ及びワークステーションであっても、計算集約的なOpenCLアプリケーションは、コンピュータクラウドのサーバ施設（server  farm）にOpenCLの負荷を軽減することにより、高速化され得る。しかし、クラウドで負荷を実行することができる既存のインタフェースは、アプリケーション自体のかなりの変更を必要とすることがある。これらの変更はまた、特定のクラウドコンピューティングシステムに関連付けられることがあり、このことは、業界におけるクラウドコンピューティングの採用を更に妨げる。
【００１３】
このため、ここで説明する実施例のいくつかは、コンピュータクラウドへのインタフェースとして仮想OpenCL装置を利用することにより、OpenCLアプリケーションを高速化する技術を提供する。実施例では、計算集約的なOpenCLアプリケーションは、ローカルネットワーク（インターネット又はイントラネット）上のコンピュータクラウドにアプリケーションの１つ以上のコンピュータカーネルの負荷を軽減することにより高速化される。一実施例では、負荷の軽減は、アプリケーションにトランスペアレントであるように実行されてもよい。従って、アプリケーションコードを変更する必要はない。このことは、OpenCLアプリケーションが軽量のシステムで実行し、バックエンドのクラウドの大規模なサーバの性能の潜在能力に入り込むことを可能にする。
【００１４】
図１は、実施例による仮想OpenCL装置を含むコンピュータシステム100を示している。図示のように、１つ以上のクライアント102は、OpenCLに準拠したアプリケーションプログラムでもよいOpenCLクライアントアプリケーション104と、OpenCL  API（Application  Programming  Interface）106と、OpenCLドライバ108と、仮想OpenCL装置110と、クライアントネットワークサービス112とを含んでもよい。
【００１５】
ネットワークサービス112は、（例えば、SOAP（Simple  Object  Access  Protocol）に従って動作する）リンクを介してネットワーク120に結合される。一実施例では、ネットワーク120は、様々なエージェント（コンピュータ装置等）がデータを通信することを可能にするコンピュータネットワーク（例えば、インターネット、イントラネット又はこれらの組み合わせ）を含んでもよい。実施例では、ネットワーク120は、直列（例えば、ポイント・ツー・ポイント）リンク及び／又は共有通信リンクを介して通信する１つ以上の相互接続（又は相互接続ネットワーク）を含んでもよい。
【００１６】
一実施例では、システム100は、階層化プロトコル方式をサポートしてもよい。階層化プロトコル方式は、物理レイヤ、リンクレイヤ、ルーティングレイヤ、トランスポートレイヤ及び／又はプロトコルレイヤを含んでもよい。更に、ネットワーク120は、ポイント・ツー・ポイント又は共有ネットワークについて１つのプロトコル（例えば、キャッシュプロセッサ（caching  processor）又はキャッシュ認識メモリコントローラ（caching  aware  memory  controller））から他のプロトコルへのデータ（例えば、パケットの形式）の送信を容易にしてもよい。また、或る実施例では、ネットワーク120は、１つ以上のキャッシュ・コヒーレント・プロトコル（cache  coherent  protocol）に従った通信を提供してもよい。
【００１７】
更に、ネットワーク120は、Ethernet（登録商標）、Fast  Ethernet（登録商標）、Gigabit  Ethernet（登録商標）、広域ネットワーク（WAN）、FDDI（fiber  distributed  data  interface）、トークンリング、専用回線、アナログモデム、デジタル加入者線（DSL及びその種類（HDSL（high  bit-rate  DSL、IDSL（integrated  services  digital  network  DSL）等）、非同期転送モード（ATM）、ケーブルモデム、及び／又はFireWireのような如何なる種類の通信プロトコルを利用してもよい。
【００１８】
ネットワーク120を通じた無線通信は、無線ローカルエリアネットワーク（WLAN）、無線広域ネットワーク（WWAN）、符号分割多重アクセス（CDMA）セルラ無線電話通信システム、GSM（global  system  for  mobile  communications）セルラ無線電話システム、NADC（North  American  Digital  Cellular）セルラ無線電話システム、時分割多重アクセス（TDMA）システム、E-TDMA（extended  TDMA）セルラ無線電話システム、広帯域CDMA（WCDMA）のような3GPP（third  generation  partnership  project）システム等のうち１つ以上に従ってもよい。更に、ネットワーク通信は、内部ネットワークインタフェース装置（例えば、コンピュータシステムと同じ物理筐体内に存在する）により確立されてもよく、ネットワークインタフェースカード又はコントローラ（NIC）のような外部ネットワークインタフェース装置（例えば、結合されたコンピュータシステムと異なる物理筐体及び／又は電源を有する）により確立されてもよい。
【００１９】
図１に示すように、ネットワーク120は、クラウド130において１つ以上の利用可能なサーバ（又はコンピュータリソース）126-1〜126-Zのうちどれが計算負荷を軽減するサービスをクライアント102に提供し得るかを決定するリソースブローカ（resource  broker）ロジック122に結合されてもよい。（例えば、SOAPに従って動作する）リンク131-1〜131-Zは、サーバ126-1〜126-Zをリソースブローカ122に結合してもよい。各サーバ126-1〜126-Zは、ネットワークサービス（132-1〜132-Z）と、OpenCL  API（134-1〜134-Z）と、OpenCLドライバ（136-1〜136-Z）とを含んでもよい。
【００２０】
実施例では、仮想OpenCL装置110は、OpenCLフレームワークでコンピュータクラウドに統合されてもよい。この仮想装置110は、クラウド130のインフラストラクチャとの通信を扱うOpenCLドライバ108内に実装されてもよい。OpenCLドライバ108は、クライアントシステムに別々にインストールされてもよく、既存のOpenCLドライバへの拡張として利用可能になってもよい。実施例では、ドライバ108は、アプリケーション104への標準的なOpenCLドライバとして見えてもよく、クラウド130のインフラストラクチャとの全ての通信をトランスペアレントに扱ってもよい。ユーザは、ドライバシステムパネルにおいて、クラウドのサポートをオン及びオフに切り替えることが可能でもよい。更に、例えば、クラウドのサポートが可能な場合に利用可能な装置のリストに新たな装置が現れることを除いて、アプリケーション自体は全く違いに気付かなくてもよい。
【００２１】
実施例では、仮想OpenCL装置110は、クラウド130の利用可能なリソースをクライアント102に示してもよい。例えば、アプリケーション104が最高の性能を備えた装置を探している場合、リストから仮想装置110を選択し、ローカル装置と同じOpenCL関数を通じて仮想装置110を使用してもよい。実施例では、仮想装置の１つの特別な特性は、OpenCL関数をローカルで実行しなくてもよく、その代わりに、OpenCL関数をネットワーク上でコンピュータクラウド130に転送してもよい点である。ホスト／クライアントプラットフォーム102のOpenCLドライバ108は、クラウド（例えば、サービス132-1〜132-Z）により提供されるネットワークサービスインタフェースと通信するクライアントとして（例えば、ネットワークサービス112を介して）動作してもよい。
【００２２】
カーネルの負荷軽減と、クライアント102及びクラウド130の間でのデータの転送及び返送をトランスペアレントに扱うために、OpenCLランタイムに規定されたAPIコールがウェブ／ネットワークサービスとして実装されてもよい。例えば、API関数がアプリケーション104により実行される毎に、仮想装置110はこれを検出し、クラウド130の対応するウェブ／ネットワークサービスを起動してもよい。或る実施例では、クラウド130は、コンピュータシステムの異種の集合から構成されてもよい。唯一の要件は、コンピュータシステムがOpenCLをサポートする点でもよい。各システムは、OpenCLランタイムコールに対応するネットワークサービスを実行してもよい。次に、ネットワークサービスは、サーバでローカルに利用可能な（例えば、１つ以上のサーバ126-1〜126-Zでローカルに利用可能な）OpenCL装置のOpenCL関数を実行してもよい。
【００２３】
図２は、実施例に従って仮想装置を介してOpenCLアプリケーションを高速化する方法200を示している。或る実施例では、ここで（例えば図１又は３〜４を参照して）説明する１つ以上の構成要素は、方法200の１つ以上の動作を実行するために使用されてもよい。
【００２４】
図１〜２を参照すると、動作202において、アプリケーション（例えば、アプリケーション104）が、（例えば、APIコールclGetDeviceIds()を介して）その利用可能な装置のプラットフォームを要求したか否かが決定される。動作204において、プラットフォーム（例えば、図３又は４を参照して説明するようなプロセッサ）は、（例えば、コールclGetDeviceInfo()を介して）特性（property）について利用可能な装置に問い合わせてもよい。動作206において、アプリケーションは、装置の特性とアプリケーションの要件との間の比較を実行してもよい。動作208において、比較結果に基づいて、アプリケーションは装置を選択してもよい。動作210において、アプリケーションは、（例えば、コールclCreateContext()を介して）装置にコンテキストを生成してもよい。動作212において、このコンテキストは、装置との更なる相互作用に使用されてもよい。実施例では、このクラウド拡張ドライバ108は、（例えば、コールclGetDeviceIds()に応じて）返信される利用可能な装置のリストに仮想装置110を追加する。仮想装置は、クラウドにおける利用可能なリソースを表し、その特性は、対応するシステムのハードウェア機能を記述する。
【００２５】
或る実施例では、クラウド130は、強力な及び／又はマルチコアのCPUを備えたサーバ施設から構成されるため、仮想装置の特性CL_DEVICE_TYPEは、CL_DEVICE_TYPE_CPUに設定される。しかし、クラウドシステムは、GPU（Graphics  Processing  Unit）、アクセラレータ等を含んでもよく、この場合、装置形式は、それぞれCL_DEVICE_TYPE_GPU又はCL_DEVICE_TYPE_ACCELERATORになる。このことは、各仮想装置が、クラウドで同じ形式且つ同じ特性を備えた一式の異種の物理システムを表し得ることを意味する。或る実施例では、クラウドは、異種の物理システムに同一の仮想機械を配置することにより、形式CL_DEVICE_TYPE_CPUの仮想装置を実装してもよい。このように、仮想装置の特性は、クラウドにおいて物理システムに配置される仮想機械の構成を実際に反映する。仮想装置を使用するために、アプリケーションは、リストから装置を選択し、ローカル装置と同じOpenCL関数を通じてそれを使用する。従って、アプリケーションは、例えば特性を問い合わせることにより、クラウドシステム上で所与のOpenCLカーネルを実行するのが合理的であるか、ローカルで実行するのが合理的であるかを決定してもよい。或る実施例では、アプリケーションコードは、クラウドを利用するために変更される必要はない。その代わりに、クラウドは、シームレスにOpenCLフレームワークに統合され、専らそのOpenCL特性に基づいてアプリケーションにより選択されてもよい。
【００２６】
従って、或る実施例は、ローカルの計算負荷の軽減と、クラウドコンピューティングとの双方を利用する。例えば、クラウドコンピューティングにより提供されるリソース抽象化（abstraction）／管理及びデータ転送機能並びにプロトコル（ウェブ／ネットワークサービス等）は、仮想OpenCL装置110を介して利用され、OpenCLフレームワークに統合されてもよい。従って、クラウドの潜在能力はOpenCLアプリケーション104に利用可能になり、一般的なクラウド又は特定のクラウドの実装を使用するためにアプリケーションを適合させる必要はほとんどない又は全くない。更に、クラウドのインタフェースとの相互作用は、仮想OpenCL装置110にカプセル化され、OpenCLドライバ108により扱われてもよい。更に、“クラウド可能な（cloud-enabled）”OpenCLフレームワークは、OpenCLアプリケーションがサーバプラットフォームで利用可能な計算能力を利用することを可能にし、広範囲のクライアント・フォームファクタ（form  factor）を通じた優れた機能及び／又はユーザ経験をもたらす。例えば、シン装置（thin  device）の計算能力は、サーバ施設により通常に提供される機能を含むように拡張されてもよい。更に、OpenCLクラウドサービスは、新たなビジネスサービスとして提供されてもよい。例えば、OpenCLドライバは、使用毎の課金で無料で提供されてもよい。
【００２７】
図３は、コンピュータシステム300のブロック図を示している。様々な実施例では、システム300の１つ以上の構成要素は、本発明の或る実施例を参照してここで説明した１つ以上の動作を実行可能な様々な電子装置内に提供されてもよい。例えば、システム300の１つ以上の構成要素は、図１〜２を参照して説明した動作（例えば、コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化）を実行するために使用されてもよい。また、ここで（例えば、図３及び／又は４を参照して）説明する様々な記憶装置は、データ、動作結果等を格納するために使用されてもよい。一実施例では、図３の方法300の動作に関連してプロセッサ302により実行される一連の命令を含むデータは、メモリ装置（図３のプロセッサ302又は図４の402／404に存在するメモリ312又は１つ以上のキャッシュ（例えば、実施例ではL1キャッシュ）等）に格納されてもよい。
【００２８】
更に、コンピュータシステム300は、相互接続ネットワーク（又はバス）302を介して通信する１つ以上の中央処理装置（CPU）302又はプロセッサを含んでもよい。プロセッサ302は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク120上で通信されるデータを処理する）、又は他の形式のプロセッサ（RISC（reduced  instruction  set  computer）プロセッサ又はCISC（complex  instruction  set  computer）を含む）を含んでもよい。更に、プロセッサ302は、単一又は複数コアの設計を有してもよい。複数コアの設計を備えたプロセッサ302は、異なる形式のプロセッサのコアを同じ集積回路（IC）のダイに統合してもよい。また、複数コアの設計を備えたプロセッサ302は、対称型又は非対称型マルチプロセッサとして実装されてもよい。更に、プロセッサ302は、SIMD（Single-Instruction,  Multiple-Data）アーキテクチャを利用してもよい。
【００２９】
チップセット306はまた、相互接続ネットワーク304と通信してもよい。チップセット306は、メモリコントロールハブ（MCH：memory  control  hub）308を含んでもよい。MCH308は、メモリ312（システム300がクライアントである場合、図１の１つ以上の項目104-112を格納してもよく、システム300がクラウドリソース／サーバである場合、図１の１つ以上の項目132-136を格納してもよい）と通信するメモリコントローラ310を含んでもよい。メモリ312は、プロセッサ又はコンピュータシステム300に含まれる他の装置により実行される一連の命令を含み、データを格納してもよい。本発明の一実施例では、メモリ312は、１つ以上の揮発性記憶（又はメモリ）装置（ランダムアクセスメモリ（RAM）、ダイナミックRAM（DRAM）、シンクロナスDRAM（SDRAM）、スタティックRAM（SRAM）、又は他の種類の記憶装置等）を含んでもよい。ハードディスクのような不揮発性メモリも利用されてもよい。複数のCPU及び／又は複数のシステムメモリのように、更なる装置は、相互接続ネットワーク304を介して通信してもよい。
【００３０】
MCH308はまた、ディスプレイ316と通信するグラフィックインタフェース314を含んでもよい。ディスプレイ316は、ここで説明した動作結果をユーザに示すために使用されてもよい。本発明の実施例では、ディスプレイ316は、例えば、ビデオメモリ又はシステムメモリのような記憶装置に格納された画像のデジタル表現を、ディスプレイ316により解釈されて表示されるディスプレイ信号に変換する信号変換器を通じて、グラフィックインタフェース314と通信するフラットパネルディスプレイでもよい。インタフェース314により生成されるディスプレイ信号は、ディスプレイ316により解釈されて次に表示される前に、様々な制御装置を通過してもよい。
【００３１】
ハブインタフェース318は、MCH308及び入出力制御ハブ（ICH：input/output  control  hub）320が通信することを可能にしてもよい。ICH320は、コンピュータシステム300と通信するI/O装置へのインタフェースを提供してもよい。ICH320は、PCI（peripheral  component  interconnect）ブリッジ、USB（universal  serial  bus）コントローラ、又は他の種類の周辺機器ブリッジ若しくはコントローラのような、周辺機器ブリッジ（又はコントローラ）324を通じてバス322と通信してもよい。ブリッジ324は、CPU302と周辺機器装置との間のデータ経路を提供してもよい。他の種類のトポロジが利用されてもよい。また、複数のバスは、例えば複数のブリッジ又はコントローラを通じて、ICH320と通信してもよい。更に、本発明の様々な実施例では、ICH320と通信する他の周辺機器は、IDE（integrated  drive  electronics）若しくはSCSI（small  computer  system  interface）ハードドライブ、USBポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインタフェース（DVI：digital  video  interface））又は他の装置を含んでもよい。
【００３２】
バス322は、オーディオ装置326と、１つ以上のディスクドライブ328と、ネットワークインタフェース装置330と通信してもよい。ネットワークインタフェース装置330は、コンピュータネットワーク120と通信してもよい。実施例では、装置330は、無線通信可能なNICでもよい。他の装置は、バス322を介して通信してもよい。また、本発明の或る実施例では、様々な構成要素（ネットワークインタフェース装置330等）は、MCH308と通信してもよい。更に、プロセッサ302及びMCH308は、単一のチップを形成するように組み合わされてもよい。更に、本発明の他の実施例では、グラフィックインタフェース314は、MCH308内に含まれてもよい。
【００３３】
更に、コンピュータシステム300は、揮発性及び／又は不揮発性メモリ（又は記憶装置）を含んでもよい。例えば、不揮発性メモリは、読み取り専用メモリ（ROM）、プログラム可能ROM（PROM）、消去可能PROM（EPROM）、電気的EPROM（EEPROM）、ディスクドライブ（例えば328）、フロッピー（登録商標）ディスク、コンパクトディスクROM（CD-ROM）、DVD（digital  versatile  disk）、フラッシュメモリ、磁気光ディスク、又は電子データ（例えば命令を含む）を格納可能な他の種類の不揮発性機械可読媒体のうち１つ以上を含んでもよい。実施例では、システム300の構成要素は、図４を参照して説明したように、ポイント・ツー・ポイント（PtP）構成で構成されてもよい。例えば、プロセッサ、メモリ、及び／又は入出力装置は、複数のポイント・ツー・ポイント・インタフェースにより相互接続されてもよい。
【００３４】
図４は、本発明の実施例に従ってポイント・ツー・ポイント（PtP）構成で構成されたコンピュータシステム400を示している。特に、図４は、プロセッサ、メモリ及び入出力装置が複数のポイント・ツー・ポイント・インタフェースにより相互接続されているシステムを示している。図１〜３を参照して説明した動作は、システム400の１つ以上の構成要素により実行されてもよい。
【００３５】
図４に示すように、システム400は、複数のプロセッサを含んでもよく、このうち２つのみ（プロセッサ402及び404）が明瞭にするために図示されている。プロセッサ402及び404のそれぞれは、メモリ410及び412と結合するためのローカルのメモリコントローラハブ（MCH：memory  controller  hub）406及び408を含んでもよい。メモリ410及び／又は412は、図３のメモリ312を参照して説明したような様々なデータを格納してもよい（システム400がクライアントである場合、図１の１つ以上の項目104-112を格納してもよく、システム400がクラウドリソース／サーバである場合、図１の１つ以上の項目132-136を格納してもよい）。
【００３６】
プロセッサ402及び404は、図３のプロセッサ302を参照して説明したもののような如何なる適切なプロセッサでもよい。プロセッサ402及び404は、それぞれPtPインタフェース回路416及び418を使用して、ポイント・ツー・ポイント（PtP）インタフェース414を介してデータを交換してもよい。プロセッサ402及び404のそれぞれは、ポイント・ツー・ポイント・インタフェース回路426、428、430及び432を使用して、個々のPtPインタフェース422及び424を介してチップセット420とデータを交換してもよい。チップセット420はまた、PtPインタフェース回路437を使用して、高性能グラフィックインタフェース436を介して高性能グラフィック回路434とデータを交換してもよい。
【００３７】
本発明の少なくとも１つの実施例は、プロセッサ402及び404を利用することにより提供されてもよい。例えば、プロセッサ402及び／又は404は、図１〜３の１つ以上の動作を実行してもよい。しかし、本発明の他の実施例は、図４のシステム400内の他の回路、ロジックユニット又は装置に存在してもよい。更に、本発明の他の実施例は、図４に示す複数の回路、ロジックユニット又は装置を通じて分散されてもよい。
【００３８】
チップセット420は、PtPインタフェース回路441を使用してバス440に結合されてもよい。バス440は、バスブリッジ442及びI/O装置443のように、それに結合された１つ以上の装置を有してもよい。バス444を介して、バスブリッジ442は、他の装置（キーボード／マウス445、図４を参照して説明したネットワークインタフェース装置430（コンピュータネットワーク120に結合され得るモデム、ネットワークインタフェースカード（NIC）等）、オーディオI/O装置、及び／又はデータ記憶装置448等）に結合されてもよい。データ記憶装置448は、プロセッサ402及び／又は404により実行され得るコード449を格納してもよい。
【００３９】
本発明の様々な実施例では、ここで（例えば、図１〜４を参照して）説明した動作は、ハードウェア（例えば、論理回路）、ソフトウェア（例えば、図１〜４を参照して説明したプロセッサのようなプロセッサの動作を制御するマイクロコードを含む）、ファームウェア、又はこれらの組み合わせとして実装されてもよく、これは、コンピュータプログラムプロダクト（例えば、ここで説明した動作を実行するようにコンピュータ（例えば、コンピュータ装置のプロセッサ又は他のロジック）をプログラムするために使用される命令（又はソフトウェアの手順）を格納した有形の機械可読又はコンピュータ可読媒体を含む）として提供されてもよい。機械可読媒体は、ここで説明したもののような記憶装置を含んでもよい。
【００４０】
更に、このような有形のコンピュータ可読媒体は、コンピュータプログラムプロダクトとしてダウンロードされてもよい。プログラムは、通信リンク（例えば、バス、モデム又はネットワーク接続）を介して有形の伝送媒体に具現されたデータ信号を用いて、遠隔コンピュータ（例えば、サーバ）から要求側コンピュータ（例えば、クライアント）に転送されてもよい。
【００４１】
本発明の実施例について、構造的特徴及び／又は方法的動作に特有の言語で説明したが、特許請求の範囲は、記載した特定の特徴又は動作に限定され得ないことがわかる。むしろ、特定の特徴及び動作は、特許請求の範囲を実現するサンプル形式として開示される。
【符号の説明】
【００４２】
100  コンピュータシステム
102  クライアント
104  OpenCLクライアントアプリケーション
106  OpenCL  API
108  OpenCLドライバ
110  仮想OpenCL装置
112  クライアントネットワークサービス
120  ネットワーク
122  リソースブローカロジック
126  サーバ
130  クラウド
132  ネットワークサービス
134  OpenCL  API
136  OpenCLドライバ
【図１】
2011138506.tif 000003
【図２】
2011138506.tif 000004
【図３】
2011138506.tif 000005
【図４】
2011138506.tif 000006