JP2016527631A - グラフィックス処理ユニットを用いたヒストグラム計算のシステム及び方法 - Google Patents
グラフィックス処理ユニットを用いたヒストグラム計算のシステム及び方法 Download PDFInfo
- Publication number
- JP2016527631A JP2016527631A JP2016527981A JP2016527981A JP2016527631A JP 2016527631 A JP2016527631 A JP 2016527631A JP 2016527981 A JP2016527981 A JP 2016527981A JP 2016527981 A JP2016527981 A JP 2016527981A JP 2016527631 A JP2016527631 A JP 2016527631A
- Authority
- JP
- Japan
- Prior art keywords
- value
- buffer
- data set
- texel
- location
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法及びシステムが開示される。処理デバイスが、テクセルのデータセットを第1のバッファーから受信する。このデータセットは少なくとも2の次元数Dを有し、各テクセルは値を含む。処理デバイスは、データセットを座標の点リストにソートし、点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、N−1次元優位性に従って点リスト内の点を配列することによって点リストの次元数を縮小する。処理デバイスは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも1つの値を取得する。処理デバイスは、少なくとも1つの値を第2のバッファーに出力する。処理デバイスは、グラフィックス処理ユニットとすることができる。【選択図】図3
Description
本開示の実施の形態は、画像処理に関し、より詳細には、ヒストグラム計算及び他の統計計算の分野に関する。
D次元数値集合Sに対して行われるmin(S)、max(S)、
、標準偏差σ(S)、及びmode(S)等のヒストグラム計算(histogram computation)及び関連した統計演算は、画像処理システムにおいて用いられる共通の演算である。ヒストグラム計算は、大きなセットの並列実行、高速スループット、又はそれらの双方等の並列実行を伴う問題においても用いられてきた。例として、米国特許第8,451,384号に教示されているシステム及び方法は、複数のヒストグラム及びそれらの交差を利用して、高解像度ビデオにおけるショット変化検出用の幾つかの尺度のうちの1つを提供する。残念ながら、大規模マルチ並列ハードウェアを利用しながらこれらのタイプの計算を効率的に実行するものは存在していない。なお、大規模マルチ並列ハードウェアは、グラフィックス処理ユニット(GPU:graphics processing unit)及び大規模マルチコアSIMD又はMIMDのベクトル処理システムを含むことができる。
GPUに基づくヒストグラム計算を実行する初期の試みは、例えば、特許文献1(以下、‘922特許)に教示されているような再帰的縮小演算に関する性能が不十分であるという難点を有する。そのような再帰的縮小演算は、小さなタイルサイズに対しては大きな繰り返し再帰を必要とし、大きなタイルサイズ及びそれよりも少ない再帰に対してはキャッシュミスという難点を有する。これは、‘922特許によって教示されているような大きなデータセットの再帰的縮小演算の有用性及び実用性能を制限する。
他の従来技術の方法は、非特許文献1(以下、「Scheuermann及びHensley」)に開示されているように、現在のGPUハードウェアの特徴、すなわち、頂点シェーダー(vertex shader)内のテクスチャーバッファー値の読み出しを用いて単一のステップで縮小を実行することによって再帰を回避する。Scheuermann及びHensleyによって教示されているような頂点シェーダー内のテクスチャーバッファー値の読み出しは、「散乱(scatter)」演算を可能にし、例えば、宛先書き込みロケーションは、固定されておらず、入力テクスチャーに依拠した決定に基づいて可変である。
これとは対照的に、‘922特許に教示された再帰的縮小演算は、「収集(gather)」演算しか可能にせず、この場合、書き込み演算ロケーションは固定され、読み出し演算は可変である。Scheuermann及びHensleyの方法は、良好な並列性及びスケーリング性能の更なる利益を入力データセットサイズに対してのみ示し、ヒストグラムビンサイズに対しては示さないが、大きなビンサイズがそれよりも小さなビンサイズよりも優れた性能を示す性能逆転の難点を有することに留意すべきである。この予測不能性は、特に、高モダリティを有するデータセットにおけるGPUキャッシュへのメモリ書き込み要求のシリアル化に起因しており、予測可能性が不可欠なものであるリアルタイムストリーム処理アプリケーションにとってそのような方法及びシステムを完全に不適切なものにする。
非特許文献2(以下、「Nugteren」)には、キャッシュ衝突問題に対処する2つのヒストグラム計算方法が開示されているが、双方とも、GPUハードウェアの単一の供給業者からしか入手可能でない独自のAPI(CUDA)を用いる。さらに、これらの従来技術の方法は、それら自体、特異な目的、すなわち、いずれの類似の統計関数でもなく、GPUを用いたビニングされたヒストグラムの計算を対象としている。加えて、画像処理及びビデオ処理について、ヒストグラム関数は、通常、パイプラインストール及び待ち状態を導入して、CPU上等のGPU以外で実行されてきた。これらのストールは、そのようなシステム及び方法をリアルタイムの画像処理及びビデオ処理に不適切なものにする。
Scheuermann, T.及びHensley, J., 2007「Efficient histogram generation using scattering on GPUs」(Proceedings of the 2007 symposium on Interactive 3D graphics and games (I3D ‘O7), pp. 33-37)
Nugteren、Cedric他「High performance predictable histogramming on gpus: exploring and evaluating algorithm trade-offs」(Proceedings of the Fourth Workshop on General Purpose Processing on Graphics Processing Units, ACM, 2011)
したがって、望まれているが、まだ提供されていないものは、高スループットでメモリ効率が良く、GPU供給業者に依存しない柔軟なヒストグラム、並びに一貫した性能を示すヒストグラムを計算する統計的な方法及びシステムである。
本発明によるシステム及び方法は、ヒストグラム計算の機能を実行し、集合から次のもの、すなわち、その集合の最小値、最大値、標準偏差のうちの1つ又は複数を見つけること、及び集合のN番目のモードを見つけることを可能にする。本発明の好ましい実施の形態は、GPU上で実現されるが、当業者であれば、本発明が、画像処理機能及びビデオ処理機能以外の複数の使用法を有することを理解するであろう。任意の大きなD次元データセットの統計解析又はヒストグラム解析を必要とするいずれの問題も利益を得る。この追加の理由によって、効率的なGPUヒストグラム計算システム及び方法は、付随する利益を、GPU上で実行される任意のリアルタイムの又は他の時間的制約のある画像処理システム若しくは方法又はビデオ処理システム若しくは方法に提供する。
より詳細には、テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的な解決が当該技術分野において達成される。処理デバイスが、テクセルのデータセットを第1のバッファーから受信する。このデータセットは少なくとも2の次元数Dを有し、各テクセルは値を含む。処理デバイスは、データセットを座標の点リストにソートし、点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、N−1次元優位性(dominancy)に従って点リスト内の点を配列することによって点リストの次元数を縮小する。処理デバイスは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも1つの値を取得する。処理デバイスは、少なくとも1つの値を第2のバッファーに出力する。処理デバイスは、グラフィックス処理ユニットとすることができる。ソートするステップ、縮小するステップ、実行するステップ、及び出力するステップは、Dが1になるまで繰り返すことができる。
一例では、データセットをソートすることは、各テクセルロケーションの個々の頂点を有する頂点バッファーを生成することを含むことができる。点リストの次元数を縮小することは、頂点シェーダー通過を実行して、後続のピクセルシェーダー通過に、ラスター演算を実行する宛先ビンロケーションを通知することを含むことができる。ラスター演算を実行することは、ピクセルシェーダーを用いて、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも1つを実行することを含むことができる。
一例では、前記出力された前記少なくとも1つの値は、前記データセットのヒストグラム、前記データセットの最大値、前記データセットの前記最小値、前記データセットの合計値、データセットの平均値、メジアン値、若しくはモード値、前記データセットの標準偏差値、データセットの前記最小値のロケーション、又はデータセットの前記最大値のロケーションのうちの少なくとも1つとすることができる。
一例では、前記テクセルのデータセットは、2次元又は3次元の静止画像又はビデオから前記第1のバッファーにおいて受信することができる。
ヒストグラム及び関連した統計値をテクセルのデータセットから取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的解決が当該技術分野において達成される。処理デバイスが、テクセルの2次元データセットを第1のバッファーから受信し、このデータセット内の各テクセルは値と関連付けられている。処理デバイスは、第1のバッファーからのデータセットを第2のバッファーにおいて座標の点リストにソートし、この点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、第2のバッファーから値を読み出し、第1のサイズと等しい幅及び第2のサイズと等しい高さを有する第3のバッファーに列ロケーションを出力する。処理デバイスは、加法ラスター演算を用いて第3のバッファー内の列テクセルロケーションにおいて値を1だけインクリメントして、少なくとも1つの値を取得する。処理デバイスは、この少なくとも1つの値を第4のバッファーに出力する。
一例では、前記第1のサイズ及び前記第2のサイズは、ヒストグラムビンサイズに対応する。
一例では、第1のサイズと等しい幅及び第2のサイズと等しい高さを有する第3のバッファーに列ロケーションを出力することは、前記第2のバッファーに位置するテクセルの位置座標の垂直座標が、前記第1のバッファーに位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて前記第3のバッファー内のテクセルロケーションに書き込むことによって、前記第2のバッファー内のテクセルの前記位置座標を新たな座標系に変換することを更に含むことができる。値をインクリメントすることは、前記位置座標が演算するテクセルロケーションを指示するテクセルロケーションごとに1つずつ前記第3のバッファーのテクセル値をインクリメントすることを含むことができる。
一例では、処理デバイスは、1の高さ及び最終のヒストグラムビンサイズと等しい幅を有するビンテクセルロケーションを第4のバッファーに出力することができる。処理デバイスは、前記加法ラスター演算を用いて、前記第4のバッファー内の前記値を1だけインクリメントして、ヒストグラムを取得することができる。
一例では、前記第1のサイズは前記第1のバッファーの幅に対応し、前記第2のサイズは1と等しい高さに対応することができる。処理デバイスは、1の高さ及び1と等しい幅を有するビンテクセルロケーションを第4のバッファーに出力することができる。
一例では、ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも1つを実行することを含むことができる。
一例では、処理デバイスは、最小ラスター演算を用いて第4のバッファー内の値を置換して、データセットの最小値を取得することができる。処理デバイスは、合計ラスター演算を用いて第4のバッファー内の値を置換して、データセットの合計値を取得することができる。第4のバッファー内の値を置換することは、第4のバッファー内の値に、1をデータセットのサイズによって除算したものを乗算して、データセットの平均を取得することを更に含むことができる。
テクセルのデータセット内の最小値又は最大値のロケーションを取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的解決が当該技術分野において達成される。処理デバイスが、テクセルの2次元データセットの最小値又は最大値を計算する。処理デバイスは、テクセルの2次元データセットを第1のバッファーから受信する。このデータセット内の各テクセルは、値と関連付けられている。処理デバイスは、第1のバッファーからのデータセットを第2のバッファーにおいて座標の点リストにソートする。この点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、第2のバッファーからテクセル値を読み出し、このテクセル値が上記最小値と等しい場合には、単一のテクセルロケーション並びにx値及びy値を第3のバッファーに出力し、上記テクセル値が上記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。処理デバイスは、x値及びy値を第2のバッファーから読み出し、置換ラスター演算を介してこれらの値を第3のバッファーのx値及びy値にコピーして、データセット内の最小値又は最大値のロケーションを計算する。
本明細書において説明する方法は、複数の既存のSIMDアーキテクチャー及びMIMDアーキテクチャーを扱うとともに、大きく低減されたメモリ帯域幅要件及び従来技術において教示されたものよりも低い計算集約度を示す前述の計算を実行する共通の効率的なシステム及び方法を提供する。
以下の説明では、多数の詳細が述べられる。しかしながら、本開示はこれらの具体的な詳細がなくても実施することができることが当業者には明らかであろう。幾つかの場合には、よく知られた構造及びデバイスは、本開示を分かりにくくしないように、詳細には示されず、ブロック図の形態で示される。
頂点シェーダーは、本明細書において用いられるとき、頂点バッファーに対して演算を行うGPUの論理機能を指す。この頂点バッファーは、2D空間又は3D空間内の1つ又は複数の座標を含む。頂点バッファーは、ロケーション、法線ベクトル、色、及び他のユーザー定義可能データ等の頂点に関する1つ又は複数のデータを含む、ホストシステムからGPUにアップロードされたバッファーを指す。ピクセルシェーダーは、特定の実行順序付けなしに、頂点シェーダー出力頂点によって指示されたとおりに、テクスチャーバッファー内のテクセルに対して並列に演算を行うGPUの論理カーネル機能を指す。テクセルは、テクスチャーバッファー内のテクスチャー要素を指す。テクスチャーバッファーは、ピクチャーをピクセルのアレイによって表すことができるのと同様に、テクセルのアレイを指す。本発明の教示を簡潔かつ明瞭にするために、GPUメモリアーキテクチャーに関する専門的な解説は含まれていない。最新のGPUのメモリサブシステムアーキテクチャー(複数の場合もある)及び最新のGPUアーキテクチャーの他の側面に関する優れた専門的な解説は、Randima Fernando, 2004「GPU Gems: Programming Techniques, Tips and Tricks for Real-Time Graphics」に見出すことができる。この文献は、引用することによって本明細書の一部をなす。さらに、Nugterenは、GPUヒストグラム計算のメモリアクセスパターンを示し、引用することによって本明細書の一部をなす。
GPUに関して説明したが、本発明の実施形態は、旧式のGPUハードウェア上で実施することができる。旧式のGPUハードウェアは、ジオメトリーシェーダー及び他の新式のテッセレーション機能をサポートしておらず、また、頂点に対する演算並びにピクセルシェーダー又はフラグメントシェーダー及び固定機能パイプラインを伴うAPIを用いていない。ピクセルシェーダー及びフラグメントシェーダーという用語は、交換可能であるが、説明を明瞭にするために、ピクセルシェーダーが本明細書において用いられる。
図1は、本開示の例が動作することができる、テクセルのデータセットからヒストグラム及び関連した統計値を取得する一例示のコンピューティングシステム100のブロック図である。非限定的な例として、コンピューティングシステム100は、ビデオカメラ若しくはオンライン記憶デバイス又は伝送媒体等の1つ又は複数のデータソース105からデータを受信する。コンピューティングシステム100は、デジタルビデオ取り込みシステム110及びコンピューティングプラットフォーム115も備えることができる。デジタルビデオ取り込みシステム110は、デジタルビデオのストリームを処理するか、又はアナログビデオを、データソース105としてコンピューティングプラットフォーム115によって処理することができる形態であるデジタルビデオに変換する。コンピューティングプラットフォーム115は、例えば、1つ又は複数の中央処理ユニット130a〜130n等の処理デバイス125を備えることができるホストシステム120を備える。処理デバイス125は、ホストメモリ135に結合されている。処理デバイスは、グラフィックス処理ユニット140(GPU)を更に実装することができる。1つの例では、GPU140は、中央処理ユニット130a〜130nのうちの1つ又は複数とは別個の物理チップ上に実装することができる。別の例では、GPU140は、移動電話及びタブレットに見出されるような加速処理ユニットすなわちAPUとして知られているものにおいて、中央処理ユニット130a〜130nと同じ物理チップ又は論理デバイス上に並置することができる。別々のGPU機能及びCPU機能は、GPUが物理拡張カードであるコンピューターサーバーシステム、並びにパーソナルコンピューターシステム及びラップトップ上に見出すことができる。GPU/APUは、これらのデバイス及び将来のデバイス上で高スループットヒストグラム計算及び統計計算を提供することができる。
GPU140は、GPUメモリ141、頂点プロセッサ142、及びフラグメントプロセッサ143を備えることができる。一例では、ホストメモリ135及びGPUメモリ141は、別々の物理チップ上に実装することもできるし、APU等の同じ物理チップ(複数の場合もある)又は論理デバイス上に並置することもできる。
処理デバイス125は、データソース105からデータを受信して、テクセルのデータセット150を作成するヒストグラムマネージャー145を実装するように構成されている。このテクセルのデータセットは、テクセルのデータセット155としてGPUメモリ137に転送される。加えて、ヒストグラムマネージャー145は、頂点バッファー160a〜160nを作成し、GPUメモリ137に転送し、頂点プロセッサ142において頂点シェーダー163a〜163nを構成し、フラグメントプロセッサ143においてピクセルシェーダー165a〜165nを構成し、テクセルのデータセット155に記憶し、テクセルのデータセット155から取り出し、テクセルのデータセット155を操作する1つ又は複数のバッファー167a〜167nと関連付けられた状態を維持する。テクセルのデータセット155は、少なくとも2の次元数Dを有し、各テクセルは値を含む。ヒストグラムマネージャー145は、データセットを座標の点リストにソートするように構成され、この点リスト内の点は、データセット内のテクセルロケーションに対応する。ヒストグラムマネージャー145は、1つ又は複数の頂点シェーダー163a〜163nを実行して、N−1次元優位性に従って点リスト内の点を配列することによって点リストの次元数を縮小するように更に構成されている。ヒストグラムマネージャー145は、1つ又は複数のピクセルシェーダー165a〜165nを実行して、配列された点の各関連付けられた値に対してラスター演算を実行し、少なくとも1つの値を取得するように更に構成されている。ヒストグラムマネージャー145は、この少なくとも1つの値を1つ又は複数のバッファー167a〜167nの第2のテクスチャーバッファー(例えば、167b)に出力して、結果を生成するように更に構成されている。1つの例では、この結果は、ディスプレイ170上に表示することができる。これらのソートするステップ、縮小するステップ、実行するステップ、及び出力するステップは、Dが1になるまで処理デバイス125によって繰り返すことができる。
別の例では、ヒストグラムマネージャー145は、上記結果を、ビデオ処理アプリケーションにおいて用いられる1つ又は複数の下流のデバイス175に送信することができる。一例では、下流のデバイス(複数の場合もある)175は、静止画像又はビデオ内のショット変化を検出するショット変化検出器を実装することができる。マシン検出可能「ショット変化」は、本明細書において用いられるとき、所与の「単一のカメラの取り込みによって取り込まれた途切れていない画像シーケンス」が別の異なる「単一のカメラによって取り込まれた途切れていない画像シーケンス」に変化したか又は変化していることを示す肯定的な表示と定義することができる。画像のシーケンス、例えば、ビデオシーケンス内のショット変化の信頼性が高い検出及びシグナリングは、当該技術分野において難しい問題である。ショット変化の信頼性が高い検出及びシグナリングは、ケイデンス検出、インターレース解除、フォーマット変換、圧縮符号化、並びにビデオインデキシング及び取り出しを含むビデオ信号処理の分野において多くの用途を見出してきた。ショット変化は、人間の視認者によって容易に識別される。そのような事象は、エピソードに分かれたテレビ番組から広告スポットへの切り替え、又はライブニューススタジオ放送が同じセット上で或るカメラアングルから別のカメラアングルに切り替わるとき等のカメラ変化を含む。
誤検出及び検出漏れを最小限にした、画像シーケンス内のショット変化のリアルタイム又は準リアルタイムの自動無人検出用の信頼性が高いシステム及び方法が、米国特許第8,451,384号(以下、‘384特許)に教示されている。この米国特許は、その全内容が引用することによって本明細書の一部をなす。‘384特許では、色相ヒストグラム(hue histogram)計算が実行される。この色相ヒストグラムの計算は、ホストCPU130a〜130n上で実行することができ、これは、更なる処理に備えたGPU140へのその後の転送前にボトルネックを招く場合がある。別の例では、色相ヒストグラム計算は、ホストシステム120とGPU140との間のデータ及び状態の転送を最小にして十分に安定したスループットを提供し、1080i/p及び4K等の大規模フォーマットビデオのリアルタイム性能を可能にするために、GPU140上で実行することができる。
他の例では、下流のデバイス175は、他の静止画像又はビデオの機能を実装することができる。これらの機能は、ビデオ及び画像用の画像/物体のセグメンテーション及び追跡、ビデオ及び画像用の視差からの深度の推定、ビデオ及び画像内のテキスト検出、無参照(no-reference)ビデオ品質推定、パッシブソナーターゲットローカライゼーション、ソナー画像認識、ベクトル場ヒストグラムを介したロボット障害物回避、画像の分類及び注釈、コンテンツに基づく画像の検索及び取り出し、ネットワークパケットの分類及び検査、又はデータベースクエリー最適化のうちの少なくとも1つ等であるが、これらに限定されるものではない。
図2は、テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法200の一例を示すフロー図である。方法200は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法200は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図2に示すように、コンピューティングシステム100が、ヒストグラム及び関連した統計演算を計算することを可能にするために、ブロック210において、ヒストグラムマネージャー145は、第1のバッファー(例えば、167a)からテクセルのデータセット155を受信する。このテクセルのデータセット155は、少なくとも2の次元数Dを有し、各テクセルは値を含む。ブロック220において、ヒストグラムマネージャー145は、このデータセットを座標の点リストにソートする。この点リスト内の点は、テクセルのデータセット155内のテクセルロケーションに対応する。ブロック230において、ヒストグラムマネージャー145は、N−1次元優位性に従って点リスト内の点を配列することによって、点リストの次元数を縮小する。ブロック240において、ヒストグラムマネージャーは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも1つの値を取得する。ブロック250において、ヒストグラムマネージャーは、この少なくとも1つの値を第2のバッファー(例えば、147b)に出力する。
図3は、散乱縮小インクリメント演算を用いてデータセットのヒストグラムを計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図3の要素は、図1のものと同様である。ヒストグラムマネージャー145は、2D又は3Dのデータセットをテクスチャーメモリのデータセットテクスチャーバッファー350から受信するように構成されている。一例では、このデータセットは、ヒストグラムマネージャー145によって、ホストシステム120のホストメモリ135からデータセットテクスチャーバッファー350にアップロードされる場合もあるし、データセットテクスチャーバッファー350が、GPU140のテクスチャーメモリ(図示せず)に既に存在する場合もある。ヒストグラムマネージャー145は、データセットテクスチャーバッファー350に存在するデータセットから第1の頂点バッファー360を生成するように構成されている。第1の頂点バッファー360は、(x,y)座標又は(x,y,z)座標の集合である点リストを含むことができる。より詳細には、この点リストは、データセットテクスチャーバッファー350のデータセット内の各テクセルの個々のロケーションに対応する座標のリストでポピュレートすることができる。一例では、データセットテクスチャーバッファー150内のデータセットのアロケーションの2Dレイアウト又は3Dレイアウトのサイズにも縦横比にも付随した要件はないことに留意すべきである。
ヒストグラムマネージャー145は、第1の頂点バッファー360から第1の頂点シェーダー365に点リストを転送するように更に構成され、第1の頂点シェーダーも、データセットテクスチャーバッファー350から各テクセルの値を読み出すように構成されている。ヒストグラムマネージャー145は、ビンキャッシュテクスチャーバッファー375に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー350に位置する関連付けられたテクセルデータ値の値に従って新たな座標系に変換されるような列局所性(columnar locality)を用いてビンキャッシュテクスチャーバッファー375内のテクセルロケーションに書き込むことによって、第1の頂点シェーダー365を実行して、第1の頂点バッファー360内のテクセルの位置座標を新たな座標系に変換するように更に構成されている。
ヒストグラムマネージャー145は、第1の頂点シェーダー365から第1のピクセルシェーダー370に座標を転送するように更に構成されている。ヒストグラムマネージャー145は、第1の頂点シェーダー365が第1のピクセルシェーダー370に演算を行うように指示する位置座標のテクセルロケーションごとに1つずつビンキャッシュテクスチャーバッファー375のテクセル値をインクリメントする第1のピクセルシェーダー370を実行するように更に構成されている。第1のピクセルシェーダー370の並列演算にわたって状態を維持するこれらのインクリメント演算について、ヒストグラムマネージャー145は、第1のピクセルシェーダー370内のラスター演算モードを「加算」に設定するように構成されている。
第1のピクセルシェーダー370によって書き込まれたビンキャッシュテクスチャーバッファー375は、ビン幅及び1つの行を有しないように構成することができ、ヒストグラムの要求されたビンサイズの幅及び高さを有するように構成することができる。大きなN×N中間テクスチャーを用いることによって、ビンキャッシュテクスチャーバッファー375にわたる同時の書き込み演算は、大きなモダリティを有する極端な場合には、データセットサイズ/ビンサイズ倍だけ縮小される。そのようなデータセットの最悪の場合は、例えば、全てが0等の同一の値を有する場合である。そのような状況では、宛先テクスチャーがサイズN×1である場合、書き込み要求のデータセットサイズ数は、宛先テクスチャー内の同一のテクセルロケーション、すなわちビンロケーション(0,0)について、全て一列に積み重なり、キャッシュ欠陥率が非常に増大し、パイプラインストールを引き起こす可能性が最も高くなる。
第1のピクセルシェーダー370によって実行された演算の後、ビンキャッシュテクスチャーバッファー375は、実質的に列ごとのヒストグラムを含む。宛先ビンキャッシュテクスチャーバッファー380に最終ヒストグラムを取得するために、ヒストグラムマネージャー145は、この場合も点リストとして第2の頂点バッファー345を作成する。各座標は、ビンキャッシュテクスチャーバッファー375のテクセルロケーションに対応する。第1の頂点シェーダー365及び第1のピクセルシェーダー330とそれぞれ実質的に同一の第2の頂点シェーダー355及び第2のピクセルシェーダー360はそれぞれ、ここでは、1の高さ及びビンサイズと等しい幅を有する宛先ビンキャッシュテクスチャーバッファー380に対して、同じ散乱縮小インクリメント演算を実行する。第1の散乱縮小インクリメント演算は、列優位(column-dominant)形式ではなく行優位(row-dominant)形式で実行することができ、第2の散乱縮小インクリメント演算は、行優位形式ではなく列優位形式で実行することができることが当業者によって理解されるであろう。
図4A及び図4Bは、散乱縮小インクリメント演算を用いてヒストグラムを計算する方法400の一例を示すフロー図である。方法400は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法400は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図4A及び図4Bに示すように、コンピューティングシステム100がヒストグラムを計算することを可能にするために、ブロック410において、ヒストグラムマネージャー145は、GPU上に存在するデータセットを2D若しくは3Dテクスチャーバッファーとして受信するか、又は第1の頂点バッファー360を作成するのに用いられる、ホストシステム120からGPU140にアップロードされた2D若しくは3Dテクスチャーバッファーを受信する。第1の頂点バッファー360は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック420において、ヒストグラムマネージャー145は、第1の頂点バッファー360及びデータセットテクスチャーバッファー350から第1の頂点シェーダー365にデータを転送する。ブロック430において、ヒストグラムマネージャー145は、第1の頂点シェーダー365を実行して、データセットテクスチャーバッファー350から値を読み出し、列ロケーションを最終の所望のヒストグラムビンサイズと等しい幅及び高さを有するビンキャッシュテクスチャーバッファー375に出力する。第1の頂点シェーダー365は、第1の頂点バッファー360に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー350に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いてビンキャッシュテクスチャーバッファー375内のテクセルロケーションに書き込むことによって、第1の頂点バッファー360内のテクセルの位置座標を新たな座標系に更に変換する。ブロック440において、ヒストグラムマネージャー145は、第1のピクセルシェーダー370を実行して、加法(additive)ラスター演算を介してビンキャッシュテクスチャーバッファー375内の列テクセルロケーションにおいて値を1だけインクリメントする。第1のピクセルシェーダー370は、ビンキャッシュテクスチャーバッファー375のテクセル値を、頂点シェーダーの位置座標が頂点シェーダーに演算するように指示するテクセルロケーションごとに1つずつインクリメントする。
ブロック450において、ヒストグラムマネージャー145は、ビンキャッシュテクスチャーバッファー375からデータを読み出し、第2の頂点バッファー345を作成する。この第2の頂点バッファー345は、点リストを含み、その各点は、ビンキャッシュテクスチャーバッファー375内の各データのテクセルロケーションに対応する。ブロック460において、ヒストグラムマネージャー145は、第2の頂点バッファー345及びビンキャッシュテクスチャーバッファー375からのデータを第2の頂点シェーダー355に供給する。ブロック470において、ヒストグラムマネージャー145は、第2の頂点シェーダー355を実行して、ビンキャッシュテクスチャーバッファー375から値を読み出し、1の高さ及び最終の所望のヒストグラムビンサイズと等しい幅を有する最終のヒストグラムテクスチャーのビンテクセルロケーションを出力する。ブロック480において、ヒストグラムマネージャー145は、第2のピクセルシェーダー360を実行して、加法ラスター演算を介して宛先ビンキャッシュテクスチャーバッファー380内の値を1だけインクリメントし、最終のヒストグラムを取得する。第1のピクセルシェーダー370は、第1の頂点シェーダー365が第1のピクセルシェーダー370によって演算するように指示された位置座標のテクセルロケーションごとに1つずつビンキャッシュテクスチャーバッファー375のテクセル値をインクリメントする。
図5は、散乱縮小インクリメント演算の2つのステップを通じた2Dデータセットテクスチャー350からのデータの推移の空間レイアウト500を示している。2Dデータセットテクスチャーバッファー350は、例えば、2048×1024データセットからビンキャッシュテクスチャーバッファー375内の中間の256×256データセットに縮小され、宛先ビンキャッシュテクスチャーバッファー380内の最終の256×1ヒストグラムに縮小される。図5は、一実施形態の列優位形態を示している。別の実施形態では、第1の頂点シェーダー365は、列局所性の代わりに行局所性を用いて第1の頂点バッファー360内のテクセルロケーションに書き込むことによって、第1の頂点バッファー360内のテクセルの位置座標を新たな座標系に変換するように構成することができることが理解されるであろう。3Dテクスチャーの場合、第1の演算をxy平面優位(planar-dominant)の方法(この場合も、xy平面優位性、zy平面優位性、又はxz平面優位性の選択は任意である)で実行することができ、第2の演算を行優位方法又は列優位方法のいずれかで実行することができ、第3の演算がデータセットの最終のヒストグラムをもたらすことを除いて、演算の順序は同様であることも理解されるであろう。
図6は、Scheuermann及びHensleyにおいて実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。Scheuermann及びHensleyでは、単一の散乱縮小インクリメント演算が存在する。上述したように、ビンサイズを増加させることによって軽減される性能のかなりのばらつきが存在する。相違として、実施形態において説明したようなキャッシュ書き込み衝突問題を軽減するより効率的で最適化された方法は、第1のビンの次元数を増加させ、D=1になるまで、次元数を縮小し続けることである。これは、ランタイムにおいてペナルティのないメモリキャッシュ効率の最適化の利点をGPUに与える。さらに、本開示の幾つかの実施形態は、一貫した予測可能な非データ依存の性能及びランタイムをGPUに与え、これは、リアルタイムで又は厳しいスループット制約下で動作しなければならないシステムにとって極めて重要である。
図7A〜図7Cは、特許文献1(以下、‘922特許)において実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。‘922特許に教示された例は、テクスチャーメモリを読み出す能力を有しない頂点シェーダーに依拠することによって以前のGPUハードウェア上であっても動作することが可能であるが、限られていない反復的な縮小技法を実施する。比較として、本開示の幾つかの実施形態では、D次元データセットテクスチャーバッファーについて、多くともD個の散乱縮小インクリメントステップが必要とされ、最大のデータセットを除く全ての場合について実際問題としてD=2であるのに対して、図7A〜図7Cに示す例に基づくと、必要とされる縮小ステップの数は、データセットサイズが2の累乗である場合、式1によって与えられる。
図7A〜図7Cの例の場合、データセットのサイズが増加するにつれて、初期タイルサイズも増加し、縮小演算の数も増加することに留意されたい。その結果、図7A〜図7Cの例の性能は、特に、大きなデータセットについては準最適である。
図8は、散乱縮小置換演算を用いてデータセットの最小値を計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図8の要素は、第1のピクセルシェーダー870及び第2のピクセルシェーダー860が、ヒストグラム計算のように1だけインクリメントするのではなく、対応するビンキャッシュテクスチャーバッファー875及び宛先ビンキャッシュテクスチャーバッファー880に値をそれぞれ配置するように適合されているとともに、「加法」ラスター演算の代わりに「最小」ラスター演算を用いるように適合されていることを除いて、図1の要素と同様である。ビンキャッシュテクスチャーバッファー875は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び1の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー880は、1と等しい幅及び高さを有する単一の最小値を含むように適合されている。
図9A及び図9Bは、散乱縮小置換演算を用いてデータセットの最小値を計算する方法900の一例を示すフロー図である。方法900は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法900は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図9A及び図9Bに示すように、コンピューティングシステム100がデータセットの最小値を計算することを可能にするために、ブロック910において、ヒストグラムマネージャー145は、GPU140上に存在するデータセットを2D若しくは3Dテクスチャーバッファーとして受信するか、又は第1の頂点バッファー860を作成するのに用いられる、ホストシステム120からGPU140にアップロードされた2D若しくは3Dテクスチャーバッファーを受信する。第1の頂点バッファー860は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック920において、ヒストグラムマネージャー145は、第1の頂点バッファー860及びデータセットテクスチャーバッファー850から第1の頂点シェーダー865にデータを転送する。ブロック930において、ヒストグラムマネージャー145は、第1の頂点シェーダー865を実行して、データセットテクスチャーバッファー850から値を読み出し、列ロケーションを、データセットテクスチャーバッファー850の幅と等しい幅及び1と等しい高さを有する合計キャッシュテクスチャーバッファー885に出力する。第1の頂点シェーダー865は、合計キャッシュテクスチャーバッファー885に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー850に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー885内のテクセルロケーションに書き込むことによって、第1の頂点バッファー860内のテクセルの位置座標を新たな座標系に更に変換する。ブロック940において、ヒストグラムマネージャー145は、第1のピクセルシェーダー870を実行して、データセットテクスチャーバッファー850から値を読み出し、最小ラスター演算を介して合計キャッシュテクスチャーバッファー885内の列テクセルロケーションにおいてこれらの値を置換する。
ブロック950において、ヒストグラムマネージャー145は、合計キャッシュテクスチャーバッファー885を用いて、第2の頂点バッファー845を作成する。この第2の頂点バッファー845は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー885内の各データのテクセルロケーションに対応する。ブロック960において、ヒストグラムマネージャー145は、第2の頂点バッファー845及び合計キャッシュテクスチャーバッファー885からのデータを第2の頂点シェーダー855に供給する。ブロック970において、ヒストグラムマネージャー145は、第2の頂点シェーダー855を実行して、1の高さ及び1の幅を有する最終合計テクスチャーバッファー890の単一のテクセルロケーションを供給する。ブロック980において、ヒストグラムマネージャー145は、第2のピクセルシェーダー860を実行して、合計キャッシュテクスチャーバッファー885から値を読み出し、データセットの最小値を計算するために、最小ラスター演算を介して最終合計テクスチャーバッファー890内の最終の単一のテクセルロケーションにおいて値を置換する。
図10は、散乱縮小置換演算を用いてデータセットの最大値を計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図10の要素は、第1のピクセルシェーダー1070及び第2のピクセルシェーダー1060が、ヒストグラム計算のように1だけインクリメントするのではなく、対応するビンキャッシュテクスチャーバッファー1075及び宛先ビンキャッシュテクスチャーバッファー1080に値をそれぞれ配置するように適合されているとともに、「加法」ラスター演算の代わりに「最大」ラスター演算を用いるように適合されていることを除いて、図1の要素と同様である。ビンキャッシュテクスチャーバッファー1075は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び1の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー1080は、1と等しい幅及び高さを有する単一の最小値を含むように適合されている。
図11A及び図11Bは、散乱縮小置換演算を用いてデータセットの最大値を計算する方法1100の一例を示すフロー図である。方法1100は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法1100は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図11A及び図11Bに示すように、コンピューティングシステム100がデータセットの最大値を計算することを可能にするために、ブロック1110において、ヒストグラムマネージャー145は、GPU140上に存在するデータセットを2D若しくは3Dテクスチャーバッファーとして受信するか、又は第1の頂点バッファー1060を作成するのに用いられる、ホストシステム120からGPU140にアップロードされた2D若しくは3Dテクスチャーバッファーを受信する。第1の頂点バッファー1060は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック1120において、ヒストグラムマネージャー145は、第1の頂点バッファー1060及びデータセットテクスチャーバッファー1050から第1の頂点シェーダー1065にデータを転送する。ブロック1130において、ヒストグラムマネージャー145は、第1の頂点シェーダー1065を実行して、データセットテクスチャーバッファー1050から値を読み出し、列ロケーションを、データセットテクスチャーバッファー1050の幅と等しい幅及び1と等しい高さを有する合計キャッシュテクスチャーバッファー1085に出力する。第1の頂点シェーダー1065は、合計キャッシュテクスチャーバッファー1085に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー1050に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー1085内のテクセルロケーションに書き込むことによって、第1の頂点バッファー1060内のテクセルの位置座標を新たな座標系に更に変換する。ブロック1140において、ヒストグラムマネージャー145は、第1のピクセルシェーダー1070を実行して、データセットテクスチャーバッファー1050から値を読み出し、最大ラスター演算を介して合計キャッシュテクスチャーバッファー1085内の列テクセルロケーションにおいてこれらの値を置換する。
ブロック1150において、ヒストグラムマネージャー145は、合計キャッシュテクスチャーバッファー1085を用いて、第2の頂点バッファー1045を作成する。この第2の頂点バッファー1045は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー1085内の各データのテクセルロケーションに対応する。ブロック1160において、ヒストグラムマネージャー145は、第2の頂点バッファー1045及び合計キャッシュテクスチャーバッファー1085からのデータを第2の頂点シェーダー1055に供給する。ブロック1170において、ヒストグラムマネージャー145は、第2の頂点シェーダー1055を実行して、1の高さ及び1の幅を有する最終合計テクスチャーバッファー1090の単一のテクセルロケーションを供給する。ブロック1180において、ヒストグラムマネージャー145は、第2のピクセルシェーダー1060を実行して、合計キャッシュテクスチャーバッファー1085から値を読み出し、データセットの最大値を計算するために、最大ラスター演算を介して最終合計テクスチャーバッファー1090内の最終の単一のテクセルロケーションにおいて値を置換する。
図12は、散乱縮小加算演算を用いてデータセットの合計値を計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図12の要素は、第1のピクセルシェーダー1270及び第2のピクセルシェーダー1260が、図1及び図2のヒストグラム計算のように1だけインクリメントするのではなく値を加算する(例えば、「加法」ラスター演算を実行する)ように適合されていることを除いて、図1の要素と同様である。ビンキャッシュテクスチャーバッファー1275は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び1の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー1280は、1と等しい幅及び高さを有する単一の合計値を含むように適合されている。
図13A及び図13Bは、散乱縮小加算演算を用いてデータセットの合計値を計算する方法1300の一例を示すフロー図である。方法1300は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法1300は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図13A及び図13Bに示すように、コンピューティングシステム100がデータセットの合計値を計算することを可能にするために、ブロック1310において、ヒストグラムマネージャー145は、GPU140上に存在するデータセットを2D若しくは3Dテクスチャーバッファーとして受信するか、又は第1の頂点バッファー1260を作成するのに用いられる、ホストシステム120からGPU140にアップロードされた2D若しくは3Dテクスチャーバッファーを受信する。第1の頂点バッファー1260は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック1320において、ヒストグラムマネージャー145は、第1の頂点バッファー1260及びデータセットテクスチャーバッファー1250から第1の頂点シェーダー1265にデータを転送する。ブロック1330において、ヒストグラムマネージャー145は、第1の頂点シェーダー1265を実行して、データセットテクスチャーバッファー1250から値を読み出し、列ロケーションを、データセットテクスチャーバッファー1250の幅と等しい幅及び1と等しい高さを有する合計キャッシュテクスチャーバッファー1285に出力する。第1の頂点シェーダー1265は、合計キャッシュテクスチャーバッファー1285に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー1250に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー1285内のテクセルロケーションに書き込むことによって、第1の頂点バッファー1260内のテクセルの位置座標を新たな座標系に更に変換する。ブロック1340において、ヒストグラムマネージャー145は、第1のピクセルシェーダー1270を実行して、データセットテクスチャーバッファー1250から値を読み出し(正:read)、加法ラスター演算を介して合計キャッシュテクスチャーバッファー1285内の列テクセルロケーションにおいてこれらの値を加算する。
ブロック1350において、ヒストグラムマネージャー145は、合計キャッシュテクスチャーバッファー1285を用いて、第2の頂点バッファー1245を作成する。この第2の頂点バッファー1285は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー1285内の各データのテクセルロケーションに対応する。ブロック1360において、ヒストグラムマネージャー145は、第2の頂点バッファー1245及び合計キャッシュテクスチャーバッファー1285からのデータを第2の頂点シェーダー1255に供給する。ブロック1370において、ヒストグラムマネージャー145は、第2の頂点シェーダー1255を実行して、1の高さ及び1の幅を有する最終合計テクスチャーバッファー1290の単一のテクセルロケーションを供給する。ブロック1380において、ヒストグラムマネージャー145は、第2のピクセルシェーダー1260を実行して、合計キャッシュテクスチャーバッファー1285から値を読み出し、データセットの合計値を計算するために、加法ラスター演算を介して最終合計テクスチャーバッファー1290内の最終の単一のテクセルロケーションにおいて値を加算する。
図14は、散乱縮小加算演算を用いてデータセットの平均値を計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図14の要素は、合計値のそれぞれが、第1のピクセルシェーダー370と関連付けられたオリジナルのデータセットテクスチャーバッファー350の列の高さによって除算されるとともに、オリジナルのデータセットテクスチャーバッファー350の幅又は行によって除算されることを除いて、図1及び図10の要素と同様である。これは、データセットの平均の最終の計算をもたらす。
図15A及び図15Bは、散乱縮小加算演算を用いてデータセットの平均値を計算する方法1500の一例を示すフロー図である。方法1500は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法1500は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図15A及び図15Bに示すように、コンピューティングシステム100がデータセットの平均値を計算することを可能にするために、ブロック1510において、ヒストグラムマネージャー145は、GPU140上に存在するデータセットを2D若しくは3Dテクスチャーバッファーとして受信するか、又は第1の頂点バッファー1460を作成するのに用いられる、ホストシステム120からGPU140にアップロードされた2D若しくは3Dテクスチャーバッファーを受信する。第1の頂点バッファー1460は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック1420において、ヒストグラムマネージャー1445は、第1の頂点バッファー1460及びデータセットテクスチャーバッファー1450から第1の頂点シェーダー1465にデータを転送する。ブロック1530において、ヒストグラムマネージャー145は、第1の頂点シェーダー1465を実行して、データセットテクスチャーバッファー1450から値を読み出し、列ロケーションを、データセットテクスチャーバッファー1450の幅と等しい幅及び1と等しい高さを有する合計キャッシュテクスチャーバッファー1485に出力する。第1の頂点シェーダー1465は、合計キャッシュテクスチャーバッファー1485に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー150に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー1485内のテクセルロケーションに書き込むことによって、第1の頂点バッファー1460内のテクセルの位置座標を新たな座標系に更に変換する。ブロック1540において、ヒストグラムマネージャー145は、第1のピクセルシェーダー1470を実行して、データセットテクスチャーバッファー1450から値を読み出し、加法ラスター演算を介して合計キャッシュテクスチャーバッファー1485内の列テクセルロケーションにおいてこれらの値を加算する。
ブロック1550において、ヒストグラムマネージャー145は、合計キャッシュテクスチャーバッファー1485を用いて、第2の頂点バッファー1445を作成する。この第2の頂点バッファー1485は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー1485内の各データのテクセルロケーションに対応する。ブロック1560において、ヒストグラムマネージャー145は、第2の頂点バッファー1445及び合計キャッシュテクスチャーバッファー1485からのデータを第2の頂点シェーダー1455に供給する。ブロック1570において、ヒストグラムマネージャー145は、第2の頂点シェーダー1455を実行して、1の高さ及び1の幅を有する最終合計テクスチャーバッファー1490の単一のテクセルロケーションを供給する。ブロック1580において、ヒストグラムマネージャー145は、第2のピクセルシェーダー1460を実行して、合計キャッシュテクスチャーバッファー1485から値を読み出し、加法ラスター演算を介して最終合計テクスチャーバッファー1490内の最終の単一のテクセルロケーションにおいてこれらの値に1/(データセットサイズ)を乗算したものを加算し、データセットの平均値を計算する。
図16A〜図16Cは、散乱縮小加算演算を用いてデータセットの標準偏差を計算するように適合された図1の例示のコンピューティングシステム100のブロック図である。図16A〜図16Cの要素は、図14の要素と同様であり、図14及び図15において説明したシステム及び方法を用いて取得された事前に計算された平均から標準偏差を計算する追加のブロック1650、1660を有する。ピクセルシェーダー1602は、データセット内の各データXの
を計算するのに用いられ、計算の結果、データセットテクスチャーバッファー1608が得られる。ここで、
は、図14及び図16Aの左半分において計算されたデータセットの平均である。同じD次元散乱縮小加算ブロック1640は、図12において説明したデータセットの実施形態の合計と同様に、データセットテクスチャーバッファー1608に対して実行される。最終のブロック1660において、ピクセルシェーダー1632は、データに対して演算を行って合計
を取得し、データセットの標準偏差を与える式2を計算する。
本質的には、図14のデータセットの平均を取得する機能、ピクセルシェーダー1602、図12のデータセットの合計を取得するブロック/演算、及びピクセルシェーダー1632を組み合わせることによって、標準偏差が効率的に取得される。
図17A〜図17Cは、散乱縮小加算演算を用いてデータセットの標準偏差を計算する方法1700の一例を示すフロー図である。方法1700は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法1700は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図17A〜図17Cに示すように、コンピューティングシステム100がデータセットの標準偏差を計算することを可能にするために、ブロック1705において、ヒストグラムマネージャー145は、第1の頂点バッファー1602に記憶されたデータセットの平均を計算する。第1の頂点バッファー1602は、データセットテクスチャーバッファー1408に関してアイデンティティ次元(identity dimensions)を有する単一の象限(quad:クアッド)を含む。ブロック1710において、ヒストグラムマネージャー145は、第1の頂点バッファー1602のコンテンツを第1の頂点シェーダー1604に転送する。第1の頂点シェーダー1604は、データセットテクスチャーバッファー1608と等しい幅及び高さを有する一時キャッシュテクスチャーバッファー1606のテクセルロケーションを供給する。ブロック1715において、ヒストグラムマネージャー145は、第1のピクセルシェーダー1610を実行して、データセットテクスチャーバッファー1408から値を読み出し、事前に計算された平均値合計テクスチャーバッファー1612から単一の値を読み出し、データセット値のそれぞれと一時キャッシュテクスチャーバッファー1606の各テクセルの平均値との差の2乗を計算する。
ブロック1720において、ヒストグラムマネージャー145は、一時キャッシュテクスチャーバッファー1606を用いて、第2の頂点バッファー1614を作成する。第2の頂点バッファー1614は、点リストを含み、その各点は、一時キャッシュテクスチャーバッファー1606内の各データのテクセルロケーションに対応する。ブロック1725において、ヒストグラムマネージャー145は、第2の頂点バッファー1614及び一時キャッシュテクスチャーバッファー1606のコンテンツを第2の頂点シェーダー1616に供給する。ブロック1730において、ヒストグラムマネージャー145は、第2の頂点シェーダー1616を実行して、一時キャッシュテクスチャー1606から値を読み出し、一時キャッシュテクスチャーバッファー1606の幅と等しい幅及び1と等しい高さを有する合計キャッシュテクスチャーバッファー1618の列ロケーションを出力する。ブロック1735において、ヒストグラムマネージャー145は、第2のピクセルシェーダー1617を実行して、データセットテクスチャーバッファー1408から値を読み出し、加法ラスター演算を介して、これらの値を合計キャッシュテクスチャーバッファー1412内の列テクセルロケーションに加算する。
ブロック1740において、ヒストグラムマネージャー145は、合計キャッシュテクスチャーバッファーを用いて、第3の頂点バッファー1620を作成する。第3の頂点バッファー1620は、点リストを含み、その各点は、合計キャッシュテクスチャー1612内の各データのテクセルロケーションに対応する。ブロック1745において、ヒストグラムマネージャー145は、第3の頂点バッファー1620のコンテンツを第3の頂点シェーダー1622に供給する。ブロック1750において、ヒストグラムマネージャー145は、第3の頂点シェーダー1622を実行して、1の高さ及び1の幅を有する最終合計テクスチャーバッファー1624の単一のテクセルロケーションを供給する。ブロック1755において、ヒストグラムマネージャー145は、第3のピクセルシェーダー1626を実行して、合計テクスチャーバッファー1628内の単一のテクセルロケーションにおいて、合計キャッシュテクスチャーバッファー1624から値を読み出し、加法ラスター演算を介して、これらの値に1/(データセットサイズ)を乗算したものを加算する。
ブロック1760において、ヒストグラムマネージャー145は、合計テクスチャーバッファー1628のコンテンツを用いて、第4の頂点バッファー1630を作成する。第4の頂点バッファー1630は、合計テクスチャーバッファー1628内の単一のテクセルロケーションに対応する単一の要素を有する点リストを含む。ブロック1765において、ヒストグラムマネージャー145は、第4の頂点バッファー1630のコンテンツを第4の頂点シェーダー1632に転送する。ブロック1770において、ヒストグラムマネージャー145は、第4の頂点シェーダー1632を実行して、1の高さ及び1の幅を有する最終標準偏差テクスチャーバッファー1634の単一のテクセルロケーションを供給する。ブロック1775において、ヒストグラムマネージャー145は、データセットの標準偏差を計算するために、第4のピクセルシェーダー1633を実行して、標準偏差テクスチャーバッファー1634内の単一のテクセルロケーションにおいて、合計テクスチャーから値を読み出し、置換ラスター演算を介して、この値に1/(データセットサイズ)を乗算したものの平方根を取る。
図18は、データセット内の所与の最小値のロケーションを求めるために、図8のデータセット計算の最小値を拡張するように適合された図1の例示のコンピューティングシステム100の(正:of)ブロック図である。1×1の事前に計算された最小テクスチャーバッファー1802が与えられると、ヒストグラムマネージャー145は、点リストを含む第1の頂点バッファー1804を生成するように構成される。この点リストは、データセットテクスチャーバッファー1806からヒストグラムマネージャー145によって取り出された(x,y)座標又は(x,y,z)座標の集合である。次に、ヒストグラムマネージャー145は、データセットテクスチャーバッファー1804内のテクセル座標が最小値と等しい場合に限り、単一のピクセル(1と等しい幅及び高さ)への有効な宛先座標及び(x,y)ロケーション又は(x,y,z)ロケーションを出力する頂点シェーダー1808を実行し、そうでない場合、負のロケーションが出力され、これによって、後続のピクセルシェーダー1810は、最小値のみを用いて演算することが確保される。複数の等しい最小値の場合、返されるロケーションは非決定的である。しかしながら、当業者であれば、複数の等しい最小値の全てのロケーションを確実に求める方法が、図18に示すような機能を再帰的に適用し、NaN(数字でない)値を有するオリジナルのデータセット内の最小値を取り除き、最小値が変化するまで、上記機能を再び実行するものであると推量することができる。
図19は、データセット内の最小値のロケーションを計算する方法1900の一例を示すフロー図である。方法1900は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法1900は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図19に示すように、コンピューティングシステム100がデータセット内の最小値のロケーションを計算することを可能にするために、ブロック1910において、ヒストグラムマネージャー145は、データセットの最小値を計算する。ブロック1920において、ヒストグラムマネージャー145は、データセットテクスチャーバッファー1806を用いて、第1の頂点バッファー1804を作成する。第1の頂点バッファー1804は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック1930において、ヒストグラムマネージャー145は、第1の頂点バッファー1804及びデータセットテクスチャーバッファー1806のコンテンツを第1の頂点シェーダー1808に入力する。ブロック1940において、ヒストグラムマネージャー145は、第1の頂点シェーダー1808を実行して、データセットテクスチャーバッファー1806から値を読み出し、データセット内の値が、1と等しい幅及び高さを有する最小ロケーションテクスチャーバッファー1802内の値と比較した最小値と等しい場合には、単一のテクセルロケーション並びにx及びyロケーションを出力し、データセット内の値が上記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。ブロック1950において、ヒストグラムマネージャー145は、データセット内の最小値のロケーションを計算するために、第1のピクセルシェーダー1810を実行して、第1の頂点バッファー1804からx値及びy値を読み出し、置換ラスター演算を介して、これらの値を、最小ロケーションテクスチャーバッファー1812のx値及びy値にコピーする。
図20は、データセット内の所与の最大値のロケーションを求めるために、図10のデータセット計算の最小値を拡張するように適合された図1の例示のコンピューティングシステム100のブロック図である。1×1の事前に計算された最大テクスチャーバッファー2002が与えられると、ヒストグラムマネージャー145は、点リストを含む第1の頂点バッファー2004を生成するように構成される。この点リストは、データセットテクスチャーバッファー2006からヒストグラムマネージャー145によって取り出された(x,y)座標又は(x,y,z)座標の集合である。次に、ヒストグラムマネージャー145は、データセットテクスチャーバッファー2006内のテクセル座標が最大値と等しい場合に限り、単一のピクセル(1と等しい幅及び高さ)への有効な宛先座標及び(x,y)ロケーション又は(x,y,z)ロケーションを出力する頂点シェーダー2008を実行するように構成され、そうでない場合、負のロケーションが出力され、これによって、後続のピクセルシェーダー2010は、最小値のみを用いて演算することが確保される。複数の等しい最大値の場合、返されるロケーションは非決定的である。しかしながら、当業者であれば、複数の等しい最大値の全てのロケーションを確実に求める方法が、図20に示すような機能を再帰的に適用し、NaN(数字でない)値を有するオリジナルのデータセット内の最大値を取り除き、最大値が変化するまで、上記機能を再び実行するものであると推量することができる。
図21は、データセット内の最大値のロケーションを計算する方法2100の一例を示すフロー図である。方法2100は、図1のコンピューターシステム100によって実行することができ、ハードウェア(例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含むことができる。1つの例では、方法2100は、図1のコンピューティングシステム100のヒストグラムマネージャー145によって実行される。
図21に示すように、コンピューティングシステム100がデータセット内の最大値のロケーションを計算することを可能にするために、ブロック2110において、ヒストグラムマネージャー145は、データセットの最大値を計算する。ブロック2120において、ヒストグラムマネージャー145は、データセットテクスチャーバッファー2006を用いて、第1の頂点バッファー2004を作成する。第1の頂点バッファー2004は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック2130において、ヒストグラムマネージャー145は、第1の頂点バッファー2004及びデータセットテクスチャーバッファー2006のコンテンツを第1の頂点シェーダー2008に入力する。ブロック2140において、ヒストグラムマネージャー145は、第1の頂点シェーダー2008を実行して、データセットテクスチャーバッファー2006から値を読み出し、データセット内の値が、1と等しい幅及び高さを有する最大ロケーションテクスチャーバッファー2002内の値と比較した最大値と等しい場合には、単一のテクセルロケーション並びにx及びyロケーションを出力し、データセット内の値が上記最大値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。ブロック2150において、ヒストグラムマネージャー145は、データセット内の最大値のロケーションを計算するために、第1のピクセルシェーダー2010を実行して、第1の頂点バッファー2004からx値及びy値を読み出し、置換ラスター演算を介して、これらの値を、最大ロケーションテクスチャーバッファー2012のx値及びy値にコピーする。
本発明は、ヒストグラム及び関連した統計関数を計算する従来技術の方法を上回る幾つかの利点を有する。データセットの次元数を縮小する散乱縮小フレームワークの構成は、最新のGPU及びこれまでのGPUのキャッシュの挙動と整合し、これによって、性能の大幅な増大が可能になる。散乱縮小フレームワークは、高モダリティを有するデータセットであっても高効率で明確に定義された挙動で、データセットのヒストグラム計算からメジアン及びモードを見つけることにわたる機能を実行するように一般化される。このプロセスは、同時代の大量に市場に出回っている商用のコンピューターハードウェア上で、4Kビデオ用のリアルタイムよりも大きな解像度のビデオにおいて30fpsで動作するのに十分効率的であり、これによって、新たな応用が開ける。これらの応用には、色処理、ビデオコーダー効率の改善、ショット変化検出、動き補償されたデインターレーシング及びフレームレート変換、並びにリアルタイムシーン解析、写真測量法、及び子宮造影法用の物体セグメンテーションが含まれるが、これらに限定されるものではない。
図22は、本明細書において論述した方法論のうちの任意の1つ又は複数をマシンに実行させる一組の命令を実行することができるコンピューターシステム2200の例示の形態のマシンの図的表現を示している。幾つかの例では、このマシンは、LAN、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続(例えば、ネットワーク接続)することができる。このマシンは、クライアントサーバーネットワーク環境ではサーバーマシンの資格で動作することができる。このマシンは、パーソナルコンピューター(PC)、セットトップボックス(STB)、サーバー、ネットワークルーター、ネットワークスイッチ、若しくはネットワークブリッジ、又はそのマシンによって行われる動作を指定する一組の命令(逐次又は別の方法)を実行することが可能な任意のマシンとすることができる。さらに、単一のマシンしか図示されていないが、「マシン」という用語は、本明細書において論述した方法論のうちの任意の1つ又は複数を実行する一組(又は複数組)の命令を個々に又は共同で実行するマシンの任意の集合体も含むものと解釈されるものとする。
この一例示のコンピューターシステム2200は、処理デバイス(プロセッサ)2202、メインメモリ2204(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)等のダイナミックランダムアクセスメモリ(DRAM))、スタティックメモリ2206(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM))、及びデータ記憶デバイス2216を備える。これらは、バス2208を介して互いに通信する。
プロセッサ2202は、マイクロプロセッサ、中央処理ユニット等の1つ又は複数の汎用処理デバイスを表している。より詳細には、プロセッサ2202は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又は他の命令セットを実装するプロセッサ若しくは命令セットの組み合わせを実装するプロセッサとすることができる。プロセッサ2202は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ等の1つ又は複数の専用処理デバイスとすることもできる。図1に示すヒストグラムマネージャー145は、本明細書において論述した動作及びステップを実行するように構成されたプロセッサ2202によって実行することができる。
コンピューターシステム2200は、ネットワークインターフェースデバイス2222を更に備えることができる。コンピューターシステム2200は、ビデオディスプレイユニット2210(例えば、液晶ディスプレイ(LCD)又は陰極線管(CRT))、英数字入力デバイス2212(例えば、キーボード)、カーソル制御デバイス2214(例えば、マウス)、及び信号発生デバイス2220(例えば、スピーカー)も備えることができる。
ドライブユニット2216は、本明細書において説明した方法論又は機能のうちの任意の1つ又は複数を具現化する一組又は複数組の命令(例えば、ヒストグラムマネージャー145の命令)が記憶されているコンピューター可読媒体2224を備えることができる。ヒストグラムマネージャー145の命令は、コンピューターシステム2200によるこれらの命令の実行中は、メインメモリ2204及び/又はプロセッサ2202内にも完全に又は少なくとも部分的に存在することができ、メインメモリ2204及びプロセッサ2202もコンピューター可読媒体を構成する。ヒストグラムマネージャー145の命令は、ネットワークインターフェースデバイス2222を介してネットワーク上で更に送信又は受信することができる。
コンピューター可読記憶媒体2224は、一例では、単一の媒体であるとして示されているが、「コンピューター可読記憶媒体」という用語は、一組又は複数組の命令を記憶する単一の非一時的媒体又は複数の非一時的媒体(例えば、集中型若しくは分散型のデータベース、及び/又は関連付けられたキャッシュ及びサーバー)を含むものと解釈されるべきである。「コンピューター可読記憶媒体」という用語は、マシンによって実行される一組の命令を記憶、符号化、又は担持することが可能であるとともに、本開示の方法論のうちの任意の1つ又は複数をマシンに実行させる任意の媒体も含むものと解釈されるものとする。「コンピューター可読記憶媒体」という用語は、したがって、固体メモリ、光媒体、及び磁気媒体を含むが、これらに限定されるものではないものと解釈されるものとする。
上記説明では、多数の詳細が述べられている。しかしながら、この開示の利益を有する当業者には、これらの特定の詳細がなくても、この開示の例を実施することができることは明らかである。幾つかの場合には、よく知られた構造及びデバイスは、説明を分かりにくくしないように、詳細には示されず、ブロック図の形態で示されている。
詳細な説明の幾つかの部分は、コンピューターメモリ内のデータビットに対する操作のアルゴリズム及びシンボル表現の点から提示されている。これらのアルゴリズム的な記述及び表現は、データ処理技術における当業者が、自身の作業を他の当業者に最も効果的に伝達するのに用いる手段である。アルゴリズムは、本明細書において及び一般的には、所望の結果をもたらす自己矛盾のないステップのシーケンスであると考えられる。これらのステップは、物理量の物理的な操作を必要とするものである。必ずしもそうとは限らないが通常、これらの量は、記憶、転送、組み合わせ、比較、及びそれ以外の操作が可能な電気信号又は磁気信号の形態を取る。主として共通使用の理由から、これらの信号を、ビット、値、要素、シンボル、文字、項、数等と呼ぶことが時に便利であることが分かっている。
しかしながら、これらの用語及び類似の用語の全ては、適切な物理量と関連付けられるべきであり、これらの量に適用された便利なラベルにすぎないことに留意すべきである。特に別段の指定がない限り、上記論述から明らかであるように、この説明全体を通じて、「受信する」、「書き込む」、「維持する」等の用語を利用している論述は、コンピューターシステムのレジスター及びメモリ内の物理(例えば、電子)量として表されたデータを、新たな座標系に対して操作して、そのコンピューターシステムのメモリ若しくはレジスター、又は他のそのような情報記憶デバイス、伝送デバイス、若しくはディスプレイデバイス内の物理量として同様に表される他のデータに変換するコンピューターシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指すことが理解される。
本開示の例は、本明細書における動作を実行する装置にも関係している。この装置は、必要とされる目的用に特別に構築することもできるし、コンピューターに記憶されたコンピュータープログラムによって選択的にアクティブ化又は再構成される汎用コンピューターを含むこともできる。本明細書において開示された高スループットのヒストグラム及び統計の計算は、多くの分野における問題を解決する。この多く分野は、ほんの数例ではあるが、‘384特許に教示されたショット変化検出システム及び方法、GPU又はAPUを有する移動デバイス上でのリアルタイムビデオの色等化及びコントラスト強化、ヒストグラム最大値が3D容積内の突出した線分を特定するのに用いられる現代のMRI及び他の3Dスキャンシステムによって利用されるようなハフ変換の最大値を見つけること、並びに高スループット暗号解析システムにおける文字モード及び周波数解析ステップ等である。そのようなコンピュータープログラムは、コンピューター可読記憶媒体に記憶することができる。このコンピューター可読記憶媒体は、フロッピーディスク、光ディスク、CD−ROM、及び光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード若しくは光カード、又は電子命令を記憶するのに適した任意のタイプの媒体等であるが、これらに限定されるものではない。
本明細書において提示したアルゴリズム及び表示は、本質的には、どの特定のコンピューターにも他の装置にも関係付けられていない。様々な汎用システムを、本明細書における教示によるプログラムとともに用いることもできるし、必要とされる方法ステップを実行するより特殊化された装置を構築することが便利であると分かる場合もある。様々なこれらのシステムの例示の構造は、本明細書における説明から見えてくる。加えて、本開示は、どの特定のプログラミング言語に関しても説明されていない。様々なプログラミング言語を、本明細書において説明した開示の教示内容を実施するのに用いることができることが理解されるであろう。
上記説明は、限定ではなく例示であるように意図されていることが理解されるべきである。上記説明を読んで理解すると、他の多くの例が当業者には明らかであろう。したがって、本開示の範囲は、添付の特許請求の範囲が権利を有する均等なものの全範囲とともに、そのような特許請求の範囲に関して決定されるべきである。
Claims (27)
- テクセルのデータセットを第1のバッファーから処理デバイスにおいて受信することであって、前記データセットは、少なくとも2の次元数Dを有し、各テクセルは値を含むことと、
前記処理デバイスを用いて、前記データセットを座標の点リストにソートすることであって、前記点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
N−1次元優位性に従って前記点リスト内の点を配列することによって、前記点リストの前記次元数を縮小することと、
前記配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも1つの値を取得することと、
前記少なくとも1つの値を第2のバッファーに出力することと、
を含む、方法。 - Dが1になるまで、前記ソートすること、前記縮小すること、前記実行すること、及び前記出力することを繰り返すことを更に含む、請求項1に記載の方法。
- 前記データセットをソートすることは、各テクセルロケーションの個々の頂点を有する頂点バッファーを生成することを含む、請求項1に記載の方法。
- 前記点リストの前記次元数を縮小することは、頂点シェーダー通過を実行して、後続のピクセルシェーダー通過に、前記ラスター演算を実行する宛先ビンロケーションを通知することを含む、請求項1に記載の方法。
- ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも1つを実行することを含む、請求項1に記載の方法。
- 前記出力された前記少なくとも1つの値は、前記データセットのヒストグラム、前記データセットの最大値、前記データセットの前記最小値、前記データセットの合計値、データセットの平均値、メジアン値、若しくはモード値、前記データセットの標準偏差値、データセットの前記最小値のロケーション、又はデータセットの前記最大値のロケーションのうちの少なくとも1つである、請求項1に記載の方法。
- 前記テクセルのデータセットは、2次元又は3次元の静止画像又はビデオから前記第1のバッファーにおいて受信される、請求項1に記載の方法。
- Dは2又は3である、請求項1に記載の方法。
- 前記少なくとも1つの値を、ビデオ処理アプリケーションに用いられる1つ又は複数の下流のデバイスに送信することを更に含む、請求項1に記載の方法。
- テクセルの2次元データセットを第1のバッファーから処理デバイスにおいて受信することであって、前記データセット内の各テクセルは値を含むことと、
前記処理デバイスを用いて、前記第1のバッファーからの前記データセットを第2のバッファーにおける座標の点リストにソートすることであって、該点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
前記第2のバッファーから値を読み出し、第1のサイズと等しい幅及び第2のサイズと等しい高さを有する第3のバッファーに列ロケーションを出力することと、
加法ラスター演算を用いて、前記第3のバッファー内の前記列テクセルロケーションにおいて値を1だけインクリメントして、少なくとも1つの値を取得することと、
前記少なくとも1つの値を第4のバッファーに出力することと、
を含む、方法。 - 前記第1のサイズ及び前記第2のサイズは、ヒストグラムビンサイズに対応する、請求項10に記載の方法。
- 第1のサイズと等しい幅及び第2のサイズと等しい高さを有する第3のバッファーに列ロケーションを出力することは、前記第2のバッファーに位置するテクセルの位置座標の垂直座標が、前記第1のバッファーに位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて前記第3のバッファー内のテクセルロケーションに書き込むことによって、前記第2のバッファー内のテクセルの前記位置座標を新たな座標系に変換することを更に含む、請求項10に記載の方法。
- 値をインクリメントすることは、前記位置座標が演算するテクセルロケーションを指示するテクセルロケーションごとに1つずつ前記第3のバッファーのテクセル値をインクリメントすることを含む、請求項12に記載の方法。
- 1の高さ及び最終のヒストグラムビンサイズと等しい幅を有するビンテクセルロケーションを前記第4のバッファーに出力することを更に含む、請求項10に記載の方法。
- 前記加法ラスター演算を用いて、前記第4のバッファー内の前記値を1だけインクリメントして、ヒストグラムを取得することを更に含む、請求項14に記載の方法。
- 前記第1のサイズは前記第1のバッファーの幅に対応し、前記第2のサイズは1と等しい高さに対応する、請求項10に記載の方法。
- ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも1つを実行することを含む、請求項10に記載の方法。
- 1の高さ及び1と等しい幅を有するビンテクセルロケーションを前記第4のバッファーに出力することを更に含む、請求項10に記載の方法。
- 最小ラスター演算を用いて前記第4のバッファー内の値を置換して、前記データセットの最小値を取得することを更に含む、請求項10に記載の方法。
- 合計ラスター演算を用いて前記第4のバッファー内の値を置換して、前記データセットの合計値を取得することを更に含む、請求項10に記載の方法。
- 前記第4のバッファー内の値を置換することは、前記第4のバッファー内の前記値に、1を前記データセットのサイズによって除算したものを乗算して、前記データセットの平均を取得することを更に含む、請求項20に記載の方法。
- 前記少なくとも1つの値を、ビデオ処理アプリケーションにおいて用いられる1つ又は複数の下流のデバイスに送信することを更に含む、請求項10に記載の方法。
- テクセルの2次元データセットの最小値又は最大値を計算することと、
前記テクセルの2次元のデータセットを第1のバッファーから処理デバイスにおいて受信することであって、前記データセット内の各テクセルは、値と関連付けられていることと、
前記処理デバイスを用いて、前記第1のバッファーからの前記データセットを第2のバッファーにおける座標の点リストにソートすることであって、該点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
前記第2のバッファーからテクセル値を読み出し、該テクセル値が前記最小値と等しい場合には、単一のテクセルロケーション並びにx値及びy値を第3のバッファーに出力し、該テクセル値が前記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力することと、
x値及びy値を前記第2のバッファーから読み出し、置換ラスター演算を介して該x値及びy値を前記第3のバッファーのx値及びy値にコピーして、前記データセット内の最小値又は最大値のロケーションを計算することと、
を含む、方法。 - メモリと、
前記メモリに結合された処理デバイスと、
を備え、前記処理デバイスは、
テクセルのデータセットを第1のバッファーから受信することであって、前記データセットは、少なくとも2の次元数Dを有し、各テクセルは値を含むことと、
前記データセットを座標の点リストにソートすることであって、前記点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
N−1次元優位性に従って前記点リスト内の点を配列することによって、前記点リストの前記次元数を縮小することと、
前記配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも1つの値を取得することと、
前記少なくとも1つの値を第2のバッファーに出力することと、
を行う、コンピューターシステム。 - 前記処理デバイスは、Dが1になるまで、前記ソートすること、前記縮小すること、前記実行すること、及び前記出力することを繰り返すことを更に行う、請求項24に記載のシステム。
- 前記処理デバイスはグラフィックス処理ユニットである、請求項24に記載のシステム。
- 前記処理デバイスは、前記少なくとも1つの値を、ビデオ処理アプリケーションにおいて用いられる1つ又は複数の下流のデバイスに送信することを更に行う、請求項24に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/050870 WO2015009294A2 (en) | 2013-07-17 | 2013-07-17 | System and method for histogram computation using a graphics processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016527631A true JP2016527631A (ja) | 2016-09-08 |
Family
ID=52346814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016527981A Pending JP2016527631A (ja) | 2013-07-17 | 2013-07-17 | グラフィックス処理ユニットを用いたヒストグラム計算のシステム及び方法 |
Country Status (9)
Country | Link |
---|---|
EP (1) | EP3022682A4 (ja) |
JP (1) | JP2016527631A (ja) |
KR (1) | KR20160030871A (ja) |
CN (1) | CN105009142A (ja) |
BR (1) | BR112015008904A2 (ja) |
CA (1) | CA2868297A1 (ja) |
HK (1) | HK1216934A1 (ja) |
SG (1) | SG11201501622UA (ja) |
WO (1) | WO2015009294A2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111261088B (zh) * | 2020-02-25 | 2023-12-12 | 京东方科技集团股份有限公司 | 一种图像绘制方法、装置及显示装置 |
CN113450737B (zh) * | 2020-03-27 | 2022-11-01 | 京东方科技集团股份有限公司 | 一种图像绘制方法、显示装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
JP2013008270A (ja) * | 2011-06-27 | 2013-01-10 | Renesas Electronics Corp | 並列演算装置及びマイクロコンピュータ |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6700583B2 (en) * | 2001-05-14 | 2004-03-02 | Ati Technologies, Inc. | Configurable buffer for multipass applications |
US7564460B2 (en) * | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
US6753870B2 (en) * | 2002-01-30 | 2004-06-22 | Sun Microsystems, Inc. | Graphics system configured to switch between multiple sample buffer contexts |
US6819324B2 (en) * | 2002-03-11 | 2004-11-16 | Sun Microsystems, Inc. | Memory interleaving technique for texture mapping in a graphics system |
US7190366B2 (en) * | 2004-05-14 | 2007-03-13 | Nvidia Corporation | Method and system for a general instruction raster stage that generates programmable pixel packets |
US7889922B2 (en) * | 2005-11-14 | 2011-02-15 | Siemens Medical Solutions Usa, Inc. | Method and system for histogram calculation using a graphics processing unit |
US7710417B2 (en) * | 2007-01-15 | 2010-05-04 | Microsoft Corporation | Spatial binning of particles on a GPU |
US8203564B2 (en) * | 2007-02-16 | 2012-06-19 | Qualcomm Incorporated | Efficient 2-D and 3-D graphics processing |
EP2128822B1 (en) * | 2008-05-27 | 2012-01-04 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Index-based pixel block processing |
-
2013
- 2013-07-17 SG SG11201501622UA patent/SG11201501622UA/en unknown
- 2013-07-17 CN CN201380048176.8A patent/CN105009142A/zh active Pending
- 2013-07-17 KR KR1020157010424A patent/KR20160030871A/ko not_active Application Discontinuation
- 2013-07-17 JP JP2016527981A patent/JP2016527631A/ja active Pending
- 2013-07-17 CA CA2868297A patent/CA2868297A1/en not_active Abandoned
- 2013-07-17 BR BR112015008904A patent/BR112015008904A2/pt not_active Application Discontinuation
- 2013-07-17 EP EP13889560.2A patent/EP3022682A4/en not_active Withdrawn
- 2013-07-17 WO PCT/US2013/050870 patent/WO2015009294A2/en active Application Filing
-
2016
- 2016-04-25 HK HK16104716.7A patent/HK1216934A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
JP2013008270A (ja) * | 2011-06-27 | 2013-01-10 | Renesas Electronics Corp | 並列演算装置及びマイクロコンピュータ |
Non-Patent Citations (1)
Title |
---|
許 昭倫,外3名: ""メモリ型画像処理プロセッサIMAPとその応用"", 電子情報通信学会技術研究報告, vol. 93, no. 436, JPN6017022461, 25 January 1994 (1994-01-25), pages 39 - 46, ISSN: 0003581368 * |
Also Published As
Publication number | Publication date |
---|---|
EP3022682A2 (en) | 2016-05-25 |
HK1216934A1 (zh) | 2016-12-09 |
WO2015009294A2 (en) | 2015-01-22 |
WO2015009294A3 (en) | 2015-07-16 |
CN105009142A (zh) | 2015-10-28 |
CA2868297A1 (en) | 2015-01-17 |
BR112015008904A2 (pt) | 2017-07-04 |
KR20160030871A (ko) | 2016-03-21 |
EP3022682A4 (en) | 2017-02-22 |
SG11201501622UA (en) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11631239B2 (en) | Iterative spatio-temporal action detection in video | |
US10402697B2 (en) | Fusing multilayer and multimodal deep neural networks for video classification | |
US8704842B1 (en) | System and method for histogram computation using a graphics processing unit | |
CN110046537B (zh) | 使用递归神经网络进行动态面部分析的系统和方法 | |
KR101639852B1 (ko) | 그래픽 프로세싱을 위한 픽셀 값 압축 | |
US10922793B2 (en) | Guided hallucination for missing image content using a neural network | |
US9928642B2 (en) | Using a geometry shader for variable input and output algorithms | |
US20220405582A1 (en) | Systems and methods for training neural networks with sparse data | |
US11836597B2 (en) | Detecting visual artifacts in image sequences using a neural network model | |
US9971959B2 (en) | Performing object detection operations via a graphics processing unit | |
CN111210498B (zh) | 降低多边形网格的细节水平以减少被渲染几何的复杂度 | |
US11496773B2 (en) | Using residual video data resulting from a compression of original video data to improve a decompression of the original video data | |
CN112149795A (zh) | 用于自监督事件学习与异常检测的神经架构 | |
US10964000B2 (en) | Techniques for reducing noise in video | |
CN111445581A (zh) | 使用数据驱动先验的网格重建 | |
CN110675480B (zh) | 用于获取纹理操作的采样位置的方法和装置 | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
JP2016527631A (ja) | グラフィックス処理ユニットを用いたヒストグラム計算のシステム及び方法 | |
Jiang et al. | A distributed dynamic parallel algorithm for SIFT feature extraction | |
Saidi et al. | Implementation of a real‐time stereo vision algorithm on a cost‐effective heterogeneous multicore platform | |
CN115511886B (zh) | 利用gpu实现远程目标统计的方法、装置及存储介质 | |
Tong et al. | A GPU-based Affine and Scale Invariant Feature Transform Algorithm | |
Rathi et al. | A GPU based implementation of Center-Surround Distribution Distance for feature extraction and matching | |
Riha | GPU accelerated algorithms for multiple object tracking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160707 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170515 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170620 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180130 |