JP2006512680A - 複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品 - Google Patents

複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品 Download PDF

Info

Publication number
JP2006512680A
JP2006512680A JP2004565550A JP2004565550A JP2006512680A JP 2006512680 A JP2006512680 A JP 2006512680A JP 2004565550 A JP2004565550 A JP 2004565550A JP 2004565550 A JP2004565550 A JP 2004565550A JP 2006512680 A JP2006512680 A JP 2006512680A
Authority
JP
Japan
Prior art keywords
rendering
frame
tile
pipeline
computer
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.)
Pending
Application number
JP2004565550A
Other languages
English (en)
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32654449&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2006512680(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by シリコン グラフィクス, インコーポレイテッド filed Critical シリコン グラフィクス, インコーポレイテッド
Publication of JP2006512680A publication Critical patent/JP2006512680A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

複数のレンダリングパイプライン(図5)を用いてコンピュータグラフィックフレーム(図7)シーケンスを生成するシステム、方法、およびコンピュータプログラム製品である。各フレームに対し、各レンダリングパイプライン(図5)が、特定のフレームのグラフィックデータ総量のサブセットを受信する。フレームが完了すると、各レンダリングパイプライン(図5)がパフォーマンスリポート(図7)をパフォーマンスモニタ(図7)に送信する。パフォーマンスモニタ(図7)が、それぞれのレンダリングパイプライン(図7)がそれらのタイルをレンダリングするのに要した時間にかなりの不一致があったかどうか判定する。不一致を検出し、この不一致がある閾値よりも大きいと判定される場合、割り当て手段(図7)がタイルのサイズを変更し、次のフレームにする。これにより、レンダリングパイプライン(図7)全体にわたってバランスをとるようになる。

Description

発明の背景
発明の分野
ここで説明する本発明は、コンピュータグラフィックシステムパフォーマンスに関する。
背景技術
コンピュータグラフィックシステムは、パフォーマンスを向上させるために並列処理を用いることがある。特に、グラフィックシステムでは、画像を生成するために2つ以上のレンダリングパイプラインを用いることもある。このようなアーキテクチャでは、各パイプラインがフレームのある部分をレンダリングする。レンダリングが完了すると、それぞれのレンダリングパイプラインの出力をコンポジタが合成して、完全なフレームを生成する。このような構成により、スループットを相当増加することができる。例えば、4つの等しいレンダリングパイプラインを用いる場合、特定のフレームをレンダリングするのに要する時間は、平均して、1つのレンダリングパイプラインを用いた場合に要する時間の4分の1である。
しかしながら、これは平均に過ぎない。このようなパフォーマンスの向上は、各フレームに対し要する処理を全レンダリングパイプラインに平均的に分散する場合にのみ可能である。通常はこのようにはならない。例えば、4つのレンダリングパイプラインを用いて、各パイプラインがフレームの特定のカドラントをレンダリングする場合、他のカドラントよりもレンダリングがさらに必要なカドラントが存在することもある。このような場合では、フレームのレンダリングは、最も遅いレンダリングパイプラインと同じ速度でしか実行できないことになる。最も遅いパイプラインが終了した時に、フレームがようやく完了することになる。図1に例を示す。ここでは、フレーム100を4つのカドラント、110、120、130および140に分割する。各カドラントを特定のレンダリングパイプラインに割り当てる場合、他のカドラントと比較して、カドラント110と対応付けられているパイプラインが行う処理が多いことは明らかである。その結果、カドラント110と対応付けられているレンダリングパイプラインが終了した時に、このフレームのレンダリングが完了することになる。この例は極端な場合であるが、任意の複数のレンダリングパイプラインがあるとしても、ある状況では、多重パイプラインコンピュータグラフィックシステムのパフォーマンスは、シングルパイプラインコンピュータグラフィックシステムのパフォーマンスよりずっとよいとは限らないことを示している。
従って、複数のレンダリングパイプラインを有するコンピュータグラフィックシステムに固有の並列処理を、より完全に活用するシステムおよび方法が必要である。特に、複数のレンダリングパイプラインを有する利点をすべての状況の下で実現する必要がある。
簡単な発明の要約
ここで説明する本発明は、複数のレンダリングパイプラインを用いてコンピュータグラフィックフレームシーケンスを生成するためのシステム、方法、およびコンピュータプログラム製品である。各フレームに対して、各レンダリングパイプラインがグラフィックデータ総量のサブセットをレンダリングする。各レンダリングパイプラインの出力が、フレーム部を表す。本発明の実施の形態では、各フレーム部は長方形である。各長方形を、以下ではタイルと称する。各レンダリングパイプラインは従って、任意のフレーム内のそれが有する特定のタイルのレンダリングを行う。1つのフレームが完了した後、各レンダリングパイプラインはパフォーマンスリポートを生成する。パフォーマンスリポートは、現在のフレーム内のタイルをレンダリングするのに要する時間量について表している。
フレームが完了すると、各レンダリングパイプラインはそのパフォーマンスリポートをパフォーマンスモニタに送信する。パフォーマンスモニタは、タイルをレンダリングするレンダリングパイプラインが要する時間の間にかなりの不一致があったかどうか判定する。不一致を検出して、この不一致がかなりのものであると判定される場合は(すなわち、ある閾値を越えている場合は)、割り当て手段がタイルのサイズを変更して、次のフレームにする。この場合は、処理負荷が最大のレンダリングパイプラインが、次のフレームのためにそのタイルのサイズを小さくすることになる。これにより、このパイプラインの負荷を低減する。次に、そのパフォーマンスリポートからわかる処理負荷が最も小さいレンダリングパイプラインが、そのタイルのサイズを大きくすることになる。従って、このパイプラインの負荷が増加する。後者のパイプラインでは次のフレームのための処理が増え、前者のパイプラインではレンダリングが少なくなる。これにより、レンダリングパイプライン全体にわたって負荷のバランスがとれ、次のフレームになる。これは、各フレームをレンダリングした後で、ほぼリアルタイムで負荷のバランスをとることを表しているので、並列アーキテクチャを最適に用いることができる。
さらに本発明の実施の形態の機能、利点さらに各種の本発明の実施の形態の構造および動作について、添付の図面を参照にして詳細に説明する。
発明の詳細な説明
I.概要
ここで説明する本発明は、複数のレンダリングパイプラインを用いてコンピュータグラフィックフレームシーケンスを生成するシステム、方法およびコンピュータプログラム製品である。各フレームに対して、各レンダリングパイプラインがグラフィックデータ総量のサブセットをレンダリングする。各レンダリングパイプラインの出力は、フレーム部を表す。本発明の実施の形態では、各フレーム部は長方形である。各長方形について、以下ではタイルと称する。各レンダリングパイプラインは従って、任意のフレーム内のその特定のタイルをレンダリングする。フレームが完了した後、各レンダリングパイプラインは次に、パフォーマンスリポートを生成する。パフォーマンスリポートは、現在のフレーム内のタイルをレンダリングするのに要した時間量を表す。フレームが完了すると、各レンダリングパイプラインがそのパフォーマンスリポートをパフォーマンスモニタに送信する。パフォーマンスモニタが、レンダリングパイプラインがタイルをレンダリングするのに要した時間の間にかなりの不一致があったかどうか判定する。不一致を検出して、かなりの不一致があると判定される場合には(すなわち、ある閾値を越える場合には)、次に、割り当て手段がタイルのサイズを変更して次のフレームにする。このような場合は、処理負荷が最大のレンダリングパイプラインが、次のフレームのためにそのタイルのサイズを小さくすることになる。これにより、このパイプラインの負荷を低減する。そのパフォーマンスリポートからわかるように、処理負荷が最も小さいレンダリングパイプラインは次に、そのタイルのサイズを大きくする。従って、このパイプラインの負荷が増加することになる。従って、後者のパイプラインでは、次のフレームのために実行する処理が増加することになり、前者のパイプラインでは、実行するレンダリングが低減することになる。待ち時間がほとんどなく、レンダリングパイプライン全体にわたって負荷のバランスをとって次のフレームになる。これは、各フレームをレンダリングした後、ほぼリアルタイムで負荷のバランスをとることを表し、並列アーキテクチャを最適に用いることができるようになる。
図2は、4つのタイルに細分したフレームを示す。個別のレンダリングパイプラインが、各タイルにあてられている。従って、第1のレンダリングパイプラインが、図2のフレームの左上のカドラントをレンダリングし、第2のレンダリングパイプラインが、フレームの右上のカドラントをレンダリングする等になる。各レンダリングパイプラインの処理が完了すると、4つの得られるタイルを合成して、図2のフレームを形成する。
現在のフレームのレンダリングが完了した後、各レンダリングパイプラインがパフォーマンスリポートを生成して、パフォーマンスモニタに送信する。パフォーマンスモニタが、それぞれのレンダリングパイプラインの処理負担に不一致があるかどうか判定する。例えば、上側タイルの1つまたは両方で、下側タイルの1つまたは両方よりもかなり長くレンダリングに時間がかかったと判定される場合には、次に処理負荷を、レンダリングパイプラインの間で均等にバランスをとらないようにする。タイルのサイズを変更して、レンダリングパイプライン間で処理負担を再割り当てする。図3に、考えられる結果を示す。ここでは、上下のタイルを分ける水平方向の境界を、下側にずらしている。上側カドラントは共に大きくなっており、下側カドラントは共に小さくなっている。その結果、上側タイル用の2つのレンダリングパイプラインはそれぞれ、フレームをより多くレンダリングする。また、2つの下側のタイル用の2つのレンダリングパイプラインは、フレームより少なくレンダリングする。
図4は、図2のフレームに対して水平方向の境界が下がり、縦方向の境界が左に移動した場合を示す。また、これにより、各4つのレンダリングパイプラインの処理作業負荷を調整する。右上のタイルと対応付けられているレンダリングパイプラインのレンダリング作業負荷が最も大きく増加している。フレームの左下のタイル用のレンダリングパイプラインのレンダリング作業負荷が最も少なくなっている。

II.システム
本発明のシステムについて、一般的に図5に示す。コンピュータグラフィックシステム500は、グラフィックアプリケーションプログラム510を含む。アプリケーション510は、各レンダリングパイプライン520a〜520nと通信を行う。これにより、アプリケーション510から各レンダリングパイプライン520a〜520nにグラフィックデータを分散する。レンダリングが完了すると、各レンダリングパイプラインがパフォーマンスリポートをパフォーマンスモニタ(図示せず)に送信する。本発明の実施の形態では、パフォーマンスモニタをアプリケーション510の一部として実行する。各パイプラインのパフォーマンスリポートは、当該パイプラインが現在のフレームのそのタイルをレンダリングするのに要する時間量を表す。また、各レンダリングパイプライン520a〜520nが、そのタイルと対応付けられているレンダリングしたデータをコンポジタ530に送信する。コンポジタ530は次に、レンダリングしたデータ、すなわちタイルを合成して、出力535を生成して、次に表示装置540に表示することができる。本発明の別の実施の形態では、出力535をプリンタまたはメモリ媒体等の異なる形態の入力/出力(I/O)装置に送信することもできる。
図6は、レンダリングパイプラインをより詳細に示す。レンダリングパイプライン600は説明のためだけであり、本発明の範囲を限定するものではない。当業者にわかるように、この説明のように、他の種類のレンダリングパイプラインを用いることもできる。従って、レンダリングパイプライン520a〜520nが図6に示す構造を有することもできるが、レンダリングパイプラインの他の実施の形態を用いることもできる。また、レンダリングパイプライン520a〜520nが同一である必要はない。
レンダリングパイプライン600は、バーテックス操作手段622、ピクセル操作手段624、ラスタライザ630、テクスチャメモリ640、およびフレームバッファ650を備える。レンダリングパイプラインは、グラフィックデータ610を受信する。これは、始めにバーテックス操作手段622およびピクセル操作手段624に送られる。テクスチャメモリ640は、テクスチャ642等の2つ以上のテクスチャまたは画像を保存できる。テクスチャメモリ640は、バス(図示せず)により、テクスチャユニット634と接続している。ラスタライザ630は、テクスチャユニット634およびブレンディングユニット636を備える。テクスチャユニット634およびブレンディングユニット636を、グラフィックプロセッサの一部として別々にも一緒にも実施することができる。レンダリングパイプライン600のこれらの機能の動作は、ここに記載の当該技術の当業者に周知のものである。
本発明の実施の形態では、テクスチャユニット634が、テクスチャメモリ640に保存してあるテクスチャおよび/または画像642からポイントサンプルまたは濾波したテクスチャサンプルのいずれかを取得することができる。ブレンディングユニット636が、重み付け値によりテクセルおよび/またはピクセル値を混合して、1つのテクセルまたはピクセルを生成する。テクスチャユニット638および/またはブレンディングユニット636の出力を、フレームバッファ650に保存する。フレームバッファ650の内容を次に、出力670として読み出す。
図7は、そのパフォーマンスリポート動作を行っている間の本発明のシステムをより詳細に示す。各レンダリングパイプライン520a〜520nが、それぞれ730a〜730nと表示されたパフォーマンスリポートを、パフォーマンスモニタ720に送信する。図示の実施の形態では、パフォーマンスモニタ720をアプリケーション510に組み込んでいる。パフォーマンスリポートは、各フレームのレンダリングの後で行われる。パフォーマンスモニタ720が、それぞれのレンダリングパイプライン520a〜520nの作業負荷にいずれかの不一致があることをパフォーマンスリポートが示しているかどうか判定する。本発明の実施の形態では、パフォーマンスモニタ720が、現在のフレームのタイルをレンダリングするのに要した時間が最も長いレンダリングパイプラインを識別して、現在のフレームのタイルをレンダリングするのに要した時間が最も短いレンダリングパイプラインを識別する。2つの時間の間の差が閾値を越えている場合は、かなりの不一致が存在するという結論に達する。このような結論を次に、割り当て手段710に送る。本発明の別の実施の形態では、パフォーマンスリポートに示されるようなレンダリングパイプラインの作業負荷をクロックサイクルによって表すことに留意されたい。
図8では、割り当て手段710がグラフィックデータを各レンダリングパイプライン520a〜520nに送信する。各レンダリングパイプラインが、次のフレームに必要な全グラフィックデータの個別のサブセットを受信する。従って、レンダリングパイプライン520がグラフィックデータ810aを受信する。同様に、レンダリングパイプライン520bがグラフィックデータ810bを受信し、以下同様である。各レンダリングパイプラインに送信されたグラフィックデータは、レンダリングパイプライン520a〜520nにそれぞれ対応付けられているタイルのサイズおよび形状のいずれの変化についても反映している。タイルのサイズ変更プロセスを、割り当て手段710が実行する。以下に、より詳細に説明する。
図7および図8に示す実施の形態では、割り当て手段710およびパフォーマンスモニタ720をグラフィックアプリケーション510の構成部品として示していることに留意されたい。本発明の別の実施の形態では、これらの手段をアプリケーション510の外部に配置することができる。これらの手段を、ソフトウェア、ハードウェア、またはファームウェア、またはこれらを組み合わせて実施することもできる。
本発明の割り当て手段710およびパフォーマンスモニタ720を、ハードウェア、ソフトウェアまたはこれらを組み合わせて用いて実施することもできる。本発明の実施の形態では、アプリケーションプログラム510の一部としてソフトウェアとして実施する。これを、コンピュータシステムまたは他の処理システム上で実行する。このようなコンピュータシステム900の例を、図9に示す。コンピュータシステム900は、プロセッサ904等の2つ以上のプロセッサを含む。プロセッサ904を、バスまたはネットワーク等の通信インフラストラクチャ906と接続する。この説明を読んだ後、当該技術の当業者にとって、他のコンピュータシステムおよび/またはコンピュータアーキテクチャを用いてどのように本発明を実施するか、明らかになるであろう。
コンピュータシステム900はまた、メインメモリ908、好ましくはランダムアクセスメモリ(RAM)を含み、セカンダリメモリ910も含む。セカンダリメモリ910は、例えば、ハードディスクドライブ912および/またはリムーバブル記憶装置914を含むこともできる。リムーバブル記憶装置914は、周知の方法でリムーバブル記憶ユニット918からの読み出し、および/または書き込みを行う。リムーバブル記憶ユニット918は、フロッピー(登録商標)ディスク、磁気テープ、光学ディスクまたはリムーバブル記憶装置914で読み書きする他の記憶媒体である。リムーバブル記憶ユニット918は、コンピュータソフトウェアおよび/またはデータを保存しているコンピュータが使用可能な記憶媒体を含む。
別の実施例では、セカンダリメモリ910は、コンピュータシステム900にコンピュータプログラムまたは他の命令をロードできる他の手段を含むこともできる。このような手段は、例えば、リムーバブル記憶ユニット922およびインターフェース920である。このような手段の例として、リムーバブルメモリチップ(EPROM、またはPROM等)、対応するソケット、他のリムーバブル記憶ユニット922、ソフトウェアおよびデータをリムーバブル記憶ユニット922からコンピュータシステム900へ転送するインターフェース920を含むこともできる。
コンピュータシステム900はまた、通信インターフェース924を含むこともできる。通信インターフェース924により、ソフトウェアおよびデータをコンピュータシステム900および外部装置の間で転送することができる。通信インターフェース924の例として、モデム、ネットワークインターフェース(イーサネット(登録商標)カード等)、通信ポート、PCMCIAスロットおよびカード等を含むこともできる。通信インターフェース924を介して転送したソフトウェアおよびデータは、信号928の形態である。通信インターフェース924が受信可能な電子信号、電磁信号、光信号または他の信号とすることができる。これらの信号928を、通信経路(すなわち、チャネル)926を介して通信インターフェース924に送る。このチャネル926は、信号928を送信する。ワイヤまたはケーブル、光ファイバ、電話線、携帯電話リンク、RFリンクおよび他の通信チャネルを用いて実施することもできる。本発明の実施の形態では、信号928は、パフォーマンスリポート730a〜730nを含み、パフォーマンスモニタ720が受信して処理する。グラフィックデータ810a〜810nを示す情報についても、プロセッサ904からレンダリングパイプライン520a〜520nへ信号928の形態で送信することができる。
この文献では、”コンピュータプログラム媒体”および”コンピュータが使用可能な媒体”という用語は、一般にリムーバブル記憶ユニット918および922、ハードディスクドライブ912にインストールするハードディスク、および信号928等を表すのに用いる。これらのコンピュータプログラム製品は、コンピュータシステム900にソフトウェアを供給する手段である。
コンピュータプログラム(コンピュータ制御論理ともいう)を、メインメモリ908および/またはセカンダリメモリ910に格納する。コンピュータプログラムはまた、通信インターフェース924を介して受信することもできる。このようなコンピュータプログラムを実行することにより、コンピュータシステム900に、ここに説明した本発明を実施させることができる。特に、コンピュータプログラムを実行することにより、プロセッサ904に本発明を実施させることができる。従って、このようなコンピュータプログラムは、コンピュータシステム900の制御装置ということになる。ソフトウェアを用いて本発明を実施する場合は、ソフトウェアをコンピュータプログラム製品に格納して、リムーバブル記憶装置914、ハードドライブ912または通信インターフェース924を用いてコンピュータシステム900にロードすることもできる。

III.方法
一実施の形態による本発明の方法を、図10に示す。この実施の形態は、フレームのタイルを横一列または縦一列(すなわち、1×nまたはn×1)で構成する場合の処理について述べている。このプロセスは、ステップ1010から開始する。ステップ1020では、インデックス値iをゼロに初期化する。ステップ1030では、パフォーマンスモニタが各レンダリングパイプライン用に、フレームiのパフォーマンスリポートを受信する。ステップ1040では、このアプリケーションの実行が完了したかどうか判定する。完了したならば、このプロセスはステップ1080で終了する。アプリケーションがまだ終了していない場合は、このプロセスはステップ1050に続く。ここで、現在のフレームのそれぞれのタイルをレンダリングするのに要した時間量について、レンダリングパイプライン間に不均衡があったかどうか判定する。この判定について、より詳細に以下に示す。
不均衡を検出する場合は、次にこのプロセスはステップ1055に続く。ここで、次のフレームをレンダリングするために、レンダリングパイプライン間の負荷のバランスを再びとるように、タイルのサイズを変更する。例えば、フレームのタイルが横に一列に並んでいて、隣接するタイルに対応する2つのレンダリングパイプラインの間に不均衡が存在する場合は、サイズ変更について数値的に以下のように表すことができる。
ピクセルシフト=0.5*(maxtime−mintime)*(maxtileの幅)/maxtime
この式は、2つの隣接するタイルの間の縦方向の境界をずらす量を表している。maxtimeは、そのタイルをレンダリングするのが最も長かったレンダリングパイプラインが要した時間量をいう。同様に、mintimeは、そのタイルをレンダリングするのが最も短かったレンダリングパイプラインが要した時間をいう。maxtileの幅は、レンダリングするのに最も時間がかかったタイルの幅である。
maxtimeおよびmintimeに対応するタイルがじかに隣接していない場合は、次に間に入っている1つのタイルまたは複数のタイルは現在の幅を保ち、小さいタイルの方向に位置を変えることに留意されたい。また、タイルが横一列ではなく縦一列に配列されている場合は、次にタイルの間の境界は水平方向で、境界のずれは縦方向である。従って、上のmaxtileの幅をmaxtileの高さと置換する。これらの変化について、以下により詳細に説明する。
ステップ1060では、次のフレームを処理するためにインデックスiを1増分する。ステップ1070では、グラフィックデータを割り当て手段がレンダリングパイプラインに送信する。グラフィックデータの割り当ては、タイルごとに行う。特定のタイルと対応付けられているグラフィックデータを、特定のレンダリングパイプラインに送信する。必要な場合には、上記ステップ1055で説明したプロセスによりタイルのサイズを変更する。次のフレームのレンダリングが完了したら、処理はステップ1030に戻る。
レンダリングパイプライン間に不均衡が存在するかどうか判定する上記ステップ1050について、図11により詳細に示す。このプロセスは、ステップ1110から開始する。ステップ1120では、maxtimeのレンダリングパイプライン、すなわち、現在のフレームのそのタイルのレンダリング時間が最も長いパイプラインを判定する。ステップ1130では、mintimeのレンダリングパイプライン、すなわち、現在のフレームのそのタイルのレンダリング時間が最も短いパイプラインを判定する。ステップ1140では、maxtimeとmintimeとの間の差が閾値を越えているかどうか判定する。越えている場合は、次に不均衡を検出する(条件1160)。越えていない場合には、次に不均衡が無いことを検出する(条件1150)。このプロセスは、ステップ1170で終了する。
本発明の実施の形態では、閾値を、maxtimeの一定の割合であると定義している。例えば、閾値を、maxtimeの10%と定義することができる。この場合、maxtimeとmintimeとの間の差がmaxtimeの10%を越えている場合は、次に不均衡を検出する。データセットのサイズをレンダリングしているかどうかにより、別の割合が適当となる。あるデータセットには、10%が適当である。しかしながら、1または2%が大きなデータセットにはより適当である。データセットでは、maxtimeの1または2%でもかなりの不一致となるからである。
ステップ1055でのタイルサイズ変更について、図12Aおよび図12Bに示す。図12Aのフレームは、2つのタイルからなる。現在のフレームのそれらの幅は、1210および1230と表示されている。この例では、それぞれのレンダリングパイプラインで要する時間に不均衡が検出されている。幅1230を有するタイルが、幅1210を有するタイルよりもレンダリングする時間がかなり長くかかっている。その結果、2つのタイルの間の境界を、距離1237だけずらす。従って、次のフレームには、タイルがそれぞれ幅1220および1240を有することになる。このサイズ変更により、各レンダリングパイプラインによってレンダリングする必要があるグラフィックデータの量を変更するので、それぞれの作業負荷が、次のフレームではよりバランスがとれたものとなる。
図12Bは、縦方向に配列した2つのタイルからなるフレームを示す。現在のフレームでは、タイルは高さ1250および1270を有している。2つのタイルのレンダリング時間にかなりの不均衡が存在すると判定される。特に、幅1270を有するタイルは、幅1250を有するタイルよりもレンダリングするのにかなり長い時間がかかっている。その結果、2つのタイルの間の境界を、距離1277だけ上にずらす。次のフレームでは従って、一方のタイルが高さ1280を有し、他方のタイルが高さ1260を有することになる。従って、次のフレームでは、前者のフレームと比較して、一方のレンダリングパイプラインがより小さなタイルをレンダリングして、他方のレンダリングパイプラインがより大きなタイルをレンダリングすることになる。それぞれの作業負荷は、次のフレームではさらにバランスがとれている。
図13Aおよび図13Bは、横一列に配列した4つのタイルからなるフレームを示す。図13Aに示す現在のフレームでは、2つの隣接するフレームが幅1310および1320を有している。次に、4つのレンダリングパイプラインについて判定を行う。幅1310を有するタイルと対応付けられているレンダリングパイプラインでは、そのタイルのレンダリング時間が最も短かったのに対し(mintime)、幅1320を有するタイルと対応付けられているレンダリングパイプラインでは、そのタイルのレンダリングが最も長かった(maxtime)。また、これらの2つのレンダリング時間差がかなりのものなので、不均衡であると判定される。従って、図13Bに示すように、レンダリングに要する時間が最も短かったタイルの幅を距離1335だけ増加する。レンダリングに要する時間が最も長かったタイルを対応する分だけ減らす。従って、次のフレームでは、これらの2つのタイルはそれぞれ幅1330および1340を有し、従って、それらに対応付けられたレンダリングパイプラインの作業負荷が変更される。他の2つのタイルの幅は、変更されないままである。
図14Aおよび図14Bは、不均衡が検出されているが、レンダリングするのに要する時間が最も長いタイルとレンダリングするのに要する時間が最も短いタイルとの間に、2つ以上のタイルがある状態を示している。図14Aでは、幅1410を有するタイルのレンダリング時間が最も短く、幅1430を有するタイルのレンダリング時間が最も長かったと判定されている。その結果、タイルの境界が、図14Bに示すようにずれている。特に、レンダリング時間が最も短かったフレームの右側の境界が、距離1435だけ右にずれている。また、レンダリング時間が最も長かったフレームの左側の境界が、同じ距離だけ右にずれている。従って、次のフレームのために、これらの2つのタイルはそれぞれ幅1430および1450を有している。幅1420を有する間のタイルが右に位置が移動しているが、幅は元のままである。従って、このタイルの位置は移動しているが、サイズ変更はされていない。
本発明のプロセスの別の実施の形態について、図15に示す。この実施の形態は、フレームが横に2つ縦に2つの4つのタイルに分割されている状態について説明している。このプロセスは、ステップ1505から開始する。ステップ1510では、インデックス値をゼロに初期化する。ステップ1515では、パフォーマンスモニタが各レンダリングパイプラインから現在のフレームのパフォーマンスリポートを受信する。ステップ1520では、アプリケーションの実行が終了しているかどうか判定する。終了している場合は、プロセスはステップ1570で終了するが、終了していない場合は、プロセスはステップ1525に続く。ここで、ハーフフレームを2つレンダリングするのに不均衡が存在するかどうか判定する(すなわち、2つの左側のタイルを一括し、2つの右側のタイルを一括して比較する)。この判定について、以下により詳細に説明する。
このような不均衡が存在する場合は、次に処理はステップ1530に続く。ここで、縦方向の境界が、左側または右側のいずれかにずれているので、4つのタイルすべてのサイズが変更されている。このずれの大きさを、図10のステップ1055のプロセスにより判定する。この場合、左側ハーフフレームおよび右側ハーフフレームを、1つのタイルとして扱う。左側ハーフタイルをレンダリングする時間は、左上のタイルおよび左下のタイルをレンダリングする時間の合計である。右側ハーフフレームをレンダリングする時間は、同様に計算する。次に、ピクセルシフトを計算する上記の式を当てはめて、境界のずれの程度を判定する。
ステップ1535では、左半分の上下のタイルの間に不均衡が存在するかどうか決定する。存在する場合は、処理はステップ1540に続く。ここで、左上(UL)および左下の(LL)タイルのサイズを変更する。ステップ1545では、右上および右下のタイルUR、LRのレンダリングの間に不均衡が存在するかどうか判定する。存在する場合は、次に右上および右下のタイルのサイズ変更をステップ1550で行う。ステップ1540および1550のサイズ変更動作を、ピクセルシフトを計算する上記の式により行う。maxtileの幅を、maxtileの高さで置換する。
ステップ1555では、次のフレームをレンダリングできるように、インデックス値を1増分する。ステップ1560では、次のフレームのグラフィックデータを、各レンダリングパイプラインに送信する。任意のレンダリングパイプラインに送信したグラフィックデータは、サイズ変更を行ったタイルに依存する。処理は次に、ステップ1515に戻る。
左側ハーフフレームと右側ハーフフレームとの間に不均衡が存在するかどうか判定するステップである、上記ステップ1525について、図16により詳細に説明する。このプロセスは、ステップ1610から開始する。ステップ1620では、左側のタイルに要する総レンダリング時間について、左上の(UL)タイルのレンダリングに要する時間(upper_left_time)と、左下の(LL)タイルのレンダリングに要する時間(lower_left_time)とを合計することにより判定する。便宜上、総計をleft_timeと称する。
ステップ1630では、右側のタイルである、右上のタイルURおよび右下のタイルLRに対して、同様の動作を行う。右側のタイルに要する総レンダリング時間について、右上の(UR)タイルのレンダリングに要する時間(upper_right_time)と、右下の(LR)タイルのレンダリングに要する時間(lowerright_time)とを合計することにより判定する。便宜上、総計をright_timeと称する。
ステップ1640では、left_timeおよびright_timeの間の差の大きさが閾値を越えているかどうか判定する。越えている場合は、左側ハーフフレームと右側ハーフフレームとの間の不均衡を検出する(状態1650)。越えていない場合は、次にかなりの不均衡が無いことを検出する(状態1660)。このプロセスは、ステップ1670で終了する。
図15の処理の結果について、図17A〜図17Cに示す。図17Aは、2×2に配列されたタイルからなるフレームを示す。左側ハーフフレームの幅を、幅1705と示す。右側ハーフフレームの幅を、幅1710と示す。上側タイルの高さを高さ1712と示し、下側のタイルの高さを高さ1714と示す。図17Bでは、右側の時間が左側の時間をかなりのマージンで越えていることが判定されている。その結果、縦方向の境界が距離1722だけ右側にずれている。その結果、左側ハーフフレームが幅1715を有し、右側ハーフフレームが幅1720を有している。この点で、上側のタイルおよび下側のタイルの高さは変化していない。図17Cでは、フレームの左側および右側が独立していると考えられる。左側に対し、タイルULが、現在のフレームのタイルLLをレンダリングするよりもかなり時間がかかったと判定される。その結果、左側の水平方向の境界が上に上がるので、タイルLLの高さが距離1735だけ増加する。その結果、タイルULが、高さ1730を有することになる。右側については、タイルURが、現在のフレームのタイルLRをレンダリングするよりもかなり時間がかかったと判定される。その結果、右側の水平方向の境界が距離1745だけ上に上がる。次のフレームのために、タイルURの高さが1740になる。
本発明の方法の別の実施の形態では、2×2フレームを、上側ハーフフレームおよび下側ハーフフレームとしてまず処理することができる。このような実施の形態では、上側ハーフフレームおよび下側ハーフフレームのいずれかがもう一方よりもレンダリングする時間がかかったかどうか判定する。いずれかのハーフフレームについて、このハーフフレームをレンダリングするのに要した時間は、その左側のタイルおよび右側のタイルのレンダリング時間の合計である。上側ハーフフレームまたは下側ハーフフレームのいずれかが、レンダリングするのにもう一方よりもかなり時間を要した場合は、次のフレームのために、水平方向の境界をピクセルシフトを計算する上記の式で判定された分だけずらす。次に、これらのハーフフレームそれぞれの左側のタイルおよび右側のタイルについて考えることができる。各ハーフフレームについて、左側のタイルまたは右側のタイルがもう一方よりもレンダリングするのにかなり時間を要したかどうか判定する。時間を要した場合には、次のフレームのために、そのハーフフレームの縦方向の境界を、上記のピクセルシフトの式によりずらす。
上述の2×2、1×n、およびn×1の場合のほかに、タイリング法をこのような場合に分解することができるとすれば、上記の方法を、タイリング法に応用することができる。例えば、8つのタイルが横2列に並んでいるタイリング法を、それぞれ1×8のハーフタイル2つに分解することができる図10、図11および図12Bで述べたように、2つのハーフタイルの間のレンダリング時間の差がかなりのもののである場合は、水平方向の境界を、始めにずらすことができる。図10、図11、および図13Bまたは図14Bで述べたように、各ハーフフレーム内でサイズ変更を行うことができる。
レンダリングパイプラインの観点から、本発明の処理について図18に示す。このプロセスは、ステップ1810から開始する。ステップ1820では、インデックス値をゼロに初期化する。ステップ1830では、フレームiをレンダリングする。ステップ1840では、各レンダリングパイプラインが、現在のフレームのそれぞれのタイルをレンダリングするのに要する時間の長さを表すパフォーマンスリポートを生成する。ステップ1850では、パフォーマンスリポートをパフォーマンスモニタに送信する。ステップ1860では、アプリケーションの実行が終了したかどうか判定する。終了している場合は、このプロセスはステップ1890で終了する。終了していない場合は、このプロセスはインデックス値を1増分するステップ1870に続く。ステップ1880では、いずれかの不均衡を判定していずれかのタイルのサイズを変更した後、レンダリングパイプラインが次のフレームのためのグラフィックデータを受信する。前のフレームで行われたように、各レンダリングパイプラインが、特定のタイルに対応付けられたグラフィックデータを受信する。このプロセスは次に、次のフレームをレンダリングするステップ1830に続く。
図1は、他のタイルと比較して、1つのタイルのレンダリングにかなり要するフレームを示す。 図2は、全タイルにレンダリングを要するフレームを示す。 図3は、タイルのサイズを変更して、それぞれのレンダリングパイプラインで必要な処理を調整したフレームを示す。 図4は、タイルのサイズをさらに変更して、レンダリングパイプライン全体にわたって処理負担をさらに再割り当てしたフレームを示す。 図5は、本発明の実施の形態による全体的なシステムを示す。 図6は、本発明の実施の形態によるレンダリングパイプラインをより詳細に示すブロック図である。 図7は、パフォーマンスモニタおよび割り当て手段をグラフィックアプリケーションに組み込んだ本発明の実施の形態を示す。 図8は、本発明の実施の形態によるレンダリングパイプラインに分散したグラフィックデータを示す。 図9は、本発明の実施の形態の計算環境を示す。 図10は、フレームのタイルを横一列または縦一列に配列した場合の本発明の実施の形態の処理を示すフローチャートである。 図11は、本発明の実施の形態による1組のレンダリングパイプライン全体にわたって不均衡があるかどうかの判定を、より詳細に示すフローチャートである。 図12Aおよび図12Bは、2つのタイルからなる任意のフレームのタイルのサイズ変更を示す。 図13Aおよび図13Bは、横一列に配列した4つのタイルからなるフレームのタイルのサイズ変更を示す。 図14Aおよび図14Bは、フレームが横一列に配列した4つのタイルからなり、サイズの大きくなったタイルがサイズの小さくなったタイルに隣接しないタイルのサイズ変更表す。 図15は、2つの列および2つの行に配列した4つのタイルからなるフレームの、本発明の実施の形態の処理を示すフローチャートである。 図16は、本発明の実施の形態による、2×2配列の4つのタイルからなるフレームの左側のタイルと右側のタイルとに対して不均衡が存在するかどうかの判定を示すフローチャートである。 図17Aから図17Cは、タイルが始めに2×2配列で構成されているフレームでのタイルのサイズ変更を表す。 図18は、レンダリングパイプラインの観点から、本発明の実施の形態の処理を示すフローチャートである。

Claims (20)

  1. コンピュータグラフィックフレームシーケンスを生成するシステムであって、
    各レンダリングパイプラインが、フレームシーケンスになっている現在のフレームそれぞれのためのグラフィックデータの別個のサブセットを受信し、グラフィックデータの前記別個のサブセットをレンダリングし、前記レンダリングを行う間に各レンダリングパイプラインそれぞれに生じた作業負荷に関するパフォーマンスリポートを生成する複数のレンダリングパイプラインと、
    各レンダリングパイプラインから前記パフォーマンスリポートを受信して、負荷の不均衡を識別するパフォーマンスモニタと、
    次のフレームのためのグラフィックデータを前記レンダリングパイプラインに再割り当てする割り当て手段とを備え、再割り当てが前記負荷の不均衡に基づくものであり、これを求めることにより、前記次のフレームのレンダリングと対応付けられている次の負荷の不均衡を低減する、システム。
  2. グラフィックアプリケーションをさらに備え、前記グラフィックアプリケーションが前記パフォーマンスモニタを備える、請求項1に記載のシステム。
  3. 前記グラフィックアプリケーションがさらに前記割り当て手段を備える、請求項2に記載のシステム。
  4. 各前記レンダリングパイプラインからレンダリングしたグラフィックデータを受信し、前記レンダリングしたグラフィックデータを合成して、各前記フレームを生成するコンポジタをさらに備える、請求項1に記載のシステム。
  5. グラフィックデータの前記別個のサブセットそれぞれが、前記現在のフレームの複数のタイルの1つに対応する、請求項1に記載のシステム。
  6. 前記現在のフレームの前記タイルに対して、前記次のフレームのタイルのサイズ変更を行うことにより、前記割り当て手段が、グラフィックデータを前記次のフレームのための前記レンダリングパイプラインに再割り当てする、請求項5に記載のシステム。
  7. 複数のレンダリングパイプラインを用いて連続するフレームをレンダリングする方法であって、
    (a)各レンダリングパイプラインが現在のフレームのタイルをレンダリングする、現在のフレームをレンダリングするステップと、
    (b)各パフォーマンスリポートが前記レンダリングの間にそれぞれのレンダリングパイプラインに生じた作業負荷を表している、各レンダリングパイプラインのためのパフォーマンスリポートを生成するステップと、
    (c)パフォーマンスリポートをパフォーマンスモニタに送信するステップと、
    (d)各レンダリングパイプラインで、次のフレームのタイルと対応付けられているグラフィックデータを受信するステップとを含み、現在のフレームの対応するタイルに対して、次のフレームの複数のタイルのサイズを変更したことを含む、方法。
  8. 複数のレンダリングパイプラインを用いてレンダリングを行う、連続するフレームのレンダリングを制御する方法であって、
    (a)各パフォーマンスリポートが現在のフレームをレンダリングする間にそれぞれのレンダリングパイプラインに生じた作業負荷を表している、各レンダリングパイプラインのためのパフォーマンスリポートを受信するステップと、
    (b)パフォーマンスリポートが、レンダリングパイプラインの間の負荷がかなりの不均衡であることを表しているかどうか判定するステップと、
    (c)かなりの負荷の均衡を表している場合には、現在のフレームの対応するタイルに対して、次のフレームの少なくとも1つのタイルのサイズを変更するステップと、
    (d)次のフレームと対応付けられているグラフィックデータをレンダリングパイプラインに送信するステップとを含み、任意のレンダリングパイプラインに送信したグラフィックデータが次のフレームのタイルと対応付けられている、方法。
  9. 前記ステップb)が、
    (i)現在のフレームのタイルのレンダリング時間が最も長いレンダリングパイプラインを判定するステップと、
    (ii)現在のフレームのタイルのレンダリング時間が最も短いレンダリングパイプラインを判定するステップと、
    (iii)最長レンダリング時間と最短レンダリング時間との間の差が閾値を越えているか判定するステップとを含み、これにより、負荷の不均衡がかなりのものであることを表す、請求項8に記載の方法。
  10. 閾値が、最長レンダリング時間の割合である請求項9に記載の方法。
  11. 前記ステップc)が、
    (i)次のフレームに対して、最短レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを、最長レンダリング時間と最短レンダリング時間との間の差に比例する分だけ大きくするステップと、
    (ii)次のフレームに対して、最長レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを同じ分だけ小さくするステップとを含む、請求項9に記載の方法。
  12. 現在のフレームのタイルのサブセットが第1のハーフフレームから構成され、現在のフレームの残余のタイルが第2のハーフフレームから構成され、前記ステップb)が、
    (i)現在のフレームの第1のハーフフレーム全タイルのレンダリング時間を合計するステップと、
    (ii)現在のフレームの第2のハーフフレームすべてのレンダリング時間を合計するステップと、
    (iii)2つの合計の間の差が閾値を越えているかどうか判定するステップとを含み、これにより、負荷の不均衡がかなりのものであることを表す、請求項8に記載の方法。
  13. 前記ステップc)が、
    (i)次のフレームに対して、より小さい合計を有するハーフフレームの少なくとも1つのタイルのサイズを大きくするステップと、
    (ii)次のフレームに対して、より大きい合計を有するハーフフレームの少なくとも1つのタイルのサイズを小さくするステップとを含み、
    より小さい合計を有するハーフフレームのサイズを、2つの合計の間の差に比例する分だけ大きくして、より大きい合計を有するハーフフレームのサイズを、同じ分だけ大きくする、請求項12に記載の方法。
  14. 前記ステップc)がさらに、
    (iii)現在のフレームの第1のハーフフレームのタイルのレンダリング時間が最も長いレンダリングパイプラインを判定するステップと、
    (iv)現在のフレームの第1のハーフフレームのタイルのレンダリング時間が最も短いレンダリングパイプラインを判定するステップと、
    (v)現在のフレームの第1のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差を判定するステップと、
    (vi)現在のフレームの第1のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差が閾値を越えているかどうか判定するステップと、
    (vii)差が閾値を超えている場合は、
    次のフレームに対して、現在のフレームの第1のハーフフレームにおいて、最短レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを、現在のフレームの第1のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差に比例する分だけ大きくして、
    次のフレームに対して、現在のフレームの第1のハーフフレームにおいて、最長レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを、同じ分だけ小さくする、請求項13に記載の方法。
  15. 前記ステップc)がさらに、
    (iii)現在のフレームの第2のハーフフレームのタイルのレンダリング時間が最も長いレンダリングパイプラインを判定するステップと、
    (iv)現在のフレームの第2のハーフフレームのタイルのレンダリング時間が最も短いレンダリングパイプラインを判定するステップと、
    (v)現在のフレームの第2のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差を判定するステップと、
    (vi)現在のフレームの第2のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差が閾値を越えているかどうか判定するステップと、
    (vii)差が閾値を超えている場合は、
    次のフレームに対して、現在のフレームの第2のハーフフレームにおいて、最短レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを、現在のフレームの第1のハーフフレームにおける最長レンダリング時間と最短レンダリング時間との間の差に比例する分だけ大きくして、
    次のフレームに対して、現在のフレームの第2のハーフフレームにおいて、最長レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを、同じ分だけ小さくする、請求項13に記載の方法。
  16. コンピュータに複数のレンダリングパイプラインを用いて連続するフレームをレンダリングさせるための制御論理を格納しているコンピュータが使用可能な媒体を備えるコンピュータプログラム製品であって、コンピュータ制御論理が、
    各レンダリングパイプラインが現在のフレームのタイルをレンダリングする、コンピュータに現在のフレームをレンダリングさせる、第1のコンピュータ読み取り可能プログラムコード手段と、
    各パフォーマンスリポートが前記レンダリングの間にそれぞれのレンダリングパイプラインに生じた作業負荷を表す、コンピュータに各レンダリングパイプラインのパフォーマンスリポートを生成させる、第2のコンピュータ読み取り可能プログラムコード手段と、
    コンピュータにパフォーマンスリポートをパフォーマンスモニタに送信させる、第3のコンピュータ読み取り可能プログラムコード手段と、
    コンピュータに各レンダリングパイプラインでグラフィックデータを受信可能にさせる第4のコンピュータ読み取り可能プログラムコード手段とを備え、各レンダリングパイプラインで受信したグラフィックデータが、次のフレームのタイルに対応付けられていて、次のフレームの複数のタイルを、現在のフレームに対応するタイルに対してサイズを変更した、コンピュータプログラム製品。
  17. 複数のレンダリングパイプラインを用いてレンダリングを行う、コンピュータに連続するフレームのレンダリングを制御させるための制御論理を格納しているコンピュータが使用可能な媒体を備えるコンピュータプログラム製品であって、コンピュータ制御論理が、
    前記レンダリングの間にそれぞれのレンダリングパイプラインに生じた作業負荷を表す、コンピュータに各レンダリングパイプラインのパフォーマンスリポートを受信させる、第1のコンピュータ読み取り可能プログラムコード手段と、
    パフォーマンスリポートがレンダリングパイプラインの間に負荷の不均衡がかなりあることを表しているかどうかコンピュータに判定させる、第2のコンピュータ読み取り可能プログラムコード手段と、
    負荷の均衡がかなりのものであると表されている場合は、現在のフレームの対応するタイルに対して、次のフレームの少なくとも1つのタイルのサイズを変更することにより、次のフレームをレンダリングする間にレンダリングパイプラインに生じた作業負荷のバランスをコンピュータに再びとらせる第3のコンピュータ読み取り可能プログラムコード手段と、
    コンピュータに次のフレームと対応付けられているグラフィックデータをレンダリングパイプラインに送信させる、第4のコンピュータ読み取り可能プログラムコード手段とを備え、任意のレンダリングパイプラインに送信されたグラフィックデータが、次のフレームのタイルと対応付けられている、コンピュータプログラム製品。
  18. 前記第2のコンピュータ読み取り可能プログラムコード手段が、
    (i)コンピュータに現在のフレームのタイルのレンダリング時間が最も長いレンダリングパイプラインを判定させる、コンピュータ読み取り可能プログラムコード手段と、
    (ii)コンピュータに現在のフレームのタイルのレンダリング時間が最も短いレンダリングパイプラインを判定させる、コンピュータ読み取り可能プログラムコード手段と、
    (iii)最長レンダリング時間と最短レンダリング時間との間の差が閾値を越えているかどうか判定させる、コンピュータ読み取り可能プログラムコード手段とを備え、これにより、負荷の不均衡がかなりのものであることを表す、請求項17に記載のコンピュータプログラム製品。
  19. 閾値が、最長レンダリング時間の割合である、請求項17に記載のコンピュータプログラム製品。
  20. 前記第3のコンピュータ読み取り可能プログラムコード手段が、
    (i)次のフレームのために、最長レンダリング時間と最短レンダリング時間との間の差に比例する分だけ、コンピュータに最短レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを大きくさせる、コンピュータ読み取り可能プログラムコード手段と、
    (ii)次のフレームのために、コンピュータに最長レンダリング時間のレンダリングパイプラインに対応するタイルのサイズを同じ分だけ小さくさせる、コンピュータ読み取り可能プログラムコード手段とを備える、請求項17に記載のコンピュータプログラム製品。
JP2004565550A 2002-12-30 2003-12-18 複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品 Pending JP2006512680A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/330,217 US6885376B2 (en) 2002-12-30 2002-12-30 System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
PCT/US2003/040253 WO2004061598A2 (en) 2002-12-30 2003-12-18 System, method, and computer program product for near-real time load balancing across multiple rendering pipelines

Publications (1)

Publication Number Publication Date
JP2006512680A true JP2006512680A (ja) 2006-04-13

Family

ID=32654449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004565550A Pending JP2006512680A (ja) 2002-12-30 2003-12-18 複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品

Country Status (4)

Country Link
US (1) US6885376B2 (ja)
EP (1) EP1581908A4 (ja)
JP (1) JP2006512680A (ja)
WO (1) WO2004061598A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010027050A (ja) * 2008-07-16 2010-02-04 Arm Ltd グラフィック処理の監視

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395538B1 (en) 2003-03-07 2008-07-01 Juniper Networks, Inc. Scalable packet processing systems and methods
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7629979B2 (en) * 2003-08-20 2009-12-08 Hewlett-Packard Development Company, L.P. System and method for communicating information from a single-threaded application over multiple I/O busses
WO2008004135A2 (en) * 2006-01-18 2008-01-10 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US8085273B2 (en) * 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US20080094404A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system having multi-mode parallel graphics rendering subsystem including multiple graphics processing pipelines (GPPLS) and supporting automated division of graphics commands and data during automatic mode control
US7808499B2 (en) * 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US7663633B1 (en) 2004-06-25 2010-02-16 Nvidia Corporation Multiple GPU graphics system for implementing cooperative graphics instruction execution
US8941668B2 (en) * 2004-06-25 2015-01-27 Nvidia Corporation Method and system for a scalable discrete graphics system
US8411093B2 (en) * 2004-06-25 2013-04-02 Nvidia Corporation Method and system for stand alone graphics independent of computer system form factor
US8446417B2 (en) * 2004-06-25 2013-05-21 Nvidia Corporation Discrete graphics system unit for housing a GPU
US9087161B1 (en) 2004-06-28 2015-07-21 Nvidia Corporation Asymmetrical scaling multiple GPU graphics system for implementing cooperative graphics instruction execution
US20060022990A1 (en) * 2004-07-30 2006-02-02 Silicon Graphics, Inc. Generating subdivision surfaces on a graphics hardware with floating-point fragment shaders
CN101849227A (zh) 2005-01-25 2010-09-29 透明信息技术有限公司 在单片构造的硅芯片上采用多个图形核心的图形处理和显示系统
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US8436851B2 (en) * 2005-02-04 2013-05-07 Hewlett-Packard Development Company, L.P. Systems and methods for rendering three-dimensional graphics in a multi-node rendering system
US7450129B2 (en) * 2005-04-29 2008-11-11 Nvidia Corporation Compression of streams of rendering commands
US20060267997A1 (en) * 2005-05-24 2006-11-30 Walls Jeffrey J Systems and methods for rendering graphics in a multi-node rendering system
US7649537B2 (en) 2005-05-27 2010-01-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US7613346B2 (en) 2005-05-27 2009-11-03 Ati Technologies, Inc. Compositing in multiple video processing unit (VPU) systems
US20060271717A1 (en) * 2005-05-27 2006-11-30 Raja Koduri Frame synchronization in multiple video processing unit (VPU) systems
US8054314B2 (en) 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US8212838B2 (en) * 2005-05-27 2012-07-03 Ati Technologies, Inc. Antialiasing system and method
US8681160B2 (en) * 2005-05-27 2014-03-25 Ati Technologies, Inc. Synchronizing multiple cards in multiple video processing unit (VPU) systems
US10026140B2 (en) * 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
US8893016B2 (en) * 2005-06-10 2014-11-18 Nvidia Corporation Using a graphics system to enable a multi-user computer system
US20070022274A1 (en) * 2005-06-29 2007-01-25 Roni Rosner Apparatus, system, and method of predicting and correcting critical paths
KR20070003467A (ko) * 2005-07-02 2007-01-05 삼성전자주식회사 면광원장치와 이를 포함하는 액정표시장치
US8004531B2 (en) * 2005-10-14 2011-08-23 Via Technologies, Inc. Multiple graphics processor systems and methods
JP4779756B2 (ja) * 2006-03-29 2011-09-28 カシオ計算機株式会社 コンピュータシステムにおけるサーバ装置及びサーバ制御プログラム
US20080055321A1 (en) * 2006-08-31 2008-03-06 Ati Technologies Inc. Parallel physics simulation and graphics processing
KR100803220B1 (ko) * 2006-11-20 2008-02-14 삼성전자주식회사 다중 파이프라인의 3차원 그래픽스 렌더링 방법 및 장치
GB2461821B (en) * 2007-09-12 2010-06-30 Imagination Tech Ltd Methods and systems for generating 3-dimensional computer images
US8854379B2 (en) * 2009-02-25 2014-10-07 Empire Technology Development Llc Routing across multicore networks using real world or modeled data
US20100289804A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
US8890880B2 (en) 2009-12-16 2014-11-18 Intel Corporation Graphics pipeline scheduling architecture utilizing performance counters
US8675002B1 (en) 2010-06-09 2014-03-18 Ati Technologies, Ulc Efficient approach for a unified command buffer
US20120001925A1 (en) 2010-06-30 2012-01-05 Ati Technologies, Ulc Dynamic Feedback Load Balancing
US8982136B2 (en) 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
GB2494903B (en) * 2011-09-22 2017-12-27 Advanced Risc Mach Ltd Graphics processing systems
US9030480B2 (en) * 2012-12-18 2015-05-12 Nvidia Corporation Triggering performance event capture via pipelined state bundles
CN103984669A (zh) 2013-02-07 2014-08-13 辉达公司 一种用于图像处理的系统和方法
US9348602B1 (en) * 2013-09-03 2016-05-24 Amazon Technologies, Inc. Resource allocation for staged execution pipelining
CN107005694B (zh) * 2014-09-30 2020-05-19 瑞典爱立信有限公司 在独立处理单元中编码和解码视频帧的方法、装置和计算机可读介质
US10019775B2 (en) 2015-04-30 2018-07-10 Honeywell International Inc. Method and system for scalable, radiation-tolerant, space-rated, high integrity graphics processing unit
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US20190139184A1 (en) * 2018-08-01 2019-05-09 Intel Corporation Scalable media architecture for video processing or coding
US11080814B1 (en) * 2020-02-03 2021-08-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
EP0693737A3 (en) * 1994-07-21 1997-01-08 Ibm Method and apparatus for managing tasks in a multiprocessor system
US6191800B1 (en) * 1998-08-11 2001-02-20 International Business Machines Corporation Dynamic balancing of graphics workloads using a tiling strategy
US6920506B2 (en) * 2001-06-28 2005-07-19 Canon Information Systems, Inc. Discovery and management of network printers
US6683614B2 (en) * 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6853380B2 (en) * 2002-03-04 2005-02-08 Hewlett-Packard Development Company, L.P. Graphical display system and method
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010027050A (ja) * 2008-07-16 2010-02-04 Arm Ltd グラフィック処理の監視

Also Published As

Publication number Publication date
US20040125111A1 (en) 2004-07-01
EP1581908A4 (en) 2008-05-28
WO2004061598A2 (en) 2004-07-22
US6885376B2 (en) 2005-04-26
WO2004061598A3 (en) 2005-01-20
EP1581908A2 (en) 2005-10-05

Similar Documents

Publication Publication Date Title
JP2006512680A (ja) 複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品
KR100959468B1 (ko) 그래픽 프로세스 최적화 방법 및 시스템
US9405586B2 (en) Method of dynamic load-balancing within a PC-based computing system employing a multiple GPU-based graphics pipeline architecture supporting multiple modes of GPU parallelization
EP1661092B1 (en) Adaptive load balancing in a multi-processor graphics processing system
US9693072B2 (en) Moving picture compression apparatus, image processing apparatus, moving picture compression method, image processing method, and data structure of moving picture compression file
EP1880277B1 (en) Command execution controlling apparatus, command execution instructing apparatus and command execution controlling method
US7664922B2 (en) Data transfer arbitration apparatus and data transfer arbitration method
KR100864998B1 (ko) 명령 전송 제어 장치 및 명령 전송 제어 방법
US20080198166A1 (en) Multi-threads vertex shader, graphics processing unit, and flow control method
KR101956197B1 (ko) 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치
US11748933B2 (en) Method for performing shader occupancy for small primitives
US20030117404A1 (en) Image processing apparatus
JPS63156260A (ja) 画像デ−タの仮想記憶制御装置
JPS60100178A (ja) アドレス変換装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091001

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100311