JP2009169935A - 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 - Google Patents

並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 Download PDF

Info

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
Application number
JP2008263158A
Other languages
English (en)
Inventor
Michael J Garland
ジェイ. ガーランド マイケル
Samuli M Laine
エム. ライネ サムーリ
Timo O Aila
オー. アイラ ティーモ
David Patrick Luebke
パトリック ルーブク デイヴィッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of JP2009169935A publication Critical patent/JP2009169935A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/506Indexing scheme relating to groups G06F7/506 - G06F7/508
    • G06F2207/50632-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

Description

[0001]本発明は、スキャン演算に関し、より具体的には、並行処理アーキテクチャを使用してスキャン演算を実施することに関する。
[0002]並列プロセッサアーキテクチャは一般に、幅広い様々な計算アルゴリズムを実施するために使用される。こうしたアーキテクチャを使用して一般に実施されるアルゴリズムの一例は、スキャン演算(例えば「all−prefix−sums」演算など)である。こうした1つのスキャン演算が、表1に定義されている。
[0003]具体的には、配列[a,a,…,an−1]、及び「I」を単位元とする演算子

与えられると、表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次記憶装置

Claims (20)

  1. スキャン演算命令を受け取るステップと、
    前記スキャン演算命令に応答して、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するステップと
    を含む方法。
  2. 前記スキャン演算が接頭部和スキャン演算を含む、請求項1に記載の方法。
  3. 前記スキャン演算が包括的スキャン演算を含む、請求項1に記載の方法。
  4. 前記スキャン演算が排他的スキャン演算を含む、請求項1に記載の方法。
  5. 前記並列プロセッサアーキテクチャが前記処理要素間の調整のためのもの、請求項1に記載の方法。
  6. 前記調整が、書き込まれる結果の宛先に関する調整を含む、請求項5に記載の方法。
  7. 前記処理要素がそれぞれ、複数のスレッドを並列に実行する、請求項1に記載の方法。
  8. 前記スキャン演算が、前記並列プロセッサアーキテクチャの複数の機能ユニットを使用して実施される、請求項1に記載の方法。
  9. 前記機能ユニットが加算器を含む、請求項8に記載の方法。
  10. 前記機能ユニットがブール論理演算子を含む、請求項8に記載の方法。
  11. 前記機能ユニットが算術及び論理演算子を含む、請求項8に記載の方法。
  12. 前記並列プロセッサアーキテクチャが複数レベルの機能ユニットを含む、請求項8に記載の方法。
  13. 前記レベルの数が前記処理要素の数より小さい、請求項12に記載の方法。
  14. 前記レベルの数が前記処理要素の数の対数より小さい、請求項12に記載の方法。
  15. 前記並列プロセッサアーキテクチャが、マルチビット値の個々のビットのスキャンを個々に実施し、結果をビットシフトした後に前記個々のスキャンの結果を合計することによって前記マルチビット値に対する前記スキャン演算を実施する、請求項1に記載の方法。
  16. 前記並列プロセッサアーキテクチャが1つ又は複数の単一命令多重データプロセッサを含む、請求項1に記載の方法。
  17. 前記並列プロセッサアーキテクチャがグラフィックスプロセッサを含む、請求項1に記載の方法。
  18. コンピュータ読取り可能媒体内に具体化されたコンピュータプログラム製品であって、
    スキャン演算命令に応答して、複数の処理要素を備えた並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのコンピュータコードを備えるコンピュータプログラム製品。
  19. 複数の処理要素を含む並列プロセッサアーキテクチャと、
    前記並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するための命令と
    を備える装置。
  20. 前記並列プロセッサアーキテクチャが、バスを介してメモリ及びディスプレイと通信したままの状態である、請求項19に記載の装置。
JP2008263158A 2007-11-15 2008-10-09 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品 Pending JP2009169935A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
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