説明

写実的画像形成の処理負荷を分散するためのシステム及び方法

【課題】 改善された写実的画像形成の処理負荷を分散させるためのシステム及び方法を提供する。
【解決手段】 グラフィックス・クライアントが、シーン・モデル・データを含むフレームを受信する。サーバ負荷分散ファクタ及び予測レンダリング・ファクタを設定する。サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、フレームを複数のサーバ帯域に分配する。サーバ帯域を複数の計算サーバに分散させる。計算サーバから処理済みサーバ帯域を受信する。受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てる。画像としてユーザに表示するために、処理済みフレームを伝送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータ・ネットワーキング及び並行処理に関し、より具体的には、改善された写実的(photorealistic)画像形成の処理負荷を分散させるためのシステム及び方法に関する。
【背景技術】
【0002】
マイクロプロセッサ・システムのような現代の電子コンピュータ・システムは、多くの場合、計算集約型タスクを別個のサブタスクに分割するように構成される。異機種システムの場合、一部のシステムは、キャッシュ認識(cache-aware)型タスク分割を用いて、分散アプリケーションの性能を改善する。技術が発展するにつれて、高速のローカル・キャッシュと低速の大容量メモリとの間のギャップが拡大し、キャッシングがさらに重要になる。一般的に、典型的な現在のシステムは、多数の処理要素(PE)にわたって作業を分散させて、キャッシュ・ヒット率を改善し、データの待ち時間を低減させようする。
【0003】
例えば、光線追跡法などの写実的画像形成技術は、通常、固定されたデータ・アクセス・パターンをもたない、計算コストの高いアルゴリズムである。しかし、それにも関わらず、光線追跡法のタスクは、非常に高い空間的局所性及び時間的局所性を有することができる。従って、光線追跡用途のためのキャッシュ認識型タスク分散は、高い性能利得をもたらし得る。
【0004】
しかし、典型的な光線追跡手法は、キャッシュ認識型タスク分散を十分に利用するように構成することができない。例えば、現在の光線追跡機構は、画像をタイルに分割することによって、レンダリングの問題を分解する。典型的な光線追跡機構は、これらのタイルを計算ユニットの間で明確に分散させるか、又は、ワーク・スティーリングを通じたPEによるアクセスのために、タイルを貪欲に保留する。
【0005】
これらの手法のどちらにも著しく不利な点がある。典型的な明確な分散システムにおいては、タイルの分散を管理するのに必要な付加的な処理負荷により性能が抑制される。場合によっては、この付加的な処理負荷が、分散の管理によって達成された利得を減じることがある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
典型的なワーク・スティーリング・システムにおいては、各々のPEは、前の割り当てを処理した後に新しいタイルを取り込む。しかし、PEは一般的なプールからタイルを取り込むので、タイルが高い空間的局所性を有する可能性は低い。従って、ワーク・スティーリング・システムにおいて、PEは、キャッシュを新しいシーン・データで定期的にフラッシュするので、次のフレームについては準備ができておらず、タスクの空間的局所性を全く利用することができない。
【課題を解決するための手段】
【0007】
以下の要約は、開示される実施形態に特有の革新的な特徴の一部の理解を容易にするために提供されるものであり、完全な説明となることを意図するものではない。実施形態の種々の態様の完全な認識は、明細書全体、特許請求の範囲、及び図面を全体として考慮に入れることによって得ることができる。
【0008】
グラフィックス・クライアントが、シーン・モデル・データを含むフレームを受信する。シーン・モデル・データに基づいて、サーバの負荷分散ファクタを設定する。シーン・モデル・データに基づいて、予測レンダリング・ファクタを設定する。サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、フレームを複数のサーバ帯域に分配する。サーバ帯域を複数の計算サーバに分散させる。計算サーバから処理済みサーバ帯域を受信する。受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てる。画像としてユーザに表示するために、処理済みフレームを伝送する。
【0009】
代替的な実施形態において、システムが、グラフィックス・クライアントを含む。グラフィックス・クライアントは、シーン・モデル・データを含むフレームを受信し、シーン・モデル・データに基づいてサーバ負荷分散ファクタを設定し、シーン・モデル・データに基づいて予測レンダリング・ファクタを設定し、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配し、複数のサーバ帯域を複数の計算サーバに分散させ、複数の計算サーバから処理済みサーバ帯域を受信し、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立て、画像としてユーザに表示するために、処理済みフレームを伝送するように構成される。
【0010】
第1の態様から見ると、本発明は、グラフィックス・クライアントによってフレームを受信するステップと、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配するステップと、複数のサーバ帯域を複数の計算サーバに分散させるステップと、複数の計算サーバから処理済みサーバ帯域を受信するステップと、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立てるステップと、画像としてユーザに表示するために処理済みフレームを伝送するステップとを含み、フレームを分配するステップは、水平方向のサーバ帯域と垂直方向のサーバ帯域の間で選択するステップをさらに含む、データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法を提供する。
する。
【0011】
本発明は、ユーザ入力を受信するステップをさらに含み、予測レンダリング・ファクタを設定するステップは、受信したユーザ入力に基づいて予測レンダリング・ファクタを設定するステップをさらに含む、方法を提供することが好ましい。
【0012】
本発明は、複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信するステップをさらに含み、サーバ負荷分散ファクタを設定するステップは、報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定するステップをさらに含む、方法を提供することが好ましい。
【0013】
本発明は、処理済みフレーム帯域を組み立てるステップが、受信した処理済みサーバ帯域を復元するステップをさらに含む、方法を提供することが好ましい。
【0014】
第2の態様から見ると、本発明は、計算サーバによって、シーン・モデル・データを含むロー表示帯域を受信するステップであって、計算サーバは複数の処理要素(PE)を含むステップと、PE負荷分散ファクタに基づいてロー表示帯域を複数のPEブロックに分配するステップと、複数のPEブロックを複数のPEに分散させるステップと、各PEによって、PEブロックをレンダリングして、レンダリング済みPEブロックを生成するステップと、計算サーバによって、レンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成するステップと、計算サーバによって、各PEについてのレンダリング時間を判断するステップと、判断したレンダリング時間に基づいてPE負荷分散ファクタを修正するステップと、処理済み表示帯域をグラフィックス・クライアントに伝送するステップとを含む、サーバ・データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法を提供する。
【0015】
本発明は、伝送するステップが、処理済み表示帯域を圧縮するステップをさらに含む、方法を提供することが好ましい。
【0016】
本発明は、判断したレンダリング時間に基づいたレンダリング時間をグラフィックス・クライアントに報告するステップをさらに含む、方法を提供することが好ましい。
【0017】
本発明は、ロー表示帯域が予測レンダリング入力をさらに含み、ロー表示帯域を分配するステップが、PE負荷分散ファクタ及び予測レンダリング入力に基づいて分配するステップをさらに含む、方法を提供することが好ましい。
【0018】
本発明は、PE負荷分散ファクタを修正するステップが、判断したレンダリング時間及び受信した予測レンダリング入力に基づいてPE負荷分散ファクタを修正するステップを含む、方法を提供することが好ましい。
【0019】
別の態様から見ると、本発明は、グラフィックス・クライアントを含むシステムであって、グラフィックス・クライアントが、フレームを受信し、サーバ負荷分散ファクタを設定し、予測レンダリング・ファクタを設定し、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配し、複数のサーバ帯域を複数の計算サーバに分散させ、複数の計算サーバから処理済みサーバ帯域を受信し、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立て、画像としてユーザに表示するために処理済みフレームを伝送するように構成された、システムを提供する。
【0020】
本発明は、グラフィックス・クライアントが、ユーザ入力を受信するようにさらに構成され、予測レンダリング・ファクタを設定することが、受信したユーザ入力に基づいて予測レンダリング・ファクタを設定することをさらに含む、システムを提供することが好ましい。
【0021】
本発明は、グラフィックス・クライアントが、複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信するようにさらに構成され、サーバ負荷分散ファクタを設定することが、報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定することをさらに含む、システムを提供することが好ましい。
【0022】
本発明は、複数の計算サーバをさらに含み、各々の計算サーバは、グラフィックス・クライアントに結合され、複数の処理要素(PE)を含み、かつ、グラフィックス・クライアントからシーン・モデル・データを含むロー表示帯域を受信し、PE負荷分散ファクタに基づいてロー表示帯域を複数のPEブロックに分配し、複数のPEブロックを複数のPEに分散させるように構成され、各々のPEは、PEブロックをレンダリングして、レンダリングされたPEブロックを生成するように構成され、各々の計算サーバは、その計算サーバのPEによってレンダリングされたレンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成し、その計算サーバのPEの各々についてのレンダリング時間を判断し、判断したレンダリング時間に基づいてPE負荷分散ファクタを修正し、処理済み表示帯域をグラフィックス・クライアントに伝送するようにさらに構成された、システムを提供することが好ましい。
【0023】
本発明は、ロー表示帯域が予測レンダリング入力をさらに含み、ロー表示帯域を分配することが、PE負荷分散ファクタ及び予測レンダリング入力に基づいて分配することをさらに含む、システムを提供することが好ましい。
【0024】
別の態様から見ると、本発明は、コンピュータ・システムにロードされ、実行されたときに、上述したような方法の全てのステップを実行するためのコンピュータ・プログラム・コードを含む、コンピュータ・プログラムを提供することが好ましい。
【0025】
別の態様から見ると、本発明は、シーン・モデル・データを含むフレームを受信するように構成されたコンピュータ使用可能プログラム・コードと、シーン・モデル・データに基づいてサーバ負荷分散ファクタを設定するように構成されたコンピュータ使用可能プログラム・コードと、シーン・モデル・データに基づいて予測レンダリング・ファクタを設定するように構成されたコンピュータ使用可能プログラム・コードと、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配するように構成されたコンピュータ使用可能プログラム・コードと、複数のサーバ帯域を複数の計算サーバに分散させるように構成されたコンピュータ使用可能プログラム・コードと、複数の計算サーバから処理済みサーバ帯域を受信するように構成されたコンピュータ使用可能プログラム・コードと、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立てるように構成されたコンピュータ使用可能プログラム・コードと、画像としてユーザに表示するために処理済みフレームを伝送するように構成されたコンピュータ使用可能プログラム・コードとを含む、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体上に格納された、デジタル化グラフィック・フレームを処理するためのコンピュータ・プログラムを提供する。
【0026】
本発明は、ユーザ入力を受信するように構成されたコンピュータ使用可能プログラム・コードをさらに含み、予測レンダリング・ファクタを設定することが、シーン・モデル・データ及び受信したユーザ入力に基づいて予測レンダリング・ファクタを設定することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【0027】
本発明は、フレームを分配することが、水平方向のサーバ帯域と垂直方向のサーバ帯域の間で選択することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【0028】
本発明は、複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信するように構成されたコンピュータ使用可能プログラム・コードをさらに含み、サーバ負荷分散ファクタを設定することが、シーン・モデル・データ及び報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定することをさらに含むコンピュータ・プログラムを提供することが好ましい。
【0029】
本発明は、処理済みフレーム帯域を組み立てることが、受信した処理済みサーバ帯域を復元することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【0030】
別の態様から見ると、本発明は、シーン・モデル・データを含むロー表示帯域を受信するように構成されたコンピュータ使用可能プログラム・コードと、PE負荷分散ファクタに基づいてロー表示帯域を複数のPEブロックに分配するように構成されたコンピュータ使用可能プログラム・コードと、複数のPEブロックを複数のPEに分散させるように構成されたコンピュータ使用可能プログラム・コードと、各PEによって、PEブロックをレンダリングして、レンダリング済みPEブロックを生成するように構成されたコンピュータ使用可能プログラム・コードと、レンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成するように構成されたコンピュータ使用可能プログラム・コードと、各PEについてのレンダリング時間を判断するように構成されたコンピュータ使用可能プログラム・コードと、判断したレンダリング時間に基づいてPE負荷分散ファクタを修正するように構成されたコンピュータ使用可能プログラム・コードと、処理済み表示帯域をグラフィックス・クライアントに伝送するように構成されたコンピュータ使用可能プログラム・コードとを含む、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体上に格納された、デジタル化グラフィック・フレームを処理するためのコンピュータ・プログラムを提供する。
【0031】
本発明は、伝送することが処理済み表示帯域を圧縮することを含む、コンピュータ・プログラムを提供することが好ましい。
【0032】
本発明は、判断したレンダリング時間に基づいたレンダリング時間をグラフィックス・クライアントに報告するように構成されたコンピュータ使用可能プログラム・コードを含む、コンピュータ・プログラムを提供することが好ましい。
【0033】
本発明は、ロー表示帯域がさらに予測レンダリング入力をさらに含み、ロー表示帯域を分配することが、PE負荷分散ファクタ及び予測レンダリング入力に基づいて分配することを含む、コンピュータ・プログラムを提供することが好ましい。
【0034】
本発明は、PE負荷分散ファクタを修正することが、判断したレンダリング時間及び受信した予測レンダリング入力に基づいてPE負荷分散ファクタを修正することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【0035】
同じ参照数字が別個の図面を通して同一の又は機能的に類似した要素を示し、詳細な説明と共に明細書に組み込まれその一部を形成する添付の図面は、ここに開示される実施形態を説明するのに役立つ。
【図面の簡単な説明】
【0036】
【図1】好ましい実施形態による、改善された写実的画像形成システムを示すブロック図を示す。
【図2】好ましい実施形態による、改善されたグラフィックス・クライアントを示すブロック図を示す。
【図3】好ましい実施形態による、改善された計算サーバを示すブロック図を示す。
【図4】好ましい実施形態に従って実施することができる、改善された写実的画像形成の処理負荷分散方法の論理動作ステップを示す高レベル・フロー図を示す。
【図5】好ましい実施形態に従って実施することができる、改善された写実的画像形成の処理負荷分散方法の論理動作ステップを示す高レベル・フロー図を示す。
【図6】1つ又は複数の好ましい実施形態を組み込むように構成することができる例示的なコンピュータ・システムを示すブロック図を示す。
【発明を実施するための形態】
【0037】
これらの非限定的な例に記述された特定の値及び構成は、異なるものであってもよく、単に少なくとも1つの実施形態を示すために挙げられているものにすぎず、本発明の範囲を限定することを意図するものではない。
【0038】
以下の説明において、本発明の完全な理解を与えるために、多くの特定の詳細が説明される。当業者であれば、本発明をこれらの特定の詳細なしに実施できることを理解するであろう。他の例では、本発明を不必要な詳細で不明瞭にしないために、周知の要素は、概略図又はブロック図の形で示される。さらに、殆どの部分に関して、ネットワーク通信、電磁信号伝達技術、ユーザ・インターフェース、又は入力/出力技術等に関する詳細は、こうした詳細が、本発明の完全な理解を得るために必要であるとは考えられず、かつ、当業者の理解の範囲内にあると考えられる限り省略されている。
【0039】
当業者には理解されるように、本発明は、システム、方法、又はコンピュータ・プログラムとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形式をとることができ、これらは全て、本明細書において一般的に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明は、媒体内に具体化されたコンピュータ使用可能プログラム・コードを有する、いずれかの有形の表現媒体内に具体化されたコンピュータ・プログラムの形態をとることができる。
【0040】
1つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体のシステム、装置、デバイス又は伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより具体的な例(非網羅的なリスト)として、以下のもの、すなわち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、インターネット又はイントラネットをサポートする伝送媒体、又は磁気記憶装置が挙げられる。プログラムが印刷された紙又は他の適切な媒体も、そのプログラムを例えば、その紙又は他の媒体の光学スキャンによって電子的にキャプチャし、次いで、コンパイルし、解釈し、又は必要に応じてそれ以外の適切な手法で処理し、その後、コンピュータ・メモリ内に格納することができるので、コンピュータ使用可能媒体又はコンピュータ可読媒体はプログラムが印刷された紙又は別の適切な媒体とすることさえできることに留意されたい。本明細書の文脈内において、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって使用するため、又はこれらと接続して使用するために、プログラムを収納、保存、通信、伝搬、又は輸送することができるあらゆる媒体とすることができる。コンピュータ使用可能媒体は、コンピュータ使用可能なプログラム・コードがその中で具体化された、ベースバンド内の又は搬送波の一部としての、伝搬されたデータ信号を含むものとすることができる。コンピュータ使用可能プログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、及びRFなどを含むいずれかの適切な媒体を用いて伝送することができる。
【0041】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様なプログラミング言語のような、従来型の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立したソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモート・コンピュータ上で実行される場合もあり、又は完全にリモート・コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオの場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
【0042】
本発明は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラムのフローチャート図及び/又はブロック図を参照して、以下で説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、機械を製造するために、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施するための手段を作り出すようにさせることができる。
【0043】
これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置に特定の方法で機能するように指示することができるコンピュータ可読媒体に格納し、それにより、そのコンピュータ可読媒体に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施する命令手段を含む製品を製造するようにさせることもできる。
【0044】
コンピュータ・プログラム命令をコンピュータ又は他のプログラム可能データ処理装置上にロードして、一連の動作ステップをコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施するためのプロセスを提供するように、コンピュータにより実行されるプロセスを生成することもできる。
【0045】
プログラム・コードを格納し、及び/又は実行するのに適したデータ処理システムは、システム・バスを介してメモリ要素に直接的又は間接的に結合された少なくとも1つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量ストレージからコードを取り出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的に格納するキャッシュ・メモリを含むことができる。
【0046】
入力/出力、すなわちI/O装置(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む)は、直接、又は介在するI/Oコントローラを通じてのどちらかで、システムに結合することができる。データ処理システムが、介在する私設又は公衆ネットワークを通じて他のデータ処理システム又はリモート・プリンタ若しくはストレージ・デバイスに接続することを可能にするために、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現在利用可能なネットワーク・アダプタのタイプのうちのごく一部である。
【0047】
ここで図面を参照すると、図1は、本発明の好ましい実施形態による、改善された写実的画像形成の処理負荷を分散させるためのシステム100の特定のコンポーネントを示す高レベル・ブロック図である。システム100は、グラフィックス・クライアント110を含む。
【0048】
グラフィックス・クライアント110は、以下に図2と関連してより詳細に説明されるような、グラフィックス・クライアント・モジュール又はデバイスである。グラフィックス・クライアント110は、ディスプレイ120に結合される。ディスプレイ120は、デジタル化されたグラフィック画像をユーザに表示するように構成された、他の点では従来型のディスプレイである。
【0049】
グラフィックス・クライアント110はまた、ユーザ・インターフェース130にも結合される。ユーザ・インターフェース130は、ユーザ132との間で情報を送受信するように構成された、他の点では従来型のユーザ・インターフェースである。1つの実施形態において、グラフィックス・クライアント110は、ユーザ・インターフェース130からユーザ入力を受信する。1つの実施形態において、ユーザ入力は、複数の画像フレームを含み、各々フレームは、画像内に配置されたオブジェクトを記述するシーン・モデル・データを含む。1つの実施形態において、ユーザ入力はまた、画像フレームごとの視点(又は「眼」)の運動を記述するカメラ運動コマンドを含む。
【0050】
示される実施形態において、グラフィックス・クライアント110はまた、ネットワーク140にも結合されている。ネットワーク140は、他の点では従来型のネットワークである。1つの実施形態においては、ネットワーク140は、ギガビット・イーサネット・ネットワークである。代替的な実施形態においては、ネットワーク140は、Infinibandネットワークである。
【0051】
ネットワーク140は、複数の計算サーバ150にも結合されている。各々の計算サーバ150は、以下に図3と関連してより詳細に説明される計算サーバである。示される実施形態において、グラフィックス・クライアント110は、ネットワーク140を通して計算サーバ150に結合されている。
【0052】
代替的な実施形態において、グラフィックス・クライアント110は、直接リンク152を通して1つ又は複数の計算サーバ150に結合されている。1つの実施形態においては、リンク152は、物理的な直接リンクである。代替的な実施形態においては、リンク152は、仮想プライベート・ネットワーク(VPN)リンクのような仮想リンクである。
【0053】
一般に、以下により詳細に説明される例示的な動作において、システム100は、次のように動作する。ユーザ132が、ユーザ・インターフェース130を通して、一連の画像をディスプレス120上に表示するよう、グラフィックス・クライアント110に指示する。グラフィックス・クライアント110は、例えば、一連のフレームをグラフィックス・クライアント110上のストレージ又はユーザ・インターフェース130から取り出すことにより、一連のデジタル化画像「フレーム」として一連の画像を受信する。一般に、各フレームは、シーン内に配置された要素を記述するシーン・モデル・データを含む。
【0054】
各フレームごとに、グラフィックス・クライアント110は、フレームを複数のサーバ帯域に分配し、各々のサーバ帯域は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて特定の計算サーバ150と関連付けられている。グラフィックス・クライアント110は、サーバ帯域を計算サーバ150に分散させる。各計算サーバ150(複数の処理要素(PE)を含む)は、受信したサーバ帯域(「ロー(raw)表示帯域」として受信される)を、各々がPE負荷分散ファクタに基づいて特定のPEと関連付けられたPEブロックに分割する。幾つかの実施形態においては、計算サーバ150は、PE負荷分散ファクタ及びグラフィックス・クライアント110から受信した予測レンダリング情報に基づいて、サーバ帯域をPEブロックに分割する。計算サーバ150は、PEブロックをこれらのPEに分散させる。
【0055】
PEはPEブロックを処理し、ロー・フレーム・データをレンダリングし、計算集約型作業を行なって、該ロー・フレーム・データをターゲット・ディスプレイ120に適した形式に変化させる。写実的画像形成の処理においては、レンダリングは、光線追跡法、アンビエント・オクルージョン(ambient occlusion)、及び他の技術を含むことができる。PEは、処理済みPEブロックをこれらの親計算サーバ150に戻し、親計算サーバ150は、処理済みPEブロックを処理済み表示帯域に構築する。
【0056】
幾つかの実施形態においては、計算サーバ150は、グラフィックス・クライアント110への伝送のために処理済み表示帯域を圧縮する。幾つかの実施形態においては、1つ又は複数の計算サーバ150は、更なる圧縮なしに処理済み表示帯域を伝送する。各計算サーバ150は、PEの各々がそのPEブロックをレンダリングするのにかかる時間と、ロー表示帯域全体についての総レンダリング時間とを判断する。
【0057】
計算サーバ150は、各PEについての個々のレンダリング時間に基づいて、PE負荷分散ファクタを調整する。1つの実施形態において、各計算サーバ150はまた、その総レンダリング時間をグラフィックス・クライアント110に報告する。
【0058】
グラフィックス・クライアント110は、処理済み表示帯域を受信し、該帯域を処理済みフレームに構築する。グラフィックス・クライアント110は、ユーザに表示するために、処理済みフレームをディスプレイ120に伝送する。1つの実施形態において、グラフィックス・クライアント110は、計算サーバ150から受信した報告されたレンダリング時間に基づいて、負荷分散ファクタを修正する。
【0059】
従って、上記に全体的に説明され、以下により詳細に説明されるように、グラフィックス・クライアント110は、一部はサーバ間の相対的負荷に基づき、一部はユーザから受信した予測レンダリング情報に基づいて、未処理のサーバ帯域を計算サーバ150に分散させる。計算サーバ150は、PEブロックと予測レンダリング情報との間の相対的負荷に基づいて、未処理のサーバ帯域をPEブロックに分割する。PEはブロックを処理し、これにより、計算サーバ150は組み合わされて処理済み帯域となり、グラフィックス・クライアント110に戻される。グラフィックス・クライアント110は、受信した処理済み帯域をユーザに表示するのに適した形式に構築する。計算サーバ150及びグラフィックス・クライアント110の両方とも、レンダリング時間を用いて、負荷分散ファクタを動的に調整する。
【0060】
このように、システム100は、計算集約型タスクを実行する要素の間で処理負荷を動的に分散させることができる。フレーム・データが変わると、フレームの特定の部分が他の部分よりも計算集約的になるが、システムは、応答時間をほぼ等しく保持するようにタスクを再配分することで応答することができる。当業者であれば理解するように、ほぼ同等しい応答時間は、負荷のバランスのとれていることを示し、PE/サーバについてのアイドル時間を低減させる助けとなる。
【0061】
図2は、本発明の1つの実施形態による例示的なグラフィックス・クライアント200を示すブロック図である。特に、クライアント200は、制御処理ユニット(PU)202を含む。制御PU202は、他の点では従来型の処理ユニットであり、ここで説明されるように構成される。1つの実施形態においては、クライアント200は、PlayStation3(商標)(PS3)である。代替的な実施形態においては、クライアント200は、x86マシンである。代替的な実施形態においては、クライアント200は、シン・クライアント(thin client)である。
【0062】
クライアント200はまた、負荷分散モジュール204も含む。一般に、制御PU202及び負荷分散モジュール204は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、グラフィックス画像フレームを複数の帯域に分配する。特に、1つの実施形態において、負荷分散モジュール204は、サーバ応答時間及びユーザ入力に基づいて、サーバ負荷分散ファクタを設定し、修正するように構成される。1つの実施形態においては、ユーザ入力は、手作業によるサーバ負荷分散の設定を含む。
【0063】
1つの実施形態において、負荷分散モジュール204は、フレームを、フレーム・データを含む帯域に分割し、システム200は、レンダリングのために、分割されたフレーム・データを計算サーバに伝送する。代替的な実施形態においては、クライアント200は、フレーム内の各帯域の境界を画定する座標情報を伝送する。1つの実施形態においては、座標情報は、キャッシュに入れられた(及び、一般的にアクセス可能な)フレームに関する座標を含む。
【0064】
負荷分散モジュール204はまた、シーン・モデル・データ、ユーザ入力及びサーバ応答時間に基づいて、予測レンダリング・ファクタを設定し、修正するようにも構成される。1つの実施形態において、ユーザ入力は、カメラ運動情報を含む。1つの実施形態において、カメラ運動情報は、視点、又はカメラの「眼」、並びに視点の変化の速度と方向を示す運動ベクトルを含む。
【0065】
例えば、1つの実施形態において、クライアント200は、カメラ運動情報を含むユーザ入力を受領し、従って、眼の運動の方向及び速度を認識している。代替的な実施形態においては、クライアント200は、人間のユーザの眼の運動をカメラの眼の運動に置き換えて、人間のユーザの眼の運動に関する追跡情報を含むユーザ入力を受領する。従って、負荷分散モジュール204は、フレームにわたる計算負荷の変化の予測に基づいて、サーバ帯域の分配を前もって調整することができる。
【0066】
つまり、当業者であれば、フレームの特定の部分が他の部分よりも計算集約的であることを理解するであろう。例えば、実線の単色の背景のみを含むフレーム・セグメントは、複数の光源からの光を反射するディスコ・ボールを含むフレーム・セグメントよりもはるかに計算集約的ではない。従って、例えば、負荷分散モジュール204は、フレームを、3つの帯域、すなわちディスコ・ボールの半分を含む1つの帯域と、各々が背景全体及びディスコ・ボールの四分の一を含む2つの帯域とに分割することができる。
【0067】
さらに、カメラの眼が変化したとき、フレーム内のシーン要素(例えば、ディスコ・ボール)は、該フレームの位置によってフレームに占める量が異なる。1つの実施形態において、カメラの眼の運動情報は、「追跡ベクトル」として、カメラ又は人間の眼の変化の方向及び速度を含む。代替的な実施形態においては、カメラの眼の運動情報は、カメラの眼が合焦されるターゲット・シーン・オブジェクトと、現在の視点からのターゲット・シーン・オブジェクトの相対距離とを含む。つまり、システムが、ユーザの関心の焦点である特定のオブジェクトすなわち「ターゲット・シーン・オブジェクト」を認識している場合、システムは、シーンがシフトして、特定のオブジェクトを表示ウィンドウの中心又は中心近くに向けて移動させると予測することができる。例えば、ターゲット・シーン・オブジェクトが現在の視点の右上方に配置されている場合には、カメラの眼、従ってシーンは、次に右上方にシフトする可能性が高く、負荷分散モジュールはその追跡ベクトルのためのサーバ帯域の分配を最適化することができる。
【0068】
従って、1つの実施形態においては、負荷分散モジュール204は、カメラの眼の運動情報及びシーン・モデル・データを用いて、サーバ帯域の分配を前もって調整し、それにより、計算サーバにわたる計算負荷が等しくなる傾向がある。1つの実施形態において、負荷分散モジュール204は、追跡ベクトル、ターゲット・シーン・オブジェクト及び相対距離を用いて、サーバ帯域の分配の調整規模を決定する。1つの実施形態において、サーバ帯域の分配の調整規模は、サーバ帯域の分配の「積極性」の尺度となる。
【0069】
一般に、フレームをサーバ帯域に分配すると、クライアント200は、サーバ帯域をそれらの割り当てられた計算サーバに分散させる。クライアント200は、代わりに、計算サーバから処理済み表示帯域を受信する。1つの実施形態において、クライアント200は、各計算サーバについての応答時間を判断する。代替的な実施形態において、クライアント200は、各計算サーバから、報告された応答時間を受信する。
【0070】
クライアント200はまた、キャッシュ206を含む。キャッシュ206は、他の点では従来型のキャッシュである。一般に、クライアント200は、処理済みフレーム及び未処理のフレーム、並びに他の情報をキャッシュ206に格納する。
【0071】
クライアント200はまた、復元器208も含む。1つの実施形態において、クライアント200は、計算サーバから、圧縮された処理済みサーバ帯域を受信する。従って、復元器208は、圧縮された処理済みサーバ帯域を復元するように構成される。
【0072】
クライアント200はまた、表示インターフェース210、ユーザ・インターフェース212、及びネットワーク・インターフェース214も含む。表示インターフェース210は、例えば、図1のディスプレイ120のようなディスプレイとインターフェースするように構成された、他の点では従来型の表示インターフェースである。ユーザ・インターフェース212は、例えば、図1のユーザ・インターフェース130として構成された、他の点では従来型のユーザ・インターフェースである。ネットワーク・インターフェース214は、例えば、図1のネットワーク140のようなネットワークとインターフェースするように構成された、他の点では従来型のネットワーク・インターフェースである。
【0073】
上述したように、クライアント200は、例えば、図1のグラフィックス・クライアント110のようなグラフィックス・クライアントである。従って、クライアント200は、レンダリングのためにロー・サーバ帯域を計算サーバに伝送し、表示のために処理済み表示帯域を受信する。図3は、本発明の1つの実施形態による例示的な計算サーバを示す。
【0074】
特に、図3は、本発明の1つの実施形態による例示的な計算サーバ300を示すブロック図である。特に、サーバ300は、制御処理ユニット(PU)302を含む。示されるように、制御PU302は、下述のように動作するように構成された、他の点では従来型の処理ユニットである。
【0075】
サーバ300はまた、複数の処理要素(PE)310も含む。一般に、各PE310は、ローカル・ストア312を有するように構成された、他の点では従来型のPEである。以下により詳細に説明されるように、各PE310は、レンダリングのためにPEブロックを受信し、PEブロックをレンダリングし、レンダリング済みPEブロックを制御PU302に戻す。
【0076】
サーバ300はまた、負荷分散モジュール304も含む。一般に、制御PU302及び負荷分散モジュール304は、PE負荷分散ファクタに基づいて、受信したロー表示帯域を複数のPEブロックに分配する。特に、1つの実施形態において、負荷分散モジュール304は、PE応答時間に基づいて、PE負荷分散ファクタを設定し、修正するように構成される。代替的な実施形態においては、PE負荷分散ファクタは予測レンダリング・ファクタを含み、負荷分散モジュール304は、PE応答時間及びユーザ入力に基づいて、PE負荷分散ファクタを修正するように構成される。
【0077】
1つの実施形態において、負荷分散モジュール304は受信したロー表示帯域を、フレーム・データを含むPEブロックに分割し、制御PU302は、レンダリングのために分割されたフレーム・データをPEに伝送する。代替的な実施形態においては、制御PU302は、各PEブロックの境界を画定する座標情報を伝送する。1つの実施形態において、座標情報は、キャッシュに入れられた(及び一般的にアクセス可能な)フレームに関する座標を含む。
【0078】
一般に、ロー表示帯域をPEブロックに分配すると、サーバ300は、PEブロックをそれらの割り当てられたPEに分散させる。PE310は、受信したPEブロックをレンダリングし、レンダリング済みPEブロックを制御PU302に戻す。1つの実施形態において、各PE310は、レンダリング済みPEブロックをキャッシュ306に格納し、PEがそのPEブロックのレンダリングを完了したことを制御PU302に示す。
【0079】
従って、サーバ300はまた、キャッシュ306も含む。キャッシュ306は、他の点では従来型のキャッシュである。一般に、サーバ300は、処理済み帯域及び未処理の帯域、PEブロック、並びに他の情報をキャッシュ306に格納する。
【0080】
サーバ300はまた、圧縮器308も含む。1つの実施形態において、グラフィックス・クライアントは、計算サーバから、圧縮された処理済みサーバ帯域を受信する。従って、圧縮器308は、グラフィックス・クライアントへの伝送のために処理済みサーバ帯域を圧縮するように構成される。
【0081】
サーバ300はまた、ネットワーク・インターフェース314も含む。ネットワーク・インターフェース314は、例えば、図1のネットワーク140のようなネットワークとインターフェースするように構成される、他の点では従来型のネットワーク・インターフェースである。
【0082】
一般に、サーバ300は、グラフィックス・クライアントから、ロー表示帯域を受信する。制御PU302及び負荷分散モジュール304は、PE負荷分散ファクタに基づいて、受信した表示帯域をPEブロックに分割する。PE310は、割り当てられたブロックをレンダリングし、制御PU302は、レンダリング済みPEブロックを処理済み表示帯域に構築する。圧縮器308は、処理済み表示帯域を圧縮し、サーバ300は、処理済み表示帯域をグラフィックス・クライアントに伝送する。
【0083】
1つの実施形態においては、制御PU302は、各PE310についてのレンダリング時間に基づいて、PE負荷分散ファクタを調整する。1つの実施形態において、制御PU302はまた、表示帯域全体についての総レンダリング時間も判断し、総レンダリング時間をグラフィックス・クライアントに報告する。従って、一般に、サーバ300は、PEにおける負荷の変化に適合するようにPE負荷分散ファクタを修正することができる。
【0084】
このように、サーバ300は、PE間のレンダリング負荷のバランスを取ることができ、そのことが、応答時間を改善(最小化)の助けとなる。グラフィックス・クライアント及び計算サーバの動作は、以下にさらに詳細に説明される。より具体的には、例示的なグラフィックス・クライアントの動作が、図4に関して説明され、例示的な計算サーバの動作が、図5に関して説明される。
【0085】
図4は、写実的画像形成の処理負荷を分散させるための方法の1つの実施形態を示す。具体的には、図4は、好ましい実施形態に従って実施することができる、例えば図2のシステム200によって実行される論理動作ステップを示す高レベル・フローチャート400を示す。一般に、制御PU202は、特に断りのない限り、方法のステップを実行する。
【0086】
ブロック405に示されるように処理が開始し、システム200は、表示のために、シーン・モデル・データを含むデジタル・グラフィック画像フレームを受信する。例えば、システム200は、ユーザ又は他の入力から、フレームを受信することができる。次に、ブロック410に示されるように、システム200は、ユーザ入力を受信する。上述したように、1つの実施形態において、ユーザ入力は、カメラ運動情報を含む。
【0087】
次に、ブロック415に示されるように、システム200は、受信したフレームに基づいて、サーバ負荷分散ファクタを設定又は修正する。次に、ブロック420に示されるように、システム200は、受信したユーザ入力及びシーン・モデル・データに基づいて、予測レンダリング・ファクタを設定又は修正する。次に、ブロック425に示されるように、システム200は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、フレームをサーバ帯域に分配する。
【0088】
ユーザ入力及び予測レンダリング・ファクタに基づいて、システム200は、カメラの眼の運動方向及び速度を認識している。従って、システム200は、専ら反応的調整だけに依存する必要なしに、サーバの処理負荷を事前調整することができる。例えば、ユーザが上又は下を「見る」(カメラの眼を垂直方向に移動させる)場合、システム200は、立ち上がりにおける計算サーバの領域のサイズを減少させて、すぐにシーンに導入される新しいモデルの幾何学形状に対応することができる。
【0089】
さらに、システム200は、目の運動速度に基づいて、処理負荷をどれだけ積極的に再バランスさせるかを調整することができる。カメラの眼がより迅速に移動する場合には、システム200は、処理負荷をより積極的に調整することができる。カメラの眼の運動が遅い場合には、システム200は、処理負荷をあまり積極的に調整することはできない。
【0090】
付加的に、システム200は、処理負荷の再バランスを、ユーザ入力によって示される眼の運動のタイプに合わせることができる。つまり、特定のタイプの眼の運動は、異なる調整パターンに最も良く応答する。例えば、眼のベクトルにズームすること又は眼のベクトルに沿って運動することにより、計算サーバにわたる不均衡が少なくなる。このように、システム200は、素早いズーム機能に応答する場合、例えば、素早いパン機能に応答する場合に比べて、積極的に処理負荷を調整しなくてよい。
【0091】
1つの実施形態において、システム200は、フレームを水平方向のサーバ帯域に分配する。代替的な実施形態において、システム200は、フレームを垂直方向のサーバ帯域に分配する。代替的な実施形態において、システム200は、どの位置合わせがより効果的な(負荷分散の)分配をもたらすかによって、フレームを水平方向又は垂直方向のサーバ帯域に分配する。
【0092】
次に、ブロック430に示されるように、システム200は、サーバ帯域を計算サーバに分散させる。次に、ブロック435に示されるように、システム200は、計算サーバから、圧縮された処理済み表示帯域を受信する。次に、ブロック440に示されるように、システム200は、受信した圧縮された処理済み表示帯域を復元する。
【0093】
次に、ブロック445に示されるように、システム200は、処理済み表示帯域に基づいて、処理済みフレームを構築する。次に、ブロック450に示されるように、システム200は、処理済みフレームを格納する。次にブロック455に示されるように、システム200は、処理済みフレームに基づいて、画像を表示する。上述したように、1つの実施形態において、システム200は、表示のために処理済みフレームを表示モジュールに伝送する。
【0094】
次に、ブロック460に示されるように、システム200は、計算サーバから、報告されたレンダリング時間を受信する。次に、ブロック465に示されるように、システム200は、報告されたレンダリング時間に基づいて、サーバ負荷分散を修正する。プロセスはブロック405に戻り、グラフィックス・クライアントは、処理のためにフレームを受信する。
【0095】
図5は、写実的画像形成の処理負荷を分散させるための方法の1つの実施形態を示す。具体的には、図5は、好ましい実施形態に従って実施することができる、例えば図3のシステム300により実行される論理動作ステップを示す高レベル・フローチャート500を示す。一般に、制御PU302は、特に断りのない限り、方法のステップを実行する。
【0096】
ブロック505に示されるように処理が開始し、計算サーバは、グラフィックス・クライアントから、ロー表示帯域を受信する。例えば、図3のシステム300は、図2のグラフィックス・クライアント200から、ロー表示帯域を受信する。次に、ブロック510に示されるように、システム300は、PE負荷分散ファクタに基づいてロー表示帯域をPEブロックに分配する。
【0097】
1つの実施形態において、ロー表示帯域は、カメラ運動情報を含み、システム300は、PE負荷分散ファクタ及びカメラ運動情報に基づいて、ロー表示帯域をPEブロックに分配する。1つの実施形態において、システム300は、上記のブロック425に関して説明されたようなシステム200と同じ方法で、ロー表示帯域を分配する。従って、システム300は、ロー表示帯域を動的に分配して、フレーム画像の構成における予測される変化に対応し、PE間の負荷のバランスの保持を助けることができる。
【0098】
次に、ブロック515に示されるように、システム300は、PEブロックを処理要素に分散させる。例えば、制御PU302は、PEブロックを1つ又は複数のPE310に分散させる。次に、ブロック520に示されるように、各PEは、その受信したPEブロックをレンダリングする。例えば、PE310は、それらの受信したPEブロックをレンダリングする。
【0099】
次に、ブロック525に示されるように、制御PU302は、PE310からレンダリング済みPEブロックを受信する。上述したように、1つの実施形態において、制御PU302は、キャッシュ306においてレンダリング済みブロックが利用可能であるとの通知を、PE310から受信する。次に、ブロック530に示されるように、システム300は、レンダリング済みPEブロックを組み合わせて処理済み表示帯域にする。
【0100】
次に、ブロック535に示されるように、システム300は、グラフィックス・クライアントへの伝送のために、処理済み表示帯域を圧縮する。例えば、圧縮器308は、グラフィックス・クライアントへの伝送のために、処理済み表示帯域を圧縮する。次に、ブロック540に示されるように、システム300は、圧縮された表示帯域をグラフィックス・クライアントに伝送する。
【0101】
次に、ブロック545に示されるように、システム300は、各PEについてのレンダリング時間を判断する。例えば、制御PU302は、各PE310についてのレンダリング時間を判断する。次に、ブロック550に示されるように、システム300は、レンダリング時間をグラフィックス・クライアントに報告する。1つの実施形態において、システム300は、最も遅いPEに基づいて、処理済み表示帯域についての総レンダリング時間を計算し、総レンダリング時間をグラフィックス・クライアントに報告する。代替的な実施形態においては、システム300は、各PEについてのレンダリング時間をグラフィックス・クライアントに報告する。
【0102】
次に、ブロック555に示されるように、システム300は、各PEについてのレンダリング時間に基づいて、PE負荷分散ファクタを調整する。上述したように、システム300は、処理負荷をPEの間で分けるようにPE負荷分散ファクタを設定し、各PEがそのレンダリング・タスクを完了するのにほぼ同じ時間がかかるようにすることができる。
【0103】
従って、開示された実施形態により、他の方法及びシステムに優る多数の有利な点がもたらされる。例えば、開示された実施形態は、現行の手法、特にワーク・スティーリング・システムに優る、バランスのとれた処理負荷分散の改善を行なう。開示された実施形態が計算処理負荷をより良好に分散させるので、ワーク・スティーリングは不要であり、計算ユニットもまた、共通のワーク・スティーリング・スキーマの下で処理要素にタスクを再付与する際に特有の不利益を被ることなく、関連したキャッシュ・データを保持することができる。
【0104】
より具体的には、開示された実施形態は、特に光線追跡用途における写実的画像形成の処理負荷分散のバランスを提供する。フレームの計算集約型領域を能動的に管理し、次のフレームを待っている計算ユニットをストールさせることにより、レンダリング・システムが、データのストールのために費やす時間が少なくなる。
【0105】
さらに、開示された実施形態は、相対的処理負荷を保持するために領域が拡大又は低減されても、計算ユニットの焦点を特定の領域に保持する方法を提供する。従って、いずれの特定の計算ユニットも、キャッシュ内に有用なフレーム・データを保持している可能性が高くなり、キャッシュ・ヒット率が改善される。さらに、キャッシュ・ヒット率の改善は、僅かに増加したフレーム内のストールを克服し、全体的なレンダリング時間を改善する。
【0106】
付加的に、開示された実施形態は、予測されるレンダリング・タスクに基づいて、処理負荷を動的に調整するシステム及び方法を提供する。従って、開示された実施形態は、シーン内の領域の計算強度の変化を予想することによって、素早く運動するカメラの眼の性能への影響を低減させることができる。他の技術的利点は、当業者には明らかであろう。
【0107】
上述したように、ここで説明される1つ又は複数の実施形態は、コンピュータ・システムにおいて実施すること又は他の方法で具体化することができる。一般的に、本明細書で用いられる「コンピュータ」という用語は、任意の自動計算機械を指す。従って「コンピュータ」という用語は、ラップトップ、パーソナル・コンピュータ、ミニコンピュータ、及びメインフレームのような汎用コンピュータだけでなく、携帯情報端末(PDA)、ネットワーク可能な手持ち式装置、インターネット又はネットワーク可能な携帯電話、及び他の適切な装置のような装置も含む。図6は、ここで説明される1つ又は複数の実施形態を実施するために使用可能な、例示的なコンピュータ・システムを示す詳細を提供するブロック図である。
【0108】
具体的には、図6は、コンピュータ・システム600を示す。コンピュータ・システム600は、コンピュータ602を含む。コンピュータ602は、他の点では従来型のコンピュータであり、少なくとも1つのプロセッサ610を含む。プロセッサ610は、他の点では従来型のコンピュータ・プロセッサであり、シングル・コア、デュアル・コア、中央演算処理ユニット(PU)、相乗演算PU、従属的(attached)PU、又は他の適切なプロセッサを含むことができる。
【0109】
プロセッサ610は、システム・バス612に結合される。バス612は、他の点では従来型のシステム・バスである。示されるように、コンピュータ602の種々のコンポーネントは、バス612に結合される。例えば、コンピュータ602は、メモリ620も含み、メモリ620は、バス612を通してプロセッサ610に結合される。メモリ620は、他の点では従来型のコンピュータ・メインメモリであり、例えば、ランダム・アクセス・メモリ(RAM)を含むことができる。一般に、メモリ620は、アプリケーション622、オペレーティング・システム624、及びアクセス機能626を格納する。
【0110】
一般に、アプリケーション622は、他の点では従来型のソフトウェア・プログラム・アプリケーションであり、任意の数の典型的なプログラム、及び、本発明の1つ又は複数の実施形態を組み込むコンピュータ・プログラムを含むことができる。オペレーティング・システム624は、他の点では従来型のオペレーティング・システムであり、例えば、Unix、AIX、Linux、Microsoft Windows(商標)、MacOS(商標)、及び他の適切なオペレーティング・システムを含むことができる。アクセス機能6262は、ネットワーク機能を含む、他の点では従来型のアクセス機能であり、オペレーティング・システム624内に含ませることができる。
【0111】
コンピュータ602はまた、記憶装置630も含む。一般に、記憶装置630は、他の点では従来型のデータを格納するための装置及び/又は複数の装置である。示されるように、記憶装置630は、ハード・ディスク632、フラッシュ又は他の揮発性メモリ634、及び/又は光記憶装置636を含むことができる。当業者であれば、他の記憶媒体を用いることもできることを理解するであろう。
【0112】
I/Oインターフェース640も、バス612に結合される。I/Oインターフェース640は、他の点では従来型のインターフェースである。示されるように、I/Oインターフェース640は、コンピュータ602の外部にある装置に結合される。特に、I/Oインターフェース640は、ユーザ入力装置642及び表示装置644に結合される。入力装置642は、他の点では従来型の入力装置であり、例えば、マウス、キーボード、テンキー、タッチ・センシティブ・スクリーン、マイクロフォン、ウェブカメラ、及び他の適切な入力装置を含むことができる。表示装置644は、他の点では従来型の表示装置であり、例えば、モニター、LCDディスプレイ、GUI画面、テキスト画面、タッチ・センシティブ・スクリーン、点字ディスプレイ、及び他の適切な表示装置を含むことができる。
【0113】
ネットワーク・アダプタ650も、バス612に結合される。ネットワーク・アダプタ650は、他の点では従来型のネットワーク・アダプタであり、例えば、無線アダプタ、イーサネット・アダプタ、LANアダプタ、WANアダプタ、又は他の適切なアダプタを含むことができる。示されるように、ネットワーク・アダプタ650は、コンピュータ602を他のコンピュータ及び装置652に結合することができる。他のコンピュータ及び装置652は、ネットワーク環境において典型的に用いられる、他の点では従来型のコンピュータ及び装置である。当業者であれば、コンピュータ602及びコンピュータ・システム600に適した多数の他のネットワーク構成が存在することを理解するであろう。
【0114】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して図示された2つのブロックが実際には実質的に同時に実行されることもあり、又はこれらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は行為を実行する専用ハードウェア・ベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【0115】
当業者であれば、上で開示された特徴及び機能、並びに他の特徴及び機能、又はそれらの代替物は、望ましく組み合わせて多くの他の異なるシステム又はアプリケーションにすることができることを認識するであろう。付加的に、現在は予見又は予期されない種々の代替、修正、変形、又はそれらの改善が後に当業者により行なわれる可能性があり、それらもまた、添付の特許請求の範囲に包含されることが意図されている。

【特許請求の範囲】
【請求項1】
データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法であって、
グラフィックス・クライアントによって、フレームを受信するステップと、
サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、前記フレームを複数のサーバ帯域に分配するステップと、
前記複数のサーバ帯域を複数の計算サーバに分散させるステップと、
前記複数の計算サーバから処理済みサーバ帯域を受信するステップと、
前記受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てるステップと、
画像としてユーザに表示するために前記処理済みフレームを伝送するステップと、
を含み、
前記フレームを分配するステップは、水平方向のサーバ帯域と垂直方向のサーバ帯域の間で選択するステップをさらに含む、方法。
【請求項2】
ユーザ入力を受信するステップをさらに含み、
前記予測レンダリング・ファクタを設定するステップは、前記受信したユーザ入力に基づいて前記予測レンダリング・ファクタを設定するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信するステップをさらに含み、
前記サーバ負荷分散ファクタを設定するステップは、前記報告されたレンダリング時間に基づいて前記サーバ負荷分散ファクタを設定するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記処理済みフレーム帯域を組み立てるステップは、前記受信した処理済みサーバ帯域を復元するステップをさらに含む、請求項1に記載の方法。
【請求項5】
サーバ・データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法であって、
計算サーバによって、シーン・モデル・データを含むロー表示帯域を受信するステップであって、前記計算サーバは複数の処理要素(PE)を含む、ステップと、
PE負荷分散ファクタに基づいて、前記ロー表示帯域を複数のPEブロックに分配するステップと、
前記複数のPEブロックを前記複数のPEに分散させるステップと、
各PEによって、前記PEブロックをレンダリングして、レンダリング済みPEブロックを生成するステップと、
前記計算サーバによって、前記レンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成するステップと、
前記計算サーバによって、各PEについてのレンダリング時間を判断するステップと、
前記判断したレンダリング時間に基づいて、前記PE負荷分散ファクタを修正するステップと、
前記処理済み表示帯域をグラフィックス・クライアントに伝送するステップと、
を含む方法。
【請求項6】
前記伝送するステップは、前記処理済み表示帯域を圧縮するステップを含む、請求項5に記載の方法。
【請求項7】
前記判断したレンダリング時間に基づいたレンダリング時間を前記グラフィックス・クライアントに報告するステップをさらに含む、請求項5に記載の方法。
【請求項8】
前記ロー表示帯域は、予測レンダリング入力をさらに含み、
前記ロー表示帯域を分配するステップは、前記PE負荷分散ファクタ及び前記予測レンダリング入力に基づいて分配するステップを含む、請求項5に記載の方法。
【請求項9】
前記PE負荷分散ファクタを修正するステップは、前記判断したレンダリング時間及び受信した予測レンダリング入力に基づいて前記PE負荷分散ファクタを修正するステップをさらに含む、請求項5に記載の方法。
【請求項10】
グラフィックス・クライアントを含むシステムであって、前記グラフィックス・クライアントは、
フレームを複数のサーバ帯域に分配し、
サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、前記フレームを複数のサーバ帯域に分配し、
前記複数のサーバ帯域を複数の計算サーバに分散させ、
前記複数の計算サーバから処理済みサーバ帯域を受信し、
前記受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立て、
画像としてユーザに表示するために前記処理済みフレームを伝送する、
ように構成され、
前記フレームを分配することは、水平方向のサーバ帯域と垂直方向のサーバ帯域との間で選択することを含む、システム。
【請求項11】
前記方グラフィックス・クライアントは、ユーザ入力を受信するようにさらに構成され、
前記予測レンダリング・ファクタを設定することは、受信したユーザ入力に基づいて前記予測レンダリング・ファクタを設定することを含む、請求項10に記載のシステム。
【請求項12】
前記グラフィックス・クライアントは、前記複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信するようにさらに構成され、
前記サーバ負荷分散ファクタを設定することは、前記報告されたレンダリング時間に基づいて前記サーバ負荷分散ファクタを設定することをさらに含む、請求項10に記載のシステム。
【請求項13】
複数の計算サーバをさらに含み、
各々の計算サーバは、前記グラフィックス・クライアントに結合され、複数の処理要素(PE)を含み、かつ、
前記グラフィックス・クライアントからロー表示帯域を受信し、
PE負荷分散ファクタに基づいて、前記ロー表示帯域を複数のPEブロックに分配し、
前記複数のPEブロックを前記複数のPEに分散させる、
ように構成され、
各々のPEは、前記PEブロックをレンダリングして、レンダリング済みPEブロックを生成するように構成され、
各々の計算サーバは、
その計算サーバのPEによってレンダリングされた前記レンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成し、
その計算サーバのPEの各々についてのレンダリング時間を判断し、
前記判断したレンダリング時間に基づいて前記PE負荷分散ファクタを修正し、
前記処理済み表示帯域を前記グラフィックス・クライアントに伝送する、
ようにさらに構成される、請求項10に記載のシステム。
【請求項14】
前記ロー表示帯域は、予測レンダリング入力をさらに含み、
前記ロー表示帯域を分配することは、前記PE負荷分散ファクタ及び前記予測レンダリング入力に基づいて分配することを含む、請求項10に記載のシステム。
【請求項15】
コンピュータ・システムにロードされ、実行されたときに、請求項1から請求項9までのいずれか1項に記載の方法の全てのステップを実行するためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

image rotate


【公表番号】特表2012−511200(P2012−511200A)
【公表日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2011−539018(P2011−539018)
【出願日】平成21年12月2日(2009.12.2)
【国際出願番号】PCT/EP2009/066257
【国際公開番号】WO2010/063769
【国際公開日】平成22年6月10日(2010.6.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.イーサネット
3.UNIX
4.Linux
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】