JP6858239B2 - プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 - Google Patents
プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 Download PDFInfo
- Publication number
- JP6858239B2 JP6858239B2 JP2019218095A JP2019218095A JP6858239B2 JP 6858239 B2 JP6858239 B2 JP 6858239B2 JP 2019218095 A JP2019218095 A JP 2019218095A JP 2019218095 A JP2019218095 A JP 2019218095A JP 6858239 B2 JP6858239 B2 JP 6858239B2
- Authority
- JP
- Japan
- Prior art keywords
- kernel
- processing pipeline
- line buffer
- data
- image
- 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
- 238000012545 processing Methods 0.000 title claims description 86
- 238000000034 method Methods 0.000 title claims description 66
- 230000015654 memory Effects 0.000 claims description 84
- 238000003860 storage Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 description 43
- 125000001475 halogen functional group Chemical group 0.000 description 26
- 230000004927 fusion Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007499 fusion processing Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 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
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000005574 cross-species transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 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
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003362 replicative effect Effects 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
- 230000009466 transformation 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
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を介してどのシート生成部および対応するステンシルプロセッサに接続してもよい。
先に入力ライングループを送信したのと同じラインバッファ装置101_1に送り返すことができる)。
との間で送受信するための異なるダイナミクスを理解することができる。例えば、「完全なグループ」と呼ばれる1つのモードによれば、画像データの完全な全幅のラインが、ラインバッファユニットとシート生成部との間で渡される。「仮想的に高い」と呼ばれる第2のモードによれば、ライングループは最初に全幅行のサブセットと共に渡される。その後、残りの行は、より小さい(全幅未満の)片で順番に渡される。
図3は、ステンシルプロセッサ300の実施形態を示す。図3において見られるように、ステンシルプロセッサは、データ計算ユニット301、スカラープロセッサ302および関連するメモリ303およびI/Oユニット304を含む。データ計算ユニット301
は、実行レーンのアレイ305、二次元シフトアレイ構造306、およびアレイの特定の行または列に関連する別個のランダムアクセスメモリ307を含む。
ーロックビットのビットを監視する。スカラープロセッサが、シート生成部がそのコマンドを完了したことを検出すると、通常の実行が再び開始される。
プロセッサの他の適用例を以下でさらに説明する。
の右端に整列される。両方の実行レーンのレジスタR1は、現在、ステンシルの最上行および中間行の一番右の値の合計を含む。図5fおよび図5gは、両方の実行レーンのステンシルの中間行にわたって左方向に移動する継続的な進行を示す。累積加算は、図5gの処理の終了時に、両方の実行レーンがそれらのそれぞれのステンシルの最上行の値と中間行の値との合計を含むように、継続する。
シフト方向と整合しなければならない(例えば、シフトアウトが右隣に対する場合、シフトインは左隣からでなければならない)。
図7は、仮想画像処理環境701と、実際の画像処理ハードウェア703と、仮想処理環境701のために書かれたよりハイレベルのコードを、実際のハードウェア703が物理的に実行するオブジェクトコードに変換するためのコンパイラ702とを含む、画像プロセッサ技術プラットフォームのハイレベル図である。以下でより詳細に説明するように、仮想処理環境701は、アプリケーションの構成プロセスの容易な視覚化のために開発および調整できるアプリケーションの点で、広く汎用性が高い。開発者704によるプログラムコード開発努力が完了すると、コンパイラ702は、仮想処理環境701内で書かれたコードを、実際のハードウェア703に対して対象とされるオブジェクトコードに変換する。
るロードおよびストア命令を有する命令セットを含む一意的な仮想コードで書かれる。様々な実施態様において、X、Y座標情報は実際にはハードウェアプラットフォームにプログラミングされ、そのコンポーネントの様々なものによって認識/理解される。これは、例えば、X、Y座標を(例えばコンパイラ内で)異なる情報に変換することとは別である。例えば、ステンシルプロセッサ内の二次元シフトレジスタ構造の場合、X、Y座標情報はレジスタシフト移動に変換される。対照的に、ハードウェアプラットフォームの他の部分は、元はより高い仮想コードレベルで表現されるX、Y座標情報を具体的に受け取り、理解してもよい。
ることができる。したがって、様々な実施形態では、特定のライングループを規定するために使用されるライングループの名称または他のデータ構造は、そのライングループを特に識別するためにそれに関連付けられたX、Y座標位置を含むことができる。
うに様々な実施形態を設計することが考えられる(例えば、すべての作成側がライングループに書き込んでしまうまで消費側にサービスを提供することが許可されていない場合など)。
図10aは、仮想環境内で書かれたアプリケーションソフトウェアが取ることができる構造および形態の例を示す。図10aにおいて見られるように、プログラムコードは、入力画像データ1001の1つ以上のフレームを処理して、入力画像データ1001上で何らかの全体的な変換を行い得る。変換は、開発者によって明示されたオーケストレーションされたシーケンスで入力画像データに対して動作するプログラムコード1002の1つ以上のカーネルの動作によって実現される。
実行で高速化できる(例えば、カーネルK1およびK2は同じであり、カーネルK3およびK4は同じである)か、または画像データコンテキストに応じて2つの異なるパイプラインが使用される(例えば、1つのパイプラインは1種類のチャネルを処理し、他のパイプラインは他の種類のチャネルを処理する)。
前述の画像プロセッサの構成および動作の基本原理を前節で説明したが、本節では、カーネルのDAGのより効率的な全体的な実装を行うために、コンパイラがDAGに対して実行できる、ある再構成プロセスについて説明する。上記で示唆したように、パイプラインはDAGの一形態であると理解される。
サンプリングしない他のカーネルよりも多くの二次元シフトレジスタシフト動作を必要とする、より広い画像領域にわたって動作しなければならなくてもよい。
た直後に開始する場合、ハローデータは利用できないことになる。
り得る。したがって、ラインバッファユニットからデータを読み出すのではなく、消費カーネル部分は、代わりに、ステンシルプロセッサにローカルなメモリから出力データを読み出す。
1およびK2に分解され、新たなカーネルK1はサブグラフA〜Dを含み、新たなカーネルK2はサブグラフEおよびFを含む。カーネル分裂分割がコンパイラによって課され得るのは、たとえば、分割されるカーネルKがDAG内の他のカーネルよりも演算負荷が大きい場合、および/またはその命令フットプリントが大きすぎてステンシルプロセッサ命令メモリに収まらない場合である。
部で、コード全体に新たに挿入されることに注意されたい。具体的には、図14の例から、より大きなカーネルKが分割部1401で分割されていることを観察すると、サブグラフDの出力は情報のシートを格納するように修正され、サブグラフEの入力は、情報のシートをロードするように修正されることに注目されたい。
ファユニットとの間の通信にも対応する(ラインバッファは複数のシートで構成されている)。したがって、カーネル分裂前はサブグラフDはラインバッファユニットに直接供給しなかったが、分裂後にはそうする。同様に、カーネル分裂前はサブグラフEはラインバッファユニットからは直接受け取らなかったが、融合後にはそうすることになる。
に)課すべく選択する場所に影響を与える可能性がある。
れるように、消費カーネルK2も、2つの異なるラインバッファユニットからそれが画像の2つの異なる半分について所望する画像データを読み取るために、空間的区分再構成の一部として再構成される(LB_1は左側の画像データを保持し、LB_2は右側の画像データを保持する)。すなわちカーネルK2は、左側の画像を望む場合にはLB_1に要求を出し、右側の画像データを望む場合にはLB_2に要求を出すように再構成される。例えば、K2のアルゴリズムが画像全体上で動作する場合には、K2を再構成して、画像半分を単一の画像に併合することもできる。
とに注目されたい。したがって、これらの元のコマンド/命令はコンパイラによって削除
されることになる。
面領域は、画像フレームのセクション(ライングループなど)であってもよい。
上述した様々な画像プロセッサアーキテクチャの特徴は、必ずしも従来の意味での画像処理に限定されず、したがって、画像プロセッサを再特徴付けしてもよい(またはしなくてもよい)他のアプリケーションに適用することができることを指摘することが適切である。例えば、実際のカメラ画像の処理とは対照的に、アニメーションの作成および/または生成および/またはレンダリングにおいて上述した様々な画像プロセッサアーキテクチャの特徴のいずれかが使用される場合、画像プロセッサはグラフィックス処理ユニットとして徳経づけられてもよい。さらに、上述した画像プロセッサアーキテクチャの特徴は、ビデオ処理、視覚処理、画像認識および/または機械学習などの他の技術的用途にも適用することができる。このように適用されて、画像プロセッサは、より汎用的なプロセッサ(例えば、コンピューティングシステムのCPUの一部であるか、またはその一部である)と(例えばコプロセッサとして)一体化されてもよく、またはコンピューティングシステム内のスタンドアロンプロセッサであってもよい。
ル(RTL)回路記述、ゲートレベル回路記述、トランジスタレベル回路記述もしくはマスク記述、またはそれらの様々な組み合わせの形態をとってもよい。回路記述は、典型的には、コンピュータ可読記憶媒体(例えばCD−ROMまたは他のタイプの記憶技術)上に実施される。
Claims (17)
- 1つ以上のコンピュータによって実行される方法であって、
複数のプロセッサを有するデバイスによって実行されるべき元の処理パイプラインを定義する命令を受け取ることを備え、前記元の処理パイプラインは特定の順序で実行されるべき複数のカーネルを含み、前記方法はさらに、
前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することと、
応答して、複数の処理パイプラインを生成することとを備え、前記複数の処理パイプラインを生成することは、
第1の修正された処理パイプラインを生成することを含み、前記第1の修正された処理パイプラインを生成することは、前記デバイスの内部の内部ラインバッファを参照する前記元の処理パイプラインにおける第1のカーネルの1つ以上のストア命令を、前記デバイスの外部のメモリを参照する1つ以上のそれぞれのストア命令となるよう修正することを含み、前記複数の処理パイプラインを生成することはさらに、
第2の修正された処理パイプラインを生成することを含み、前記第2の修正された処理パイプラインを生成することは、前記内部ラインバッファを参照する前記元の処理パイプラインにおける第2のカーネルの1つ以上のロード命令を、前記デバイスの外部の前記メモリを参照するロード命令となるよう修正することを含む、方法。 - 前記1つ以上のロード命令を修正することは、前記1つ以上のロード命令を、前記第1のカーネルが実行された後に前記デバイスによって実行される命令となるように修正することを含む、請求項1に記載の方法。
- 前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することは、前記元の処理パイプラインによって生成されるデータの量が前記デバイスの内部メモリサイズを超えていると判断することを含む、請求項1または2に記載の方法。
- 前記元の処理パイプラインによって生成されるデータの量が前記内部メモリサイズを超えていると判断することは、前記生成されるデータの量が、前記デバイスのラインバッファのメモリサイズ、前記デバイスのシート生成部のメモリサイズ、または前記デバイスの前記複数のプロセッサのうちの1つの内部メモリサイズを超えていると判断することを含む、請求項3に記載の方法。
- 前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することは、前記複数のカーネルのうちのあるカーネルが計算複雑度の所定の尺度を超えると判断することを含む、請求項1〜4のいずれか1項に記載の方法。
- 前記第1の修正された処理パイプラインに属する第1のカーネルを実行し、その後前記第2の修正された処理パイプラインに属する第2のカーネルを実行するように、前記デバイスの同じプロセッサを割り当てることをさらに備える、請求項1〜5のいずれか1項に記載の方法。
- 前記複数のプロセッサの各々はラインバッファユニットに相互接続され、
前記1つ以上のロード命令を修正することは、前記1つ以上のロード命令を、前記デバイスの外部のメモリから前記ラインバッファユニットにデータをロードするかまたは前記ラインバッファユニットからのデータを前記デバイスの外部の前記メモリにロードするための命令となるよう修正することを含む、請求項1〜6のいずれか1項に記載の方法。 - 前記複数のプロセッサの各々はラインバッファユニットに相互接続され、
前記1つ以上のストア命令を修正することは、前記1つ以上のストア命令を、前記第1のカーネルからの出力を表すデータを前記ラインバッファユニットにストアする命令となるよう修正することを含む、請求項1〜7のいずれか1項に記載の方法。 - システムであって、
1つ以上のコンピュータと1つ以上のストレージデバイスとを含み、前記1つ以上のストレージデバイスには、前記1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに動作を実行させるよう動作可能である命令が格納され、前記動作は、
複数のプロセッサを有するデバイスによって実行されるべき元の処理パイプラインを定義する命令を受け取ることを含み、前記元の処理パイプラインは特定の順序で実行されるべき複数のカーネルを含み、前記動作はさらに、
前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することと、
応答して、複数の処理パイプラインを生成することとを含み、前記複数の処理パイプラインを生成することは、
第1の修正された処理パイプラインを生成することを含み、前記第1の修正された処理パイプラインを生成することは、前記デバイスの内部の内部ラインバッファを参照する前記元の処理パイプラインにおける第1のカーネルの1つ以上のストア命令を、前記デバイスの外部のメモリを参照する1つ以上のそれぞれのストア命令となるよう修正することを含み、前記複数の処理パイプラインを生成することはさらに、
第2の修正された処理パイプラインを生成することを含み、前記第2の修正された処理パイプラインを生成することは、前記内部ラインバッファを参照する前記元の処理パイプラインにおける第2のカーネルの1つ以上のロード命令を、前記デバイスの外部の前記メモリを参照するロード命令となるよう修正することを含む、システム。 - 前記1つ以上のロード命令を修正することは、前記1つ以上のロード命令を、前記第1のカーネルが実行された後に前記デバイスによって実行される命令となるように修正することを含む、請求項9に記載のシステム。
- 前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することは、前記元の処理パイプラインによって生成されるデータの量が前記デバイスの内部メモリサイズを超えていると判断することを含む、請求項9または10に記載のシステム。
- 前記元の処理パイプラインによって生成されるデータの量が前記内部メモリサイズを超えていると判断することは、前記生成されるデータの量が、前記デバイスのラインバッファのメモリサイズ、前記デバイスのシート生成部のメモリサイズ、または前記デバイスの前記複数のプロセッサのうちの1つの内部メモリサイズを超えていると判断することを含む、請求項11に記載のシステム。
- 前記元の処理パイプラインが1つ以上のグラフ分割基準を満たすと判断することは、前記複数のカーネルのうちのあるカーネルが計算複雑度の所定の尺度を超えると判断することを含む、請求項9〜12のいずれか1項に記載のシステム。
- 前記動作は、前記第1の修正された処理パイプラインに属する第1のカーネルを実行し、その後前記第2の修正された処理パイプラインに属する第2のカーネルを実行するように、前記デバイスの同じプロセッサを割り当てることをさらに含む、請求項9〜13のいずれか1項に記載のシステム。
- 前記複数のプロセッサの各々はラインバッファユニットに相互接続され、
前記1つ以上のロード命令を修正することは、前記1つ以上のロード命令を、前記デバイスの外部のメモリから前記ラインバッファユニットにデータをロードするかまたは前記ラインバッファユニットからのデータを前記デバイスの外部の前記メモリにロードするための命令となるよう修正することを含む、請求項9〜14のいずれか1項に記載のシステム。 - 前記複数のプロセッサの各々はラインバッファユニットに相互接続され、
前記1つ以上のストア命令を修正することは、前記1つ以上のストア命令を、前記第1のカーネルからの出力を表すデータを前記ラインバッファユニットにストアする命令となるよう修正することを含む、請求項9〜15のいずれか1項に記載のシステム。 - 請求項1〜8のいずれか1項に記載の方法を1つ以上のコンピュータに実行させるためのコンピュータ可読プログラム。
Applications Claiming Priority (4)
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 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018539837A Division JP6704056B2 (ja) | 2016-02-26 | 2016-12-28 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020061168A JP2020061168A (ja) | 2020-04-16 |
JP6858239B2 true JP6858239B2 (ja) | 2021-04-14 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018539837A Active JP6704056B2 (ja) | 2016-02-26 | 2016-12-28 | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 |
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 (22)
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 |
WO2017163591A1 (ja) * | 2016-03-24 | 2017-09-28 | 富士フイルム株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
US10534639B2 (en) * | 2017-07-06 | 2020-01-14 | Bitfusion.io, Inc. | Virtualization of multiple coprocessors |
JP2019074967A (ja) * | 2017-10-17 | 2019-05-16 | キヤノン株式会社 | フィルタ処理装置およびその制御方法 |
EP3707871B1 (en) | 2017-11-09 | 2022-05-18 | Nchain Holdings Limited | System for recording verification keys on a blockchain |
CN111316615B (zh) | 2017-11-09 | 2024-02-13 | 区块链控股有限公司 | 使用调解器计算机系统确保计算机程序正确执行的系统和方法 |
JP7453911B2 (ja) | 2017-12-13 | 2024-03-21 | エヌチェーン ライセンシング アーゲー | 暗号材料を安全に共有するためのシステム及び方法 |
US10983583B2 (en) * | 2018-08-23 | 2021-04-20 | Apple Inc. | Electronic display reduced blanking duration systems and methods |
JP2022500755A (ja) * | 2018-09-11 | 2022-01-04 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 順次計算dagのための異種スケジューリング |
KR102023855B1 (ko) * | 2018-12-05 | 2019-09-20 | 전자부품연구원 | 딥러닝 하드웨어 가속장치 |
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 |
KR102490539B1 (ko) * | 2019-12-30 | 2023-01-19 | 주식회사 모레 | 딥러닝을 위한 가속기용 프로그램 생성 방법 |
WO2021137669A1 (ko) * | 2019-12-30 | 2021-07-08 | 매니코어소프트주식회사 | 딥러닝을 위한 가속기용 프로그램 생성 방법 |
JP7459954B2 (ja) | 2020-09-28 | 2024-04-02 | 日本電気株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
CN112558938B (zh) * | 2020-12-16 | 2021-11-09 | 中国科学院空天信息创新研究院 | 一种基于有向无环图的机器学习工作流调度方法及系统 |
CN113485712B (zh) * | 2021-04-23 | 2024-05-07 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
BE1029306B1 (de) * | 2021-04-30 | 2023-07-14 | Zebra Technologies | Industrielles ethernet-konfigurationswerkzeug mit vorschaufunktionen |
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 |
EP0293701B1 (en) | 1987-06-01 | 1994-08-10 | Applied Intelligent Systems, Inc. | Parallel neighborhood processing system and method |
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 |
DE59607143D1 (de) | 1996-01-15 | 2001-07-26 | 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 |
AU2941600A (en) | 1999-03-16 | 2000-10-04 | Hamamatsu Photonics K.K. | High-speed vision sensor |
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 |
WO2003088033A1 (en) | 2002-04-09 | 2003-10-23 | University Of Rochester | Multiplier-based processor-in-memory architectures for image and graphics processing |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
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 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
WO2006114642A1 (en) | 2005-04-28 | 2006-11-02 | The University Court Of The University Of Edinburgh | Reconfigurable instruction cell 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 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
US8482640B2 (en) | 2007-09-05 | 2013-07-09 | Tohoku University | Solid-state image sensor and drive method for the same |
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 |
JP5461533B2 (ja) * | 2008-05-30 | 2014-04-02 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ローカル及びグローバルのデータ共有 |
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 |
WO2012105174A1 (ja) | 2011-01-31 | 2012-08-09 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
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 | 晨星半導體股份有限公司 | 影像處理裝置與影像處理方法 |
US9875139B2 (en) * | 2012-05-29 | 2018-01-23 | 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 |
US9684944B2 (en) * | 2015-01-16 | 2017-06-20 | Intel Corporation | Graph-based application programming interface architectures with node-based destination-source mapping for enhanced image processing parallelism |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
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 |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
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 |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit 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 KR KR1020187022160A patent/KR102009906B1/ko active IP Right Grant
- 2016-12-28 EP EP16829467.6A patent/EP3420527B1/en active Active
- 2016-12-28 JP JP2018539837A patent/JP6704056B2/ja 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 |
---|---|
US20200020069A1 (en) | 2020-01-16 |
CN108541321B (zh) | 2023-04-18 |
US20170287103A1 (en) | 2017-10-05 |
TW201810036A (zh) | 2018-03-16 |
JP2019508802A (ja) | 2019-03-28 |
CN108541321A (zh) | 2018-09-14 |
TWI635443B (zh) | 2018-09-11 |
KR102009906B1 (ko) | 2019-08-12 |
KR20180100372A (ko) | 2018-09-10 |
TWI614689B (zh) | 2018-02-11 |
WO2017146816A1 (en) | 2017-08-31 |
US20170249716A1 (en) | 2017-08-31 |
US10387988B2 (en) | 2019-08-20 |
TW201800940A (zh) | 2018-01-01 |
JP2020061168A (ja) | 2020-04-16 |
EP3420527A1 (en) | 2019-01-02 |
JP6704056B2 (ja) | 2020-06-03 |
US10387989B2 (en) | 2019-08-20 |
EP3420527B1 (en) | 2021-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6858239B2 (ja) | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 | |
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
JP6793162B2 (ja) | 画像プロセッサのためのラインバッファユニット | |
JP6793228B2 (ja) | 画像プロセッサのためのシート生成部 | |
JP6764954B2 (ja) | プログラマブル二次元画像プロセッサ上の畳み込みニューラルネットワーク | |
JP6967570B2 (ja) | 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ | |
JP6726752B2 (ja) | 画像プロセッサのためのコンパイラ管理メモリ | |
JP7208920B2 (ja) | ラインバッファユニット単位メモリ割り当ての決定 | |
JP6775088B2 (ja) | 画像プロセッサランタイム効率を向上するためのプログラムコード変形 | |
JP6820428B2 (ja) | マルチコア画像プロセッサ上のアプリケーションソフトウェアの構成 | |
JP6750022B2 (ja) | 画像プロセッサのためのマクロi/oユニット |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191225 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191225 |
|
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: 20210224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210323 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6858239 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |