JP6453685B2 - 演算制御装置、演算制御方法及び演算制御プログラム - Google Patents
演算制御装置、演算制御方法及び演算制御プログラム Download PDFInfo
- Publication number
- JP6453685B2 JP6453685B2 JP2015063957A JP2015063957A JP6453685B2 JP 6453685 B2 JP6453685 B2 JP 6453685B2 JP 2015063957 A JP2015063957 A JP 2015063957A JP 2015063957 A JP2015063957 A JP 2015063957A JP 6453685 B2 JP6453685 B2 JP 6453685B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- accuracy
- processing function
- processing
- graph
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/50—Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Description
OpenVXコードでは、まずvx〇〇Node()関数群(例えば、処理関数xvThresholdNode(graph,in,thres,thout)など)によりグラフ構造を定義する。また、vxVerifyGraph()関数によりグラフ構造を解析し、グラフ中に表される処理の並列性や処理順序を決定する。そして、vxProcessGraph()関数によりグラフに係る処理を実行する。
図11に示したグラフでは、入力画像inについてvxThresholdノードで二値化処理を行った後、vxSubtractノード、1回目のvxAddノードでそれぞれ減算、加算を行い、最後にそれらの結果を2回目のvxAddノードで加算している。この例では、vxThresholdノードを最初に処理する必要があるが、vxSubtractノードと1回目のvxAddノードとはどちらを先に処理しても良く、並列に処理しても良い。
なお、ここでいうグラフは有向グラフ(Directed Acyclic Graph)である。
この例では、X方向及びY方向のエッジ成分を算出するvxSobel3x3ノードの出力sobelx及びsobelyを入力としてvxPhaseノードがエッジ方向を算出する。そして、算出したエッジ方向phaseを入力としてvxHistogramノードが呼び出される。
ここで、例えば、画像認識アプリの一つであるHOG(Histogram Of Gradient)アプリのヒストグラム算出処理(vxHistogramノード)では、通常は8、9方向程度の3、4bit精度で十分である。
図13はC言語で記述したプログラムの例を示す図である。
例えば、図の左のようにプログラムを書くと関数Bの後に関数Cが実行され、図の右のようにプログラムを書くと関数Cの後に関数Bが実行される。つまり、関数Bと関数Cとを並列に実行して良いかどうかは表現されていない。
OpenVXでは、C言語プログラム上でグラフ構造を定義しており、OpenVX対応デバイスが備えるグラフマネージャが上記プログラムを解釈し、プログラム上で定義されているグラフ構造を解析し、並列性を抽出することができる。このため、ユーザがターゲット・デバイスの詳細を知らずに記述したOpenVXコードであっても、グラフマネージャを介することによりターゲット・デバイスに最適な関数の割り当てを実現できる。
この性能低下の原因は、前述したように、後続する処理で必要な精度が低いにも拘わらず、ユーザが、先行する処理について、高い精度であることが厳密に定義された処理を指定してしまうことにある。
そこで、無駄な演算を回避して、ユーザが処理精度のことを気にしなくても処理を効率化して性能向上を享受できる演算制御装置、演算制御方法及びプログラムが望まれていた。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本発明の態様としては有効である。
一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
本実施の形態1に係る演算制御装置は、OpenVXデバイスとなるもので、グラフ中のノード間の接続関係を解析し、後続ノードの必要精度に応じて、先行ノードの処理精度を算出し、先行ノードに処理精度の異なる派生ノードが登録されている場合に、必要十分な処理精度のノードで置き換えて、グラフに係る処理を実行する。
図1は本実施の形態1に係る演算制御装置1の概略構成を示すブロック図である。
演算制御装置1は、プログラムメモリ10、プロセッサ20、データメモリ30、アクセラレータ40などを備える。
プログラムメモリ10は、main関数から始まる応用プログラム及びグラフマネージャプログラムを記憶する。応用ブログラムは、図11または図12に示したような、プログラマが記述したOpenVXコードをコンパイラがコンパイルして、実行形式(例えば、exe形式)のプログラムとしたものである。
データメモリ30は、プロセッサ20が解析したグラフ構造を記憶する。また、データメモリ30は、後述するカーネル情報、処理関数情報などを記憶する。
アクセラレータ40は、プロセッサ20が解析し、設定したグラフを実行する。
図2は本実施の形態1に係る演算制御装置1上で動く応用プログラムの処理手順を示すフローチャートである。
応用プログラムでは、まず、グラフ構造の定義により、グラフを作成する(ステップS10)。つまり、必要なノードを生成して、それらの間の接続関係を設定する。
図3は本実施の形態1に係る想定グラフ及びグラフ情報を示す図である。グラフ情報は、プロセッサ20がグラフマネージャプログラム及び応用プログラムを実行したときに、グラフマネージャとして、後述するカーネル情報、処理関数情報などを参照して作成するものである。
カーネル情報には、各カーネルについて、そのカーネルを実現する処理関数が1つ以上登録されている。例えば、vxPhaseカーネルには、処理関数vxPhaseKernel()及び処理関数vxPhaseKernelFast()が登録されている。
処理関数情報には、各処理関数について、引数毎の引数名、入出力方向及び精度が登録されている。例えば、処理関数vxPhaseKernel()では、3番目の引数は、引数名がoutであり、出力引数であり、その精度は8bitである。また、処理関数vxPhaseKernelFast()では、3番目の引数は、引数名がoutであり、出力引数であり、その精度は3bitである。
図6は本実施の形態1に係る処理関数vxVerifyGraph()の詳細な処理手順を示すフローチャートである。ステップS20の処理関数vxVerifyGraph()はステップS210〜ステップS230で構成される(ステップS20の後にステップS210〜ステップS230が続くのではない)。
次に、グラフ中のノードを開始ノードから順にたどり、入出力の型が一致しているかどうか調べる(ステップS220)。入出力の型が一致していないノードがあれば(ステップS220のNo)、やはりエラーメッセージを出力し(ステップS240)、終了するなどの動作を行う。
まず、図3に示したグラフの各ノードについて、出力精度の異なる複数の処理関数を持っているノードを探す。図4に示したカーネル情報のように、ノードID=2のvxPhaseノードが、処理関数vxPhaseKernel()と処理関数vxPhaseKernelFast()とを持っていることが分かる。
次に、vxPhaseノードに後続するvxHistogramノードで必要な入力精度を調べる。図5に示した処理関数情報のように、処理関数vxHistogramKernel()の入力引数dirの精度が3bitであることが分かる。
また、後続するノードの必要精度として、後続するノードの入力精度以外の精度を用いたり、後続するノードの必要精度と比較する先行するノードの精度として、先行するノードの出力精度以外を用いたりすることも可能である。
図7は本実施の形態1に係る処理関数vxProcessGraph()の詳細な処理手順を示すフローチャートである。ステップS30の処理関数vxProcessGraph()はステップS310〜ステップS350で構成される。
そして、グラフ中のノードにおいて、未実行状態で、かつ、実行可能な(入力引数に接続されているノードがすべて実行完了している)ノードを列挙する(ステップS320)。このとき、入力端子inは常に実行完了として扱う。
最後に、グラフ中の全ノードが実行完了状態かを判断し(ステップS350)、全ノードが実行完了状態ではないとき(ステップS350のNo)はステップS320に戻り、全ノードが実行完了状態のとき(ステップS350のYes)は処理関数vxProcessGraph()を終了する。
なお、本実施の形態1に係る演算制御方法では、上述したような先行ノードの精度を下げる場合以外に、先行ノードの精度を上げる場合も起こり得る。
本実施の形態2に係る演算制御装置は、精度の異なる複数の処理関数を持っているノードに後続するノードの必要精度属性Pとして、有効ビット幅(情報として用いることが可能なビットの幅)ではなく、後続するノードが処理する値が取り得る種類の数、つまり、後続するノードが入力する情報が取り得る値の数を用いて、複数の処理関数の中から置き換える処理関数を選択するものである。
本実施の形態2に係る演算制御装置の概略構成は、実施の形態1に係る演算制御装置と同様であり、図示及び説明を省略する。
対象となるグラフはvxPhaseノードとvxHistogramノードとが連続するものである。そして、vxPhaseノードには値域0〜255の8bit精度の処理関数vxPhaseKernel()が設定されている。また、vxHistogramノードには内部で値域を0〜31、32〜63、・・・、224〜255の8種類に分類して利用する、つまり、8種類の値しか利用しない3bit精度の処理関数xvHistogramKernel()が設定されている。つまり、vxPhaseノードは後続するvxHistogramノードに対して必要以上の精度の処理関数を用いている。また、vxPhaseノードは、処理関数vxPhaseKernel()の他に、値域0〜7の3bit精度の処理関数vxPhase3Kernel()を有している。
このようにして、本実施の形態2に係る演算制御装置又は演算制御方法では、精度として有効ビット幅以外のものを用いることにより、性能向上を実現できる場合を増やすことができる。
また、本実施の形態2に係る演算制御装置は、複数の処理関数を有するノードと後続するノードとの間に、複数の処理関数を有するノードの出力をスケーリングするノードを追加するものである。
本実施の形態3に係る演算制御装置は、精度の異なる複数の処理関数を持っているノードに対して複数の後続するノードがある場合に、複数の後続ノードの中で最も高い必要精度属性Pを有する後続ノードに合わせて、精度の異なる複数の処理関数の中から先行するノードに設定する処理関数を選択するものである。
本実施の形態3に係る演算制御装置の概略構成も、実施の形態1に係る演算制御装置と同様であり、図示及び説明を省略する。
対象となるグラフはvxPhaseノードに対して、vxAノード、vxBノード、vxCノードが並列的に後続するものである。vxAノード、vxBノード、vxCノードの必要精度はそれぞれ3bit、5bit、4bitである。つまり、後続する3つのノードの中で、vxBノードが最も高い必要精度5bitを有している。
このとき、本実施の形態3に係る演算制御方法では、vxPhaseノードの処理関数を5bit精度の処理関数vxPhase5Kernel()に置き換える。
なお、本実施の形態3に係る演算制御装置又は演算制御方法は、上述したような先行するノードに対して複数の後続ノードが並列する場合に限らず、先行するノードに対して複数の後続ノードが直列する場合についても適用することができる。
以上説明したように、本実施の形態3に係る演算制御装置は、複数の処理関数を有するノードに対して、複数の後続するノードがある場合に、処理関数を選択するときの必要精度として、複数の後続するノードの必要精度の中で最大の必要精度を用いるものである。
本実施の形態4に係る演算制御装置は、コンパイラがOpenVXコードをコンパイルするときに、各ノードの処理内容を解析して必要精度情報を取得するものである。
本実施の形態4に係る演算制御装置の概略構成も、実施の形態1に係る演算制御装置と同様であり、図示及び説明を省略する。
実施の形態1に係る演算制御方法では、各ノードの必要精度情報と置換可能なノード情報とを半導体ベンダが予め用意して、演算制御装置(OpenVXデバイス)1のデータメモリ(図示せず)に記憶させておく。
このようにして、本実施の形態4に係る演算制御装置又は演算制御方法では、ユーザが予めノードの精度を登録しなくても、性能向上を享受することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
10 プログラムメモリ
20 プロセッサ
30 データメモリ
40 アクセラレータ
Claims (6)
- グラフから出力精度の異なる複数の処理関数を有するノードを抽出し、
データメモリに記憶され、ノードが持っている処理関数の引数の入出力方向および入出力精度が登録された処理関数情報を参照して、前記抽出したノードに後続するノードの必要入力精度を調べ、
前記抽出したノードが有する複数の処理関数のうち、前記調べた必要入力精度以上の出力精度であって、最低の出力精度を有する処理関数を選択し、
前記選択した処理関数を前記抽出したノードの処理関数に設定する
演算制御装置。 - 前記抽出したノードに対して、複数の前記後続するノードがある場合に、
前記処理関数を選択するときの前記必要入力精度として、前記複数の後続するノードの必要入力精度の中で最大の必要入力精度を用いる
請求項1記載の演算制御装置。 - 前記後続するノードの必要入力精度として、コンパイラがコード情報をコンパイルしたときに取得したノードの必要入力精度を用いる
請求項1記載の演算制御装置。 - グラフマネージャプログラム及び画像処理プログラムを記憶するプログラムメモリと、
前記グラフマネージャプログラム及び前記画像処理プログラムを実行して、前記画像処理に係るグラフを解析して実行するプロセッサと、
前記解析したグラフを記憶するデータメモリとを備え、
前記プロセッサは、前記データメモリに記憶した前記グラフについて、
出力精度の異なる複数の処理関数を有するノードを抽出し、
前記データメモリに記憶され、ノードが持っている処理関数の引数の入出力方向および入出力精度が登録された処理関数情報を参照して、前記抽出したノードに後続するノードの必要入力精度を調べ、
前記抽出したノードが有する複数の処理関数のうち、前記調べた必要入力精度以上の出力精度であって、最低の出力精度を有する処理関数を選択し、
前記選択した処理関数を前記抽出したノードの処理関数に設定する
演算制御装置。 - グラフから出力精度の異なる複数の処理関数を有するノードを抽出するステップと、
データメモリに記憶され、ノードが持っている処理関数の引数の入出力方向および入出力精度が登録された処理関数情報を参照して、前記抽出したノードに後続するノードの必要入力精度を調べるステップと、
前記抽出したノードが有する複数の処理関数のうち、前記調べた必要入力精度以上の出力精度であって、最低の出力精度を有する処理関数を選択するステップと、
前記選択した処理関数を前記抽出したノードの処理関数に設定するステップと
をコンピュータが実行する演算制御方法。 - 請求項5記載の演算制御方法の各ステップを、コンピュータに実行させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015063957A JP6453685B2 (ja) | 2015-03-26 | 2015-03-26 | 演算制御装置、演算制御方法及び演算制御プログラム |
US15/063,222 US10140538B2 (en) | 2015-03-26 | 2016-03-07 | Computing control device, computing control method, and computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015063957A JP6453685B2 (ja) | 2015-03-26 | 2015-03-26 | 演算制御装置、演算制御方法及び演算制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016184273A JP2016184273A (ja) | 2016-10-20 |
JP6453685B2 true JP6453685B2 (ja) | 2019-01-16 |
Family
ID=56976459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015063957A Active JP6453685B2 (ja) | 2015-03-26 | 2015-03-26 | 演算制御装置、演算制御方法及び演算制御プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10140538B2 (ja) |
JP (1) | JP6453685B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111107274B (zh) * | 2018-10-26 | 2021-01-08 | 北京图森智途科技有限公司 | 一种图像亮度统计方法及成像设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005092855A (ja) * | 2003-09-12 | 2005-04-07 | Kanazawa Inst Of Technology | ソフトウエア開発支援装置およびソフトウエア開発支援方法 |
US10025603B2 (en) * | 2013-02-26 | 2018-07-17 | Nec Corporation | Parallel processing device, parallel processing method, and parallel processing program storage medium |
US9569221B1 (en) * | 2014-09-29 | 2017-02-14 | Amazon Technologies, Inc. | Dynamic selection of hardware processors for stream processing |
US9710876B2 (en) * | 2015-01-16 | 2017-07-18 | Intel Corporation | Graph-based application programming interface architectures with equivalency classes for enhanced image processing parallelism |
-
2015
- 2015-03-26 JP JP2015063957A patent/JP6453685B2/ja active Active
-
2016
- 2016-03-07 US US15/063,222 patent/US10140538B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10140538B2 (en) | 2018-11-27 |
US20160283810A1 (en) | 2016-09-29 |
JP2016184273A (ja) | 2016-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10540350B2 (en) | Source code search engine | |
US9424006B2 (en) | Execution optimization of mobile applications | |
KR102036392B1 (ko) | 스크립트 파일 의존관계 및 로드 시점 관리 기법 | |
CN113703775B (zh) | 一种编译方法、装置、设备及存储介质 | |
US10269087B2 (en) | Language translation using preprocessor macros | |
JP2017062767A5 (ja) | ||
JP2017517821A5 (ja) | ||
CN109791492B (zh) | 流水线相关树查询优化器和调度器 | |
CN106547520B (zh) | 一种代码路径分析方法及装置 | |
JP6903755B2 (ja) | データ統合ジョブ変換 | |
JP6003699B2 (ja) | テストデータ生成プログラム、方法及び装置 | |
JP2015194881A (ja) | コンパイル装置、コンパイラプログラム、コンパイル方法 | |
US10521209B2 (en) | Machine-based normalization of machine instructions | |
KR20200046078A (ko) | 미디어 아이템들에 대해 커스텀 알고리즘들을 실행하기 위한 스케일러블 기술들 | |
JP2017538996A5 (ja) | ||
US20110225570A1 (en) | Program flow route constructor | |
CN113468534B (zh) | 针对安卓应用程序的漏洞检测方法及相关装置 | |
CN105653271B (zh) | 行为树的静态解析、执行以及优化方法和装置 | |
US11068463B2 (en) | System and method for managing log data | |
JP6453685B2 (ja) | 演算制御装置、演算制御方法及び演算制御プログラム | |
US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
US20170344351A1 (en) | Information processing apparatus, compiling management method, and recording medium | |
JP5932707B2 (ja) | 計算機、プログラム及びデータ生成方法 | |
JP2016051367A (ja) | データ解析装置、データ解析方法、および、プログラム。 | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181128 |
|
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: 20181204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181213 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6453685 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |