JP4450853B2 - 負荷分散 - Google Patents

負荷分散 Download PDF

Info

Publication number
JP4450853B2
JP4450853B2 JP2007532499A JP2007532499A JP4450853B2 JP 4450853 B2 JP4450853 B2 JP 4450853B2 JP 2007532499 A JP2007532499 A JP 2007532499A JP 2007532499 A JP2007532499 A JP 2007532499A JP 4450853 B2 JP4450853 B2 JP 4450853B2
Authority
JP
Japan
Prior art keywords
gpu
cpu
processing
work
rays
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
JP2007532499A
Other languages
English (en)
Other versions
JP2008513890A5 (ja
JP2008513890A (ja
Inventor
ダニエル, エリオット ウェクスラー,
ラリー, アイ. グリッツ,
エリック, ビー. エンダートン,
キャス, ダブリュー. エヴェリット,
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2008513890A publication Critical patent/JP2008513890A/ja
Publication of JP2008513890A5 publication Critical patent/JP2008513890A5/ja
Application granted granted Critical
Publication of JP4450853B2 publication Critical patent/JP4450853B2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

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

Description

関連出願の相互参照
本願は、Dan Wexler等によって2004年9月16日に出願された「負荷分散(ロードバランシング)」と題する米国特許仮出願第60/610,873号の優先権及び利益を主張するものであり、当該仮出願の全開示内容は、その全体を説明しているが如くに参照することによって本明細書に援用されるものである。
背景
本開示内容は、例えば、コプロセッサ間におけるような、負荷分散(ロードバランシング)に関するものである。
コンピュータグラフィックスは、過去20年近くにわたって、非常に多くのハードウェア及びソフトウェアの開発が行われてきた広い分野である。例えば、1997年にAddison-Wesleyによって発行されたFoley, Van Dam, Feiner, 及びHughesによる「コンピュータグラフィックス:原理と実践(Computer Graphics: Principles and Practice」を参照されたい。通常、コンピュータプラットフォーム、又は、他の同様の計算デバイスでは、専用のグラフィックハードウェアを用いて、例えばコンピュータゲームに関連して使用される画像のようなグラフィック画像をレンダリングする。かかるシステムでは、専用グラフィックハードウェアは、ハードウェアのフレキシビリティ及び/又はそのレンダリング性能を含むグラフィックスの品質に影響する可能性がある点において、制限されることがある。
グラフィックスにおいては、通常、標準計算プラットフォームは、中央処理ユニット(CPU)及びグラフィック処理ユニット(GPU)を備える。GPUがより複雑になり続けて多くの計算タスクを処理する能力をもつようになるにつれて、プロセッサ間の負荷分散処理のための技術が更に必要になっている。
概要
グラフィックス及び/又はビデオ処理用といった二つのプロセッサの負荷分散のための方法、装置、デバイス、及び/又はシステムの実施の形態を、開示する。ある実施の形態では、プログラム可能なGPU(プログラマブルGPU)とCPUとの間での負荷分散の方法は、以下の内容を含む。両端キューが、少なくとも部分的にGPU及びCPUによって処理し得る別個のワークユニットで形成される。GPU及びCPUは、当該GPU及びCPUにキューのそれぞれの端からワークユニットを選択させることによって、ワークユニットを処理する。
本発明を、詳細に説明し、特許請求の範囲の欄において明確に主張する。しかしながら、特許請求の範囲に記載の本発明は、編成及び動作方法、並びに、その目的、特徴、及び利点に関して以下の詳細な説明を添付の図面と共に参照することによって、最も良く理解することができる。
以下の詳細な説明において、多くの特定の詳細を説明し、本発明の完全な理解を可能とする。しかしながら、本発明は、これら特定の詳細が無くとも、実施し得ることが、当業者には理解されよう。その他の事例においては、周知の方法、手続き、コンポーネント、及び/又は回路については、発明を不明確としないように、詳細には説明していない。
コンピュータグラフィックスは、過去20年近くにわたって、非常に多くのハードウェア及びソフトウェアの開発が行われてきた広い分野である。例えば、1997年にAddison-Wesleyによって発行されたFoley, Van Dam, Feiner, 及びHughesによる「コンピュータグラフィックス:原理と実践(Computer Graphics: Principles and Practice」を参照されたい。通常、コンピュータプラットフォーム又はその他の同様の計算デバイスでは、専用グラフィックハードウェアを用いて、例えばコンピュータゲームに関連して使用される画像のような、グラフィック画像をレンダリングする。かかるシステムでは、専用グラフィックスハードウェアは、ハードウェアのフレキシビリティ及び/又はそのレンダリング性能を含むグラフィックスの品質に影響する可能性がある点において、制限されることがある。しかしながら、高品質グラフィックスは、技術及びマーケットが進展し続けていることにより、要望され続けている。したがって、高品質グラフィックスを生成するという点において、既存のハードウェアの性能を拡張する信号処理及び/又はその他の技術が、研究領域となり続けている。
先述したように、専用グラフィックハードウェアは、グラフィック・レンダリング性能及び/又はフレキシビリティといった性能を制限されていることがある。これは、少なくとも部分的には、例えば、かかるハードウェアへの要求に対して改善された能力を提供するハードウェアのコストに起因する。しかしながら、このような事情にもかかわらず、近年、最先端のコンピュータプラットフォーム又は同様の計算システム上に設けられた専用ハードウェアの能力は、改善してきており、また、改善しつづけている。例えば、固定関数パイプラインが、プログラム可能な頂点処理ステージ及びフラグメント処理ステージに置き換えられている。6年前には、大部分の民生用3次元(3D)グラフィックオペレーションは、主にCPU上で計算されており、グラフィックカードは、主にフレームバッファとして計算結果を表示していた。しかしながら、専用グラフィックハードウェアは、数千万のトランジスタを備えるグラフィックパイプラインへと進化してきた。今日、プログラム可能なグラフィック処理ユニット(GPU)は、単純なフィードフォワードトライアングルレンダリング以上の能力を有している。NVIDIA GeForce 4、及び、ATI Radon 9000のような最先端のグラフィックチップは、例えば、固定関数の頂点処理ステージ及びフラグメント処理ステージを、より詳細には後述するように、プログラム可能なステージへと置き換えるものである。これらプログラム可能な頂点処理ステージ及びフラグメント処理ステージは、より詳細には後述するように、シェーディング計算及び/又はテクスチャ計算に対する制御を可能にするプログラムを実行する能力を有している。
CPUアークテクチャと同様に、GPUは、パイプラインステージに分割される。しかしながら、CPUが任意のプログラムを実行するために使用される汎用設計を具現化しているのに対して、GPUは、例えば、未加工の幾何データを処理して、最終的には、モニタのようなディスプレイ上にピクセルとして情報を表示するように設計されている。図1は、典型的なグラフィックパイプラインの概念を示すブロック図である。
通常、描かれるべきオブジェクト(対象物)について、以下のオペレーションが、かかるパイプラインによって実行される。
1.CPU上で実行しているアプリケーションが、GPUにメモリの一部にある105のような頂点データの場所を指令する。
2.頂点ステージ110が、頂点データをモデル空間からクリッピング空間に変換して、照明計算等を実行する。
3.頂点ステージ110がテクスチャ座標を数式から生成する。
4.三角形、点、四角形等といったプリミティブを、フラグメントへとラスタライズする。
5.フラグメント処理ステージ180を介してフラグメントを処理することによって、フラグメントの色を決定する。当該フラグメント処理ステージ180はまた、幾つかのオペレーションの中で、テクスチャメモリのルックアップも実行する。
6.幾つかのテストを実行して、フラグメントが廃棄されるべきか否かを決定する。
7.ピクセルの色を、少なくとも部分的にはフラグメントの色に基づいて、また、フラグメントの又はピクセルのアルファチャンネルに通常は関連するその他のオペレーションに基づいて、計算する。
8.ピクセル情報をフレームバッファ160に提供する。
9.ピクセルを、ディスプレイ170等によって、表示する。
図1のブロック115によって示すように、高次の表面テッセレーションは、グラフィックパイプラインの幾何処理フェイズにおいて早期に発生する。高次の表面は、数式及び/又は関数を使用して3次元(3D)の表面を表現する。その例には、不均一有理Bスプライン(NURB)、ベジエ曲線、Nパッチ、等がある。転送されたデータにテッセレーション処理を行って、より複雑なモデルを生成する。GPUは、したがって、より詳細且つ複雑な幾何形状を動的に生成、即ち、アプリケーションからの初期のモデルデータからより詳細且つ複雑な幾何形状へのテッセレーションを行う。
ブロック120によって示し、また、先述したように、グラフィックパイプラインは、通常、変換及び照明(T&L)オペレーション等を行う。ブロック120は、固定関数ユニットを示しているが、これらオペレーションは、頂点シェーダとも呼ばれるブロック130のような、プログラム可能な頂点ユニットによって更に置き換えてもよい。頂点シェーダ130は、頂点プログラムを頂点ストリームに適用する。したがって、このプログラムは、データを頂点レベルで処理する。大部分の処理は1サイクルで実行されるが、この制限は適用する必要があるものではない。典型的な頂点プログラムは、100以上のオーダーの命令に基づいている。図4は、典型的なプログラム可能な頂点シェーダの実施の形態を示すブロック図である。図示するように、頂点属性410が、頂点プログラム420に与えられる。当該属性は、レジスタに格納されるものであり、上記プログラムは、レジスタ内にあるデータを処理する一連の命令を備えるものである。得られる処理データも、頂点出力データ430として図4に示すように、レジスタに格納される。通常、このプログラムを実行している間、当該プログラムは、図4では参照符号450によって示すプログラムパラメータを取得して、図4では参照符号460で示すように一時レジスタを利用する。
頂点ステージと同様に、フラグメント処理ステージは、ブロック140によって示すような固定関数ユニットから、ブロック150によって示すようなプログラム可能なユニットへと進化している。このように、以前には、テクスチャ処理、フィルタリング、ブレンディングは、固定関数状態マシーン又は同様のハードウェアを用いて実行されていた。頂点シェーダと同様に、ブロック150のようなピクセルシェーダは、プログラム可能なフラグメント処理ステージとも呼ばれるものであり、カスタマイズしたプログラム制御を可能とするものである。したがって、ピクセル単位で、プログラマーは、色等を計算して、所望のようにカスタマイズした視覚効果を生成することが可能である。図5は、典型的なピクセルシェーダ、即ちフラグメント処理ステージの実施の形態を示すブロック図である。頂点ステージにおける対応部分と同様に、実施の形態500は、フラグメント入力データ510、フラグメントプログラム520、及びフラグメント出力データ530を有している。同様に、本ステージは、テクスチャメモリ540及び一時レジスタ550を有している。本明細書では、テクスチャメモリは、フラグメント処理ステージの一部として備えるGPUのメモリ部を指しており、通常は、キャッシュメモリであり、ここには、頂点処理等の実行に引き続き、特定のピクセル値が、追加の処理ためにロードされる。この追加の処理は、例えば、フィルタリング、シェーディング、及び/又は、例えばレンダリングされるべきオブジェクトの可視表面の外観を生成することに通常は関連する処理のような同様の処理である。
これらグラフィックパイプラインのプログラム可能性(プログラマビリティ)のトレンドは、グラフィック処理ユニット(GPU)及びその潜在的なアプリケーションを変化させている。したがって、かかるプロセッサ又は処理ユニットの一つの潜在的なアプリケーションは、例えば、アニメーション等を生成するためのような多様な状況において望まれるように、高品質のグラフィック処理を達成することである。より詳細には、近年、グラフィックハードウェアの性能は、中央処理ユニット(CPU)の性能より急速に向上している。上述したように、CPUは、通常、順次発生するコードに対する高性能の処理を意図して設計されるものである。したがって、処理性能を向上するために追加のトランジスタを使用することは、更に挑戦的なこととなっている。一方、説明したように、プログラム可能なグラフィックハードウェアは、頂点及びフラグメントステージのコードを並列処理するために設計されている。したがって、GPUは、CPUより効率的に追加のトランジスタを使用して、処理性能を向上することができる。このように、GPUは、半導体製造技術が進展し続けるに連れて、処理性能の向上を持続する可能性をもたらすものである。
勿論、プログラム可能性は、比較的最近の革新である。さらに、異なる性能の範囲は、「プログラム可能性」の意味の範囲に含まれるものである。本特定の実施の形態の論議のために、頂点ステージではなくGPUのフラグメント処理ステージに焦点を当てるが、勿論、本発明はこれに範囲を限定されるものではない。したがって、一つの実施の形態では、プログラム可能なGPUは、単純な命令のセットを有するフラグメント処理ステージを備る。フラグメントプログラムのデータタイプは、主として、固定小数点の入力テクスチャである。出力フレームバッファにおける色は、通常、色成分ごとに8ビットを有する。同様に、ステージは、通常、限定された数のデータ入力エレメント及びデータ出力エレメント、限定された数のアクティブテクスチャ、並びに、限定された数の依存テクスチャを有する。さらに、一つのプログラムに対する命令の数、及びレジスタの数は、比較的少ない。ハードウェアは、プログラム内の特定のポイントのみにおいてテクスチャのアドレスを計算する特定の命令を許可するだけである。ハードウェアは、所与のパスに対してフレームバッファに書き込まれるべき単一の色値を許可するだけであり、プログラムは、ループしたり、条件分岐命令を実行することがない。本明細書では、このレベルの性能、又は同様のレベルの性能を有するGPUの実施の形態を、固定小数点のプログラム可能なGPUと称する。
一方、より進歩した専用グラフィックプロセッサ又は専用グラフィックハードウェアは、より強化された特徴を備えてもよい。フラグメント処理ステージは、例えば、浮動小数点命令及び/又はレジスタを有し、プログラム可能であってもよい。同様に、浮動小数点テクスチャフレームバッファ形式が利用可能であってもよい。フラグメントプログラムは、多様な操作を実行することが可能なアセンブリ言語レベルの命令のセットから作られていてもよい。かかるプログラムは、数百のオーダー又はそれより多い命令のように、比較的長いものであってもよい。テクスチャのルックアップは、フラグメントプログラム内で許可されていてもよく、ある実施の形態では、テクスチャのフェッチの数、又は、プログラム内でのテクスチャの依存性のレベル数に関して制限がなくてもよい。フラグメントプログラムは、テクスチャメモリ及び/又はステンシルバッファへの直接書き込みを行う能力を有していてもよく、例えば、RGBAのように、浮動小数点ベクトルをフレームバッファに書き込む能力を有していてもよい。本明細書では、このレベルの性能又は同様のレベルの性能をもつGPUの実施の形態を、浮動小数点のプログラム可能なGPUと称することがある。
同様に、第3の実施の形態、即ち、専用グラフィックハードウェアの具体例は、本明細書では、プログラム可能なストリーミングプロセッサと称する。プログラム可能なストリーミングプロセッサは、データストリームをプロセッサに与えて当該プロセッサがデータストリームのエレメントに対して同様の計算又は処理を実行するプロセッサである。このシステムは、したがって、プログラム又はカーネルをストリームのエレメントに適用することによって、且つ、処理結果を出力ストリームに提供することによって、当該プログラム又はカーネルを実行する。本明細書では、同様に、プログラム可能なストリーミングプロセッサは、フラグメントのストリームを処理することに主に焦点を当てたものであり、プログラム可能なストリーミングフラグメントプロセッサである。かかるプロセッサでは、完全命令セット及びより大きなデータタイプが与えられてもよい。しかしながら、ストリーミングプロセッサであっても、ループ及び条件分岐は、通常、例えば、CPUからのように、専用グラフィックハードウェアの外部から発生する介入無しには実行することはできないことに留意されたい。繰り返すと、このレベルの性能又は同様の性能をもつGPUの実施の形態は、本明細書ではプログラム可能なストリーミングプロセッサである。
図2は、実施の形態200を示す概念図であり、この実施の形態200は、例えばGPU210のような専用グラフィックハードウェアを採用するシステムを構成している。図2は、論議及び説明を簡単にするために単純化した図であることに留意されたい。したがって、メモリコントローラ/アービター、AGP及び/又はPCIのような標準インタフェイスプロトコルを実装するインターフェイスユニット、ディスプレイデバイス、入力デバイス等の特徴は、本論議を不必要に不明確なものとしないように、省略されている。
この特定の実施の形態では、GPU210は、プログラム可能なGPUの具体例であり、例えば、上述した三つの実施の形態のうちの一つのようなものである。しかしながら、論議の目的で、GPU210は、プログラム可能な浮動小数点GPUであると仮定している。同様に、勿論、本発明は、先述した三つのタイプのみに、その範囲が限定されるものではないことを理解されたい。これら三つのタイプは、単に、典型的なプログラム可能なGPUの説明として提供しただけのものである。現在知られている又は後に開発される他の全てのタイプのプログラム可能なGPUが、本発明の範囲に含まれる。例えば、図2は、別個のグラフィックハードウェアを示しているが、これに代えて、IC上でグラフィックハードウェアがCPUに統合されていてもよく、かかるグラフィックハードウェアも本発明の範囲に依然として含まれる。同様に、図2に示した実施の形態のように、システムの実施の形態のアプリケーションには、例えば、デスクトップ計算プラットフォーム、モバイル計算プラットフォーム、ハンドヘルドデバイス、ワークステーション、ゲームコンソール、セットトップボックス、マザーボート、グラフィックカード等の内部又は上におけるように、多くの潜在的なアプリケーションがある。
同様に、この単純化した実施の形態では、システム200は、CPU230、及びGPU210を備えている。この特定の実施の形態では、メモリ240が、ランダムアクセスメモリ、即ちRAMであるが、本発明は、これにその範囲を限定されるものではない。現在知られている又は開発されるであろう多様なタイプのメモリのうち任意の一つを採用することができる。メモリ240は、この特定の実施の形態では、フレームバッファ250を有しているが、繰り返すと、本発明は、この点においてその範囲を限定されるものではない。例えば、図8は、同様の参照符号によって同様の特徴を特定したある実施の形態を示している。しかしながら、実施の形態600では、フレームバッファ650は、メモリ640の内部に存在しない。様々なシステム要素間の通信は、この特定の実施の形態では、更に図2に示したように、バス220を介して行われる。
図2は、説明のために、単純化して提供したものであり、本発明の範囲を如何なる意味においても限定することを意図していないことを繰り返すことには、価値があろう。GPU及びCPUを有するシステムには多くのアーキテクチャが考えられ、本発明は、このようなアーキテクチャの全てを包含することを意図している。本発明は、既述の通り、図2に示した実施の形態にその範囲を限定するものではないけが、この特定の実施の形態は、二つのコプロセッサ、即ちCPU230及びGPU210を採用するシステムであることに留意されたい。したがって、少なくともこの点においては、本実施の形態は、最先端の計算プラットフォームの特色を有している。したがって、先述したように、かかるシステムを採用して高品質のグラフィック処理を実行する性能を有することが望ましい。しかしながら、本発明は高品質グラフィックスに限定されるべきものでなはないことに、同様に留意されたい。例えば、明確となるように、本発明の実施の形態は、コンピュータゲーム、及び/又はその他のローエンドのアプリケーションに関して、利益のあるものとなる。
グラフィックスでは、一つの典型的且つ頻出の計算は、「レイトレーシング」と称される。レイトレーシングは、陰、反射、及び/又は屈折等を含む照明効果を模擬するためのように、グラフィックスにおいては様々な形で用いられる。一般的には、レイトレーシングは、特定のグラフィック画像に存在する表面の可視性を、観察者の目からシーンにおけるオブジェクトまでの仮想の光線を追跡することによって、決定する処理を指す。例えば、「コンピュータグラフィックス(Computer Graphics)」の15.10章、第701頁〜718頁を参照されたい。
レイトレーシングの問題の一つは、通常、それが、実行するのに最も時間を要するグラフィックオペレーションの一つであることである。さらに、レイトレーシングは、通常、GPUではなく、CPUで実行される。これは、少なくとも部分的には、関連の計算の複雑さに起因している。しかしながら、より最近になって、この計算プロセスにプログラム可能なGPUを採用するための研究が始まっている。例えば、2002年のACM
Transactions On GraphicsにおけるTimothy Purcell等による「プログラム可能なグラフィックハードウェア上でのレイトレーシング」では、GPU上での汎用計算のためにデータを格納及び/又はデータをアクセスする興味深い方法が調査されている。しかしながら、Purcell等によって示唆された手法による一つの問題には、計算の実行の際に全シーンを格納するために必要となる大容量のストレージ能力がある。他の最近の論文、即ち、2002年のGraphics HardwareにおけるNathan Carr等による「レイ・エンジン」には、GPUを採用して、光線と三角形との交差(ray-triangle intersections)を計算する手法が示唆されている。この手法の問題点は、光線と三角形との交差を、一度に一つの三角形についてGPUで計算することにある。かかる手法は、したがって、時間を要するものであり、プログラム可能なGPUによって利用可能な並列処理性能を完全に活用することができない。したがって、グラフィック処理用のレイトレーシングを実行するためにプログラム可能なGPUを使用する更なる技術が望まれている。
レイトレーシングは、時間を要するオペレーションではあるが、少なくとも幾つかの計算では、実際に光線とプリミティブとの交差を実施して計算するのに要するよりも、レイトレーシングを利用する必要がない画像の部分を決定するのに多くの時間を要することがある。したがって、更に明確となるように、達成又は実行されるべき光線とプリミティブとの交差の計算の数を、レイトレーシングが必要とされない画像の部分を決定することによって、削減するために、プログラム可能なGPUを適用することによって、処理の効果を得ることができる。
例えば、図3は、示唆したようなプログラム可能なGPUを使用することによるレイトレーシングの方法の実施の形態を示すフローチャートである。この特定の実施の形態は、高いレベルでは、様々な実装の細部を有しているが、プログラム可能なGPUを採用して、本明細書ではバッチと称する複数の光線と、特定の画像におけるオブジェクトの境界を作るように構成された階層状の表面との間の交差を計算する。これは、表面が交差しない場合に、当該表面によって境界づけられたプリミティブも交差しないので、レイトレーシングに対して、画像の部分を排除することを支援する。
この特定の実施の形態の別の側面は、GPUの並列処理性能を採用していることである。特に、複数の光線と階層状の境界表面との交差は、GPUによって効果的に実施し得る可能性のある反復計算を示唆する。以下の論議は、GPU自体による処理と、GPUがCPUと相互作用して負荷を分散し光線とピリミティブの交差を計算する方法とに焦点を当てる。したがって、この特定の実施の形態の更に別の側面は、GPUとCPUとの間の負荷分散に関する。
ここで、図3を参照する。ブロック310は、この特定の実施の形態のために、画像をワークユニットに分割して、レイトレーシングの実行を支援する。先述したように、プログラム可能なGPUを採用して、複数の光線と、グラフィックオブジェクトのセットに階層的に境界付ける表面のセットとの交差を計算する。しかしながら、当初には、画像を、オブジェクトを囲む重なり合わない表面を用いて分割する。したがって、本実施の形態では、画像を、少なくとも部分的には、オブジェクトの形状ではなく、表面によってオブジェクトを境界付けることに基づいて分割し、これによって、オブジェクトを空間的に分離する。この特定の実施の形態では、オブジェクトは、メッシュ状の四角形のプリミティブを有する。しかしながら、勿論、本発明は、この点にその範囲を限定されるものではない。本明細書では、プリミティブは、任意の多角形であってもよい。
境界となる表面の形状は、任意の形をとってもよいことに留意されたい。例えば、境界となる表面の形状は、球形、正方形、矩形、凸面、又は、表面の他のタイプであってもよい。この特定の実施の形態の場合、境界となる表面は、バウンディングボックスと称するボックスを備えている。ボックスを採用することの一つの利点は、実装が容易で高速であることである。本明細書では、バウンディングボックスを、ボクセル又はボリュームとも称する。少なくとも部分的にはバウンディングボックスをここで使用するために、画像の分割は、実質的には、例えば図6に示して以下に論議するように、グリッドべースである。示唆したように、グリッドによる手法は、単純さと、実装の容易さと、計算速度を含む利点を有する。しかしながら、この手法の不利益は、光線のプリミティブに対する交差を求める方法が、比較的粗いものとなることである。ここでは、このことに対処する一つの手法は、以下により詳細に説明するように、階層状のバウンディングボックスを使用してより優れた精度を提供することによるものである。
先に示唆したように、図6は、単純な二次元表現のグリッド手法を提供する概略図である。しかしながら、グリッドのボックスは、ここでは、異なるサイズを有している。グリッド610は、行1、列1、行2、列2、及び、行3、列3におけるボックス内に位置するオブジェクトを有する。オブジェクトは、この特定の例では、参照符号620、630、及び640でそれぞれ特定されている。勿論、本発明は、グリッド手法に、又は、この図示した例に、その範囲を限定されるものではない。
この特定の実施の形態では、光線は、図6に示すように、ピクセルで表現されている。したがって、プログラム可能なGPU上では、実際には、グリッド610を指す650のような光線のバッチを表す660のような四角形のピクセルを、図6に図示するように、レンダリングする。光線650及びピクセル660は、図6では、側面から表されている。図6には明示しないが、一連の隣接する他のピクセルは、紙面の平面を垂直に指す方向に示されるピクセルにそって配列されており、同様に対応する光線をもつ。図6には、正確な尺度で示していないが、視覚的に明らかなように、バウンディングボックスは、異なる部分又はボリュームを占有しており、結果的に異なるグラフィックオブジェクトを囲んでいる。勿論、繰り返すが、図6は、説明の目的で提供したグリッドの単純な2次元表現に過ぎない。
画像を空間的に分割した結果、ボクセルは、少なくとも部分的には、本明細書では光線のバッチと称する周縁に交差する光線の数に基づいて順位付けされる。ここでは、この特定の技術の特定のアプリケーションのために、光線は実質的にコヒーレントであることに留意されたい。したがって、周縁に交差する光線の数に少なくとも部分的に基づいて、バウンディングボックス、即ちボクセルは、本明細書では、プロセッサによって実行されるべきワークの量を表す。このワークの量は、本明細書では、アイテム又はワークのユニットと称する。特定のワークユニット、即ちワークアイテムのために実行されるべきワークの量は、特定のバウンディングボックスの境界に交差する光線の数に少なくとも部分的には関連している。さらに、バウンディングボックス内には、一連の更なるバウンディングボックス、即ち階層がある。したがって、例えば図6の行1、列1に示す特定のバウンディングボックスは、連続する階層のバウンディングボックスへと更に再分割される。しかしながら、本プロセルのこのステージでは、図3におけるブロック320によって示すように、バッチサイズを使用して「両端」キューを生成する。特に、GPUの並列処理性能をより完全に活用するために、GPUを、バッチ内に比較的多数の光線を有するボクセルに適用することが望ましい。同様に、CPUを使用して、比較的小さいバッチを有するボクセルを処理することも望ましい。
図3のブロック330に示すように、CPU及びGPUは、個別のワークユニットをキューの両端から処理し始める。ワークユニットを編成した手法によって、より詳細には後述するように、ワークユニットを、GPU又はCPUの何れかによって少なくとも部分的に処理することが可能となる。したがって、この時点で、GPUによる処理、及びGPUとCPUとの間の望ましい負荷分散に焦点を当てることが望ましい。本明細書では、負荷分散は、暗示的に又は明示的に、特定のプロセッサが処理負荷をプロセッサ間で割り当てることを可能とし、これによって、処理負荷を偶発的に割り当てる、即ちランダムに割り当てる場合よりも、更なる処理を達成するメカニズムを指す。
GPUが、ユニットのワーク、例えば、グリッド610の行1、列1として指定されるワークユニットを受け持つと、ボクセルを、10本の光線及び八つのバウンディングボックスを1サイクルで処理する技術を用いて、処理することが可能である。しかしながら、勿論、本発明は、この点にその範囲を限定されるものではない。しかしながら、光線及びバウンディングボックスの数は、一つのGPUのサイクルで処理するために、様々な因子に基づいて変化してもよい。また、本実施の形態では、同じ10本の光線を適用していることにも留意されたい。さらに、この特定の実施の形態の場合には、八つのボックスは、階層的に連続するボックスであるが、本発明は、勿論、階層的に連続するボックスを採用することにその範囲を限定されるものではない。しがたって、特定の光線が、八つのバウンディングボックス全てに交差する場合には、これは、更なるグラフィック処理に使用される情報を、より詳細には以下に説明するように、提供する。
10本の光線及び八つのバウンディングボックスを1サイクルで処理するために採用するメカニズムは、先述したように、プログラム可能なシェーダステージを有するGPUのアーキテクチャの利点を活用するものである。したがって、光線の数は、例えば、GPU上での処理を採用するために、少なくとも部分的には、アプリケーション及び特定の状況に応じて変化させてもよい。また、光線の数は、例えば、特定のGPU、その特定のアーキテクチャ、処理する特定の画像等のようなその他の因子に少なくとも部分的に基づいて、変化させてもよい。同様に、類似の変化をバウンディングボックスの数に適用して、1サイクルで処理してもよい。
先述したように、ピクセルシェーダは、所謂「フラグメントプログラム」を実行する。したがって、フラグメントステージ180のようなGPUのフラグメントステージ、例えば、ボックス150のようなピクセルシェーダは、実行命令形式のフラグメントプログラムを与えられている。同様に、フラグメントプログラムを実行することが望ましい特定のピクセルが、指定されている。かかるプログラムを実行する際には、GPUは、通常、特定のピクセル用の特定の位置に値を生成、又は出力する。このように、本実施の形態では、1サイクルで八つのバウンディングボックスといったように、並列計算を実行するために、特定の光線/ピクセルの計算の結果を、特定のロケーション、本実施の形態では、ステンシルバッファに書き込む。より詳細には、ピクセルシェーダによって処理されるピクセルについて、通常、GPUは、その色(例えば、赤、緑、青)、アルファ(例えば、カバレージ)深度、及び、特定のフラグメントプログラムに固有のその他の更なる値を計算する。この特定の実施の形態では、ステンシルバッファは、これらその他の追加の値を格納するために、バイト、即ち8ビットを有する。故に、この特定の実施の形態では、八つのバウンディングボックスは、各々がステンシルバイトの一つのビットを利用し、1サイクルで処理される。繰り返すが、本発明は、この特定の事項にその範囲を限定されるものではない。例えば、計算結果は、代わりに、深度として、色として、又は、そのためにGPUが特定のバッファロケーションを有する他の属性として、格納されてもよい。ここでは、示したように、ステンシルバッファの各ビットは、特定の光線と特定のバウンディングボックスとの交差を計算した結果を表す。ステンシルバッファをここで採用することの利点は、入力/出力の観点から見ると、特定の計算結果をステンシルバッファの他のビットをマスクすることによって読み出すことが比較的容易であることである。
先述したように、この特定の実施の形態では、10本の光線を1サイクルで処理する。この特定の実施の形態では、これは、2×5のピクセル配列の形態で行われる。しかしかしながら、本発明は、このことにその範囲を限定されるものではない。一般的には、GPUを有効に利用するために、2の倍数の大きさを有する配列を使用することが望ましい。勿論、本発明は、2×Nの配列を採用することにその範囲が限定されるものではない。なお、ここでのNは、任意の正の整数である。したがって、この特定の実施の形態では、並列処理の効果を得るために、この特定の実施の形態用に、10本の光線を1サイクルで処理している。
この特定の実施の形態では、バウンディングボックスは、Xにおけるある範囲、Yにおけるある範囲、Zにおけるある範囲を表している。したがって、フラグメントプログラムは、10個のピクセルについて、これらピクセルに関連する光線がバウンディングボックスに交差するか否かを求めるように、書き換えられてもよい。交差が生じる場合には、ビットが特定のピクセル用のステンシルバッファにセットされる。同様に、フラグメントプログラムを用い、八つのバウンディングボックスを1サイクルで計算することによって、GPUのハードウェアのアーキテクチャを、先述したように、活用する。
GPUを採用する際の一つの問題は、処理が停止する時を決定することである。これを求めるために、CPUはGPUに問い合わせを行う。しかしながら、かかる問い合わせは、いくつかの効率性に関する影響をもたらす。GPUに問い合わせることによって、GPUは、CPUにデータを提供するよう、その処理を停止することになる。したがって、頻繁に問い合わせることは、処理の不効率を招くので、望ましくない。しかしながら、同様に、あまりに低頻度にGPUへ問い合わせることも、GPUが停止するとアイドル状態になり、処理時間の浪費となるので、望ましくない。
この特定の実施の形態の場合、両端キューが、先述したように、これら考慮すべき事項の均衡を保つメカニズムを、より詳細には後述するように、提供する。本明細書では、示唆したように、CPUがGPUメカニズムに問い合わせる頻度は、GPUによる処理の効率に影響を与えることがある。したがって、特定の実装又は実施の形態に応じて、この頻度を変更することが望ましい。
先述したように、GPUとCPUは、図3のブロック330によって示すように、別個のワークユニットを最初に処理し始める。したがって、この実施の形態の場合、CPU及びGPUは、複数の光線と、一以上のグラフィックオブジェクトを境界づける表面のセットとの交差を計算する。しかしながら、本明細書では、グラフィックオブジェクトは、プリミティブのセットを有することに留意されたい。この特定の実施の形態の場合、本発明は、このことにその範囲を限定されるものではないが、図3のブロック340によって更に示すように、CPUがそのワークユニットの処理を完了したか否か、及び、何時完了したかは、判定箇所となる。本明細書では、ワークユニットを完了することは、その特定のワークユニットの処理を停止することを意味し、利用可能な場合に、他のワークユニットを処理し始めることを意味する。CPUが停止していない、又は処理を完了していない場合には、次いで、CPU及びGPUが、ブロック370によって示すように、処理を続行する。しかしながら、CPUは、終了すると、GPUへ当該GPUが処理を停止しているか否かを、図3のブロック350によって示すように、問い合わせる。GPUは、開始した最新のワークユニット用の更なる処理を有する場合には、続行する。更なるワークユニットがキューに残っている場合には、次いで、完了しているCPUは、キューの端から別のワークユニットを取り出す。次いで、以前のように、CPUは、そのワークユニットが完了するまで処理を続行し、次いで、再び、GPUに問い合わせる。この時点で、GPUが処理を完了している場合には、次いで、GPUは、例えば、「ヒット」、即ち交差が発生したか否かのような情報をCPUに提供する。ヒットが発生していない場合には、これは、如何なる光線も、GPUによって処理されたボクセル、即ちワークユニット用のバウンディングボックスに交差し得ていないことを示す。したがって、このワークユニットは、如何なる光線もプリミティブに交差していないので、完了している。更なるワークユニットがある場合には、GPU及びCPUは、次いで、更なるワークユニットを取得して、ループを続ける。これは、図3において、ブロック385、335、365、及び355を含むループによって示されている。勿論、説明したように、例えば、ブロック386によって、ワークユニットが無くなり、CPU及びGPUが、それぞれのワークユニット用の更なる処理をもたなくなった場合には、この特定の実施の形態では、プロセスが完了することに留意されたい。
しかしながら、代替手法として、GPUがヒットを報告しなかった場合に、このことが、特定のボクセルのバウンディングボックスに幾つかの光線が交差したことを意味する。GPUは、交差が発生した場合に光線に関してCPUにデータを提供することによって、CPUが更なる処理のために「アクティブ」のままとなっている光線の数を求めることを支援する。この情報によって、CPUは、先述した両端キューにおける更なるワークユニットをスケジュールすることが可能になる。このCPUによるスケジューリングは、特定のボクセル用の更なる処理がGPU又はCPUによって実行されるか否かを決定する。
しかしながら、ある時点において、階層内に更なるバウンディングボックスが無くなる。このことが発生すると、GPUがヒットを報告していないものと見なし、これによって、バウンディングボックスによって境界づけされたプリミティブに光線が交差するか否かを求める計算が実行されることを示す。この特定の実施の形態では、この後者の計算は、GPUではなくCPUによって実行される。したがって、CPUは、一以上の光線と一以上のグラフィックオブジェクトとの交差を、GPUによって実行された計算に少なくとも部分的に基づいて計算する。CPUは、特定のワークユニット用のかかる処理を、光線が任意のプリミティブに交差しているか否かを求めることによって達成する。このことは、図3において、ブロック375及び371によって示されている。図3に示すように、ブロック380では、CPUが、ワークユニット用の光線とプリミティブとの交差の計算を完了すると、CPU及びGPUの両者が、利用可能であれば、更なるワークユニットを取得する。以前のように、このことは、ブロック335、365、355を含むループによって示されている。
光線が、二つ又は三つのオブジェクトに交差することもある。これに対処するために、光線とプリミティブとの交差を、Zバッファを用いてキャッシュ及びソートし、どのプリミティブが最初の交差、即ち最も近傍の交差であるかを求める。
勿論、本発明は、例えば、CPUがGPUに問い合わせを行う特定の時刻に関することのように、この特定の実施の形態にその範囲を限定するものではない。一例として、CPUは、GPUに、略所定の時間間隔で問い合わせを行ってもよい。或いは、適応アプローチでは、CPUは、GPUによって開始された最新のワークユニットに関してGPUが行う処理の量に少なくとも部分的に基づいて問い合わせを行ってもよい。上述したように、CPUがGPUに問い合わせを行う方式は、GPUの処理効率に影響を与えることがある。したがって、本発明の範囲内には、CPUがGPUに問い合わせを行う任意の且つ全ての方法が含まれることを意図している。明確であるように、GPU及びCPUの処理を一時的に一致又は重複させることが好ましい。一般的には、両プロセッサが並列に処理を行う時間が多くなるにつれて、スループットが大きくなる。したがって、CPUによるGPUへの問い合わせは、可能な限り、プロセッサによる処理の一時的な重複を形成するように、発生することが望ましい。勿論、先述したように、このことを効果的に達成する方式は、特定の実施の形態に応じて変化してもよい。したがって、先にも示唆したように、GPUを用いて、この特定の実施の形態では、光線とプリミティブとの交差を計算する試行が望ましくないボクセルを決定するCPUを支援することによって、処理を高速化する。
任意の時刻でのGPUへの問い合わせを説明するために、図7に、図3の方法の実施の形態の代替手法を示す部分的なフローチャートを示す。図7は、図3と直接比較し得るものである。特に、図7は、図3のブロック330とブロック375との間に適合し、ブロック340〜360に置き換わる。したがって、図7に示すフローチャートは、図3のフローチャートと類似するものであるが、示唆したように、CPUがワークユニットを完了した場合にGPUが必ずしも問い合わせを受けないことが異なる。このことは、例えば、ブロック740に示されている。特に、この判定ブロックは、CPUによるGPUへの問い合わせを示す。しかしながら、CPUがGPUへ問い合わせを行うか否かによらず、745又は765の判定ブロックは、それぞれ、CPUがワークユニットの処理を完了したたか否かを求める。完了していない場合には、ブロック780及び791によってそれぞれ示されるように、GPU及びCPUは、処理を続行する。しかしながら、CPUがその処理を完了している場合には、ブロック785及び795にそれぞれ示すように、更なるワークユニットが利用可能か否かについての判定がなされる。
この特定の実施の形態では、示唆したように、問い合わせ時に、処理が完了している場合には、GPUがCPUへ、バウンディングボックスが交差しているか否か、又は、光線が特定のボクセルにおけるオブジェクトに当たっていないか否かに関する情報を提供する。ヒット、即ちバウンディングボックスの交差は、更なる処理が必要であることを意味する。しかしながら、バウンディングボックスがヒットしていない、即ち、交差していない場合には、同様に、ボックスによって境界づけられたプリミティブは、交差しない。勿論、所望の情報は、光線がプリミティブに交差したことだけではなく、交差がどの場所で発生しているか、また、最近傍の光線とプリミティブとの交差は何であるのかといったことでもあることに留意されたい。これは、階層内に更なるバウンディングボックスがなくなると、GPUによって開始された処理をCPUに完了させる理由である。GPUは、本質的には、特定のセル、即ちボクセルに関して光線とプリミティブとの交差をCPUに計算させることが望ましい場合を決定するために、採用されている。しかしながら、GPUを「階層を進む(walk the hierarchy)」ために適時に採用することの利点には、GPUがCPUと並列に計算を実施し得ることがあり、また、GPUが、CPUより効率的にある計算を実行し得ることがある。
要約すると、この特定の実施の形態では、階層ボクセルのセット又はバウンディングボックスを採用している。実質的にコヒーレントな光線のバッチは、バウンディングボックスの階層を通じて反復される。あるボクセルの処理が完了した後、光線のバッチは、次のボクセルのセットに進む。このプロセス内では、ボクセルに含まれる光線の数を用いて、両端キューを介し、計算がGPUによって実行される方が良いか又はCPUによる方が良いかを、負荷分散のために、暗示的に決定する。先述したように、多くのバッチをGPUで処理し、少ないバッチをCPUによって処理し、これらそれぞれのプロセッサの特定の性能の利点を活用することが望ましい。
勿論、少なくとも部分的には上記の開示内容に基づいて、所望のグラフィック処理を生成することが可能なソフトウェアを製造し得ることが理解されよう。また、勿論、特定の実施の形態を説明してきたが、本発明は、特定の実施の形態又は実装にその範囲を限定するものではないことが理解されよう。例えば、一つの実施の形態は、先述したようなデバイス又はデバイスの結合体上で動作するよう実装したような、ハードウェアであってもよく、一方、他の実施の形態は、ソフトウェアであってもよい。同様に、ある実施の形態は、例えば、ファームウェアに、若しくは、ハードウェア、ソフトウェア、及び/又はファームウェアの結合によって、実装されてもよい。同様に、本発明は、このことにその範囲を限定するものではないが、ある実施の形態は、記録媒体のような、一以上の製品であってもよい。この記録媒体は、例えば、一以上のCD−ROM及び/又はディスクのようなものであり、命令を格納しており、例えば、コンピュータシステム、コンピュータプラットフォーム、GPU、CPU、他の任意のデバイスマハタシステム、若しくは、これら結合のようなシステムによって実行されたときに、例えば、上述した実施の形態のうちの一つのように、本発明に基づく方法の実施の形態を実行する。一つの考えられる例として、計算プラットフォームは、一以上の処理ユニット、即ちプロセッサ、ディスプレイ、キーボード、及び/又はマウスといった一以上の入力/出力デバイス、並びに/若しくは、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、及び/又はハードドライブといった一以上のメモリを備えていてもよい。しかしながら、繰り返すが、本発明は、この例にその範囲を限定するものではない。
以上の説明では、本発明の種々の側面を説明してきた。説明の目的で、特定の数、システム、及び構成を述べ、本発明の完全な理解を可能としている。しかしながら、本発明の利益を享受する当業者には、特定の詳細が無くとも、本発明を実施し得ることが理解されよう。他の例では、周知の特徴を省略して、本発明を不明確にしないよう簡単なものとした。ある特徴を本明細書に示し、及び/又は説明してきたが、多くの変形態様、置換態様、変更態様、及び/又は均等の態様を、当業者であれば思いつくであろう。したがって、添付の特許請求の範囲は、かかる変形態様及び/又は変更態様の全てを、本発明の真の精神に入るように、保護することを意図するものであることが理解されよう。
典型的なグラフィックパイプラインの実施の形態を示すブロック図である。 プログラム可能なGPUのような専用グラフィックハードウェアを備えるコンピュータプラットフォームの実施の形態の概略図である。 負荷分散の方法の実施の形態を示すフローチャートである。 典型的なプログラム可能な頂点シェーダの実施の形態を示すブロック図である。 典型的なプログラム可能なフラグメント処理ステージの実施の形態を示すブロック図である。 グラフィカルオブジェクトを境界付けるボックスを有する二次元グリッドの実施の形態を示す概略図である。 負荷分散の方法の他の実施の形態の一部を示すフローチャートの一部である。 コンピュータプラットフォームの他の実施の形態の概略図である。

Claims (9)

  1. プログラム可能なグラフィック処理ユニット(GPU中央処理ユニット(CPUとの間で負荷を分散する方法であって、
    CPUにより、各々が少なくとも部分的に前記GPU及び前記CPUによって処理され得る別個の複数のワークユニットをもつ両端キューを形成するステップであって、前記複数のワークユニットは、一以上の光線がオブジェクトに交差するか否かを決定する一以上のレイトレーシング処理の少なくとも一部分を個別に構成し、前記複数のワークユニットは、複数の光線と前記オブジェクトを境界付ける一以上のバウンディングボリュームとの交差の数によって少なくとも部分的に個別に特定され、前記両端キューにおける複数のワークユニットは、該両端キューの第1端が、該両端キューの第2端に含まれるワークユニットのバウンディングボリュームより多い数の光線の交差を有するバウンディングボリュームを有するワークユニットを含むように順序づけされる、該ステップと、
    前記GPUに前記両端キューの前記第1端からワークユニットを選択させ、前記CPUに前記両端キューの第2端からワークユニットを選択させることによって、前記ワークユニットを処理するステップと、
    を含む方法。
  2. 前記処理は、前記CPUが前記GPUへ問い合わせることを含む、請求項1に記載の方法。
  3. 前記CPUが前記GPUに問い合わせることは、前記CPUが前記GPUへ実質的に所定の間隔で問い合わせることを含む、請求項2に記載の方法。
  4. 前記CPUが前記GPUに問い合わせることは、前記GPUによって開始された最新のワークユニットの処理の量に少なくとも部分的に基づく時間に、前記CPUが前記GPUへ問い合わせることを含む、請求項2に記載の方法。
  5. 前記CPUが前記GPUに問い合わせることは、可変の時間に、前記CPUが前記GPUへ問い合わせることを含む、請求項2に記載の方法。
  6. 前記CPUが前記GPUに問い合わせることは、該CPUがワークユニットを完了したことに少なくとも部分的に応じて前記CPUが前記GPUへ問い合わせることを含む、請求項2に記載の方法。
  7. 前記GPUによって処理される前記ワークユニットの少なくとも幾つかについて、処理が前記CPUによって完了される、請求項2記載の方法。
  8. 前記GPUによって処理される前記ワークユニットの少なくとも幾つかについて、前記CPUが一以上の光線とプリミティブとの交差を計算する、請求項2に記載の方法。
  9. 前記GPU及び前記CPUによって実行される前記処理は、少なくとも部分的に一時的に一致する、請求項1に記載の方法。
JP2007532499A 2004-09-16 2005-09-16 負荷分散 Active JP4450853B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US61087304P 2004-09-16 2004-09-16
PCT/US2005/033170 WO2006034034A2 (en) 2004-09-16 2005-09-16 Load balancing

Publications (3)

Publication Number Publication Date
JP2008513890A JP2008513890A (ja) 2008-05-01
JP2008513890A5 JP2008513890A5 (ja) 2010-01-14
JP4450853B2 true JP4450853B2 (ja) 2010-04-14

Family

ID=36090520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007532499A Active JP4450853B2 (ja) 2004-09-16 2005-09-16 負荷分散

Country Status (4)

Country Link
US (1) US7868891B2 (ja)
JP (1) JP4450853B2 (ja)
CN (1) CN101091175B (ja)
WO (1) WO2006034034A2 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CA2546427A1 (en) * 2003-11-19 2005-06-02 Reuven Bakalash Method and system for multiple 3-d graphic pipeline over a pc bus
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
US20080074431A1 (en) * 2003-11-19 2008-03-27 Reuven Bakalash Computing system capable of parallelizing the operation of multiple graphics processing units (GPUS) supported on external graphics cards
US20080094403A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem
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
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
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
NO20045586L (no) * 2004-12-21 2006-06-22 Sinvent As Anordning og fremgangsmate for bestemmelse av skjaeringslinjer
JP2008538620A (ja) * 2005-01-25 2008-10-30 ルーシッド インフォメイション テクノロジー リミテッド モノリシック構成のシリコン・チップ上に多数のグラフィックス・コアを用いるグラフィック処理及び表示システム
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
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US20070097017A1 (en) * 2005-11-02 2007-05-03 Simon Widdowson Generating single-color sub-frames for projection
US7522169B1 (en) * 2005-12-13 2009-04-21 Nvidia Corporation Apparatus and method for selective attribute distribution to parallel processors
US20070153015A1 (en) * 2006-01-05 2007-07-05 Smedia Technology Corporation Graphics processing unit instruction sets using a reconfigurable cache
JP5111797B2 (ja) * 2006-06-29 2013-01-09 株式会社東芝 情報処理装置及び情報処理方法
US8111259B1 (en) 2006-07-06 2012-02-07 Marvell International Ltd. Image processing apparatus having context memory controller
US8243081B2 (en) * 2006-08-22 2012-08-14 International Business Machines Corporation Methods and systems for partitioning a spatial index
WO2008055381A1 (en) * 2006-11-08 2008-05-15 Intel Corporation Graphics processor pipelined reduction operations
US20080204468A1 (en) * 2007-02-28 2008-08-28 Wenlong Li Graphics processor pipelined reduction operations
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
WO2008127622A2 (en) 2007-04-11 2008-10-23 Apple Inc. Data parallel computing on multiple processors
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US7843462B2 (en) * 2007-09-07 2010-11-30 Seiko Epson Corporation System and method for displaying a digital video sequence modified to compensate for perceived blur
US8072460B2 (en) 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
CN101946491A (zh) * 2008-02-29 2011-01-12 汤姆逊许可公司 用于提供负载平衡信号分配的方法和装置
US8345045B2 (en) * 2008-03-04 2013-01-01 Microsoft Corporation Shader-based extensions for a declarative presentation framework
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US8199158B2 (en) * 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
US7880671B2 (en) * 2008-09-18 2011-02-01 Raytheon Company Electromagnetic (EM) solver using a shooting bouncing ray (SBR) technique
US7750842B2 (en) * 2008-09-18 2010-07-06 Raytheon Company Parallel processing to generate radar signatures for multiple objects
US8599202B1 (en) * 2008-09-29 2013-12-03 Nvidia Corporation Computing tessellation coordinates using dedicated hardware
US20100079469A1 (en) * 2008-09-30 2010-04-01 Lake Adam T Rendering tremmed nurbs on programmable graphics architectures
US8587588B2 (en) * 2009-08-18 2013-11-19 Dreamworks Animation Llc Ray-aggregation for ray-tracing during rendering of imagery
US20110212761A1 (en) * 2010-02-26 2011-09-01 Igt Gaming machine processor
US8390508B1 (en) 2010-04-05 2013-03-05 Raytheon Company Generating radar cross-section signatures
CN101833438A (zh) * 2010-04-19 2010-09-15 浙江大学 一种基于多重并行的数据通用处理方法
JP2012003619A (ja) 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム
CN101894051A (zh) * 2010-07-29 2010-11-24 中国科学技术大学 基于主辅数据结构的cpu-gpu合作计算方法
EP2432224A1 (en) * 2010-09-16 2012-03-21 Harman Becker Automotive Systems GmbH Multimedia system
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
KR101845328B1 (ko) * 2011-08-22 2018-04-04 삼성전자 주식회사 단말 및 그 단말에서 어플리케이션 수행 방법
WO2013122572A1 (en) * 2012-02-14 2013-08-22 Empire Technology Development Llc Load balancing in cloud-based game system
CN103514042B (zh) * 2012-06-18 2018-01-09 中国科学院计算机网络信息中心 一种双调归并排序调优方法及装置
US9275601B2 (en) 2012-12-12 2016-03-01 Intel Corporation Techniques to control frame display rate
CN103164839B (zh) 2013-03-07 2019-06-21 华为技术有限公司 一种绘图方法、装置及终端
EP3242210B1 (en) * 2013-03-15 2022-08-03 INTEL Corporation Work stealing in heterogeneous computing systems
WO2015012786A1 (en) 2013-07-22 2015-01-29 Empire Technology Development Llc Game load management
DK178380B1 (en) * 2014-07-01 2016-01-25 Magma Giessereitechnologie Gmbh Method of beam tracking for use in a simulation or calculation process
CN104360909B (zh) * 2014-11-04 2017-10-03 无锡天脉聚源传媒科技有限公司 一种视频处理方法及装置
GB2533284B (en) * 2014-12-11 2017-04-12 Imagination Tech Ltd Performing object detection
US9342384B1 (en) * 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
KR102001222B1 (ko) * 2015-07-07 2019-07-17 삼성전자주식회사 신호 처리 장치 및 방법
CN105184220B (zh) * 2015-08-04 2018-06-29 厦门大学 基于gpu的交替霍夫森林实时目标跟踪方法
KR20170102726A (ko) * 2016-03-02 2017-09-12 한국전자통신연구원 이종 컴퓨팅 방법
WO2018234869A2 (en) * 2017-06-22 2018-12-27 Banuba Limited ENHANCING THE FUNCTIONING OF COMPUTER DEVICES USING AN ADAPTIVE DYNAMIC WORK LOAD DISTRIBUTION BETWEEN ONE OR MORE CENTRAL PROCESSING UNITS AND ONE OR MORE GRAPHIC PROCESSING UNITS, AND COMPUTER SYSTEMS AND COMPUTER-IMPLEMENTED METHODS BASED ON THE SAME -THIS
CN109726005B (zh) * 2017-10-27 2023-02-28 伊姆西Ip控股有限责任公司 用于管理资源的方法、服务器系统和计算机可读介质
US10916031B2 (en) * 2018-07-06 2021-02-09 Facebook Technologies, Llc Systems and methods for offloading image-based tracking operations from a general processing unit to a hardware accelerator unit
CN109213601B (zh) * 2018-09-12 2021-01-01 华东师范大学 一种基于cpu-gpu的负载均衡方法及设备
CN109379627B (zh) * 2018-11-27 2020-12-04 Oppo广东移动通信有限公司 视频处理方法、装置、电子设备以及存储介质
US11113819B2 (en) * 2019-01-15 2021-09-07 Nvidia Corporation Graphical fiducial marker identification suitable for augmented reality, virtual reality, and robotics
US10878628B2 (en) * 2019-03-22 2020-12-29 Cesium GS, Inc. System and method for converting massive, single-material mesh datasets to a hierarchical format
US20220240408A1 (en) * 2021-01-22 2022-07-28 Nvidia Corporation Static data center power balancing and configuration
US20220309734A1 (en) * 2021-03-29 2022-09-29 Samsung Electronics Co., Ltd. Apparatus and method with graphics processing
US20220414967A1 (en) * 2021-06-24 2022-12-29 Intel Corporation Out-of-order pixel shading and rasterization
US11947941B2 (en) 2021-08-24 2024-04-02 Red Hat, Inc. Dynamic computation offloading to graphics processing unit
US20230289211A1 (en) 2022-03-10 2023-09-14 Nvidia Corporation Techniques for Scalable Load Balancing of Thread Groups in a Processor
CN116578425B (zh) * 2023-07-11 2023-09-22 沐曦集成电路(上海)有限公司 一种基于光栅化的负载均衡方法及系统

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283860A (en) * 1990-11-15 1994-02-01 International Business Machines Corporation System and method for displaying trimmed surfaces using bitplane masking
US5388841A (en) * 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
GB2266037B (en) * 1992-03-13 1996-02-14 Quantel Ltd An electronic video processing system
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5594854A (en) * 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5977986A (en) * 1995-12-06 1999-11-02 Intel Corporation Image encoding for faster decoding
US5701404A (en) * 1996-05-31 1997-12-23 Softimage Method and system for efficiently trimming a nurbs surface with a projected curve
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
JP3224782B2 (ja) * 1998-08-03 2001-11-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 処理分担動的変更方法及びコンピュータ
US6377265B1 (en) 1999-02-12 2002-04-23 Creative Technology, Ltd. Digital differential analyzer
US6614445B1 (en) * 1999-03-23 2003-09-02 Microsoft Corporation Antialiasing method for computer graphics
US6556200B1 (en) * 1999-09-01 2003-04-29 Mitsubishi Electric Research Laboratories, Inc. Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data
US6466227B1 (en) * 1999-09-01 2002-10-15 Mitsubishi Electric Research Laboratories, Inc. Programmable architecture for visualizing sampled and geometry data
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US7180523B1 (en) * 2000-03-31 2007-02-20 Intel Corporation Trimming surfaces
US6426755B1 (en) * 2000-05-16 2002-07-30 Sun Microsystems, Inc. Graphics system using sample tags for blur
US7071937B1 (en) * 2000-05-30 2006-07-04 Ccvg, Inc. Dirt map method and apparatus for graphic display system
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7061502B1 (en) * 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6862025B2 (en) * 2002-02-28 2005-03-01 David B. Buehler Recursive ray casting method and apparatus
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US6809739B2 (en) * 2002-04-30 2004-10-26 Silicon Graphics, Inc. System, method, and computer program product for blending textures during rendering of a computer generated image using a single texture as a mask
US7009608B2 (en) * 2002-06-06 2006-03-07 Nvidia Corporation System and method of using multiple representations per object in computer graphics
US6853377B2 (en) * 2002-06-26 2005-02-08 Nvidia Corporation System and method of improved calculation of diffusely reflected light
US6876362B1 (en) * 2002-07-10 2005-04-05 Nvidia Corporation Omnidirectional shadow texture mapping
US7714858B2 (en) * 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7091979B1 (en) * 2003-08-29 2006-08-15 Nvidia Corporation Pixel load instruction for a programmable graphics processor
US7119810B2 (en) * 2003-12-05 2006-10-10 Siemens Medical Solutions Usa, Inc. Graphics processing unit for simulation or medical diagnostic imaging
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal

Also Published As

Publication number Publication date
CN101091175B (zh) 2012-03-14
CN101091175A (zh) 2007-12-19
US7868891B2 (en) 2011-01-11
US20060059494A1 (en) 2006-03-16
JP2008513890A (ja) 2008-05-01
WO2006034034A2 (en) 2006-03-30
WO2006034034A3 (en) 2007-06-21

Similar Documents

Publication Publication Date Title
JP4450853B2 (ja) 負荷分散
US9978115B2 (en) Sprite graphics rendering system
US9569811B2 (en) Rendering graphics to overlapping bins
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US8212825B1 (en) System and method for geometry shading
WO2017003697A1 (en) Rendering graphics data on demand
JP7122396B2 (ja) グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法
TW201439975A (zh) 在光柵操作中處理後置z覆蓋率資料
US11663767B2 (en) Power efficient attribute handling for tessellation and geometry shaders
KR20220100877A (ko) 대역폭 테셀레이션 팩터 감소
TW201439971A (zh) 路徑著色的最佳化三角形拓撲
US8605085B1 (en) System and method for perspective corrected tessellation using parameter space warping
US8553041B1 (en) System and method for structuring an A-buffer to support multi-sample anti-aliasing
KR20220151171A (ko) 그래픽 처리 유닛 렌더 모드 선택 시스템
US20240257435A1 (en) Hybrid binning
JP2023525725A (ja) データ圧縮の方法及び装置
US7724254B1 (en) ISO-surface tesselation of a volumetric description
US11934304B2 (en) Circuitry and method
US8095746B1 (en) Conserving and shaping address space with arrays
US11880924B2 (en) Synchronization free cross pass binning through subpass interleaving
US20210398349A1 (en) Fine grained replay control in binning hardware
US20230205698A1 (en) Cache blocking for dispatches
KR20220157401A (ko) 부분적으로 상주하는 텍스처에 대한 샘플링
GB2625797A (en) Retrieving a block of data items in a processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20091117

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20091117

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100126

R150 Certificate of patent or registration of utility model

Ref document number: 4450853

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130205

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130205

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140205

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250