JP6704056B2 - プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 - Google Patents
プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 Download PDFInfo
- Publication number
- JP6704056B2 JP6704056B2 JP2018539837A JP2018539837A JP6704056B2 JP 6704056 B2 JP6704056 B2 JP 6704056B2 JP 2018539837 A JP2018539837 A JP 2018539837A JP 2018539837 A JP2018539837 A JP 2018539837A JP 6704056 B2 JP6704056 B2 JP 6704056B2
- Authority
- JP
- Japan
- Prior art keywords
- kernels
- kernel
- data
- image
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 69
- 238000012545 processing Methods 0.000 title claims description 64
- 230000015654 memory Effects 0.000 claims description 73
- 125000001475 halogen functional group Chemical group 0.000 claims description 27
- 230000004927 fusion Effects 0.000 claims description 25
- 238000000638 solvent extraction Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 125000002015 acyclic group Chemical group 0.000 claims 8
- 230000011218 segmentation Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 37
- 230000006870 function Effects 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 12
- 230000018109 developmental process Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007499 fusion processing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000005574 cross-species transmission Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
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/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Description
この出願は、2016年2月26日に出願された米国仮出願第62/300,684号「プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 (“Compiler Techniques For Mapping Program Code To A High Performance, Power Efficient, Programmable Image Processing Hardware Platform”)」の利益を主張し、その全体をここに引用により援用する。
本発明の分野は、一般に画像処理に関し、より詳細には、高性能で電力効率のよいプログラマブルな画像処理ハードウェアプラットフォームのようなプログラマブルな画像処理ハードウェアプラットフォームにプログラムコードをマッピングするためのコンパイラ技術に関する。
画像処理は、典型的には、アレイに編成されたピクセル値の処理を含む。ここで、空間的に編成された二次元アレイは、画像の二次元的性質を捕捉する(追加の次元は、時間(例えば二次元画像のシーケンス)およびデータタイプ(例えば色)を含み得る。典型的なケースでは、アレイ化されたピクセル値は、静止画像または動きの画像を捕捉するためにフレームのシーケンスを生成したカメラによって提供される。伝統的な画像プロセッサは、典型的には、2つの極端な側面のいずれかに分類される。
ある方法が記載される。この方法は、それぞれの二次元実行レーンおよびシフトレジスタ回路構造からなるプログラマブルなステンシルプロセッサを有する画像プロセッサの対象とされるプログラムコードをコンパイルすることを備える。プログラムコードは、有向非循環グラフを実現し、ステンシルプロセッサのそれぞれで実行される複数のカーネルからなり、コンパイルすることは、画像プロセッサ内のステンシルプロセッサとは異なる数のカーネルがプログラムコード内に存在することを認識すること、カーネルのうちの少なくとも1つが、カーネルのうちの別のカーネルよりも演算負荷が高いことを認識すること、およびプログラムコードが画像プロセッサのメモリ容量を超えるリソース要件を有することを認識すること、のいずれかを含む。コンパイルすることは、さらに、上記認識することのいずれかに応答して、カーネルの水平融合、カーネルの垂直融合、カーネルの1つの、複数のカーネルへの分裂、カーネルの、複数の空間的に区分されたカーネルへの空間的区分、有向非循環グラフの、より小さなグラフへの分割、のいずれかを実行することを含む。
以下の説明および添付の図面は、本発明の実施形態を例示するために使用される。
a.画像プロセッサハードウェアアーキテクチャおよび動作
図1は、ハードウェアで実現される画像プロセッサのためのアーキテクチャ100の実施形態を示す。画像プロセッサは、例えば、シミュレートされた環境内で仮想プロセッサ用に書かれたプログラムコードを、ハードウェアプロセッサによって実際に実行されるプログラムコードに変換するコンパイラによって対象とされてもよい。図4に示すように、アーキテクチャ100は、複数のラインバッファユニット101_1〜101_Mを含み、それらは、複数のステンシルプロセッサユニット102_1〜102_Nおよび対応するシート生成部ユニット103_1〜103_Nに、ネットワーク104(例えば、ネットワークオンチップ(NOC)(オンチップスイッチネットワーク、オンチップリングネットワークまたは他の種類のネットワークを含む))を介して相互接続される。一実施形態では、どのラインバッファユニットが、ネットワーク104を介してどのシート生成部および対応するステンシルプロセッサに接続してもよい。
図3は、ステンシルプロセッサ300の実施形態を示す。図3において見られるように、ステンシルプロセッサは、データ計算ユニット301、スカラープロセッサ302および関連するメモリ303およびI/Oユニット304を含む。データ計算ユニット301は、実行レーンのアレイ305、二次元シフトアレイ構造306、およびアレイの特定の行または列に関連する別個のランダムアクセスメモリ307を含む。
図7は、仮想画像処理環境701と、実際の画像処理ハードウェア703と、仮想処理環境701のために書かれたよりハイレベルのコードを、実際のハードウェア703が物理的に実行するオブジェクトコードに変換するためのコンパイラ702とを含む、画像プロセッサ技術プラットフォームのハイレベル図である。以下でより詳細に説明するように、仮想処理環境701は、アプリケーションの構成プロセスの容易な視覚化のために開発および調整できるアプリケーションの点で、広く汎用性が高い。開発者704によるプログラムコード開発努力が完了すると、コンパイラ702は、仮想処理環境701内で書かれたコードを、実際のハードウェア703に対して対象とされるオブジェクトコードに変換する。
図10aは、仮想環境内で書かれたアプリケーションソフトウェアが取ることができる構造および形態の例を示す。図10aにおいて見られるように、プログラムコードは、入力画像データ1001の1つ以上のフレームを処理して、入力画像データ1001上で何らかの全体的な変換を行い得る。変換は、開発者によって明示されたオーケストレーションされたシーケンスで入力画像データに対して動作するプログラムコード1002の1つ以上のカーネルの動作によって実現される。
前述の画像プロセッサの構成および動作の基本原理を前節で説明したが、本節では、カーネルのDAGのより効率的な全体的な実装を行うために、コンパイラがDAGに対して実行できる、ある再構成プロセスについて説明する。上記で示唆したように、パイプラインはDAGの一形態であると理解される。
上述した様々な画像プロセッサアーキテクチャの特徴は、必ずしも従来の意味での画像処理に限定されず、したがって、画像プロセッサを再特徴付けしてもよい(またはしなくてもよい)他のアプリケーションに適用することができることを指摘することが適切である。例えば、実際のカメラ画像の処理とは対照的に、アニメーションの作成および/または生成および/またはレンダリングにおいて上述した様々な画像プロセッサアーキテクチャの特徴のいずれかが使用される場合、画像プロセッサはグラフィックス処理ユニットとして徳経づけられてもよい。さらに、上述した画像プロセッサアーキテクチャの特徴は、ビデオ処理、視覚処理、画像認識および/または機械学習などの他の技術的用途にも適用することができる。このように適用されて、画像プロセッサは、より汎用的なプロセッサ(例えば、コンピューティングシステムのCPUの一部であるか、またはその一部である)と(例えばコプロセッサとして)一体化されてもよく、またはコンピューティングシステム内のスタンドアロンプロセッサであってもよい。
Claims (21)
- 方法であって、
プログラマブル処理コアを有する画像プロセッサの対象とされるプログラムコードをコンパイルすることを備え、各処理コアは、二次元実行レーンアレイ回路構造および二次元シフトレジスタアレイ回路構造を含み、前記プログラムコードは、有向非循環グラフを実現し、前記処理コアのうちの異なる処理コアで各々が実行される複数のカーネルからなり、前記コンパイルすることは、
a)前記画像プロセッサ内の処理コアとは異なる数のカーネルが前記プログラムコード内に存在する、と判断することと、
b)上記a)に応答して、前記有向非循環グラフを実現するために用いられるカーネルの数を変更するために、
カーネルの水平融合、
カーネルの垂直融合、
カーネルの、複数の空間的に区分されたカーネルへの空間的区分、
前記有向非循環グラフの、複数の有向非循環グラフへの分割、のいずれかを実行することとを含む、方法。 - 前記カーネルの水平融合は、第1の融合されたカーネルが第2の融合されたカーネルに先行するようにプログラムフローを連結することをさらに含む、請求項1に記載の方法。
- 前記カーネルの水平融合は、前記第1および第2の融合されたカーネルのうちの少なくとも一方について完了ごとに消費される呼び出しを修正することをさらに含む、請求項2に記載の方法。
- 前記修正することは、別の融合されたカーネルよりも完了ごとに消費されるサイクルの数が少ないとして特徴づけられる融合されたカーネルに1つ以上のループを追加することをさらに含む、請求項3に記載の方法。
- 前記カーネルの垂直融合は、消費する融合されたカーネルの開始を遅延させるようプログラムコードを課すことをさらに含む、請求項1に記載の方法。
- 前記遅延させることを課すことにより、前記垂直融合されたカーネルを実行する処理コアの前記二次元実行レーンアレイ回路構造の外側にあるレジスタ空間のハロー領域が、前記消費する融合されたカーネルが依存するデータを含むことを保証する、請求項5に記載の方法。
- 上記a)に関して、カーネルより多くの処理コアが存在する、請求項1〜6のいずれか1項に記載の方法。
- 前記空間的区分は、前記複数の空間的に区分されたカーネルがそれらのそれぞれの画像部分を参照するように、前記複数の空間的に区分されたカーネル内において前記カーネルのX、Y座標値を調整することをさらに含む、請求項1〜7のいずれか1項に記載の方法。
- 前記有向非循環グラフの複数の有向非循環グラフへの分割は、結果として得られるより小さいプログラムのうちの1つの出力において前記画像プロセッサの外部のメモリにデータを格納する命令および/またはコマンドを追加することと、結果として得られるより小さなプログラムのうちの別の1つの入力において前記画像プロセッサの外部のメモリからデータをロードする命令および/またはコマンドを追加することとをさらに含む、請求項1〜8のいずれか1項に記載の方法。
- 前記複数の有向非循環グラフは、前記画像プロセッサ内の、それら自身のそれぞれのラインバッファユニットに書き込むように構成される、請求項9に記載の方法。
- 方法であって、
プログラマブル処理コアを有する画像プロセッサの対象とされるプログラムコードをコンパイルすることを備え、各処理コアは、二次元実行レーンアレイ回路構造および二次元シフトレジスタアレイ回路構造を含み、前記プログラムコードは、有向非循環グラフを実現し、前記処理コアのうちの異なる処理コアで各々が実行される複数のカーネルからなり、前記コンパイルすることは、
a)前記カーネルのうちの少なくとも1つが、前記カーネルのうちの別のカーネルよりも演算負荷が高い、と判断することと、
b)上記a)に応答して、
カーネルの水平融合、
カーネルの垂直融合、
前記カーネルの1つの、複数のカーネルへの分裂、
カーネルの、複数の空間的に区分されたカーネルへの空間的区分、
前記有向非循環グラフの、複数の有向非循環グラフへの分割、のいずれかを実行することとを含む、方法。 - 前記カーネルの水平融合は、第1の融合されたカーネルが第2の融合されたカーネルに先行するようにプログラムフローを連結することをさらに含む、請求項11に記載の方法。
- 前記カーネルの垂直融合は、消費する融合されたカーネルの開始を遅延させるようプログラムコードを課すことをさらに含む、請求項11または12に記載の方法。
- 前記カーネルの1つの、複数のカーネルへの分裂は、さらに、前記複数のカーネルのうちの1つの出力においてデータのシートを格納する命令および/またはコマンドを追加することを含み、前記データのシートは、前記複数のカーネルのうちの前記1つを実行する処理コアの二次元シフトレジスタアレイ構造によって提供され、前記カーネルの1つの、
複数のカーネルへの分裂はさらに、前記複数のカーネルのうちの別の1つの入力においてデータのシートをロードする命令および/またはコマンドを追加することを含み、前記データのシートは、前記複数のカーネルのうちの前記別の1つを実行する処理コアの二次元シフトレジスタアレイ構造にロードされる、請求項11〜請求項13のいずれか1項に記載の方法。 - 前記空間的区分は、前記複数の空間的に区分されたカーネルがそれらのそれぞれの画像部分を参照するように、前記複数の空間的に区分されたカーネル内において前記カーネルのX、Y座標値を調整することをさらに含む、請求項11〜請求項14のいずれか1項に記載の方法。
- 前記有向非循環グラフの複数の有向非循環グラフへの分割は、結果として得られるより小さいプログラムのうちの1つの出力において前記画像プロセッサの外部のメモリにデータを格納する命令および/またはコマンドを追加することと、結果として得られるより小さなプログラムのうちの別の1つの入力において前記画像プロセッサの外部のメモリからデータをロードする命令および/またはコマンドを追加することとをさらに含む、請求項11〜請求項15のいずれか1項に記載の方法。
- 方法であって、
プログラマブル処理コアを有する画像プロセッサの対象とされるプログラムコードをコンパイルすることを備え、各処理コアは、二次元実行レーンアレイ回路構造および二次元シフトレジスタアレイ回路構造を含み、前記プログラムコードは、有向非循環グラフを実現し、前記処理コアのうちの異なる処理コアで各々が実行される複数のカーネルからなり、前記コンパイルすることは、
a)前記プログラムコードが前記画像プロセッサのメモリ容量を超えるリソース要件を有すると判断することと、
b)上記a)に応答して、
前記カーネルの1つの、複数のカーネルへの分裂、
カーネルの、複数の空間的に区分されたカーネルへの空間的区分、
前記有向非循環グラフの、複数の有向非循環グラフへの分割、のいずれかを実行することとを含む、方法。 - 前記空間的区分は、前記複数の空間的に区分されたカーネルがそれらのそれぞれの画像部分を参照するように、前記複数の空間的に区分されたカーネル内において前記カーネルのX、Y座標値を調整することをさらに含む、請求項17に記載の方法。
- 前記有向非循環グラフの複数の有向非循環グラフへの分割は、結果として得られるより小さいプログラムのうちの1つの出力において前記画像プロセッサの外部のメモリにデータを格納する命令および/またはコマンドを追加することと、結果として得られるより小さなプログラムのうちの別の1つの入力において前記画像プロセッサの外部のメモリからデータをロードする命令および/またはコマンドを追加することとをさらに含む、請求項17または請求項18に記載の方法。
- 前記画像プロセッサは、異なる処理コア上で実行される作成カーネルと消費カーネルとの間で画像データを格納および転送するためのラインバッファユニットを備え、複数の有向非循環グラフは、前記画像プロセッサ内の、前記ラインバッファユニットのうちの、それら自身のそれぞれのラインバッファユニットに書き込むように構成される、請求項19に記載の方法。
- 請求項1〜20のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662300684P | 2016-02-26 | 2016-02-26 | |
US62/300,684 | 2016-02-26 | ||
US15/389,113 US10387988B2 (en) | 2016-02-26 | 2016-12-22 | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US15/389,113 | 2016-12-22 | ||
PCT/US2016/068932 WO2017146816A1 (en) | 2016-02-26 | 2016-12-28 | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019218095A Division JP6858239B2 (ja) | 2016-02-26 | 2019-12-02 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019508802A JP2019508802A (ja) | 2019-03-28 |
JP6704056B2 true JP6704056B2 (ja) | 2020-06-03 |
Family
ID=59678542
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018539837A Active JP6704056B2 (ja) | 2016-02-26 | 2016-12-28 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
JP2019218095A Active JP6858239B2 (ja) | 2016-02-26 | 2019-12-02 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019218095A Active JP6858239B2 (ja) | 2016-02-26 | 2019-12-02 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
Country Status (7)
Country | Link |
---|---|
US (3) | US10387988B2 (ja) |
EP (1) | EP3420527B1 (ja) |
JP (2) | JP6704056B2 (ja) |
KR (1) | KR102009906B1 (ja) |
CN (1) | CN108541321B (ja) |
TW (2) | TWI635443B (ja) |
WO (1) | WO2017146816A1 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10204396B2 (en) | 2016-02-26 | 2019-02-12 | Google Llc | Compiler managed memory for image processor |
US10387988B2 (en) * | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
JP6534492B2 (ja) * | 2016-03-24 | 2019-06-26 | 富士フイルム株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
US10534639B2 (en) * | 2017-07-06 | 2020-01-14 | Bitfusion.io, Inc. | Virtualization of multiple coprocessors |
JP2019074967A (ja) * | 2017-10-17 | 2019-05-16 | キヤノン株式会社 | フィルタ処理装置およびその制御方法 |
CN111316615B (zh) | 2017-11-09 | 2024-02-13 | 区块链控股有限公司 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
JP2021502636A (ja) | 2017-11-09 | 2021-01-28 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
CN118449685A (zh) | 2017-12-13 | 2024-08-06 | 区块链控股有限公司 | 安全共享加密材料的系统和方法 |
US10983583B2 (en) * | 2018-08-23 | 2021-04-20 | Apple Inc. | Electronic display reduced blanking duration systems and methods |
US20220043688A1 (en) * | 2018-09-11 | 2022-02-10 | Huawei Technologies Co., Ltd. | Heterogeneous Scheduling for Sequential Compute Dag |
WO2020116672A1 (ko) * | 2018-12-05 | 2020-06-11 | 전자부품연구원 | 딥러닝 하드웨어 가속장치 |
CN110147236B (zh) * | 2019-04-30 | 2023-01-31 | 创新先进技术有限公司 | 代码编译方法及装置 |
US10552121B1 (en) * | 2019-05-07 | 2020-02-04 | Capital One Services, Llc | System and method for dynamic process flow control based on real-time events |
CN110399124B (zh) * | 2019-07-19 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种代码生成方法、装置、设备及可读存储介质 |
DE102019129362B4 (de) | 2019-10-30 | 2023-09-07 | Chie-Hee Cho-Nöth | Vorrichtung und Verfahren zur Messung der Kerntemperatur eines menschlichen oder tierischen Körpers unter MRT-Bedingungen |
WO2021137669A1 (ko) * | 2019-12-30 | 2021-07-08 | 매니코어소프트주식회사 | 딥러닝을 위한 가속기용 프로그램 생성 방법 |
KR102490539B1 (ko) * | 2019-12-30 | 2023-01-19 | 주식회사 모레 | 딥러닝을 위한 가속기용 프로그램 생성 방법 |
JP7459954B2 (ja) * | 2020-09-28 | 2024-04-02 | 日本電気株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
CN112558938B (zh) * | 2020-12-16 | 2021-11-09 | 中国科学院空天信息创新研究院 | 一种基于有向无环图的机器学习工作流调度方法及系统 |
CN112860267B (zh) * | 2021-04-23 | 2021-07-30 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
BE1029306B1 (de) * | 2021-04-30 | 2023-07-14 | Zebra Technologies | Industrielles ethernet-konfigurationswerkzeug mit vorschaufunktionen |
JP2023063815A (ja) | 2021-10-25 | 2023-05-10 | 株式会社Preferred Networks | コンパイラ装置、命令生成方法、プログラム、コンパイル方法及びコンパイラプログラム |
CN116484822B (zh) * | 2023-06-26 | 2023-09-01 | 和创(北京)科技股份有限公司 | 表单字段表达式循环依赖计算方法及装置 |
Family Cites Families (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US156284A (en) | 1874-10-27 | Improvement in railway-car brakes | ||
US4445177A (en) | 1981-05-22 | 1984-04-24 | Data General Corporation | Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions |
DE3851005T2 (de) | 1987-06-01 | 1995-04-20 | Applied Intelligent Syst Inc | Paralleles Nachbarverarbeitungssystem und -Verfahren. |
US4935894A (en) | 1987-08-31 | 1990-06-19 | Motorola, Inc. | Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information |
US5253308A (en) | 1989-06-21 | 1993-10-12 | Amber Engineering, Inc. | Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing |
WO1994009595A1 (en) | 1991-09-20 | 1994-04-28 | Shaw Venson M | Method and apparatus including system architecture for multimedia communications |
JP3482660B2 (ja) | 1993-09-08 | 2003-12-22 | ソニー株式会社 | 画像データ処理装置および画像データ処理方法 |
US5612693A (en) | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
EP0875031B1 (de) | 1996-01-15 | 2001-06-20 | Infineon Technologies AG | Prozessor zur bildverarbeitung |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6366289B1 (en) | 1998-07-17 | 2002-04-02 | Microsoft Corporation | Method and system for managing a display image in compressed and uncompressed blocks |
US6587158B1 (en) | 1998-07-23 | 2003-07-01 | Dvdo, Inc. | Method and apparatus for reducing on-chip memory in vertical video processing |
US7010177B1 (en) | 1998-08-27 | 2006-03-07 | Intel Corporation | Portability of digital images |
US6970196B1 (en) | 1999-03-16 | 2005-11-29 | Hamamatsu Photonics K.K. | High-speed vision sensor with image processing function |
JP3922859B2 (ja) | 1999-12-28 | 2007-05-30 | 株式会社リコー | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6745319B1 (en) | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US6728862B1 (en) | 2000-05-22 | 2004-04-27 | Gazelle Technology Corporation | Processor array and parallel data processing methods |
US6728722B1 (en) | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
US7286717B2 (en) | 2001-10-31 | 2007-10-23 | Ricoh Company, Ltd. | Image data processing device processing a plurality of series of data items simultaneously in parallel |
JP4146654B2 (ja) | 2002-02-28 | 2008-09-10 | 株式会社リコー | 画像処理回路、複合画像処理回路、および、画像形成装置 |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
AU2003221680A1 (en) | 2002-04-09 | 2003-10-27 | The Research Foundation Of State University Of New York | Multiplier-based processor-in-memory architectures for image and graphics processing |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7624174B2 (en) * | 2003-05-22 | 2009-11-24 | Microsoft Corporation | Self-learning method and system for detecting abnormalities |
US20060044576A1 (en) | 2004-07-30 | 2006-03-02 | Kabushiki Kaisha Toshiba | Apparatus for image processing |
US8578389B1 (en) * | 2004-05-04 | 2013-11-05 | Oracle America, Inc. | Method and system for merging directed acyclic graphs representing data flow codes |
US7667764B2 (en) | 2004-06-04 | 2010-02-23 | Konica Minolta Holdings, Inc. | Image sensing apparatus |
JP4219887B2 (ja) | 2004-12-28 | 2009-02-04 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
ATE504043T1 (de) | 2005-04-28 | 2011-04-15 | Univ Edinburgh | Umkonfigurierbares anweisungs-zellen-array |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7953158B2 (en) * | 2005-06-30 | 2011-05-31 | Intel Corporation | Computation transformations for streaming applications on multiprocessors |
JP2007067917A (ja) | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
US7602974B2 (en) | 2005-10-21 | 2009-10-13 | Mobilic Technology (Cayman) Corp. | Universal fixed-pixel-size ISP scheme |
FR2895103B1 (fr) | 2005-12-19 | 2008-02-22 | Dxo Labs Sa | Procede et systeme de traitement de donnees numeriques |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
US20080111823A1 (en) | 2006-11-13 | 2008-05-15 | Faraday Technology Corp. | Graphics processing system |
EP1927949A1 (en) * | 2006-12-01 | 2008-06-04 | Thomson Licensing | Array of processing elements with local registers |
US8321849B2 (en) | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US20080244222A1 (en) | 2007-03-30 | 2008-10-02 | Intel Corporation | Many-core processing using virtual processors |
JP4389976B2 (ja) | 2007-06-29 | 2009-12-24 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
JP4844853B2 (ja) | 2007-09-05 | 2011-12-28 | 国立大学法人東北大学 | 固体撮像素子及びその駆動方法 |
US8174534B2 (en) * | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US7995845B2 (en) * | 2008-01-30 | 2011-08-09 | Qualcomm Incorporated | Digital signal pattern detection and classification using kernel fusion |
US9678775B1 (en) * | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
CN102047241B (zh) * | 2008-05-30 | 2014-03-12 | 先进微装置公司 | 本地与全局数据共享 |
JP4999791B2 (ja) | 2008-06-30 | 2012-08-15 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
US9690591B2 (en) | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
US8456480B2 (en) * | 2009-01-14 | 2013-06-04 | Calos Fund Limited Liability Company | Method for chaining image-processing functions on a SIMD processor |
KR101572879B1 (ko) * | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US20110055495A1 (en) | 2009-08-28 | 2011-03-03 | Qualcomm Incorporated | Memory Controller Page Management Devices, Systems, and Methods |
US8976195B1 (en) | 2009-10-14 | 2015-03-10 | Nvidia Corporation | Generating clip state for a batch of vertices |
US8436857B2 (en) | 2009-10-20 | 2013-05-07 | Oracle America, Inc. | System and method for applying level of detail schemes |
US8595428B2 (en) | 2009-12-22 | 2013-11-26 | Intel Corporation | Memory controller functionalities to support data swizzling |
US8856496B2 (en) | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
US8749667B2 (en) | 2010-08-02 | 2014-06-10 | Texas Instruments Incorporated | System and method for maintaining maximum input rate while up-scaling an image vertically |
US8508612B2 (en) | 2010-09-30 | 2013-08-13 | Apple Inc. | Image signal processor line buffer configuration for processing ram image data |
US8797323B2 (en) * | 2011-01-18 | 2014-08-05 | Intel Corporation | Shadowing dynamic volumetric media |
CN103339604B (zh) | 2011-01-31 | 2016-10-26 | 株式会社索思未来 | 程序生成装置、程序生成方法、处理器装置以及多处理器系统 |
US9092267B2 (en) | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
US20130027416A1 (en) | 2011-07-25 | 2013-01-31 | Karthikeyan Vaithianathan | Gather method and apparatus for media processing accelerators |
US8990827B2 (en) * | 2011-10-11 | 2015-03-24 | Nec Laboratories America, Inc. | Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels |
JP5742651B2 (ja) | 2011-10-15 | 2015-07-01 | コニカミノルタ株式会社 | 画像処理装置、連携方法および連携プログラム |
JP5746100B2 (ja) | 2011-12-27 | 2015-07-08 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
US8823736B2 (en) * | 2012-01-20 | 2014-09-02 | Intel Corporation | Graphics tiling architecture with bounding volume hierarchies |
US10244246B2 (en) | 2012-02-02 | 2019-03-26 | Texas Instruments Incorporated | Sub-pictures for pixel rate balancing on multi-core platforms |
US9235769B2 (en) | 2012-03-15 | 2016-01-12 | Herta Security, S.L. | Parallel object detection method for heterogeneous multithreaded microarchitectures |
TWI520598B (zh) | 2012-05-23 | 2016-02-01 | 晨星半導體股份有限公司 | 影像處理裝置與影像處理方法 |
EP2742425A1 (en) | 2012-05-29 | 2014-06-18 | Qatar Foundation | Graphics processing unit controller, host system, and methods |
US9232139B2 (en) | 2012-07-24 | 2016-01-05 | Apple Inc. | Image stabilization using striped output transformation unit |
US9378181B2 (en) | 2012-11-09 | 2016-06-28 | Intel Corporation | Scalable computing array |
US9424038B2 (en) * | 2012-12-10 | 2016-08-23 | Nvidia Corporation | Compiler-controlled region scheduling for SIMD execution of threads |
US9241142B2 (en) * | 2013-01-24 | 2016-01-19 | Analog Devices Global | Descriptor-based stream processor for image processing and method associated therewith |
US8954992B2 (en) | 2013-03-15 | 2015-02-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Distributed and scaled-out network switch and packet processing |
US20150277904A1 (en) | 2014-03-28 | 2015-10-01 | Roger Espasa | Method and apparatus for performing a plurality of multiplication operations |
US9818166B2 (en) * | 2015-01-16 | 2017-11-14 | Intel Corporation | Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9785423B2 (en) | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US10095479B2 (en) | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
CN105023289A (zh) | 2015-07-08 | 2015-11-04 | 成都梦工厂网络信息有限公司 | 图形图像三维处理平台 |
US10387988B2 (en) * | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10430919B2 (en) * | 2017-05-12 | 2019-10-01 | Google Llc | Determination of per line buffer unit memory allocation |
-
2016
- 2016-12-22 US US15/389,113 patent/US10387988B2/en active Active
- 2016-12-28 WO PCT/US2016/068932 patent/WO2017146816A1/en active Application Filing
- 2016-12-28 CN CN201680080956.4A patent/CN108541321B/zh active Active
- 2016-12-28 JP JP2018539837A patent/JP6704056B2/ja active Active
- 2016-12-28 KR KR1020187022160A patent/KR102009906B1/ko active IP Right Grant
- 2016-12-28 EP EP16829467.6A patent/EP3420527B1/en active Active
- 2016-12-30 TW TW106140542A patent/TWI635443B/zh active
- 2016-12-30 TW TW105144288A patent/TWI614689B/zh active
-
2017
- 2017-06-20 US US15/628,480 patent/US10387989B2/en active Active
-
2019
- 2019-08-01 US US16/529,633 patent/US20200020069A1/en not_active Abandoned
- 2019-12-02 JP JP2019218095A patent/JP6858239B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2020061168A (ja) | 2020-04-16 |
EP3420527B1 (en) | 2021-07-14 |
US20170249716A1 (en) | 2017-08-31 |
JP6858239B2 (ja) | 2021-04-14 |
US10387988B2 (en) | 2019-08-20 |
WO2017146816A1 (en) | 2017-08-31 |
EP3420527A1 (en) | 2019-01-02 |
TWI614689B (zh) | 2018-02-11 |
US10387989B2 (en) | 2019-08-20 |
JP2019508802A (ja) | 2019-03-28 |
KR102009906B1 (ko) | 2019-08-12 |
TWI635443B (zh) | 2018-09-11 |
US20200020069A1 (en) | 2020-01-16 |
TW201800940A (zh) | 2018-01-01 |
KR20180100372A (ko) | 2018-09-10 |
CN108541321A (zh) | 2018-09-14 |
TW201810036A (zh) | 2018-03-16 |
US20170287103A1 (en) | 2017-10-05 |
CN108541321B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6704056B2 (ja) | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 | |
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
JP6793162B2 (ja) | 画像プロセッサのためのラインバッファユニット | |
JP6793228B2 (ja) | 画像プロセッサのためのシート生成部 | |
CN110149802B (zh) | 用于在虚拟图像处理器指令集架构(isa)与具有二维移位阵列结构的目标硬件之间进行转译的编译器 | |
JP6726752B2 (ja) | 画像プロセッサのためのコンパイラ管理メモリ | |
TWI690850B (zh) | 非暫時性之電腦儲存媒體、運算系統及由一或多個電腦執行之方法 | |
JP6750022B2 (ja) | 画像プロセッサのためのマクロi/oユニット | |
JP6820428B2 (ja) | マルチコア画像プロセッサ上のアプリケーションソフトウェアの構成 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181004 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181004 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190903 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191202 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200414 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200511 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6704056 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |