JP6227195B1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents
情報処理装置、情報処理方法及び情報処理プログラム Download PDFInfo
- Publication number
- JP6227195B1 JP6227195B1 JP2017516806A JP2017516806A JP6227195B1 JP 6227195 B1 JP6227195 B1 JP 6227195B1 JP 2017516806 A JP2017516806 A JP 2017516806A JP 2017516806 A JP2017516806 A JP 2017516806A JP 6227195 B1 JP6227195 B1 JP 6227195B1
- Authority
- JP
- Japan
- Prior art keywords
- program
- program element
- architecture
- unit
- functional
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N99/00—Subject matter not provided for in other groups of this subclass
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Databases & Information Systems (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Stored Programmes (AREA)
Abstract
Description
また、分割された複数の機能を、組込みシステム上にどのように実装すれば所望の性能を出せるかということを検討し設計する必要がある。これをアーキテクチャ設計と呼ぶ。
階層化されたプログラムコードを既定の分割条件に従って複数のプログラム要素に分割し、前記複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析部と、
前記解析部により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング部とを有する。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
図1は、実施の形態1に係るアーキテクチャ生成装置100の機能構成例を示す。アーキテクチャ生成装置100は、高位合成装置200及びソフトウェアコンパイラ300に接続されている。
アーキテクチャ生成装置100は、情報処理装置の例である。また、アーキテクチャ生成装置100で行われる動作は情報処理方法の例である。
図2は、アーキテクチャ生成装置100内の記憶部170で記憶されている情報を示す。
図3は、アーキテクチャ生成装置100のハードウェア構成例を示す。
補助記憶装置902には、図1に示すソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムが記憶されている。
そして、これらプログラムがメモリ903にロードされて、プロセッサ901がこれらプログラムを実行する。当該プログラムを実行することで、プロセッサ901が、後述するソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の動作を行う。
図1では、プロセッサ901がソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムを実行している状態を模式的に表している。
なお、解析部120、機能モジュール抽出部130の機能を実現するプログラムは、情報処理プログラムの例である。
また、補助記憶装置902は、図1に示す記憶部170として機能する。すなわち、補助記憶装置902は、図2に示す情報を記憶している。また、メモリ903が、図1に示す記憶部170として機能してもよい。すなわち、メモリ903が、図2に示す情報を記憶するようにしてもよい。
通信装置904は、アーキテクチャ生成装置100が外部装置と通信する際に用いられる。通信装置904は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
入力装置905は、アーキテクチャ生成装置100のユーザが各種情報をアーキテクチャ生成装置100に入力するために用いられる
ディスプレイ906は、アーキテクチャ生成装置100のユーザに各種情報を提示するために用いられる。
機能モデルソースコード171及び非機能要件情報172はアーキテクチャ生成装置100のユーザが生成する。
また、ソースコード取得部110は、取得した機能モデルソースコード171と非機能要件情報172とを、記憶部170に格納する。図2は、ソースコード取得部110により機能モデルソースコード171と非機能要件情報172とが格納された状態を示す。
機能モデルソースコード171は、アーキテクチャ設計の対象となる組込みシステムの複数の機能が記述されているプログラムコードである。
ソースコード取得部110は、例えば図6に示す機能モデルソースコード171を取得する。なお、図6に示す機能モデルソースコード171の詳細は後述する。
非機能要件情報172には、機能モデルソースコード171に記述されている機能に要求される要件である非機能要件が記述される。非機能要件情報172には、例えば、処理性能に関する要件、回路規模に関する要件及び消費電力に関する要件が記述される。
ソースコード取得部110は、例えば図7に示す非機能要件情報172を取得する。なお、図7に示す非機能要件情報172の詳細は後述する。
解析部120は、また、各プログラム要素を解析して、プログラム要素の属性を抽出する。例えば、解析部120は、プログラム要素の属性として、演算子の数、分岐の数等を抽出し、抽出結果を示す機能モデルベクトル173を生成する。
解析部120は、例えば、図14に示す機能モデルベクトル173を生成する。なお、図14に示す機能モデルベクトル173の詳細は後述する。
機能モデルソースコード171は階層化されている。つまり、機能モデルソースコード171はネスト構造になっている。解析部120は、各プログラム要素を解析し、機能モデルソースコード171のネスト構造をパラメータ化する。すなわち、解析部120は、機能モデルソースコード171のネスト構造を解析して、複数のプログラム要素における階層を抽出する。そして、解析部120は、ネスト構造の解析結果を示すネスト数情報185及びネスト構造情報186を生成する。解析部120は、例えば、図19に示すネスト数情報185及び図20に示すネスト構造情報186を生成する。図19に示すネスト数情報185及び図20に示すネスト構造情報186の詳細は後述する。
また、解析部120は、非機能要件情報172を関数などの最小構成単位で分割し、非機能要件ベクトル174を生成する。
解析部120は、例えば、図8に示す非機能要件ベクトル174を生成する。なお、図8に示す非機能要件ベクトル174の詳細は後述する。
また、解析部120は、生成した機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174とを記憶部170に格納する。図2は、解析部120により機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174が記憶部170に格納されている状態を示す。
なお、解析部120により行われる動作は、解析処理に相当する。
抽出ルール175は、機能モデルソースコード171から機能モジュールを抽出するためのルールである。抽出ルール175は、機械学習により得られたルールである。
機能モジュールとは、機能モデルソースコード171を構成するプログラム要素の集合である。機能モジュールには、機能モデルソースコード171で実現される複数のプログラム要素のうちの少なくとも1つのプログラム要素が含まれる。
本実施の形態では、機能モジュール抽出部130は、抽出ルール175に基づいて、機能モデルベクトル173とネスト数情報185とネスト構造情報186を用いて、機能モデルソースコード171のプログラム要素をグルーピングすることで機能モジュールを抽出する。
また、機能モジュール抽出部130は、機能モジュールの抽出結果を示す機能モジュール情報176を生成する。
例えば、機能モジュール抽出部130は、図9に示す機能モジュール情報176を生成する。図9に示す機能モジュール情報176の詳細は後述する。
また、機能モジュール抽出部130は、機能モデルベクトル173に基づき、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報177を生成する。
例えば、機能モジュール抽出部130は、図10に示すデータ入出力関係情報177を生成する。図10に示すデータ入出力関係情報177の詳細は後述する。
機能モジュール抽出部130は、グルーピング部に相当する。また、機能モジュール抽出部130により行われる動作は、グルーピング処理に相当する。
より具体的には、ブロック候補抽出部140は、機能モジュール抽出部130により得られた複数の機能モジュールの各々に、ブロックテンプレート178に基づき、各機能モジュールを実現するデバイスとして、プロセッサ及びプロセッサ以外のハードウェアデバイスのうちのいずれかを指定する。なお、ブロック候補抽出部140が各機能モジュールに割り当てるデバイスをブロック候補という。また、ブロック候補抽出部140は、各ブロック候補の性能及び回路規模を見積り、非機能要件情報172の非機能要件に合致しないブロック候補を除外する。つまり、ブロック候補抽出部140は、機能モジュールごとに、非機能要件に合致するプロセッサ又はハードウェアデバイスをブロック候補として指定する。
そして、ブロック候補抽出部140は、機能モジュールごとのブロック候補の抽出結果が示されるブロック候補抽出結果179を生成する。
つまり、アーキテクチャ候補抽出部150は、機能モデルソースコード171に含まれる複数の機能を実現するコンピュータアーキテクチャの候補、すなわち、組込みシステムのアーキテクチャの候補をアーキテクチャ候補として複数生成する。なお、各アーキテクチャ候補では、ブロック候補の組み合わせが異なる。
そして、ブロック候補抽出部140は、抽出したアーキテクチャ候補が示されるアーキテクチャ候補抽出結果180を生成する。
性能評価部160は、アーキテクチャ候補抽出部150により抽出された複数のアーキテクチャ候補の中から、組込みシステムのアーキテクチャに要求される非機能要件を満たすアーキテクチャ候補を選択する。
そして、性能評価部160は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果181を生成する。
また、性能評価部160は、非機能要件を満たすアーキテクチャ候補が存在しない場合は、非機能要件を満たさないが、ブロック候補抽出部140が生成した複数のアーキテクチャ候補の中で最も非機能要件に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する。
そして、性能評価部160は、選択した近似アーキテクチャ候補の属性と非機能要件との差分をブロック候補抽出部140に通知する。
既存アーキテクチャ情報182は、抽出ルール175を生成するために使用する。
高位合成装置200は、RTL(Register Transfer Level)よりも抽象度が高いC言語、C++言語、SystemC言語などの高級言語を用いて、自動的にRTLを生成する。
高位合成装置200は、具体的には市販されている高位合成ツールにより実現可能である。
ソフトウェアコンパイラ300は、C言語等で書かれたソースコードからターゲットの組込みシステムのプロセッサで実行可能なバイナリファイルを出力する。
ソフトウェアコンパイラ300は、具体的には市販されているコンパイラにより実現可能である。
次に、図4及び図5を参照して、本実施の形態に係るアーキテクチャ生成装置100の動作例を説明する。
機能モデルソースコード171は、組込みシステムの処理機能/システム構成をプログラム言語(C言語など)で記述したプログラムコードである。
図6は、機能モデルソースコード171の例を示す。
機能モデルソースコード171は、図6に示すように一般的なプログラムと同一だが、システムの外部入力/出力に対応する変数は/*external_input*/,/*external_output*/と指定されている。
なお、図6において、ELEM0〜ELEM6は、それぞれプログラム要素を表す。以下、プログラム要素ELEM0〜ELEM6を区別する必要がない場合は、プログラム要素ELEM0〜ELEM6のそれぞれをプログラム要素ELEMxという。
処理性能制約は、特定の処理から別の特定の処理までが制限時間Tth[s]以内に完了するという制約である。
また、回路規模制約は、回路規模がAth[Gate]以内という制約である。
また、消費電力制約は、機能モデルソースコード171により実現される組込みシステムの全体の消費電力がPth[W]以内という制約である。
なお、非機能要件情報172には、処理性能制約、回路規模制約及び消費電力制約以外の非機能要件が記述されていてもよい。例えば、非機能要件情報172に、外部入出力のインタフェースに関する制約又は外部メモリのハードウェアリソースに関する制約が記述されていてもよい。
より具体的には、解析部120は、機能モデルソースコード171を最小分割単位で分割する。本実施の形態では、解析部120は、以下の分割条件に基づき、機能モデルソースコード171を最小分割単位で分割して複数のプログラム要素を得る。
(1)プログラム要素の単位はベーシックブロック(C言語の場合は{ })でくくられた範囲とする(なお、関数は全てインライン展開されるものとする)。
(2)機能モデルソースコード171がネスト構造である場合は、ネストの上位/下位をそれぞれのプログラム要素とする。
(3)ベーシックブロック内の演算数が閾値を超える場合は、ベーシックブロックの出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、分割する。
次に、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかの数値パラメータをプログラム要素ELEMxごとに解析して、機能モデルベクトル173を生成する。
ここでは、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、中間変数の数及びデータの入出力数をプログラム要素ELEMxごとに解析して、機能モデルベクトル173を生成することとする。
解析部120は、例えば、以下の手法で、各パラメータを抽出する。
(1)演算子数
解析部120は、プログラム要素ごとに、プログラム要素内に含まれる“+”、“−”、“*”、“−”、“<<”の個数を求める。
なお、解析部120は、積和演算に含まれる積演算子と和演算子とを個別に計数せずに、積和演算子として計数する。例えば、解析部120は、積和演算“y=a+b*c”に対して、“+”、“*”を別々に計数せずに、1つの積和演算子として計数する
また、解析部120は、定数乗算に含まれる乗算演算子と変数乗算に含まれる乗算演算子とを区別して計数する。例えば、解析部120は、定数乗算(例えば、y=a*3)の乗算演算子と変数乗算(例えば、y=a*b)の乗算演算子は区別して計数する。
解析部120は、同様に、定数除算に含まれる除算演算子と変数除算に含まれる除算演算子とを区別して計数する。
(2)分岐数
解析部120は、機能モデルソースコード171に含まれるif/elseの個数を求める。また、解析部120は、機能モデルソースコード171にswitchがある場合はcaseの個数の合計値を求める。
(3)ループ数
解析部120は、最外ループのループ数を計数する。なお、ループ数可変の場合は、解析部120は、最大値を計数する。
(4)中間変数個数
解析部120は、プログラム要素ごとに、当該プログラム要素内に含まれる中間変数の個数を求める。より具体的には、解析部120は、他のプログラム要素で使用されておらず、当該プログラム要素で参照された後に値が代入されている変数の個数を求める。
解析部120は、例えば、以下のtmpのような変数を計数する。
int tmp;
for(int i=0;i<N;i++){
out[i]=tmp;
tmp=func(in[i]);
}
(5)組込みシステム外部からの入力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で/*external_input*/で指定された変数が参照される回数の合計値を求める。
(6)組込みシステム外部への出力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で/*external_output*/で指定された変数に代入される回数の合計値を求める。
(7)他の機能からの入力数
解析部120は、プログラム要素ごとに、他のプログラム要素で代入された後に、当該プログラム要素内で参照されている、配列ではない変数の個数を計数する。
解析部120は、例えば、以下のvalのような変数を計数する。
//他のプログラム要素
{
val=func1();
}
//当該プログラム要素
{
func2(val+b);
}
(8)他の機能への出力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で代入された後、他のプログラム要素内で参照されている、配列ではない変数の個数を計数する。すなわち、解析部120は、上記(7)の逆のパタンとなる変数の個数を計数する。
(9)配列入力数
解析部120は、プログラム要素ごとに、(a)当該プログラム要素で参照される配列の型と、(b)当該配列への当該プログラム要素でのアクセス数と、(c)当該プログラム要素で当該配列が参照される際のアクセスインデックスと当該プログラム要素よりも前に実行されるプログラム要素で当該配列に値が代入される際のアクセスインデックスとの差とを抽出する。なお、アクセスインデックスの差が閾値以上にならない場合は、解析部120は、アクセスインデックスの差として、既定の最大値を用いる。
解析部120は、例えば以下の場合に、(b)アクセス数としてNを抽出し、(c)アクセスインデックスの差として、(i+3)−i=3を抽出する。
//他のプログラム要素
for(int i=0;i<N;i++){
array[i]=i*i;
}
//当該プログラム要素
for(int i=0;i<N;i++){
out[i]=array[i+3];
}
(10)配列出力数
解析部120は、プログラム要素ごとに、(a)当該プログラム要素で値が代入される配列の型と、(b)当該配列への当該プログラム要素でのアクセス数と、(c)当該プログラム要素で当該配列に値が代入される際のアクセスインデックスと当該プログラム要素よりも後に実行されるプログラム要素で当該配列が参照される際のアクセスインデックスとの差とを抽出する。すなわち、解析部120は、上記(9)の逆のパタンとなる変数の個数を計数する。
(11)ネスト数
機能モデルソースコード171が階層化されている場合、すなわち、機能モデルソースコード171がネスト構造である場合は、解析部120は、各プログラム要素のネストの段数を判定する。ネストの段数を、以下ネスト数という。
図19は、解析部120が抽出した各プログラム要素のネスト数が示されるネスト数情報185の例を示す。図19は、図6の機能モデルソースコード171に対して生成されたネスト数情報185の例である。最上位のプログラム要素であるELEM0はネスト数0となり、その下位のプログラム要素であるELEM1、ELEM2、ELEM4はネスト数1となる。また、ELEM5、ELEM6は機能モデルソースコード171上ではネスト構造になっていないが、ベーシックブロック内の演算数が閾値を超えるとして、ELEM4から分割されている。このため、ELEM5及びELEM6は、ELEM4の下位階層として扱われ、ネスト数は2となる。
(12)下位プログラム要素
解析部120は、プログラム要素ごとに、当該プログラム要素に下位のプログラム要素が存在するか否かを解析する。
図20は、解析部120の解析結果が示されるネスト構造情報186の例を示す。図20のネスト構造情報186では、プログラム要素に下位のプログラム要素が存在する場合は、“1”が設定される。但し、図20のネスト構造情報186では、直下のプログラム要素に対してのみ“1”が設定される。例えば、ELEM0は、直下のプログラム要素としてELEM1、ELEM2、ELEM4が存在するため、ELEM0の行において、ELEM1、ELEM2、ELEM4の行に“1”が設定されている。ELEM3、ELEM5、ELEM6はELEM0の直下のプログラム要素ではないため、“0”が設定されている。このようにして、解析部120は、機能モデルソースコード171でのネスト構造をパラメータ化している。
図14の機能モデルベクトル173では、作図上の理由から、ELEM0〜ELEM3についてのみ図示しているが、プログラム要素ELEM0〜ELEM6の各々に対して、演算子(加算、減算、定数乗算、変数乗算、定数除算、変数除算、代入、積和)の数、分岐の数、ループの数、中間変数の数及びデータの入出力数が示される。
なお、入力の欄では、列に入力元のプログラム要素が記述され、行に入力先のプログラム要素が記述される。また、出力の欄では、列に出力先のプログラム要素が記述され、行に出力元のプログラム要素が記述される。図14の例では、外部からプログラム要素ELEM0にデータが渡される。また、プログラム要素ELEM0からプログラム要素ELEM1及びプログラム要素ELEM2にデータが渡される。また、プログラム要素ELEM1及びプログラム要素ELEM2からプログラム要素ELEM3にデータが渡される。
より具体的には、解析部120は、非機能要件情報172から制約値を抽出し、抽出した制約値を用いて非機能要件ベクトル174を生成する。
図7に示す非機能要件情報172が与えられた場合は、解析部120は、図8に示すような非機能要件ベクトル174を生成する。
より具体的には、機能モジュール抽出部130は、機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174に抽出ルール175を適用して、機能モデルソースコード171に含まれる複数のプログラム要素ELEMxを複数の機能モジュールにグルーピングする。そして、機能モジュール抽出部130は、グルーピング結果を示す機能モジュール情報176を生成する。
図9に機能モジュール抽出部130によって生成される機能モジュール情報176の例を示す。
図9の例では、プログラム要素ELEM0、ELEM4、ELEM5及びELEM6は機能モジュール0に分類されている。また、プログラム要素ELEM1は機能モジュール1に分類されている。また、プログラム要素ELEM2及びELEM3は、機能モジュール2に分類されている。
より具体的には、機能モデルベクトル173に示されるプログラム要素ごとのデータの入力状況及び出力状況を解析して、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析する。
図10の(a)に、データ入出力関係情報の例を示す。また、図10(b)は、図10の(a)のデータ入出力関係情報に示される内容を図式化したものである。
より具体的には、ブロック候補抽出部140は、機能モジュールごとに、ブロックテンプレート178に含まれる複数のブロックのうち、機能モジュールに対応するブロックをブロック候補として抽出する。
ブロックテンプレート178には、ソフトウェアを実行するプロセッサ、ASIC、FPGA等の専用ハードウェアデバイスがブロックとして含まれている。
ブロックテンプレート178には以下の情報が含まれる。なお、以下において、S/Wはソフトウェアを意味し、H/Wはハードウェアを意味する。
(1)処理タイプ:S/W、H/W(パイプライン)、H/W(並列)、H/W(逐次実行)
(2)通信タイプ:バス、直接接続
(3)メモリタイプ:内部メモリ、外部メモリ(揮発)、外部メモリ(不揮発)
上記の(1)処理タイプは、機能モジュールを実現するデバイスを、ソフトウェアを実行するプロセッサとするか、専用H/Wとするかを決定するためのパラメータである。また、(1)処理タイプには、専用H/Wの種類として、例えば、パイプライン処理が行われるH/W、並列処理が行われるH/W、逐次処理が行われるH/Wが定義される。
ブロック候補抽出部140は、データ入出力関係情報177に示される機能モジュールごとの入出力関係を解析して、各機能モジュールに対応する全てのブロックをブロック候補として抽出する。
例えば、図10では、機能モジュール0は、外部(AXIスレーブ)からデータが入力されるが、ブロック候補抽出部140は、機能モジュール0に対して、AXIスレーブとのインタフェースを有するデバイスを全てをブロック候補として抽出する。
図11は、機能モジュール0に対してブロック候補抽出部140により抽出されたブロック候補の例を示す。
図11では、ブロック候補0−0、ブロック候補0−1、ブロック候補0−2が抽出されている。
より具体的には、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがH/Wであるブロック候補は、高位合成装置200によって高位合成を行う。ブロック候補抽出部140は、高位合成装置200の高位合成により処理性能や回路規模などのブロック候補の性能を得る。そして、ブロック候補抽出部140は、高位合成により得られた性能が非機能要件情報172の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
また、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがS/Wであるブロック候補は、ソフトウェアコンパイラ300によって高位合成を行う。ブロック候補抽出部140は、ソフトウェアコンパイラ300の高位合成により、命令実行数とクロック数を得る。そして、ブロック候補抽出部140は、実行命令数×クロック数から処理性能を算出する。ブロック候補抽出部140は、算出した処理性能の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
より具体的には、アーキテクチャ候補抽出部150は、データ入出力関係情報177に示される入出力関係に従って、ブロック候補抽出結果179に示されるブロック候補を接続する。この際、アーキテクチャ候補抽出部150は、各ブロック候補の通信タイプに矛盾がないようにブロック候補を接続する。アーキテクチャ候補抽出部150は、例えば、通信タイプがバスタイプのブロック候補はバスに接続する。
図12にアーキテクチャ候補の例を示す。
図12の例では、機能モジュール0に対して、ブロック候補0−0、ブロック候補0−1、ブロック候補0−2が選択されている。また、機能モジュール1に対して、ブロック候補1−0、ブロック候補1−1、ブロック候補1−2が選択されている。また、機能モジュール2に対して、ブロック候補2−0、ブロック候補2−1、ブロック候補2−2が選択されている。また、機能モジュール3に対して、ブロック候補3−0、ブロック候補3−1、ブロック候補3−2が選択されている。なお、図12では、作図上の理由から、「ブロック候補」は単に「ブロック」と表記している。
また、図12では、作図上の理由から、アーキテクチャ候補は2つしか図示していないが、アーキテクチャ候補抽出部150は、通信タイプに矛盾が生じないブロック候補の組み合わせの全てに対応するアーキテクチャ候補を抽出する。
このように、アーキテクチャ候補抽出部150は、それぞれのブロック候補の組み合わせが異なる複数のアーキテクチャ候補を抽出する。
より具体的には、アーキテクチャ候補抽出部150は、図7に示すように、非機能要件情報172に処理性能制約Tth、回路規模制約Ath、消費電力制約Pthが含まれている場合は、以下の条件に該当するアーキテクチャ候補を除外する。
(1)Tthに関係するブロックのレイテンシ総和>Tth
(2)ブロックの回路規模の総和>Ath
(3)ブロックの消費電力の総和>Pth
そして、アーキテクチャ候補抽出部150は、ステップS150の後も残されているアーキテクチャ候補が示されるアーキテクチャ候補抽出結果180を生成する。
より具体的には、アーキテクチャ候補抽出結果180に、2以上のブロック(デバイス)がバス接続されているアーキテクチャ候補が含まれている場合に、当該アーキテクチャ候補に対して、非機能要件情報172の処理性能制約Tthを満たし、回路規模の最も小さくなるバスレイヤーをバスレイヤーテンプレート183から選択する。そして、バスレイヤー選択部191は、選択したバスレイヤーが示されるバスレイヤー選択結果情報184を生成する。
バスレイヤーテンプレート183には、クロスバー、リングバス等のバス接続パタン情報と対応するバス規格が格納されている。
バスレイヤー選択部191によるバスレイヤー選択手法の一例を示す。
2以上のブロックを接続するバスがAXIバスの場合は、バスレイヤー選択部191は、初期値として最も高速となるように全マスタ−スレーブ間をクロスバーで接続する。次に、バスレイヤー選択部191は、この接続にて、ソフトウェア/ハードウェア協調シミュレーションにより、非機能要件情報172の処理性能制約Tthの対象となっているアーキテクチャ候補中の箇所の処理時間を測定する。測定した処理時間が処理性能制約Tthを満たしている場合は、アーキテクチャ候補中で最もデータ転送の少ないパスを共有バスに変更し、再度ソフトウェア/ハードウェア協調シミュレーションにより処理時間を計測する。以上の手順を繰り返し、処理性能制約Tthを満たし、最も回路規模の小さいバスレイヤーを探索する。
より具体的には、性能評価部160は、アーキテクチャ候補抽出結果180の各アーキテクチャ候補においてソフトウェア/ハードウェア協調シミュレーションを実行して、各アーキテクチャ候補の性能(例えば、処理性能及び回路規模)を得る。なお、このとき、バス接続は、ステップS191で生成されたバスレイヤー選択結果情報184に示されるバスレイヤー(ステップS191で選択されたバスレイヤー)が用いられる。
そして、アーキテクチャ生成装置100は、処理を終了する。
より具体的には、性能評価部160は、ステップS160で得られた性能と非機能要件情報172の制約値との差の絶対値をアーキテクチャ候補ごとに算出し、算出した絶対値の合計値が最小となるアーキテクチャ候補を近似アーキテクチャ候補として選択する。
ここでは、非機能要件として処理性能制約Tthと回路規模制約Athが与えられている場合を想定する。また、アーキテクチャ候補抽出結果180に記述されているアーキテクチャ候補がN個(N≧2)あり、アーキテクチャ候補x(xは1からN)の処理性能を処理性能Txとし、アーキテクチャ候補xの回路規模を回路規模Axとする。性能評価部160は、|Tth−Tx|+|Ath−Ax|の値が最小となるアーキテクチャ候補xを近似アーキテクチャ候補として選択する。
つまり、性能評価部160は、ステップS164で選択したアーキテクチャ候補xの前述の|Tth−Tx|と|Ath−Ax|とを機能モジュール抽出部130に通知する。
図21は、更新された非機能要件ベクトル174の例を示す。
そして、機能モジュール抽出部130は、更新後の非機能要件フィードバック情報を用いて、例えば、教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づく機械学習を行い、抽出ルール175を変更する。そして、機能モジュール抽出部130は、変更後の抽出ルール175を用いて機能モデルソースコード171に含まれるプログラム要素ELEM0〜ELEM6をグルーピングして新たな機能モジュールを得る。
以降は、新たな機能モジュールに対してステップS131以降の処理が行われる。
なお、以下では、機能モジュール抽出部130が、設計済みの既存アーキテクチャが示される既存アーキテクチャ情報182を用いて機械学習(Deep Learning等)を行って抽出ルール175を生成する手順を示す。
なお、既存アーキテクチャは、例えば設計者が手作業により設計したアーキテクチャである。
ここでは、図16に示すアーキテクチャを既存アーキテクチャとする。
また、既存アーキテクチャが設計されている組込みシステムを既存組込みシステムという。
図16に示すように、既存組込みシステムには、プログラム要素ELEM0−ELEM3が含まれているものとする。
図16の既存アーキテクチャでは、プログラム要素ELEM0が機能モジュール0に分類されている。また、プログラム要素ELEM1が機能モジュール1に分類されている。また、プログラム要素ELEM2とプログラム要素ELEM3とが機能モジュール2に分類されている。また、機能モジュール0がプロセッサにより実現され、機能モジュール1が専用ハードウェア1で実現され、機能モジュール2が専用ハードウェア2により実現される。また、プロセッサ、専用ハードウェア1、専用ハードウェア2はそれぞれAXIバスに接続している。
以下では、プログラム要素ELEM0−ELEM3を区別する必要がない場合は、プログラム要素ELEM0−ELEM3のそれぞれをプログラム要素ELEMxという。
なお、ステップS111における取得手順は図4のステップS110で説明したものと同じであるため、ステップS111における取得手順についての説明は省略する。
既存アーキテクチャ情報182には、図16に示すように、以下の情報が含まれる。
(1)既存組込みシステムの機能モデルソースコード171に含まれるプログラム要素のグルーピング結果を示す情報(機能モジュール情報176に相当する情報)
(2)既存アーキテクチャにおけるブロック構成とブロック間の接続に関する情報(アーキテクチャ候補抽出結果180に相当する情報)
なお、ステップS122における機能モデルベクトル173の生成手順は、図4のステップS120で説明したものと同じであるため、説明を省略する。
なお、ステップS123における非機能要件ベクトル174の生成手順は、図4のステップS121で説明したものと同じであるため、説明を省略する。
なお、図15は、ステップS123で生成された非機能要件ベクトル174の例を示す。図15において、Tth0、Tth1、Tth2は図16に示す既存アーキテクチャとプロセッサ(ELEM0)、専用ハードウェア1(ELEM1)、専用ハードウェア2(ELEM2、ELEM3)のそれぞれの処理性能制約値を示す。また、Ath0、Ath1、Ath2は図16に示す既存アーキテクチャとプロセッサ(ELEM0)、専用ハードウェア1(ELEM1)、専用ハードウェア2(ELEM2、ELEM3)のそれぞれの回路規模制約値を示す。ELEM2、ELEM3は1つの機能モジュール(機能モジュール2)分類されるため制約値Tth2、Ath2をそれぞれELEM2、ELEM3で分ける(この例では2で割る)。
そして、グルーピング結果が等しい場合(ステップS133でYES)は、機能モジュール抽出部130は処理を終了する。
例えば、ステップS132において図18に示すグルーピング結果が得られている場合は、図16に示すグルーピング結果と等しいため、機能モジュール抽出部130は処理を終了する。
例えば、図17に示すグルーピング結果が得られている場合は、図16に示すグルーピング結果と等しくないため、機能モジュール抽出部130は、誤差を計算する。
そして、機能モジュール抽出部130は、一般的な教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づき、計算した誤差を用いて、抽出ルール175を更新する。
機能モジュール抽出部130は、このように、機能モデルベクトル173に記述されるパラメータから読み取れる関係性を解析する。そして、機能モジュール抽出部130は、解析結果から、抽出ルール175により得られるグルーピング結果と正解のグルーピング結果との誤差が小さくなるように機械学習パラメータを制御する。このようにすることで、機能モジュール抽出部130は、設計者が手作業により生成するアーキテクチャと同じアーキテクチャを獲得可能な抽出ルール175を生成することができる。
以上、本実施の形態では、機能モジュールの解析により、各機能モジュールの属性と複数の機能モジュールにおける階層を抽出し、抽出した機能モジュールの属性と複数の機能モジュールにおける階層とに基づいて機械学習を行う。このため、本実施の形態によれば、機械学習の精度を高めることができる。
例えば、アーキテクチャ生成装置100の機能構成は図1と異なる機能構成であっても構わない。
また、アーキテクチャ生成装置100の動作手順は図4及び図5に示したものと異なっていてもよい。
最後に、アーキテクチャ生成装置100のハードウェア構成の補足説明を行う。
図3に示すプロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
補助記憶装置902は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
メモリ903は、RAM(Random Access Memory)である。
通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の処理の結果を示す情報やデータや信号値や変数値が、補助記憶装置902、メモリ903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、アーキテクチャ生成装置100は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC、FPGAといった電子回路により実現されてもよい。
この場合は、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
Claims (8)
- 階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析部と、
前記解析部により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング部とを有する情報処理装置。 - 前記解析部は、
各プログラム要素の属性として、プログラム要素ごとに、当該プログラム要素で参照される配列の型と、当該配列への当該プログラム要素でのアクセス数と、当該プログラム要素で当該配列が参照される際のアクセスインデックスと当該プログラム要素よりも前に実行されるプログラム要素で当該配列に値が代入される際のアクセスインデックスとの差とを抽出する請求項1に記載の情報処理装置。 - 前記解析部は、
各プログラム要素の属性として、プログラム要素ごとに、当該プログラム要素で値が代入される配列の型と、当該配列への当該プログラム要素でのアクセス数と、当該プログラム要素で当該配列に値が代入される際のアクセスインデックスと当該プログラム要素よりも後に実行されるプログラム要素で当該配列が参照される際のアクセスインデックスとの差とを抽出する請求項1に記載の情報処理装置。 - 前記解析部は、
各プログラム要素の属性として、各プログラム要素に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを抽出する請求項1に記載の情報処理装置。 - 前記解析部は、
各プログラム要素に含まれる演算子の数を抽出する場合に、
積和演算に含まれる積演算子と和演算子とを個別に計数せずに、積和演算子として計数し、
定数乗算に含まれる乗算演算子と変数乗算に含まれる乗算演算子とを区別して計数し、
定数除算に含まれる除算演算子と変数除算に含まれる除算演算子とを区別して計数する請求項4に記載の情報処理装置。 - 前記情報処理装置は、更に、
前記グルーピング部によるグルーピング結果に基づき前記プログラムコードを実現するコンピュータアーキテクチャの候補として生成された複数のアーキテクチャ候補のうち2以上のデバイスがバス接続されているアーキテクチャ候補に対して、複数のバスレイヤーの中から制約条件を満たすバスレイヤーを選択するバスレイヤー選択部を有する請求項1に記載の情報処理装置。 - コンピュータが、階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出し、
前記コンピュータが、抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングする情報処理方法。 - 階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析処理と、
前記解析処理により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング処理とをコンピュータに実行させる情報処理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/079513 WO2018066074A1 (ja) | 2016-10-04 | 2016-10-04 | 情報処理装置、情報処理方法及び情報処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6227195B1 true JP6227195B1 (ja) | 2017-11-08 |
JPWO2018066074A1 JPWO2018066074A1 (ja) | 2018-10-04 |
Family
ID=60265762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017516806A Expired - Fee Related JP6227195B1 (ja) | 2016-10-04 | 2016-10-04 | 情報処理装置、情報処理方法及び情報処理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190220778A1 (ja) |
JP (1) | JP6227195B1 (ja) |
WO (1) | WO2018066074A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022554262A (ja) * | 2019-10-31 | 2022-12-28 | 華為技術有限公司 | デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2507753A4 (en) | 2009-12-04 | 2013-10-30 | Uber Technologies Inc | SYSTEM AND METHOD FOR ORGANIZING TRANSPORT BETWEEN PARTS USING MOBILESSYSTEM DEVICES AND METHOD FOR ARRANGING TRANSPORT AMONGST PARTS THROUGH USE OF MOBILE DEVICES |
US9230292B2 (en) | 2012-11-08 | 2016-01-05 | Uber Technologies, Inc. | Providing on-demand services through use of portable computing devices |
JP6996431B2 (ja) * | 2018-06-13 | 2022-01-17 | 日本電信電話株式会社 | パラメータ最適化装置、方法、およびプログラム |
WO2020188658A1 (ja) * | 2019-03-15 | 2020-09-24 | 三菱電機株式会社 | アーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラム |
CN112148391A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 生成基于芯片的计算功能的方法、装置、设备和存储介质 |
US11144429B2 (en) * | 2019-08-26 | 2021-10-12 | International Business Machines Corporation | Detecting and predicting application performance |
US11431594B2 (en) | 2020-03-31 | 2022-08-30 | Nec Corporation | Part extraction device, part extraction method and recording medium |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012098902A (ja) * | 2010-11-02 | 2012-05-24 | Hitachi Ltd | ソフトウェア資産整理方法及び装置 |
-
2016
- 2016-10-04 US US16/327,112 patent/US20190220778A1/en not_active Abandoned
- 2016-10-04 WO PCT/JP2016/079513 patent/WO2018066074A1/ja active Application Filing
- 2016-10-04 JP JP2017516806A patent/JP6227195B1/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012098902A (ja) * | 2010-11-02 | 2012-05-24 | Hitachi Ltd | ソフトウェア資産整理方法及び装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022554262A (ja) * | 2019-10-31 | 2022-12-28 | 華為技術有限公司 | デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体 |
JP7418565B2 (ja) | 2019-10-31 | 2024-01-19 | 華為技術有限公司 | デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
WO2018066074A1 (ja) | 2018-04-12 |
US20190220778A1 (en) | 2019-07-18 |
JPWO2018066074A1 (ja) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6227195B1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
WO2019216404A1 (ja) | ニューラルネットワーク構築装置、情報処理装置、ニューラルネットワーク構築方法及びプログラム | |
US8001510B1 (en) | Automated method of architecture mapping selection from constrained high level language description via element characterization | |
EP3726442A1 (en) | Semantic modeling and machine learning-based generation of conceptual plans for manufacturing assemblies | |
KR102013582B1 (ko) | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 | |
Sommer et al. | Automatic mapping of the sum-product network inference problem to fpga-based accelerators | |
JP6173644B1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
Siddavaatam et al. | Grey Wolf Optimizer Driven design space exploration: A novel framework for multi-objective trade-off in architectural synthesis | |
CN103270512A (zh) | 智能架构创建器 | |
Karmazin et al. | Timing driven placement for quasi delay-insensitive circuits | |
Glette et al. | Lookup table partial reconfiguration for an evolvable hardware classifier system | |
Conrady et al. | LCS-based automatic configuration of approximate computing parameters for fpga system designs | |
CN114492251B (zh) | 超算环境的低速流场发散处理方法、装置、设备及介质 | |
Meeuws et al. | Quipu: A statistical model for predicting hardware resources | |
Vasil’ev et al. | Hardware implementation of high-performance fuzzy computations based on programmable logic integrated circuits | |
Sommer et al. | Automatic synthesis of fpga-based accelerators for the sum-product network inference problem | |
US20210056241A1 (en) | Design support device and computer readable medium | |
Herath et al. | Performance estimation of fpga modules for modular design methodology using artificial neural network | |
GB2588134A (en) | Verification of hardware design for data transformation component | |
US20230162010A1 (en) | Synthesizing Zero-Loss Low-Power Approximate DNN Accelerators With Large-Scale Search | |
Goswami et al. | Application of Machine Learning in FPGA EDA Tool Development | |
US20220335286A1 (en) | Methods, systems, articles of manufacture, and apparatus for designing hardware | |
TWI841724B (zh) | 執行模擬基礎物理設計規則以最佳化電路佈局 | |
Goswami | Machine Learning Based Prediction in FPGA CAD | |
EP4174725A1 (en) | Memory-efficient distributed neural network training using rematerialization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170327 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170327 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20170327 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20170412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170608 |
|
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: 20170912 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171010 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6227195 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 |
|
LAPS | Cancellation because of no payment of annual fees |