JP2009169935A - 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 - Google Patents
並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 Download PDFInfo
- Publication number
- JP2009169935A JP2009169935A JP2008263158A JP2008263158A JP2009169935A JP 2009169935 A JP2009169935 A JP 2009169935A JP 2008263158 A JP2008263158 A JP 2008263158A JP 2008263158 A JP2008263158 A JP 2008263158A JP 2009169935 A JP2009169935 A JP 2009169935A
- Authority
- JP
- Japan
- Prior art keywords
- scan operation
- parallel processor
- processor architecture
- processing elements
- scan
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000004590 computer program Methods 0.000 title claims abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 94
- 230000004044 response Effects 0.000 claims abstract description 6
- 230000015654 memory Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 5
- 241001442055 Vipera berus Species 0.000 description 26
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/506—Indexing scheme relating to groups G06F7/506 - G06F7/508
- G06F2207/5063—2-input gates, i.e. only using 2-input logical gates, e.g. binary carry look-ahead, e.g. Kogge-Stone or Ladner-Fischer adder
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
【課題】並行処理アーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータ製品を提供すること。
【解決手段】動作において、スキャン演算命令が受信される。さらに、スキャン演算命令に応答して、スキャン演算が、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して、単一ビット値のシーケンスに対して実施される。
【選択図】 図1
【解決手段】動作において、スキャン演算命令が受信される。さらに、スキャン演算命令に応答して、スキャン演算が、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して、単一ビット値のシーケンスに対して実施される。
【選択図】 図1
Description
[0001]本発明は、スキャン演算に関し、より具体的には、並行処理アーキテクチャを使用してスキャン演算を実施することに関する。
[0002]並列プロセッサアーキテクチャは一般に、幅広い様々な計算アルゴリズムを実施するために使用される。こうしたアーキテクチャを使用して一般に実施されるアルゴリズムの一例は、スキャン演算(例えば「all−prefix−sums」演算など)である。こうした1つのスキャン演算が、表1に定義されている。
[0003]具体的には、配列[a0,al,…,an−1]、及び「I」を単位元とする演算子
与えられると、表1の配列が返される。例えば、演算子
が加算演算子である場合、配列[3 1 7 0 4 1 6 3]に対してスキャン演算を実施すると、[0 3 4 11 11 15 16 22]が返されるなどである。上記の例では加算演算子が示されているが、こうした演算子は、2つのオペランドの任意の連結演算子であってもよい。
与えられると、表1の配列が返される。例えば、演算子
が加算演算子である場合、配列[3 1 7 0 4 1 6 3]に対してスキャン演算を実施すると、[0 3 4 11 11 15 16 22]が返されるなどである。上記の例では加算演算子が示されているが、こうした演算子は、2つのオペランドの任意の連結演算子であってもよい。
[0004]さらに、スキャン演算は、(表1に示されたような)排他的スキャン演算であっても、包括的スキャン演算であってもよい。排他的スキャンは、結果の各要素jが、入力配列の要素jまで(要素jを含まず)のすべての要素の和となるスキャンを指す。もう一方では、包括的スキャンでは、要素jを含むすべての要素が合計される。
[0005]これまで、並列プロセッサアーキテクチャを使用したスキャン演算などの計算アルゴリズムをより効率的に実施することが引き続き求められている。
[0006]並行処理アーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータ製品が提供される。動作において、スキャン演算命令が受信される。さらに、スキャン演算命令に応答して、スキャン演算が、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して、単一ビット値のシーケンスに対して実施される。
[0014]図1は、本発明の一実施形態による、並行処理アーキテクチャを使用して単一ビットに対するスキャン演算を実施するための方法100を示している。示されるように、スキャン演算命令が受け取られる。操作102を参照されたい。この説明のコンテキストでは、スキャン演算命令は、スキャン演算に対応する任意の命令或いはコマンドを指す。
[0015]さらに、スキャン演算命令に応答して、スキャン演算が、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して単一ビット値のシーケンス値に対して実施される。操作104を参照されたい。この説明のコンテキストでは、処理要素は、並列プロセッサアーキテクチャの任意の構成要素を指す。さらに、単一ビット値のシーケンスは、1ビット値の任意のシーケンスを含み得る。一部の実施形態では、この設計によって、単一ビット入力に対するスキャン演算などの計算アルゴリズムが、より効率的に実施され得る。
[0016]さらに、この説明のコンテキストでは、スキャン演算は、現在の要素と、配列の少なくとも1つの前の要素とが関与する任意の演算を指し得る。例えば、様々な実施形態では、スキャン演算は。接頭部和スキャン演算、排他的スキャン演算、包括的スキャン演算、及び/又は他の任意のスキャン演算(例えば、より多くの又は少ない要素、及び/又は他の演算子などが関与する)を含み得る。
[0017]さらに、この説明のコンテキストでは、並列プロセッサアーキテクチャは、並列に動作する2つ以上の処理要素を含む任意のアーキテクチャを含んでもよい。一実施形態では、こうした並列プロセッサアーキテクチャは、グラフィックスプロセッサ(例えばグラフィックス処理装置(GPU:graphics processing unit)など)、又は例えばチップセット、システムオンチップ(SOC:system−on−chip)、CPUに組み込まれたコア、個別プロセッサなどの形のグラフィックス処理能力を備えた他の集積回路の形を取ってもよい。別の実施形態では、上記の並行処理アーキテクチャは、ベクタプロセッサを含んでもよい。
[0018]次に、ユーザの要望により上記フレームワークがそれと共に実装されることも、実装されないこともある様々な任意選択のアーキテクチャ及び特徴に関して、より例示的な情報が示される。以下の情報は、例示するために述べられており、どんなやり方でも限定的と見なすべきでないことに強く留意されたい。以下の特徴のいずれもが、述べられた他の特徴を除外して、又は除外せずに任意選択で組み込まれ得る。
[0019]図2は、本発明の一実施形態による、単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム200を示している。任意選択として、このシステムは、図1の方法を実施するために実装されてもよい。しかし、勿論、このシステムは、任意の所望の環境で実装されてもよい。この説明では、上記の定義が当てはまり得ることにも留意されたい。
[0020]示されるように、並行処理アーキテクチャ202が提供される。こうした並行処理アーキテクチャは、複数の並列プロセッサ204を含む。示されていないが、こうした並列プロセッサは、所定の数のスレッドに対して動作可能であり得る。このために、並列プロセッサはそれぞれ並列に動作し得るが、対応するスレッドもまた、並列に動作してもよい。
[0021]一実施形態では、並行処理アーキテクチャは、1つ又は複数の単一命令多重データ(SIMD:single instruction multiple data)処理要素を含んでもよい。こうしたシステムでは、プロセッサによって実行されているスレッドをグループにまとめて、単一グループ内のすべてのスレッドがどんな瞬間においても、潜在的にそれぞれ異なるデータに対してであるが、正確に同じ命令を実行しているようにする。一実施形態では、こうしたやり方で動作するこのスレッド群は、「ワープ」と呼ばれることもある。さらに、こうしたグループ内の所定のスレッド数は、対応するプロセッサの「ワープサイズ」と呼ばれることもある。
[0022]別の実施形態では、上記の並列処理アーキテクチャは、グラフィックスプロセッサ、或いは(例えばチップセット、システムオンチップ(SOC)、CPUに組み込まれたコア、個別プロセッサなどの形の)グラフィックス処理能力を備えた他の任意の集積回路を含んでもよい。別の実施形態では、上記の並行処理アーキテクチャは、Sony(登録商標)社、Toshiba(登録商標)社、及びIBM(登録商標)社によって合同で開発されたCell広帯域エンジンマイクロプロセッサアーキテクチャを指すCellプロセッサなど、1つ又は複数のベクトル処理要素を備えたプロセッサを含んでもよい。
[0023]引き続き図2を参照すると、並行処理アーキテクチャは、ローカル共有メモリ206を含んでもよい。並行処理アーキテクチャの並列プロセッサはそれぞれ、それ自体のローカル共有メモリへの読出し及び/又は書込みを行い得る。この共有メモリは、各プロセッサに関連する物理的に別個のメモリで構成されてもよく、或いはそれは、プロセッサ間で共有された1つ又は複数のメモリの別個に割り当てられた領域で構成されてもよい。さらに、示された実施形態では、共有メモリは、並行処理アーキテクチャのプロセッサが具現化される集積回路内で具現化されてもよい。
[0024]さらに、図では、グローバルメモリ208が含まれている。使用時、こうしたグローバルメモリは、並行処理アーキテクチャのすべてのプロセッサからアクセス可能である。示されるように、こうしたグローバルメモリは、上記の並行処理アーキテクチャのプロセッサが具現化される集積回路とは別個の集積回路内で具体化されてもよい。並行処理アーキテクチャは、図2の様々な集積回路内に特定のやり方で具現化されるように示されているが、システム構成要素は、要望に応じて、同じ集積回路内で具体化されることも、具現化されないこともあることに留意されたい。
[0025]さらに、図2のこのシステムは、要望に応じて、並行処理アーキテクチャを制御するためのドライバ210をさらに含んでもよい。一実施形態では、ドライバは、こうした制御を容易にするためのライブラリを含んでもよい。例えば、こうしたライブラリは、本明細書に述べられた機能性をインスタンス化し得るライブラリ呼出しを含んでもよい。
[0026]さらに、別の実施形態では、ドライバは、並行処理アーキテクチャ(例えばグラフィックスプロセッサなど)を使用して一般的な計算能力を提供することができ得る。こうしたドライバの一例は、NVIDIAコーポレーション社によって提供されたCUDA(商標)フレームワークと併せて提供されてもよい。使用時、ドライバは、並列処理アーキテクチャを図1の方法に従って動作するように制御するために使用してもよい。
[0027]図3は、本発明の一実施形態による、並行処理アーキテクチャを使用して単一ビット入力へのスキャン演算を実施するためのシステム300の結果を示している。オプションとして、このシステムは、図1〜2の詳細のコンテキストで実装されてもよい。しかし、勿論、このシステムは、任意の所望の環境で実装されてもよい。この説明では、上記の定義が当てはまり得ることにも留意されたい。
[0028]図示されるように、並列プロセッサアーキテクチャの一部として含まれた複数の処理要素302が備えられている。処理要素(例えばスレッド)はそれぞれ、1ビット値304を有する。一実施形態では、これらの1ビット値は、論理表現を評価することから導出されてもよい。この場合、1ビット値は、述部ビットと称されることもある。
[0029]操作において、スキャン演算命令は、並列プロセッサアーキテクチャによって受け取られてもよい。この場合、スキャンは、接頭部和スキャン演算命令を含んでもよい。スキャン演算命令に応答して、接頭部和スキャン演算命令は、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して実施されてもよい。
[0030]N個の処理要素のグループ(すなわちワープ)を横断して述部ビット入力の接頭部和スキャン演算(図の実施例の排他的スキャン)を行った結果、log(N)ビットの整数がもたらされる。図3は、N=16個の処理要素(例えばスレッド)のワープのスキャンの結果306を示している。勿論、様々な実施形態において、任意の数の処理要素が使用されてもよい。処理要素に引き渡される値「i」は、所与の述部ビットを1とする、より小さいインデックスを有する処理要素(例えばスレッド)の数であることに留意されたい。様々な実施形態では、この演算は、ストリーム圧縮及び基数ソートなど、複数の計算カーネルの基礎として使用されてもよい。
[0031]一部の場合では、完全に一般的なスキャン演算が、直接的なハードウェア実装に適さないことがある。例えば、スキャン演算は、任意の長さのシーケンス、及び多くの可能な数値タイプ(例えばint、float、shortなど)に対処することを伴い得る。対照的に、固定長の小さいシーケンスに対するバイナリスキャンのプリミティブが、ハードウェアで実装され、マシン命令として提供されることがある。マルチプロセッサ内の処理要素の数は、アーキテクチャに関する既知の定数であり、数値タイプは、1ビット値に対して一定に保たれ得る。
[0032]図4は、本発明の一実施形態による、並行処理アーキテクチャを使用してハードウェア内でスキャン演算を実施するためにシステム400を示している。オプションとして、このシステムは、図1〜3の詳細のコンテキストで実装されてもよい。しかし、勿論、このシステムは、任意の所望の環境で実装され得る。やはり、上記の定義が、この説明でも当てはまり得る。
[0033]示されたように、並列プロセッサアーキテクチャの一部として含まれた複数の処理要素402が備えられている。さらに、複数の加算器404が含まれる。こうした加算器は、数を加算することができるどんな回路又は装置をも含み得る。
[0034]動作において、処理要素(例えばスレッド)はそれぞれ、1ビット値を保持してもよい。したがって、スキャン演算命令は、複数の処理要素によって受け取られるとき、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して実施されてもよい。この場合、加算器404の集まりは加算網(例えば回路)を形成し、この加算網は、処理装置402のそれぞれから1ビットの入力値を受け取り、スキャン演算の結果を各処理要素406に引き渡す。
[0035]図4は、16個の処理要素を含んで示されているが、任意の数の処理要素が使用され得ることに留意されたい。さらに、図4のシステムは、排他的スキャンを実施するためのシステムとして示されている。別の実施形態では、このシステムは、包括的スキャンを実施するように構成されてもよい。
[0036]さらに、図4のシステムは、処理要素の数(N)に等しい深さで構成される。様々な他の実施形態で、このシステムは、深さを最小化するように構成されてもよい。こうした最小化は、任意の数の技術を使用して遂行されてもよい。
[0037]図5は、本発明の別の実施形態による、並行処理アーキテクチャを使用してハードウェア内でスキャン演算を実施するためのシステム500を示している。オプションとして、このシステムは、図1〜4の詳細のコンテキストで実装されてもよい。しかし、勿論、このシステムは、任意の所望の環境で実装されてもよい。この説明では、上記の定義が当てはまり得ることにも留意されたい。
[0038]示されるように、並列プロセッサアーキテクチャの一部として含まれた複数の処理要素502が備えられている。さらに、加算器504のツリーが含まれる。動作において、それぞれの処理要素502は、1ビット入力を与える。
[0039]オプションとして、この1ビット入力は、指定された述部レジスタから取られてもよい。これらの入力は、加算器のツリーを通して供給され、出力として接頭部和値506を、対応する処理要素に引き渡してもよい。一実施形態では、それぞれの出力は、各処理要素について指定されたデータレジスタ内に置かれてもよい。
[0040]示されたように、加算器504のツリーによって形成された加算システムは、要素Nを処理要素の数として、深さ値log(N)を有する。しかし、一部の場合では、システム内の加算器の数を減らすことが望ましいことがある。したがって、加算器が減少し、アルゴリズムの深さが増加したシステムが使用されてもよい。
[0041]図6は、本発明の別の実施形態による、並行処理アーキテクチャを使用してハードウェア内でスキャン演算を実施するためのシステム600を示している。オプションとして、このシステムは、図1〜5の詳細のコンテキストで実装されてもよい。しかし、勿論、このシステムは、任意の所望の環境で実装されてもよい。この説明では、上記の定義が当てはまり得ることにも留意されたい。
[0042]示されるように、並列プロセッサアーキテクチャの一部として含まれた複数の処理要素602が備えられている。さらに、複数の加算器604が含まれる。動作において、それぞれの処理要素は、1ビット入力を与える。
[0043]システムの深さは、システムの待ち時間に直接相関することに留意されたい。したがって、システムの総面積が、総待ち時間よりも懸念される場合は、より少ない数の加算器を備えたシステム(例えば図6のシステム)が望ましいことがある。もう一方で、待ち時間が、総面積よりも懸念される場合は、より大きい数の加算器及びより小さい深さを有するシステム(例えば図5のシステム)が望ましいことがある。
[0044]いずれか実装形態を使用すると、1ビット入力のスキャンは、一般的な数のスキャンよりも遥かに安価になり得る。例えば、完全な32ビット整数が合計される場合は、加算を実施するシステム内の加算器はそれぞれ、32ビット加算器でなければならない。しかし、1ビット入力では、Nをシステム内の処理要素の数として、各加算器の幅はせいぜいlog(N)である。この説明のコンテキストでは、加算器の幅は、加算器によって扱うことができる入力数が含み得るビットの最大数を指す。
[0045]図6の特定の場合及びコンテキストでは、それぞれの加算器は、入力当たりせいぜい4ビットに遭遇する。一実施形態では、加算器のツリーのそれぞれ異なるレベルで、それぞれ異なる幅の加算器が使用されてもよい。例えば、ツリーの第1のレベル606(すなわち入力のすぐ下)の加算器は、1ビット入力だけを含んでもよい。さらに、第2のレベル608は、2ビット入力だけを含んでもよい。
[0046]図2〜6のコンテキストで述べられるようなデータ経路を与えられると、SIMDマルチプロセッサの処理要素を横断するバイナリスキャンは、マシン命令としてプログラムにさらされ得る(expose)。一実施形態では、各処理要素からレジスタ(「Rpred」)内の1ビット述部を入力として取り、別のレジスタ(「Rsum」)内の適切な接頭部和を各処理要素に返す述部スキャン命令(「PSCAN」)が使用されてもよい。こうした命令が、以下の表2に示されている。
[0047]この命令の操作は、図2〜6のシステムに直接対応する。処理要素はそれぞれ、システムの並列接頭部加算網の入力に述部ビットを与え、それぞれが単一の出力値を受け取る。
[0048]ほとんどのマルチプロセッサハードウェアは、計算中に処理要素を選択的に非アクティブ化するための機構を組み込む。これは一般に、名目上SIMDのプロセッサアレイがプログラムの分岐経路を実行することを可能にするために行われる。こうした状況では、非アクティブ化された処理要素は、「PSCAN」命令がアクティブ処理要素によって実行されるとき、並列接頭部計算に「0」を与えると仮定してもよい。しかし、別の実施形態では、非アクティブ処理要素が「1」を与える、命令の変形体が提供されてもよい。
[0049]さらに、図2〜6は、加算演算のコンテキストで述べられているが、他の演算も同様に適用することができる。例えば、スキャン演算及び加算器は、加算以外のどんな連結演算をも使用するように一般化してもよい。したがって、スキャン演算は、並列プロセッサアーキテクチャの複数の機能ユニットを使用して実施してもよい。
[0050]この場合、機能ユニットは、加算器、ブール論理演算子、算術及び論理演算子、並びに他の様々な機能ユニットを含んでもよい。さらに、示されたように、並列プロセッサアーキテクチャは、複数のレベルの機能ユニットを含んでもよい。この場合、レベルの数は、処理要素の数より小さい。さらに、レベルの数は、多くの場合、処理要素数の対数よりも小さいことがある。
[0051]マシン命令のコンテキストでは、加算命令と同様に、AND、OR及びXORなどの命令が使用されてもよい。さらに、1ビット入力では、MIN、MAX及び乗算などの演算が、これらの3つの上記1ビット操作に減少され得る。上述されたように、こうした命令のデータ経路は、構成要素をなす加算器ブロックが適切なAND/OR/XORゲートで置き換えられた、図3〜6に示されたものと同一であるように見える。さらに、例示的な一実施形態では、図3〜6のコンテキストで述べられたシステムは、パイプライン構成で実装されてもよい。この場合、こうしたパイプライン構成を実装するために、ラッチが使用されてもよい。
[0052]スキャン演算命令に対応するマシン命令は、様々なコンピュータプログラミング言語(例えばC、C++など)を使用して実装されてもよいことに留意されたい。一実施形態では、単一のイントリンシックとして計算統一デバイスアーキテクチャ(CUDA商標:Compute Unified Device Architecture)Cを使用して実装される。例えば、表3は、CUDA(商標)Cの命令を示しており、ただし、「i」は、スレッドインデックスを表す。
[0053]この機能性をさらすことへの別の手法は、プログラムによって明示的に計算された述部ではなく、処理要素の「アクティブ」ビットに対するバイナリ接頭部和を暗黙に実施することである。この構成の一例が、以下の表4に示されている。
[0054]この場合、マルチプロセッサ「アクティブ」状態にアクセスするために使用するコンパイラ用に、基礎となるプロセッサ機構が存在してもよい。
[0055]勿論、これは、より高いレベルの言語でプリミティブをさらすことへの1つの可能な手法にすぎず、特にCUDA(商標)Cに関係する。プリミティブマシンサポートをさらす他の手段が考慮される。実質的に異なる設計を有する言語(例えばデータ並列Cなど)が、それぞれ異なる言語レベル実施形態を使用することに留意されたい。
[0056]一実施形態では、処理要素、或いはスレッドの1つ又は複数のグループ(例えばワープ)は、協調型スレッド配列(CTA:Cooperative Thread Array)で共に実行されてもよい。したがって、並列プロセッサアーキテクチャは、処理要素間の調整を提供し得る。この場合、調整は、書き込まれる結果の宛先に関する調整を含んでもよい。一実施形態では、複数の処理要素は、オンチップ共有メモリを介して互いに伝達し、バリアを介して同期することができ得る。
[0057]複数のスレッドで構成されたCTAを横断したスキャンを実施するとき、2つのレベルのスキャンが実施されてもよい。第1のスキャンは、それぞれのワープ内で行われてもよい。オプションとして、上述されたように、第1のスキャンは、「PSCAN」プリミティブを用いて実装されてもよい。第2のスキャンは、各ワープから単一の値を受け取り、これらの部分和へのスキャンを実施してもよい。これらはすべて、32のワープ幅の場合には、5ビット整数であることに留意されたい。
[0058]一実施形態では、1ビットのスキャンプリミティブが、各2進数字へのスキャンをそれぞれ独立に実施し、次いで結果を合計することによってマルチビット数の接頭部和を計算するために使用されてもよい。換言すると、並列プロセッサアーキテクチャは、マルチビット値の個々のビットのスキャンを個々に実施し、結果をビットシフトした後に個々のスキャンの結果を合計することによってマルチビット値に対するスキャン演算を実施してもよい。例えば、ワープ内の各スレッドに、5ビット値「x_i」が与えられると仮定する。これらの値の接頭部和は、表5に示されるように計算されてもよい。
[0059]この実装形態の結果は、完全スキャンカーネルを伴う実装形態と同じになる。しかし、「PSCAN」が、実行のために単一の命令を使用すると仮定すると、これは、入力値のビット数が小さい場合、完全カーネルよりも遥かに効率的になり得る。スキャンカーネル関するさらなる情報は、その全体が参照として本明細書に組み込まれている、2007年9月27日に出願された特許出願第11/862,938号、「SYSTEM,METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION」に見ることができる。
[0060]上記の機能性は、並行処理アーキテクチャを含めて任意の所望の環境で使用されてもよく、効率的な並列カーネルの構成が望まれる様々な状況で実装されてもよいことに留意されたい。例えば、アイテムのキューが、操作されているデータに対応し、スレッド当たり最大1アイテムをキューに書き込むと仮定する。あらゆるスレッドが常に1アイテムを書き込む場合は、各スレッドは、キューポインタからのどのオフセットを、値として書き込むべきか常に分かっている。
[0061]しかし、個々の各スレッドが、値を書き込むかどうか選択する場合は、ワープ内のすべてのスレッドは、値の書込みの適切なオフセットを計算しなければならない。このオフセットの計算は、各スレッドが書込みを望んでいるかどうか判断する述部へのスキャンを使用することによって実装されてもよい。この計算は、表6に示されるようなバイナリスキャンプリミティブを使用して、単純かつ効率的に表現することができる。
[0062]より簡潔な変形体は、ワープを横断してプロセッサの「アクティブ」ビットを暗黙的にスキャンすることによって作られ得る。例えば、こうした1つの変形体が、以下の表7に示されている。
[0063]別の実施例として、スレッドのCTAは、スレッド当たり1つの値で数列を制御していることがある。この実施例では、「ピポット」値が選択されてもよく、配列は、ピポット未満である配列内のすべての値が他のすべての数の前に来るように入れ替えてもよい。これは、例えばQuicksortなどのアルゴリズムにおける一ステップである。
[0064]この演算を実施するために、述部「p」を受け取る「ランク()」プリミティブが定義されてもよい。述部が真であるスレッドは、述部が真である、より低いスレッドインデックスを有するスレッド数のカウントを受け取る。述部が偽であるスレッドは、述部が偽である、より低いスレッドインデックスを有するスレッド数のカウント、及び真の述部の総数を受け取る。表8は、CUDA(商標)の代表的な関数の一例を示しており、ただし、関数「cta_prefix_sum()」は、2007年9月27日に出願された特許出願第11/862,938号、「SYSTEM,METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION」に述べられたやり方で、ワープ内スキャンに基づいて構築される。
[0065]こうしたプリミティブが与えられると、パーティション関数が書き込まれ得る。例えば、表9は、こうした1つのパーティション関数の一例を示している。
[0066]パーティションと同様に、数列のソートは、多くの適用例に役立つ別の演算である。上記に定義された「rank()」プリミティブに関しても容易に実装される。基数ソートの各パスは、比較述部に基づくのではなく、データ値の単一ビットの値に基づく「partition()」のやり方で単に入れ替えることである。この説明のコンテキストでは、基数ソートは、個々の桁を処理することによって整数をソートするソートアルゴリズムである。基数ソートを使用する実装形態の一例が、表10に示されている。
[0067]様々な実施形態について上記に述べられているが、それらは、例示するためだけに提示されており、限定するものではないことを理解されたい。例えば、様々な他の実施形態では、上記の図のコンテキスト及び詳細で、任意の数のスキャンアルゴリズムが使用され実装されてもよい。
[0068]図7は、様々な上記実施形態の様々なアーキテクチャ及び/又は機能性が実装され得る例示的なシステム700を示している。示されたように、通信バス702に接続された少なくとも1つのホストプロセッサ701を含むシステムが提供される。このシステムは、メインメモリ704をも含む。制御論理(ソフトウェア)及びデータは、ランダムアクセスメモリ(RAM:random access memory)の形を取り得るメインメモリに格納される。
[0069]このシステムは、グラフィックスプロセッサ706及びディスプレイ708、すなわちコンピュータモニタをも含む。一実施形態では、グラフィックスプロセッサは、複数のシェーダモジュール、ラスター化モジュールなどを含んでもよい。上記モジュールはそれぞれ、グラフィックス処理装置(GPU)を形成するように、単一の半導体プラットフォーム上にでも位置し得る。
[0070]この説明では、単一の半導体プラットフォームは、単独のユニタリー半導体ベース集積回路またチップを指し得る。単一の半導体プラットフォームという用語は、オンチップ演算をシミュレートし、従来の中央処理装置(CPU:central processing unit)及びバス実装を使用するのに比べて大幅に改良された、向上した接続性を有するマルチチップモジュールを指し得ることに留意された。勿論、様々なモジュールもまた、それぞれ別々に位置することも、ユーザの要望による様々な組合せの半導体プラットフォームに位置することもある。
[0071]このシステムは、2次記憶装置710をも含み得る。2次記憶装置は、例えばハードディスクドライブ、及び/又はフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどである取外し可能記憶ドライブを含む。取外し可能記憶ドライブは、よく知られているやり方で取外し可能記憶ユニットから読み出し、及び/又はそれに書き込む。
[0072]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ及び/又は2次記憶装置内に格納されてもよい。こうしたコンピュータプログラムは、実行されるとき、システムが様々な機能を実施することを可能にする。メモリ、記憶装置及び/又は他の記憶装置は、コンピュータ読取り可能媒体の可能な例である。
[0073]一実施形態では、上記の様々な図のアーキテクチャ及び/又は機能性は、ホストプロセッサ、グラフィックスプロセッサ、ホストプロセッサとグラフィックスプロセッサの両方の能力の少なくとも一部が可能である集積回路(図示せず)、チップセット(すなわち関連する機能を実施するためのユニットとして働くように設計され、販売される集積回路群など)、及び/又はそれに関する他の任意の集積回路のコンテキストで実装されてもよい。さらに、上記の様々な図の要素割当て機能性は、1つの可能な実施形態では、ドライバ712の制御の下、上記集積回路のいずれかで実装されてもよい。
[0074]さらに、上記の様々な図のアーキテクチャ及び/又は機能性は、一般的なコンピュータシステム、回路基板システム、娯楽専用のゲームコンソールシステム、アプリケーション固有のシステム、及び/又は他の任意の所望のシステムのコンテキストで実装されてもよい。例えば、システムは、デスクトップコンピュータ、ラップトップコンピュータ、及び/また他の任意のタイプの論理の形を取ってもよい。さらに、システムは、それだけに限らないが、携帯情報端末(PDA:personal digital assistant)装置、携帯電話装置、テレビなどを含めて、他の様々な装置の形を取ってもよい。
[0075]さらに、示されてないが、このシステムは、通信のためにネットワーク(例えば通信ネットワーク、ローカルエリアネットワーク(LAN:local area network)、無線ネットワーク、インターネットなどの広域ネットワーク(WAN:wide area network)、ピアツーピアネットワーク、ケーブルネットワークなど)に結合されてもよい。
[0076]様々な実施形態について上記で述べたが、それらは、例示するためだけに提示されており、限定するものではないことを理解されたい。したがって、好ましい実施形態の広さ及び範囲は、上記の例示的な実施形態のいずれかによって限定されるものではなく、添付の特許請求の範囲及びその等価物に従って定義されるものにすぎない。
202 並行処理アーキテクチャ
204 並列プロセッサ
206 ローカル共有メモリ
208 グローバルメモリ
210 ドライバ
300 システム
302 処理要素
304 1ビット値
306 結果
400 システム
402 処理要素
404 加算器
406 処理要素
500 システム
502 処理要素
504 加算器
506 接頭部和値
600 システム
602 処理要素
604 加算器
606 第1レベル
608 第2レベル
701 ホストプロセッサ
702 通信バス
704 メインメモリ
706 グラフィックスプロセッサ
708 ディスプレイ
710 2次記憶装置
204 並列プロセッサ
206 ローカル共有メモリ
208 グローバルメモリ
210 ドライバ
300 システム
302 処理要素
304 1ビット値
306 結果
400 システム
402 処理要素
404 加算器
406 処理要素
500 システム
502 処理要素
504 加算器
506 接頭部和値
600 システム
602 処理要素
604 加算器
606 第1レベル
608 第2レベル
701 ホストプロセッサ
702 通信バス
704 メインメモリ
706 グラフィックスプロセッサ
708 ディスプレイ
710 2次記憶装置
Claims (20)
- スキャン演算命令を受け取るステップと、
前記スキャン演算命令に応答して、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するステップと
を含む方法。 - 前記スキャン演算が接頭部和スキャン演算を含む、請求項1に記載の方法。
- 前記スキャン演算が包括的スキャン演算を含む、請求項1に記載の方法。
- 前記スキャン演算が排他的スキャン演算を含む、請求項1に記載の方法。
- 前記並列プロセッサアーキテクチャが前記処理要素間の調整のためのもの、請求項1に記載の方法。
- 前記調整が、書き込まれる結果の宛先に関する調整を含む、請求項5に記載の方法。
- 前記処理要素がそれぞれ、複数のスレッドを並列に実行する、請求項1に記載の方法。
- 前記スキャン演算が、前記並列プロセッサアーキテクチャの複数の機能ユニットを使用して実施される、請求項1に記載の方法。
- 前記機能ユニットが加算器を含む、請求項8に記載の方法。
- 前記機能ユニットがブール論理演算子を含む、請求項8に記載の方法。
- 前記機能ユニットが算術及び論理演算子を含む、請求項8に記載の方法。
- 前記並列プロセッサアーキテクチャが複数レベルの機能ユニットを含む、請求項8に記載の方法。
- 前記レベルの数が前記処理要素の数より小さい、請求項12に記載の方法。
- 前記レベルの数が前記処理要素の数の対数より小さい、請求項12に記載の方法。
- 前記並列プロセッサアーキテクチャが、マルチビット値の個々のビットのスキャンを個々に実施し、結果をビットシフトした後に前記個々のスキャンの結果を合計することによって前記マルチビット値に対する前記スキャン演算を実施する、請求項1に記載の方法。
- 前記並列プロセッサアーキテクチャが1つ又は複数の単一命令多重データプロセッサを含む、請求項1に記載の方法。
- 前記並列プロセッサアーキテクチャがグラフィックスプロセッサを含む、請求項1に記載の方法。
- コンピュータ読取り可能媒体内に具体化されたコンピュータプログラム製品であって、
スキャン演算命令に応答して、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのコンピュータコードを備えるコンピュータプログラム製品。 - 複数の処理要素を含む並列プロセッサアーキテクチャと、
前記並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するための命令と
を備える装置。 - 前記並列プロセッサアーキテクチャが、バスを介してメモリ及びディスプレイと通信したままの状態である、請求項19に記載の装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/940,782 US8661226B2 (en) | 2007-11-15 | 2007-11-15 | System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009169935A true JP2009169935A (ja) | 2009-07-30 |
Family
ID=40643242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008263158A Pending JP2009169935A (ja) | 2007-11-15 | 2008-10-09 | 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8661226B2 (ja) |
JP (1) | JP2009169935A (ja) |
KR (1) | KR20090050977A (ja) |
CN (1) | CN101436121B (ja) |
TW (1) | TWI398779B (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996846B2 (en) | 2007-09-27 | 2015-03-31 | Nvidia Corporation | System, method and computer program product for performing a scan operation |
US8264484B1 (en) | 2007-10-29 | 2012-09-11 | Nvidia Corporation | System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume |
US8284188B1 (en) | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US8243083B1 (en) | 2007-12-04 | 2012-08-14 | Nvidia Corporation | System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner |
US8773422B1 (en) | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
US8417735B1 (en) * | 2007-12-12 | 2013-04-09 | Nvidia Corporation | Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements |
US8289324B1 (en) | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
US8502819B1 (en) | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US8200947B1 (en) * | 2008-03-24 | 2012-06-12 | Nvidia Corporation | Systems and methods for voting among parallel threads |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
US8527742B2 (en) * | 2008-08-15 | 2013-09-03 | Apple Inc. | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US8321492B1 (en) | 2008-12-11 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm |
US8327119B2 (en) * | 2009-07-15 | 2012-12-04 | Via Technologies, Inc. | Apparatus and method for executing fast bit scan forward/reverse (BSR/BSF) instructions |
US8542247B1 (en) | 2009-07-17 | 2013-09-24 | Nvidia Corporation | Cull before vertex attribute fetch and vertex lighting |
US8564616B1 (en) | 2009-07-17 | 2013-10-22 | Nvidia Corporation | Cull before vertex attribute fetch and vertex lighting |
KR101109717B1 (ko) * | 2009-10-12 | 2012-01-31 | 주식회사 씨네스티 | 원격 제어를 위한 영상 처리 방법 및 이를 실행하기 위한 원격 제어 프로그램이 기록된 컴퓨터가 판독 가능한 기록매체 |
US8384736B1 (en) | 2009-10-14 | 2013-02-26 | Nvidia Corporation | Generating clip state for a batch of vertices |
US8976195B1 (en) | 2009-10-14 | 2015-03-10 | Nvidia Corporation | Generating clip state for a batch of vertices |
WO2013095634A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction |
US9557998B2 (en) * | 2011-12-28 | 2017-01-31 | Intel Corporation | Systems, apparatuses, and methods for performing delta decoding on packed data elements |
US9465612B2 (en) | 2011-12-28 | 2016-10-11 | Intel Corporation | Systems, apparatuses, and methods for performing delta encoding on packed data elements |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
KR101772299B1 (ko) | 2012-12-28 | 2017-08-28 | 인텔 코포레이션 | 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어 |
US9442755B2 (en) * | 2013-03-15 | 2016-09-13 | Nvidia Corporation | System and method for hardware scheduling of indexed barriers |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US20150052330A1 (en) * | 2013-08-14 | 2015-02-19 | Qualcomm Incorporated | Vector arithmetic reduction |
US9652284B2 (en) * | 2013-10-01 | 2017-05-16 | Qualcomm Incorporated | GPU divergence barrier |
WO2015161826A1 (en) * | 2014-04-24 | 2015-10-29 | Mediatek Inc. | Cpu control method, electronic system control method and electronic system |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US20180007302A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US20180005346A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10296342B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
CN112256580B (zh) * | 2020-10-23 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种代码扫描方法、装置、设备及存储介质 |
US11362670B2 (en) * | 2020-10-30 | 2022-06-14 | International Business Machines Corporation | ReLU compression to reduce GPU memory |
CN114510271B (zh) * | 2022-02-09 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
CN115718724B (zh) * | 2023-01-09 | 2023-05-09 | 阿里巴巴(中国)有限公司 | Gpu、数据选择方法及芯片 |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4628483A (en) | 1982-06-03 | 1986-12-09 | Nelson Raymond J | One level sorting network |
US4855937A (en) | 1984-08-08 | 1989-08-08 | General Electric Company | Data block processing for fast image generation |
US5193207A (en) | 1990-05-31 | 1993-03-09 | Hughes Aircraft Company | Link sorted memory |
US5274718A (en) | 1991-09-30 | 1993-12-28 | At&T Bell Laboratories | Image representation using tree-like structures |
US5361385A (en) | 1992-08-26 | 1994-11-01 | Reuven Bakalash | Parallel computing system for volumetric modeling, data processing and visualization |
JP3202074B2 (ja) | 1992-10-21 | 2001-08-27 | 富士通株式会社 | 並列ソート方式 |
JPH06223198A (ja) | 1993-01-26 | 1994-08-12 | Hitachi Ltd | 光線追跡による画像生成装置及び方法 |
US5650862A (en) | 1994-07-25 | 1997-07-22 | Canon Kabushiki Kaisha | Image signal processing apparatus with improved pixel parallel/line parallel conversion |
US5793379A (en) * | 1995-04-03 | 1998-08-11 | Nvidia Corporation | Method and apparatus for scaling images having a plurality of scan lines of pixel data |
JP3728858B2 (ja) * | 1996-12-20 | 2005-12-21 | ソニー株式会社 | 演算装置の演算方法、記憶媒体及び演算装置 |
US6065005A (en) | 1997-12-17 | 2000-05-16 | International Business Machines Corporation | Data sorting |
WO2000004494A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing system with multiple strip breakers |
WO2000010372A2 (en) | 1998-08-20 | 2000-03-02 | Apple Computer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
US6549907B1 (en) | 1999-04-22 | 2003-04-15 | Microsoft Corporation | Multi-dimensional database and data cube compression for aggregate query support on numeric dimensions |
US6489955B1 (en) | 1999-06-07 | 2002-12-03 | Intel Corporation | Ray intersection reduction using directionally classified target lists |
SG93211A1 (en) | 1999-07-28 | 2002-12-17 | Univ Singapore | Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications |
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 |
US6738518B1 (en) | 2000-05-12 | 2004-05-18 | Xerox Corporation | Document image decoding using text line column-based heuristic scoring |
US7495664B2 (en) | 2000-06-19 | 2009-02-24 | Mental Images Gmbh | Instant ray tracing |
US6633882B1 (en) | 2000-06-29 | 2003-10-14 | Microsoft Corporation | Multi-dimensional database record compression utilizing optimized cluster models |
US6895115B2 (en) * | 2001-04-23 | 2005-05-17 | The United States Of America As Represented By The United States National Aeronautics And Space Administration | Method for implementation of recursive hierarchical segmentation on parallel computers |
US7580927B1 (en) | 2001-05-29 | 2009-08-25 | Oracle International Corporation | Quadtree center tile/boundary tile optimization |
US6879980B1 (en) | 2001-06-29 | 2005-04-12 | Oracle International Corporation | Nearest neighbor query processing in a linear quadtree spatial index |
US7024414B2 (en) | 2001-08-06 | 2006-04-04 | Sensage, Inc. | Storage of row-column data |
CN1315040C (zh) * | 2002-01-08 | 2007-05-09 | 北京南思达科技发展有限公司 | 一种逻辑可重组电路 |
US6943796B2 (en) | 2002-07-22 | 2005-09-13 | Sun Microsystems, Inc. | Method of maintaining continuity of sample jitter pattern across clustered graphics accelerators |
US7194125B2 (en) | 2002-12-13 | 2007-03-20 | Mitsubishi Electric Research Laboratories, Inc. | System and method for interactively rendering objects with surface light fields and view-dependent opacity |
US7146486B1 (en) | 2003-01-29 | 2006-12-05 | S3 Graphics Co., Ltd. | SIMD processor with scalar arithmetic logic units |
US20050177564A1 (en) | 2003-03-13 | 2005-08-11 | Fujitsu Limited | Server, method, computer product, and terminal device for searching item data |
US7403944B2 (en) | 2003-04-21 | 2008-07-22 | Gerald Budd | Reduced comparison coordinate-value sorting process |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
DE102004007835A1 (de) | 2004-02-17 | 2005-09-15 | Universität des Saarlandes | Vorrichtung zur Darstellung von dynamischen komplexen Szenen |
US7580977B1 (en) * | 2004-04-29 | 2009-08-25 | Cisco Technology, Inc. | System for using text terminal for the deaf (TTD) devices for internet instant messaging and chat sessions |
US7616782B2 (en) | 2004-05-07 | 2009-11-10 | Intelliview Technologies Inc. | Mesh based frame processing and applications |
US7348975B2 (en) | 2004-12-28 | 2008-03-25 | Intel Corporation | Applications of interval arithmetic for reduction of number of computations in ray tracing problems |
EP1783604A3 (en) | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US7728841B1 (en) | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
CN101371263A (zh) | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理系统中处理多媒体数据的算法步骤的方法和装置 |
TWI361379B (en) * | 2006-02-06 | 2012-04-01 | Via Tech Inc | Dual mode floating point multiply accumulate unit |
US7903125B1 (en) | 2006-02-07 | 2011-03-08 | Adobe Systems Incorporated | Compact clustered 2-D layout |
US7933940B2 (en) | 2006-04-20 | 2011-04-26 | International Business Machines Corporation | Cyclic segmented prefix circuits for mesh networks |
US20070264023A1 (en) | 2006-04-26 | 2007-11-15 | Virgin Islands Microsystems, Inc. | Free space interchip communications |
US8261270B2 (en) | 2006-06-20 | 2012-09-04 | Google Inc. | Systems and methods for generating reference results using a parallel-processing computer system |
EP3413198A1 (en) | 2007-04-11 | 2018-12-12 | Apple Inc. | Data parallel computing on multiple processors |
US8286196B2 (en) | 2007-05-03 | 2012-10-09 | Apple Inc. | Parallel runtime execution on multiple processors |
US8341611B2 (en) | 2007-04-11 | 2012-12-25 | Apple Inc. | Application interface on multiple processors |
US8081181B2 (en) | 2007-06-20 | 2011-12-20 | Microsoft Corporation | Prefix sum pass to linearize A-buffer storage |
US8996846B2 (en) * | 2007-09-27 | 2015-03-31 | Nvidia Corporation | System, method and computer program product for performing a scan operation |
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 |
US8284188B1 (en) | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US8264484B1 (en) | 2007-10-29 | 2012-09-11 | Nvidia Corporation | System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume |
US8065288B1 (en) | 2007-11-09 | 2011-11-22 | Nvidia Corporation | System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture |
US8243083B1 (en) | 2007-12-04 | 2012-08-14 | Nvidia Corporation | System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner |
US20100076941A1 (en) | 2008-09-09 | 2010-03-25 | Microsoft Corporation | Matrix-based scans on parallel processors |
US8321492B1 (en) | 2008-12-11 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm |
-
2007
- 2007-11-15 US US11/940,782 patent/US8661226B2/en active Active
-
2008
- 2008-10-09 JP JP2008263158A patent/JP2009169935A/ja active Pending
- 2008-11-11 CN CN200810172720.0A patent/CN101436121B/zh not_active Expired - Fee Related
- 2008-11-12 TW TW097143617A patent/TWI398779B/zh active
- 2008-11-14 KR KR1020080113250A patent/KR20090050977A/ko not_active Application Discontinuation
Non-Patent Citations (4)
Title |
---|
CSNG199800525003, 佐藤 和博 KAZUHIRO SATO, "PRAMアルゴリズムのマルチスレッドアーキテクチャへのインプリメントと評価 Implementing the PRAM Al", 情報処理学会研究報告 Vol.98 No.28 IPSJ SIG Notes Vol.98 No.28, 19980320, pp.39−46, JP, 社団法人情報処理学会 Information Processing Socie * |
CSNG199801009005, 宮下 健輔 Kensuke MIYASHITA, "再構成アレー上の接頭部和問題について An Algorithm for Computing Prefix Sum on a Reconfigurable Arra", 電子情報通信学会論文誌 D−I Vol.J77−D−I No.10 THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFO, 19941025, pp.703−711, JP, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO * |
JPN6010030846, 宮下 健輔 Kensuke MIYASHITA, "再構成アレー上の接頭部和問題について An Algorithm for Computing Prefix Sum on a Reconfigurable Arra", 電子情報通信学会論文誌 D−I Vol.J77−D−I No.10 THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFO, 19941025, pp.703−711, JP, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO * |
JPN6010030847, 佐藤 和博 KAZUHIRO SATO, "PRAMアルゴリズムのマルチスレッドアーキテクチャへのインプリメントと評価 Implementing the PRAM Al", 情報処理学会研究報告 Vol.98 No.28 IPSJ SIG Notes Vol.98 No.28, 19980320, pp.39−46, JP, 社団法人情報処理学会 Information Processing Socie * |
Also Published As
Publication number | Publication date |
---|---|
TW200928780A (en) | 2009-07-01 |
TWI398779B (zh) | 2013-06-11 |
KR20090050977A (ko) | 2009-05-20 |
CN101436121B (zh) | 2014-12-17 |
US20090132878A1 (en) | 2009-05-21 |
US8661226B2 (en) | 2014-02-25 |
CN101436121A (zh) | 2009-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009169935A (ja) | 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 | |
Dakkak et al. | Accelerating reduction and scan using tensor core units | |
US20210311734A1 (en) | Generalized acceleration of matrix multiply accumulate operations | |
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
CN106598545B (zh) | 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体 | |
CN106484362B (zh) | 利用使用者指定二维定点算术运算的装置 | |
Yan et al. | yaSpMV: Yet another SpMV framework on GPUs | |
US8782645B2 (en) | Automatic load balancing for heterogeneous cores | |
KR100997024B1 (ko) | 스캔 연산을 수행하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체 | |
US20220405098A1 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US20210158155A1 (en) | Average power estimation using graph neural networks | |
Ballard et al. | Communication-optimal parallel and sequential Cholesky decomposition | |
Zierke et al. | FPGA acceleration of the phylogenetic likelihood function for Bayesian MCMC inference methods | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
Vidal et al. | A multi-GPU implementation of a cellular genetic algorithm | |
JP6659724B2 (ja) | 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法 | |
Shivdikar et al. | Accelerating polynomial multiplication for homomorphic encryption on GPUs | |
KR20200052277A (ko) | 설정가능한 하드웨어 런타임 최적화 | |
Liu et al. | Towards high-bandwidth-utilization spmv on fpgas via partial vector duplication | |
Chu et al. | Efficient Algorithm Design of Optimizing SpMV on GPU | |
Nguyen et al. | An algorithm for non-deterministic object distribution in P systems and its implementation in hardware | |
US8707240B2 (en) | Structured placement for bit slices | |
Nunez-Yanez et al. | Parallelizing workload execution in embedded and high-performance heterogeneous systems | |
US20240028555A1 (en) | Multi-dimensional network sorted array intersection | |
US20240220255A1 (en) | Data parallelism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100608 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101116 |