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

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

Info

Publication number
JP5462882B2
JP5462882B2 JP2011539018A JP2011539018A JP5462882B2 JP 5462882 B2 JP5462882 B2 JP 5462882B2 JP 2011539018 A JP2011539018 A JP 2011539018A JP 2011539018 A JP2011539018 A JP 2011539018A JP 5462882 B2 JP5462882 B2 JP 5462882B2
Authority
JP
Japan
Prior art keywords
server
processed
rendering
load balancing
band
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.)
Active
Application number
JP2011539018A
Other languages
English (en)
Other versions
JP2012511200A (ja
Inventor
マドルガ、ホアキン
マイノール、バリー
ナター、マーク、リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012511200A publication Critical patent/JP2012511200A/ja
Application granted granted Critical
Publication of JP5462882B2 publication Critical patent/JP5462882B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2352/00Parallel handling of streams of display data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Description

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

Claims (15)

  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負荷分散ファクタを修正するステップは、
    前記判断したレンダリング時間及び受信した予測レンダリング・ファクタに基づいて前記PE負荷分散ファクタを修正するステップ
    をさらに含む、請求項5に記載の方法。
  9. 写実的画像形成の処理負荷を分散させるグラフィックス・クライアントであって、
    シーン・モデル・データを含むフレームを受信すること、
    カメラ運動情報をユーザから受信すること、
    前記シーン・モデル・データに基づいて、サーバ負荷分散ファクタを設定すること、
    前記シーン・モデル・データ及び前記受信したカメラ運動情報に基づいて、予測レンダリング・ファクタを設定すること、
    前記サーバ負荷分散ファクタ及び前記予測レンダリング・ファクタに基づいて、前記フレームを複数のサーバ帯域に分配すること、
    前記複数のサーバ帯域を複数の計算サーバに分散させること、
    前記複数の計算サーバから処理済みサーバ帯域を受信すること、
    前記受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てること、
    画像としてユーザに表示するために前記処理済みフレームを伝送すること
    を実行する、前記グラフィックス・クライアント。
  10. 前記フレームを複数のサーバ帯域に分配することが、
    前記水平方向のサーバ帯域若しくは垂直方向のサーバ帯域又はそれらの組み合わせの間で選択すること
    をさらに含む、請求項9に記載のグラフィックス・クライアント。
  11. 前記グラフィックス・クライアントが、
    前記複数のサーバのうちの少なくとも1つから報告されたレンダリング時間を受信すること
    前記報告されたレンダリング時間に基づいて前記サーバ負荷分散ファクタを設定又は修正すること
    をさらに含む、
    請求項9に記載のグラフィックス・クライアント。
  12. 写実的画像形成の処理負荷を分散させる計算サーバであって、
    各々の計算サーバは複数の処理要素(PE)を含み、
    前記計算サーバが、
    カメラ運動情報を含むロー表示帯域を受信すること
    PE負荷分散ファクタ及び前記カメラ運動情報に基づいて前記ロー表示帯域を複数のPEブロックに分配すること
    前記複数のPEブロックを前記複数のPEに分散させることであって、各PEが、前記分散されたPEブロックをレンダリングして、レンダリング済みPEブロックを生成する、前記分散させること
    前記レンダリング済みPEブロックを組み合わせて、処理済み表示帯域を生成すること
    各PEについてのレンダリング時間を判断すること
    前記判断したレンダリング時間に基づいて前記PE負荷分散ファクタを修正すること
    前記処理済み表示帯域をグラフィックス・クライアントに伝送すること
    を実行する、前記計算サーバ。
  13. 請求項9〜11のいずれか一項に記載のグラフィックス・クライアントと請求項12に記載の計算サーバとを備えているシステム。
  14. 写実的画像形成の処理負荷を分散させるコンピュータ・プログラムであって、グラフィックス・クライアントに、請求項1〜4のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
  15. 写実的画像形成の処理負荷を分散させるコンピュータ・プログラムであって、複数の処理要素(PE)を含む計算サーバに、請求項5〜8のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
JP2011539018A 2008-12-06 2009-12-02 写実的画像形成の処理負荷を分散するためのシステム及び方法 Active JP5462882B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/329,586 US9270783B2 (en) 2008-12-06 2008-12-06 System and method for photorealistic imaging workload distribution
US12/329,586 2008-12-06
PCT/EP2009/066257 WO2010063769A2 (en) 2008-12-06 2009-12-02 System and method for photorealistic imaging workload distribution

Publications (2)

Publication Number Publication Date
JP2012511200A JP2012511200A (ja) 2012-05-17
JP5462882B2 true JP5462882B2 (ja) 2014-04-02

Family

ID=42170461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011539018A Active JP5462882B2 (ja) 2008-12-06 2009-12-02 写実的画像形成の処理負荷を分散するためのシステム及び方法

Country Status (4)

Country Link
US (2) US9270783B2 (ja)
JP (1) JP5462882B2 (ja)
CN (1) CN102239678B (ja)
WO (1) WO2010063769A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5977023B2 (ja) * 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
WO2013097210A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 基于云应用的在线渲染方法和离线渲染方法及相关装置
KR101947726B1 (ko) * 2012-03-08 2019-02-13 삼성전자주식회사 영상 처리 장치 및 이의 영상 처리 방법
CN102664937B (zh) * 2012-04-09 2016-02-03 威盛电子股份有限公司 云端运算图形服务器及云端运算图形服务方法
US9418469B1 (en) 2013-07-19 2016-08-16 Outward, Inc. Generating video content
US9417911B2 (en) 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
GB2534225B (en) 2015-01-19 2017-02-22 Imagination Tech Ltd Rendering views of a scene in a graphics processing unit
CN110476188B (zh) * 2017-03-30 2024-03-22 奇跃公司 集中式渲染
US10643374B2 (en) * 2017-04-24 2020-05-05 Intel Corporation Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer
CN116774961A (zh) * 2017-08-25 2023-09-19 微软技术许可有限责任公司 无线可编程媒体处理系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192388B1 (en) 1996-06-20 2001-02-20 Avid Technology, Inc. Detecting available computers to participate in computationally complex distributed processing problem
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6028608A (en) * 1997-05-09 2000-02-22 Jenkins; Barry System and method of perception-based image generation and encoding
US7200219B1 (en) 1999-02-10 2007-04-03 Avaya Technology Corp. Dynamically allocating server resources to competing classes of work based upon achievement of service goals
US6753878B1 (en) * 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
US6816905B1 (en) 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
JP4409956B2 (ja) * 2002-03-01 2010-02-03 ティーファイヴ ラブズ リミテッド 集中型対話グラフィカルアプリケーションサーバ
US20040003022A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Method and system for using modulo arithmetic to distribute processing over multiple processors
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP4352990B2 (ja) 2004-05-17 2009-10-28 日本ビクター株式会社 3次元画像生成システム
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US7831972B2 (en) 2005-11-03 2010-11-09 International Business Machines Corporation Method and apparatus for scheduling jobs on a network
US7730119B2 (en) * 2006-07-21 2010-06-01 Sony Computer Entertainment Inc. Sub-task processor distribution scheduling
US20080079714A1 (en) * 2006-09-28 2008-04-03 Shearer Robert A Workload Distribution Through Frame Division in a Ray Tracing Image Processing System
US7836258B2 (en) 2006-11-13 2010-11-16 International Business Machines Corporation Dynamic data cache invalidate with data dependent expiration
KR20080057483A (ko) * 2006-12-20 2008-06-25 삼성전자주식회사 서버, 클라이언트, 로드 밸런싱 시스템 및 그의 로드밸런싱 방법
JP4422161B2 (ja) 2007-03-09 2010-02-24 ザイオソフト株式会社 画像処理装置及び画像処理プログラム

Also Published As

Publication number Publication date
CN102239678B (zh) 2014-04-09
WO2010063769A2 (en) 2010-06-10
US9501809B2 (en) 2016-11-22
US20100141665A1 (en) 2010-06-10
WO2010063769A3 (en) 2010-11-18
CN102239678A (zh) 2011-11-09
US20160171643A1 (en) 2016-06-16
JP2012511200A (ja) 2012-05-17
US9270783B2 (en) 2016-02-23

Similar Documents

Publication Publication Date Title
JP5462882B2 (ja) 写実的画像形成の処理負荷を分散するためのシステム及び方法
CN112020858B (zh) 利用感兴趣区域的确定的异步时间和空间扭曲
US10062181B1 (en) Method and apparatus for rasterizing and encoding vector graphics
US10499066B2 (en) Method and apparatus for improving efficiency of content delivery based on consumption data relative to spatial data
US20160238852A1 (en) Head mounted display performing post render processing
US20140267564A1 (en) System and method for managing multimedia data
JP2023513304A (ja) 分散システムにおける動き平滑化
US20140074911A1 (en) Method and apparatus for managing multi-session
KR20190121867A (ko) 가상 현실 미디어 컨텐츠의 패키징 및 스트리밍을 위한 방법 및 장치
JP6751205B2 (ja) ディスプレイ装置及びその制御方法
US20180302604A1 (en) System, Algorithms, and Designs of View-Optimized Zoom for 360 degree Video
KR20190011212A (ko) 출력면을 제공하는 방법 및 데이터 처리 시스템
US20180095531A1 (en) Non-uniform image resolution responsive to a central focus area of a user
JP2018026670A (ja) 映像配信システム、端末装置、配信サーバ、映像配信方法、映像表示方法、映像配信プログラム及び映像表示プログラム
US20220172440A1 (en) Extended field of view generation for split-rendering for virtual reality streaming
KR101399951B1 (ko) 다시점 비디오 스트리밍 시스템 및 그 제공방법
KR20160135108A (ko) 이미지 처리 방법 및 그 시스템
WO2023133082A1 (en) Resilient rendering for augmented-reality devices
WO2021249562A1 (zh) 一种信息传输方法、相关设备及系统
JP2020187482A (ja) 情報処理方法
US20230136064A1 (en) Priority-based graphics rendering for multi-part systems
US20230336799A1 (en) Video streaming scaling using virtual resolution adjustment
WO2022193211A1 (en) Real-time adaptive correction in viewport prediction for improved immersive video
CN116708874A (zh) 基于客户端放大能力的流式传输应用的编码输出
WO2017052392A1 (en) Facilitating efficient detection of patterns in graphics display streams prior to their display at computing devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131107

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131107

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20131107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131108

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: 20131225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131225

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140117

R150 Certificate of patent or registration of utility model

Ref document number: 5462882

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150