JP6137962B2 - Information processing apparatus, information processing method, and program - Google Patents
Information processing apparatus, information processing method, and program Download PDFInfo
- Publication number
- JP6137962B2 JP6137962B2 JP2013131885A JP2013131885A JP6137962B2 JP 6137962 B2 JP6137962 B2 JP 6137962B2 JP 2013131885 A JP2013131885 A JP 2013131885A JP 2013131885 A JP2013131885 A JP 2013131885A JP 6137962 B2 JP6137962 B2 JP 6137962B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- type
- attribute
- variable
- attribute value
- 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
Landscapes
- Debugging And Monitoring (AREA)
Description
本発明は、情報処理装置、情報処理方法及びプログラムに関する。 The present invention relates to an information processing apparatus, an information processing method, and a program.
画像処理等の信号処理プログラムのアルゴリズム開発は、浮動小数点演算を使って行われることが多い。ユーザは、ハードウェア設計段階において、開発されたアルゴリズムをハードウェアに実装する検討を行う。この際に、ユーザは、従来、C言語のプログラム等を用いた浮動小数点演算で記述されたリファレンスプログラムから、ビット幅固定となる整数・固定小数点数演算で記述されたプログラムへ人手で変換を行っている。
ユーザは、浮動小数点演算のプログラムを整数・固定小数点演算のプログラムに人手で変換する場合、ハードウェア記述言語の一種であるSystemCという、C++言語のコンパイラでコンパイルすることが可能なクラスライブラリを用いる場合がある。SystemCのクラスライブラリは、sc_intという整数・固定小数点変換を支援する型を提供している。sc_int型は、プログラムコード上の型にC++言語が提供する機能であるテンプレートを用いて、ビット幅を固定的に定義する。このため、ユーザは、ビット幅を変更して実行結果を得たい場合、プログラムコードを変更し、再度コンパイルしてオブジェクトプログラムを生成するといった手間が発生する。
浮動小数点を用いたプログラムの整数・固定小数点を用いたプログラムへの変換を支援する方法として、以下のような手法が開示されている。
Algorithm development for signal processing programs such as image processing is often performed using floating point arithmetic. In the hardware design stage, the user considers mounting the developed algorithm on the hardware. At this time, the user manually converts from a reference program previously described by floating point arithmetic using a C language program or the like to a program described by integer / fixed point arithmetic with a fixed bit width. ing.
When a user manually converts a floating-point arithmetic program to an integer / fixed-point arithmetic program, a user uses a class library called SystemC, which is a kind of hardware description language, that can be compiled with a C ++ language compiler. There is. The SystemC class library provides a type that supports integer / fixed-point conversion called sc_int. In the sc_int type, a bit width is fixedly defined using a template which is a function provided by the C ++ language as a type on a program code. For this reason, when the user wants to change the bit width and obtain the execution result, the user needs to change the program code and compile again to generate the object program.
As a method for supporting conversion of a program using floating point to a program using integer / fixed point, the following method is disclosed.
特許文献1では、以下に示す技術が開示されている。まず、特許文献1に開示されている技術は、整数・固定小数点を用いたプログラムへの変換のためのビット幅等の属性値を探索する前処理として、固定小数点のビット幅等の属性値に設定する初期値を決定する。特許文献1に開示されている技術は、浮動小数点プログラムの変数に代入される値の履歴を取得し、代入される値の絶対値の最大値、最小値から初期値を決定する。特許文献1に開示されている技術は、決定した初期値を用いて、整数・固定小数点変数を用いたプログラムを作成し、作成したプログラムをコンパイルし、コンパイルしたプログラムを実行し、実行結果が所望の精度を満たしているか評価する。特許文献1に開示されている技術は、評価の結果が所望の精度を満たしていない場合、再度ビット幅等の属性値を変更するために、プログラムを修正し、修正したプログラムをコンパイルし、再びコンパイルしたプログラムを実行して実行結果の評価を行う。このように、特許文献1に開示されている技術は、プログラムの修正、コンパイル、実行結果の評価という試行を繰り返すことで、整数・固定小数点の属性値を決定する。
特許文献2では、浮動小数点を用いたプログラムで利用されている数要素を抽出し、プログラム中の代入式や、演算式を解析し、それぞれの数要素の関係情報に基づいて、数要素のデータ型の属性値を決定する技術が開示されている。
Patent Document 1 discloses the following technique. First, the technique disclosed in Patent Document 1 uses an attribute value such as a fixed-point bit width as pre-processing for searching an attribute value such as a bit width for conversion to a program using an integer / fixed point. Determine the initial value to be set. The technique disclosed in Patent Document 1 acquires a history of values to be assigned to variables of a floating-point program, and determines an initial value from the maximum value and the minimum value of the absolute value of the assigned value. The technique disclosed in Patent Document 1 creates a program using integer / fixed-point variables using the determined initial value, compiles the created program, executes the compiled program, and an execution result is desired. Evaluate whether the accuracy is satisfied. When the evaluation result does not satisfy the desired accuracy, the technique disclosed in Patent Document 1 corrects the program again to change the attribute value such as the bit width, compiles the corrected program, and again Run the compiled program and evaluate the execution results. As described above, the technique disclosed in Patent Literature 1 determines integer / fixed-point attribute values by repeating trials of program correction, compilation, and execution result evaluation.
In Patent Document 2, a numerical element used in a program using floating point is extracted, an assignment expression or an arithmetic expression in the program is analyzed, and the numerical element data is obtained based on the relation information of each numerical element. A technique for determining a type attribute value is disclosed.
プログラム中の浮動小数点型変数を固定小数点型変数に手動で変換する場合、ユーザはビット幅を変更するたびに、プログラムを書き換え、再コンパイルする必要がある。
特許文献1に開示されている技術は、自動で変数のビット幅を決定するが、変数毎に精度評価を行い、ビット幅を決定していく。しかし、実行結果の評価後に所望の精度を満たしていない場合、特許文献1に開示されている技術は、ビット幅を変更するために、再度プログラムを変更し、コンパイルしてから実行する必要がある。
特許文献2に開示される技術は、プログラム中の部分的な代入式や、演算式を解析し、各変数の関係情報に基づいてデータ型の属性値を決定する。特許文献2に開示される技術においても、実行結果の評価後に所望の精度を満たしていない場合、ビット幅を変更するためには、再度プログラムを変更し、コンパイルしてから実行する必要がある。
本発明は、整数・固定小数点化における変数のビット幅等の型の属性検討の際、検討時間を削減する技術を提供することを目的とする。
When a floating-point variable in a program is manually converted to a fixed-point variable, the user needs to rewrite and recompile the program every time the bit width is changed.
The technique disclosed in Patent Document 1 automatically determines the bit width of a variable, but evaluates accuracy for each variable to determine the bit width. However, when the desired accuracy is not satisfied after the evaluation of the execution result, the technique disclosed in Patent Document 1 needs to be changed after the program is changed and compiled in order to change the bit width. .
The technique disclosed in Patent Document 2 analyzes a partial substitution expression or arithmetic expression in a program, and determines a data type attribute value based on relation information of each variable. Even in the technique disclosed in Patent Document 2, if the desired accuracy is not satisfied after the evaluation of the execution result, in order to change the bit width, it is necessary to change the program again, compile and execute it.
An object of the present invention is to provide a technique for reducing the examination time when examining attributes of a type such as the bit width of a variable in integer / fixed-point conversion.
そこで、本発明は、対象変数の属性がパラメータ化され、コンパイルされたプログラムを読み込む読み込み手段と、前記読み込み手段により読み込まれたプログラムに基づく処理の実行時に、属性に関するパラメータ情報に基づいて、前記プログラムの対象変数の属性に属性値を設定する設定手段と、前記設定手段により属性値が設定されたプログラムに基づいて処理を実行する実行手段と、を有する。 Therefore, the present invention provides a reading unit that reads the compiled program in which the attribute of the target variable is parameterized, and the program based on the parameter information related to the attribute when executing processing based on the program read by the reading unit. Setting means for setting an attribute value for the attribute of the target variable, and execution means for executing processing based on a program in which the attribute value is set by the setting means.
本発明によれば、整数・固定小数点化における変数のビット幅等の型の属性検討の際、検討時間を削減する技術を提供することができる。 ADVANTAGE OF THE INVENTION According to this invention, the technique which reduces examination time can be provided in the case of examination of type attributes, such as the bit width of the variable in integer and fixed point conversion.
以下、本発明を実施するための最良の形態について図面を用いて説明する。
<実施形態1>
以下、プログラム中の変数の型を探索する変数の型探索方法について説明する。本実施形態では、プログラム中の浮動小数点変数を固定小数点変数に変換する際の固定小数点型の属性の探索方法について説明する。なお、以降の説明では、変数の型を変換する前の浮動小数点変数のプログラムを第1のプログラムといい、変換後の固定小数点変数のプログラムを第2のプログラムという。また、浮動小数点変数型を第1の型、固定小数点型を第2の型とする。
本実施形態による変数の型探索方法は、例えば、画像処理等の信号処理プログラムのアルゴリズム開発で開発された浮動小数点演算を用いて書かれたプログラムを、ハードウェアに実装するために、いくつかの変数の型を固定小数点型に変換する場合に適用される。
The best mode for carrying out the present invention will be described below with reference to the drawings.
<Embodiment 1>
A variable type search method for searching for variable types in the program will be described below. In the present embodiment, a method for searching a fixed-point type attribute when converting a floating-point variable in a program to a fixed-point variable will be described. In the following description, the floating point variable program before the variable type conversion is referred to as a first program, and the fixed point variable program after the conversion is referred to as a second program. The floating point variable type is the first type, and the fixed point type is the second type.
The variable type search method according to the present embodiment includes, for example, several programs for implementing a program written using floating-point arithmetic developed in algorithm development of a signal processing program such as image processing in hardware. Applied to convert variable type to fixed point type.
図1は、プログラム中の変数の型を探索する型探索装置100のハードウェア構成の一例を示す図である。なお、型探索装置100は、情報処理装置の一例である。
型探索装置100は、CPU101、RAM102、ROM103、HDD104、入力装置105、表示装置106、ネットワークI/F107及びシステムバス108を有する。CPU101、RAM102、ROM103、HDD104、入力装置105、表示装置106及びネットワークI/F107は、システムバス108を介して互いに通信可能に接続されている。
CPU101は、型探索装置100全体を制御する。CPU101がROM103等に格納されているプログラムを実行することにより、後述する型探索装置100の機能(ソフトウェア構成)及びフローチャートに係る処理が実現される。
RAM102は、CPU101がプログラムを実行するためのワークエリアや、一時記憶領域として機能するメモリである。
ROM103は、CPU101が実行するプログラム等を格納するメモリである。
HDD104は、閾値や、パラメータに関する設定値等を含む各種のデータや、各種のプログラム等を格納するハードディスクドライブである。
入力装置105は、ユーザが型探索装置100に対して入力操作をするためのキーボードや、マウス等である。
表示装置106は、型探索装置100が各種の画面を表示するためのディスプレイ等である。
ネットワークI/F107は、外部ネットワークを介して他の装置と通信を行うためのインターフェースである。
FIG. 1 is a diagram illustrating an example of a hardware configuration of a
The
The
The
The
The
The
The
The network I /
図2は、実施形態1における型探索装置100のソフトウェア構成の一例を示す図である。
本実施形態では、型探索装置100がプログラム中の浮動小数点変数を固定小数点変数に変換するが、これに限らず、例えば、プログラム中の浮動小数点変数を仮数部、指数部のビット幅が可変な浮動小数点変数に変換する場合に適用してもよい。
プログラム作成部701は、入力された第1のプログラムから、変数の型表現に必要な型の属性が、実行時に設定可能なようにパラメータ化されたプログラムを作成する。プログラム作成部701が変数の型の属性を実行時に設定可能なパラメータにすることで、型探索装置100は、プログラムの変更や、属性値を変更した際にコンパイルをすることなく、変数の型を変換した場合と同等な挙動をシミュレーションすることが可能となる。本実施形態において、ユーザは、第1のプログラムと、固定小数点変数に変換したい1つ以上の変数名とを入力する。そして、プログラム作成部701は、入力された変数名に従って、第1のプログラム中の変数の型を固定小数点シミュレーション型に変更した固定小数点シミュレーションプログラムを作成する。固定小数点シミュレーション型とは、固定小数点の属性であるビット幅、小数点位置等を、実行中に設定可能なようにパラメータ化した型であり、本実施形態ではC++言語のクラスとして実装される。固定小数点シミュレーション型の詳細については、図6等を用いて後述する。また、本実施形態の型探索装置100では、プログラム作成部701が入力された変数名を参照して自動で変更するものとしているが、ユーザが手作業で所望の変数の型を固定小数点シミュレーション型に変更するものとしてもよい。第1のプログラム中の固定小数点変数に変換したい変数の型を固定小数点シミュレーション型に変更した固定小数点シミュレーションプログラムは、実行時に設定される属性値に基づき変数の型の挙動をシミュレーションすることができるプログラムである。
FIG. 2 is a diagram illustrating an example of a software configuration of the
In this embodiment, the
The
コンパイル部702は、プログラム作成部701が作成した固定小数点シミュレーションプログラムをコンパイルし、オブジェクトプログラムを生成する。
属性値準備部703は、固定小数点シミュレーションプログラム内の固定小数点シミュレーション型の変数について、プログラム実行時に変数の型の属性に設定する属性値を予め準備する。より具体的にいうと、属性値準備部703は、ユーザにより指定された固定小数点化したい対象変数(変数情報)と、その対象変数の属性に設定する属性値(属性値情報)とを対応付けたパラメータファイルを作成してメモリに格納する。なお、パラメータファイルは、パラメータ情報の一例である。パラメータファイルはどのような形式でもよいが、例えば図3に示すような表形式のパラメータファイルを用いることができる。ここで、図3は、パラメータファイルの一例を示す図である。ユーザは、入力装置105を介してシステム上のGUI等で、設定する対象変数と、属性値との対応関係を入力すればよい。なお、属性値準備部703がパラメータファイルを作成する処理は、パラメータ情報作成処理の一例である。
The compiling
The attribute
型シミュレーション部704は、コンパイル部702が生成したオブジェクトプログラムを実行する。ここで、型シミュレーション部704の構成を、図4を用いて説明する。なお、図4は、型シミュレーション部704の構成の一例を示す図である。
型シミュレーション部704は、プログラム読み込み部1201、属性値保持部1202、属性値設定部1203及び演算部1204を有する。
プログラム読み込み部1201は、コンパイル部702が生成したオブジェクトプログラムの実行が開始されると、オブジェクトプログラムをメモリに読み込む。
属性値保持部1202は、属性値準備部703により入力されたパラメータファイルに記載された変数の型の属性と、属性値との対応関係をメモリ上に展開し、プログラム実行中メモリ上に保持する。なお、本実施形態では属性値保持部1202を用いるものとしているが、型探索装置100は、パラメータファイルをメモリ上に保持せずに、属性値設定時に直接ファイルにアクセスするものとしてもよい。
属性値設定部1203は、型の属性値をパラメータ化された属性に設定する。本実施形態において、属性値設定部1203は、プログラム実行中、固定小数点シミュレーション型の変数の初期化時に、属性値保持部1202によりメモリ上に保持されたパラメータファイルを参照し、属性値を変数の型の属性に設定する。また、属性値設定部1203は、初期化時に属性値を設定せずに、演算処理や、代入処理を行うたびに属性値を設定するものとしてもよい。このように、属性値設定部1203は、プログラム外から属性値を設定することが可能となる。これにより、型探索装置100は、プログラムの変更及びコンパイルを行うことなく、属性値を変更することができる。
演算部1204は、属性値設定部1203により設定された属性値に応じた型の挙動をシミュレートする演算を行う。例えば、演算部1204は、ビット幅、小数点位置が異なる2つの値の演算を行う場合、ビットシフトを行い、ビット位置を合わせてから演算を行う。演算処理の詳細については、図8等を用いて後述する。
以上が型シミュレーション部704の説明である。
The
The
When the execution of the object program generated by the compiling
The attribute
The attribute value setting unit 1203 sets the attribute value of the type to a parameterized attribute. In the present embodiment, the attribute value setting unit 1203 refers to the parameter file held in the memory by the attribute
The calculation unit 1204 performs a calculation that simulates the behavior of the type according to the attribute value set by the attribute value setting unit 1203. For example, when calculating two values having different bit widths and decimal point positions, the calculation unit 1204 performs bit shift and performs the calculation after matching the bit positions. Details of the arithmetic processing will be described later with reference to FIG.
The above is the description of the
説明を図2に戻す。
実行結果出力部705は、固定小数点シミュレーションプログラムの実行結果(シミュレーション結果情報)を出力する。
実行結果評価部706は、第1のプログラムの実行結果(実行結果情報)と、実行結果出力部705が出力した固定小数点シミュレーションプログラムの実行結果とから精度(SN比)の計算を行う。例えば、実行結果評価部706は、誤差を用いて評価する場合、第1のプログラムの実行結果Aと、固定小数点シミュレーション型プログラムの実行結果Bとを用いて((B−A)^2)/(A^2)を算出する。そして、実行結果評価部706は、算出結果が予め定めた閾値以下であれば、必要な精度を満たしているものとする。実行結果が所望の精度を満たしていた場合、実行結果評価部706は、対象変数の属性に設定された属性値を設定値として決定する。そして、プログラム生成部707が後述する処理を実行する。一方、実行結果が所望の精度を満たしていない場合、属性値準備部703は、ユーザからの異なる属性値の入力に基づいて、再度、パラメータファイルを作成する。
プログラム生成部707は、実行結果評価部706が決定した対象変数及び属性と、属性値との関係を用いて、対象変数を固定小数点変数に変換した第2のプログラムを生成する。本実施形態において、プログラム生成部707は、実行結果評価部706から入力された対象変数と、対応する属性値とを用いてプログラムを生成する。プログラム生成部707は、生成するプログラムをどのような言語で記述してもよいが、例えば、ハードウェアや、ファームウェア向けのプログラムを生成する。
以上が、本実施形態における型探索装置100のソフトウェア構成の説明である。
Returning to FIG.
The execution
The execution
The
The above is the description of the software configuration of the
次に図5を用いて、本実施形態におけるプログラム中の変数の型を探索する変数の型探索処理の流れについて説明する。なお、図5は、型探索処理の一例を示すフローチャートである。
S100において、プログラム作成部701は、入力された第1のプログラムと、固定小数点変数に変換したい1つ以上の変数名とから、入力された変数の型を固定小数点シミュレーション型に変更したプログラムを作成する。本実施形態では、プログラム作成部701がS100におけるプログラム作成処理を自動で行うものとするが、ユーザが手動で行うものとしてもよい。また、本実施形態においては、プログラム作成部701が浮動小数点型を用いた第1のプログラムを変換するものとしているが、ユーザがプログラムを作成する際に初めから固定小数点シミュレーション型を用いたプログラムを作成するものとしてもよい。プログラム作成処理の詳細については、図7等を用いて後述する。
S101において、コンパイル部702は、S100で作成された固定小数点シミュレーションプログラムをコンパイルし、オブジェクトプログラムを生成する。
S102において、属性値準備部703は、S100でパラメータ化された変数の型の属性に設定する属性値に関するパラメータ情報を予めメモリに格納して準備する。本実施形態では、ユーザが、入力装置105を介して、固定小数点化したい対象変数と、その対象変数の型の属性に設定する属性値とをシステム上のGUI等で入力する。そして、属性値準備部703は、入力装置105を介して受け付けたユーザの入力に基づいて、パラメータファイルを作成し、メモリに格納する。
Next, the flow of variable type search processing for searching for variable types in a program according to the present embodiment will be described with reference to FIG. FIG. 5 is a flowchart illustrating an example of the type search process.
In S100, the
In S101, the compiling
In step S102, the attribute
S103において、型シミュレーション部704は、S101で生成された固定小数点シミュレーションプログラムのオブジェクトプログラムを実行する。より具体的にいうと、型シミュレーション部704は、オブジェクトプログラムにおける対象変数の属性に基づいて、S102で作成されたパラメータファイルを参照する。そして、型シミュレーション部704は、オブジェクトプログラムにおける各変数の初期化時に前記パラメータファイルの属性値を用いて設定する。また、型シミュレーション処理S103は、設定した属性値に応じた型の挙動をシミュレートする演算を行う。S103における型シミュレーション処理の詳細については、図9等を用いて後述する。
S104において、実行結果出力部705は、S103で実行されたプログラムの実行結果を出力する。出力形式はどのような形式でもよく、例えば、実行結果出力部705は、ファイル等に出力結果を書き込むようにしてもよい。
S105において、実行結果評価部706は、S104で出力された結果に関する評価を行う。より具体的にいうと、実行結果評価部706は、第1のプログラムの実行結果と、S104で出力された実行結果とに基づく精度が、ユーザにより外部から入力されて予めメモリに格納されている精度情報が示す精度を満たすか否かを評価して判定する。なお、実行結果評価部706による精度の算出方法は、図2を用いて上述したため説明を省略する。実行結果評価部706は、精度を満たすと判定した場合、処理をS106に進め、精度を満たさないと判定した場合、処理をS102に戻す。
S106において、プログラム生成部707は、固定小数点型プログラムを生成する。より具体的にいうと、プログラム生成部707は、図6の(a)に示した第1のプログラムを、S105で精度を満たすと判定されて決定された属性値を利用して、固定小数点化の対象である変数及びその演算式等の変換を行った第2のプログラムを生成する。なお、図6は、プログラムの一例を示す図である。S106のプログラム生成処理は、ユーザが、S105で精度を満たすと判定された対象変数の属性値に基づき、手動で行うようにしてもよい。
以上が、本実施形態におけるプログラム中の変数の型を探索する変数の型探索処理の流れである。
In S103, the
In S104, the execution
In step S105, the execution
In S106, the
The above is the flow of the variable type search process for searching for the variable type in the program in the present embodiment.
次に、S100におけるプログラム作成処理の詳細について説明する。
ここで、図6の(a)は、上述したように第1のプログラムの一例を示す図である。一方、図6の(b)は、プログラム作成処理で作成される固定小数点シミュレーションプログラムの一例を示す図である。
第1のプログラム20は、ユーザが開発したプログラムであり、固定小数点シミュレーションプログラム21や、第2のプログラムに変換する元となるオリジナルのプログラムである。
記述201、記述202及び記述203は、浮動小数点宣言である。また、記述204は、記述201、記述202及び記述203で宣言された変数を用いた演算処理の記述の一例である。
Next, details of the program creation processing in S100 will be described.
Here, FIG. 6A is a diagram showing an example of the first program as described above. On the other hand, FIG. 6B is a diagram showing an example of a fixed-point simulation program created by the program creation process.
The
次に、図6の(b)及び図7を用いて、プログラム作成部701が第1のプログラムを固定小数点シミュレーションプログラムに変換するS100の処理について説明する。プログラム作成部701は、図7に示す処理を行うことで図6の(a)の第1のプログラムを図6の(b)の固定小数点シミュレーションプログラムに変換する。なお、図7は、S100におけるプログラム作成処理の一例を示すフローチャートである。
まず、S400において、プログラム作成部701は、ヘッダのインクルード文を挿入する。より具体的にいうと、プログラム作成部701は、記述211に示されるように固定小数点シミュレーションクラスを含むFixedPointSim.hをインクルードしている。また、プログラム作成部701は、記述212に示されるようにパラメータファイルをメモリ上に展開、保持するクラスを含むヘッダーファイルであるParamSetting.hをインクルードしている。ParamSetting.hは、パラメータファイルに記載された、変数の型の属性と、属性値との対応関係をメモリ上に展開するメソッドを定義している。また、ParamSetting.hは、展開されたメモリ上のアドレスへのポインタをメンバーとして有するクラスであるCParamSettingクラスを定義している。本実施形態のように属性値準備部703が前記対応関係をメモリ上に展開すると、型シミュレーション部704は、固定小数点シミュレーションプログラム中で固定小数点シミュレーション型の変数宣言を実行するたびにファイルにアクセスする必要がなくなる。そのため、処理速度が向上する。なお、属性値準備部703がパラメータファイルをメモリ上に展開せずに、型シミュレーション部704が変数宣言のたびにパラメータファイルを参照するように実装することも可能である。CparamSettingクラスでは、引数で変数名をキーとして与えると、その変数の型が持つ1つ以上の属性に対応する属性値のリストを取得するメソッドが定義されている。
Next, the processing of S100 in which the
First, in S400, the
次に、S401において、プログラム作成部701は、パラメータファイル設定文を挿入する。本実施形態において、プログラム作成部701は、記述213のように、パラメータファイルをセットするマクロ定義を使用して設定文を挿入する。記述213に示されるパラメータファイルをセットするマクロ定義は、FixedPointSim.hで定義されている。パラメータファイルをセットするマクロ定義については、図8等を用いて後述する。本実施形態において、プログラム作成部701は、パラメータファイルの設定にマクロ定義を利用するものとしているが、この方法に限らず、例えば、実行時のコマンドライン引数により指定するものとしてもよい。
S402において、プログラム作成部701は、固定小数点化したい対象変数宣言の変換を行う。本実施形態において、プログラム作成部701は、図6の(a)の記述201、記述202及び記述203を図6の(b)の記述214、記述215及び記述216に変換する。対象変数である変数x、変数y及び変数zは、固定小数点化したい変数、即ち、固定小数点シミュレーション型を用いて型の属性が決定される変数である。本実施形態では、FixedPointSim.hにおいて定義されているマクロ定義を用いて宣言しているが、プログラム作成部701は、マクロ定義に記載された内容を直接プログラムに入力してもよい。また、対象変数は、予めユーザが決定するものとしてもよいし、プログラム作成部701がプログラム中の全てのfloat型を変換するものとしてもよい。その他、プログラム作成部701が、指定されたファイル内のfloat型のみを変換するものとしてもよい。
以上が、プログラム作成部701が第1のプログラムを固定小数点シミュレーションプログラムに変換する手順である。
Next, in S401, the
In S402, the
The above is the procedure for the
記述217は、固定小数点シミュレーション型同士の加算演算及び代入演算の式の例である。演算処理については、図10等を用いて後述する。なお、図6の(a)の第1のプログラム内の記述204は、固定小数点シミュレーションプログラムに変換された場合も、記述217のように式を変更せずに使用することができる。本実施形態ではこのように、プログラム作成部701が最小限の負荷で第1のプログラムから固定小数点シミュレーションプログラムへの変換を行うことを可能としている。
ここで、図8を用いて固定小数点シミュレーション型を定義しているヘッダーファイル30について説明する。なお、図8は、固定小数点シミュレーション型を定義しているヘッダーファイルの一例を示す図である。
記述301は、固定小数点シミュレーションクラスの定義である。固定小数点シミュレーションクラスは、C++言語の浮動小数点型や、整数型等の数値型と同様に使用可能な固定小数点シミュレーション型を提供するクラスである。
記述311は、クラスにおけるデータ保持部であり、データメンバーを保持する。以下、データ保持部が保持するデータメンバーについて説明する。
記述312は、固定小数点シミュレーション型の値を32ビットの整数として保持する。即ち、本クラスではビット幅が32ビット以内の固定小数点型をシミュレーションすることが可能である。
A
Here, the
A
A
The
記述313は、小数点位置を保持する。小数点位置はどのように管理されてもよいが、本実施形態では最下位ビットの右側の位置を0位置とし、上位ビット側にシフトする場合は負、下位ビット側にシフトする場合は正とする。また、小数点位置はビット幅に限らず設定することができる。例えば、符号無し3ビット固定小数点を表現する場合に、記述313の小数点位置が2の場合、表現できる値は二進数で11100から00000までであり、十進数では0から28までの値を4飛ばしで表現可能である。また、本実施形態において、記述312及び記述313は、整数と、小数点位置とで固定小数点シミュレーション型の数値を保持するものとしているが、データ保持方法はこれに限らず、例えば、浮動小数点型のデータで固定小数点相当の離散値を保持してもよい。
記述314は、ビット幅を保持する。
記述315は、演算結果の値丸め処理のモードを保持する。例えば、四捨五入モードを0、切り上げモードを1、切り捨てモードを2というように予め決めておき、保持している数値によりモードを切り替える。
記述316は、オーバーフロー又はアンダーフロー時のモードを保持する。例えば、オーバーフロー又はアンダーフローを容認するモードを0、飽和処理を行うモードを1等といったように予め決めておき、保持している数値によりモード切り替えを行う。
記述317は、パラメータファイル内の情報が展開されたメモリへの参照ポインタである。本実施形態において、属性値準備部703は、CParamSettingクラスでパラメータファイルに記載された型の属性と、属性値との対応関係をメモリ内に展開し、保持しておく。パラメータファイルを参照する方法はこれに限らず、例えば、変数がインスタンス化されるたびにファイルアクセスする方法や、演算を行うたびにファイルアクセスする方法でもよい。
The
The
The
A
記述321は、クラスのコンストラクタである。本実施形態において、属性値設定部1203は、インスタンス化される際に型の属性に設定する属性値を、パラメータファイル内の変数の型と、属性との対応関係が展開されているメモリから取得する。
記述331は、演算子の定義部である。
記述332及び記述333は、演算子の処理の定義の例である。
記述332は、加算演算の処理の定義の例であり、固定小数点シミュレーションクラス同士の加算を行うメソッドである。また、記述332で定義されている加算演算では、記述321のコンストラクタで設定する属性値に従った演算を行う。例えば、3ビット幅、小数点位置2の被加算値と、3ビット幅、小数点位置−1の加算値とを加算する場合について説明する。この場合、演算部1204は、加算値のインスタンスに保持されている記述312の整数の値を左に3ビットのビットシフトを行い、被加算値の小数点位置に合わせてから加算を行う。
記述333は、代入演算の処理の定義である。記述333で定義されている代入演算では、記述321のコンストラクタで設定された属性値に応じた代入処理を行う。本実施形態において、演算部1204は、記述315及び記述316に保持されている各種モードに合わせた数値に変換し、記述313及び記述314に保持されている小数点位置、ビット幅を参照し、変換した値から記述312の整数値を格納する。
The
The
A
記述341は、代入演算時処理の定義部である。
記述342は、丸め処理の定義である。演算部1204は、記述315に保持されている丸め処理モードを参照して、モードに即した丸め処理を行う。
記述343は、オーバーフロー又はアンダーフロー処理の定義である。演算部1204は、記述316に保持されているオーバーフロー又はアンダーフロー処理のモードを参照して、モードに即したオーバーフロー又はアンダーフロー処理を行う。代入演算時処理部の詳細については、図10等を用いて後述する。
本実施形態では、記述331の演算子の定義部や、記述341の代入演算時処理部のように、記述321のコンストラクタで設定される属性値に従った演算を定義しておくことにより、演算部1204が型の挙動をシミュレートする演算を行えるようにしている。
記述302は、マクロ定義であり、ユーザが使用する固定小数点シミュレーションプログラム21でユーザがクラスとして意識せずに記述301の固定小数点シミュレーションクラスを固定小数点シミュレーション型として使用できるように隠蔽化したものである。
記述351は、コンストラクタを隠蔽化するためのマクロ定義であり、ユーザは、固定小数点シミュレーションプログラム21中の変数宣言のたびにファイル名を指定せずにクラスを利用することができる。
記述352は、パラメータファイル展開クラスと、ファイルのメモリ展開メソッドとを隠蔽化するためマクロ定義であり、ユーザはファイル名の指定のみを行うだけで利用することができる。
以上がヘッダーファイル30の説明である。
A
A
A
In the present embodiment, by defining an operation in accordance with the attribute value set by the constructor of the
The
The
The
The above is the description of the
次に、S103における型シミュレーション処理の詳細を図6の(b)及び図9を用いて説明する。なお、図9は、型シミュレーション処理の一例を示すフローチャートである。
S501において、プログラム読み込み部1201は、S101でコンパイルされた固定小数点シミュレーションプログラムのオブジェクトプログラムの実行が開始されると、プログラムに記述された処理を行うためにメモリにオブジェクトプログラムを読み出す。
S502において、属性値保持部1202は、上述したパラメータを保持する。本実施形態において、属性値保持部1202は、図6の(b)で示した固定小数点シミュレーションプログラム内の記述213が定義するマクロ定義を実行する。マクロ定義はCFixedPointSimクラス内で定義されており、属性値保持部1202は、指定されたパラメータファイルである「Param.csv」を読み込み、型の属性と、属性値との対応関係をメモリ上に保持しておく。
S503において、属性値設定部1203は、プログラム中の変数宣言が実行された際に、固定小数点シミュレーションクラスを用いた変数のインスタンス化する際のコンストラクタ内で処理を行う。ここで、図6の(b)における変数xに着目した場合について説明する。まず、記述214の宣言部では、固定小数点シミュレーション型の変数宣言の命令が実行される。記述214の宣言部は、CFixedPointSimクラスで定義された記述351のマクロ定義であり、記述351のマクロ定義に記載された処理が実行される。記述214の宣言部が実行されると、記述321のコンストラクタが実行され、CFixedPointSimクラスのインスタンス化が行われる。インスタンス化時、属性値設定部1203は、変数の型の属性に対応する属性値をインスタンス内のデータメンバーとして設定する。本実施形態において、属性値設定部1203は、S502でメモリ上に保持された変数、型の属性及び属性値の対応関係を参照して属性値を取得する。
Next, details of the mold simulation process in S103 will be described with reference to FIG. 6B and FIG. FIG. 9 is a flowchart showing an example of the mold simulation process.
In S501, when the execution of the object program of the fixed-point simulation program compiled in S101 is started, the
In step S502, the attribute
In step S503, the attribute value setting unit 1203 performs processing in a constructor for instantiating a variable using a fixed-point simulation class when a variable declaration in the program is executed. Here, a case where attention is paid to the variable x in FIG. 6B will be described. First, in the declaration part of the
S504において、演算部1204は、S503で設定された属性値に従って、型の挙動をシミュレートする演算を行う。本実施形態において、演算部1204は、固定小数点シミュレーション型の演算を行う。演算部1204は、図6の(b)における記述217の演算を実行すると、固定小数点シミュレーションクラス内で記述332として定義されている加算演算の処理の定義メソッドを実行する。また、演算部1204は、記述217の演算において変数zへの代入演算も実行する。代入演算処理が行われた場合は、代入演算の処理における記述333で定義されている定義メソッドが実行される。本実施形態では、加算演算と、代入演算とについてのみ説明したが、その他の演算についても同様である。
以上がS103における型シミュレーション処理の流れの詳細である。このように、型シミュレーション部704は、プログラム外から属性値を設定可能とすることで、プログラムの変更及びコンパイルを行うことなく属性値を変更することができる。また、属性値に従った型の演算を行うように演算を定義することにより、型シミュレーション部704は、型の挙動をシミュレートすることができる。
In step S504, the calculation unit 1204 performs a calculation that simulates the behavior of the type in accordance with the attribute value set in step S503. In the present embodiment, the calculation unit 1204 performs a fixed-point simulation type calculation. When the calculation unit 1204 executes the calculation of the
The above is the details of the flow of the mold simulation process in S103. Thus, the
次に、S504で上述した型シミュレーション処理の演算処理における代入演算の処理の流れの詳細について、図10を用いて説明する。なお、図10は、演算処理の一例を示すフローチャートである。
S600において、演算部1204は、変数に代入する値について、変数の型に設定されたビット幅で表現可能な最下位ビットより下の桁のビットの値の丸め処理を行う。本実施形態において、演算部1204は、CFixedPointSimクラスの記述311のデータ保持部が保持している記述315の値丸め処理モードのモードに従って処理を行う。本実施形態では、3ビット幅、小数点位置1の型を持つ変数に値「11011.1」を代入する場合について説明する。例えば、「11011.1」の切り上げモードの場合、2の0乗桁目は1なので切り上げを行うと「11100.0」となる。
S601において、演算部1204は、変数に代入する値が最大値、最小値を超えていた場合に、オーバーフロー又はアンダーフロー処理を行う。演算部1204は、CFixedPointSimクラスの記述311のデータ保持部が保持しているオーバーフロー又はアンダーフローモードに従い処理を行う。本実施形態では、オーバーフロー又はアンダーフローモード容認するモードが0、飽和処理を行うモードが1の場合について説明する。モードが0の場合、演算部1204は、オーバーフロー又はアンダーフローを擬似的に起こす。例えば、3ビット幅、小数点位置1の型の持つ変数に「11100.0」を代入する場合、最大値を超えているため、オーバーフロー又はアンダーフロー処理をすると、最上位ビットは2の4乗桁目であるため、2の5乗桁目以上の桁は0にリセットされる。したがって、演算部1204は、代入する値を「1100」と処理する。また、オーバーフローモード又はアンダーフローモードが0の飽和処理モードの場合、「11100.0」が最大値を超えているため、演算部1204は、飽和処理を行う。したがって、演算部1204は、代入する値を最大値の「1110」と処理する。
S602において、演算部1204は、CFixedPointSimクラスの記述311のデータ保持部にデータを格納する。例えば、演算部1204は、3ビット幅、小数点位置1の型の持つ変数に「1100」を格納する場合、まず、右に1ビットシフトし、そこから上位3ビットの「110」を記述312に格納する。以上が代入演算の処理の流れである。
Next, details of the flow of the substitution calculation process in the calculation process of the type simulation process described above in S504 will be described with reference to FIG. FIG. 10 is a flowchart illustrating an example of the calculation process.
In step S600, the arithmetic unit 1204 performs rounding processing on the value to be assigned to the variable, the value of the lower-order bit that can be expressed by the bit width set in the variable type. In this embodiment, the arithmetic unit 1204 performs processing according to the mode of the value rounding processing mode of the
In S <b> 601, the arithmetic unit 1204 performs an overflow or underflow process when the value to be assigned to the variable exceeds the maximum value and the minimum value. The calculation unit 1204 performs processing according to the overflow or underflow mode held by the data holding unit of the
In step S <b> 602, the calculation unit 1204 stores data in the data holding unit of the
本実施形態では、型探索装置100が、変数の型表現に必要な型の属性について、実行時に設定可能なようにパラメータ化する処理について説明をした。これにより、型探索装置100は、プログラム外からの属性値設定が可能となり、設定された属性値に応じて、型の挙動をシミュレートする演算を行うことができる。また、型探索装置100は、属性値を設定する際に、プログラムの書き換えや、コンパイルが不要となり、プログラム外から設定する値のみ変更すればよい。したがって、型探索装置100は、属性を変更するたびにプログラムの書き換えを行うといった従来の手法よりも効率的に型の属性検討を行うことが可能となる。
In the present embodiment, the
<実施形態2>
実施形態1では、型探索装置100が固定小数点型の変数のビット幅等の型の属性検討を行う際に、プログラムの書き換えや、書き換え後のコンパイルが不要となり、パラメータファイルの変更のみを行うことで属性検討を行う方法を示した。しかし、実施形態1では、ユーザがパラメータファイルの変更を行うことで、属性の探索を行うことを想定している。ここで、変数が複数ある場合、各変数の属性にトレードオフが生じる場合がある。その場合、ユーザが最適な属性値を探索することは困難である。そこで、本実施形態では、設計最適化支援ツールを用いて型探索装置100が最適な属性値を探索する方法について説明する。なお、実施形態1同様、変数の型を変換する前の浮動小数点変数のプログラムを第1のプログラムと呼び、変換後の固定小数点変数のプログラムを第2のプログラムと呼ぶ。また、ここでいう最適な属性値とは、ユーザが所望する属性値のことであり、以降の説明においても同様とする。また、本実施形態における型探索装置100のCPU101がROM103に格納されているプログラムを実行することにより、設計最適化支援ソフトの機能が実現される。
まず、図11を用いて実施形態2における型探索装置100について説明する。なお、図11は、実施形態2における型探索装置100のソフトウェア構成の一例を示す図である。
ここで、プログラム作成部701、コンパイル部702、型シミュレーション部704及びプログラム生成部707の機能については、実施形態1で説明した通りであるため、説明を省略する。
本実施形態では、型探索装置100が設計最適化支援ツールにより、最適な属性値を探索する。属性値準備部903及び実行結果出力部905は、型シミュレーション部704と共に、設計最適化支援ツールにより機能する。設計最適化支援ツールとしては、独自のものを作成してもよいし、既存の設計最適化支援ソフトを用いてもよい。例えば、既存の設計最適化支援ソフトとしては、modeFRONTIER(登録商標)や、Optimus(登録商標)といったものが挙げられる。
<Embodiment 2>
In the first embodiment, when the
First, the type |
Here, since the functions of the
In the present embodiment, the
属性値準備部903は、固定小数点シミュレーションプログラム内の固定小数点シミュレーション型の変数について、プログラム実行時に変数の型の属性に設定する属性値を予め準備する。本実施形態において、ユーザは、固定小数点化したい対象変数と、その対象変数の属性が取りうる候補値の範囲とを、設計最適化支援ツールを用いて入力する。そして、設計最適化支援ツールは、外部より入力された属性が取りうる候補値の範囲から、候補となる値を自動で選択し、全ての変数の属性と、属性値との対応関係が記載されたパラメータセットを出力する。ここで、設計最適化支援ツールが出力するパラメータセットの数は、ユーザが予め設定してもよいし、設計最適化支援ツールが対象変数の属性の候補値について全ての組み合わせのパラメータセットを出力するようにしてもよい。また、本実施形態において、ユーザは、変数、変数の型の属性及びその候補値の範囲を図12に示すような表形式ファイルとして入力するものとするが、入力形式に制限はなく、例えば設計最適化支援ツール上のGUI等を用いて設定してもよい。なお、図12は、パラメータの候補値を示す表形式ファイルの一例を示す図である。図12に示す表形式データで、対象変数と、その変数の属性が取りうる候補値の範囲とが入力された場合、変数x、変数y、変数zの取りうるビット幅は7bitから9bitまでである。例えば、設計最適化支援ツールが、パラメータセットとして[(変数xのビット幅)、(変数yのビット幅)、(変数zのビット幅)、・・・]を出力する場合を例に説明する。その場合、設計最適化支援ツールは、[7、7、7、・・・]や、[7、7、8、・・・]をパラメータセットとして出力することができる。本実施形態において、属性値準備部903は、パラメータセットを図3のような表形式データのパラメータファイルとして作成する。
The attribute
実行結果出力部905は、型シミュレーション部704が実行した結果を集計し、その結果の分析を行う。ここで、演算精度を最小化し、処理コストを最小化する解を得る必要がある場合について説明する。ユーザが設計最適化支援ツールを用いて演算精度誤差と、処理コストとを目的関数として設定することにより、実行結果出力部905は、横軸を演算精度、縦軸を処理コストとしたグラフを出力することが可能となる。このように、設計最適化支援ツールを用いることによって、属性値準備部903は、各変数と、その対象変数の型の属性が取りうる候補値の範囲とからパラメータセットに基づくパラメータファイルを作成する。そして、型シミュレーション部704は、そのパラメータファイルを用いてシミュレーションプログラムを実行するという処理を繰り返す。更に、実行結果出力部905は、上述したように型シミュレーション部704が実行した結果を集計し、その結果の分析を行う。
実行結果評価部906は、実行結果出力部905から取得した分析結果に基づき、パラメータセットを決定するか又は再度属性値の絞り込みを行うかを判断するための情報をユーザに提示する。より具体的にいうと、実行結果評価部906は、設計最適化支援ツールが一意に決まる最適解を得られる場合、その最適解をユーザに提示する。一方、属性同士が目的関数に対してトレードオフの関係にある場合、自動的に最適解を求めることは困難であるため、ユーザが対話的に属性の探索範囲を絞り込む必要がある。このような場合、実行結果評価部906は、多次元チャート等を用いて探索範囲の絞り込みをユーザに提示する。ユーザは、提示された探索範囲から再度、固定小数点化したい対象変数と、その対象変数の型の属性が取りうる候補値の範囲とを入力する。また、ユーザが満足する所望の性能値を得られていた場合、型探索装置100は、入力装置105を介して受け付けたユーザの指示により属性の探索を終了することもできる。
以上が、本実施形態における型探索装置100のソフトウェア構成の説明である。
The execution
Based on the analysis result acquired from the execution
The above is the description of the software configuration of the
次に図13を用いて、本実施形態におけるプログラム中の変数の型を探索する変数の型探索処理の流れについて説明する。なお、図13は、本実施形態における型探索処理の一例を示すフローチャートである。
S1100及びS1101の処理は、実施形態1で図5を用いて説明したS100及びS101の処理と同様であるため、説明を省略する。
S1102において、属性値準備部903は、プログラム実行時に変数の型の属性に設定する属性値を予め準備する。より具体的にいうと、まず、ユーザが、設計最適化支援ツールを用いて、固定小数点化したい対象変数と、その対象変数の型の属性が取りうる候補値の範囲とを入力する。そして、設計最適化支援ツールは、入力された候補値の範囲から値を自動で選択し、パラメータセットを作成する。更に、属性値準備部903は、パラメータセットに基づくパラメータファイルを作成する。
S1103の処理は、実施形態1で図5を用いて説明したS103の処理と同様であるため、説明を省略する。
S1104において、設計最適化支援ツールは、S1102の属性値準備処理において入力された変数の候補値の範囲内の値の組みあわせに関して、予め定められている数のパラメータセットを実行したか否かを判定する。そして、設計最適化支援ツールは、実行したと判定した場合、処理をS1105へ進め、実行していないと判定した場合、処理をS1102へ戻す。
Next, the flow of variable type search processing for searching for variable types in a program according to the present embodiment will be described with reference to FIG. FIG. 13 is a flowchart showing an example of the type search process in this embodiment.
The processing in S1100 and S1101 is the same as the processing in S100 and S101 described with reference to FIG.
In step S1102, the attribute
The processing in S1103 is the same as the processing in S103 described with reference to FIG.
In S1104, the design optimization support tool determines whether or not a predetermined number of parameter sets have been executed for the combinations of values within the range of candidate values of variables input in the attribute value preparation process of S1102. judge. If it is determined that the design optimization support tool has been executed, the process proceeds to S1105. If it is determined that the design optimization support tool has not been executed, the process returns to S1102.
S1105において、実行結果出力部905は、設計最適化支援ツールが型シミュレーション部704から得る実行結果を分析する。例えば、演算精度を最小化し、処理コストを最小化する解を得る必要がある場合、実行結果出力部905は、横軸を演算精度、縦軸を処理コストとしたグラフを出力する。
S1106において、実行結果評価部906は、S1105で得られる分析結果に基づき、パラメータセットを決定するか又は再度属性の最適化を行うかを判定するための情報をユーザに提示する。そして、実行結果評価部906は、ユーザの指示に基づいて、パラメータセットを決定する場合、処理をS1107へ進め、再度属性の最適化を行う場合、処理をS1102へ進める。
S1107の処理は、実施形態1で図5を用いて説明したS106の処理と同様であるため、説明を省略する。
以上が本実施形態におけるプログラム中の変数の型を探索する変数の型探索処理の流れである。
本実施形態によれば、型探索装置100は、変数が複数あり、各変数の属性にトレードオフが生じる場合であっても、所望の実行結果を得ることができる属性値を選択することが可能となる。
In step S <b> 1105, the execution
In step S1106, the execution
The processing in S1107 is the same as the processing in S106 described with reference to FIG.
The flow of the variable type search process for searching for the variable type in the program in the present embodiment has been described above.
According to the present embodiment, the
<実施形態3>
一般的に、ユーザは、画像処理等の信号処理プログラムのアルゴリズム開発を浮動小数点型の変数を用いて行い、アルゴリズムの開発が完了した後にハードウェア設計検討を行う。したがって、アルゴリズム開発時に作成されたプログラムは浮動小数点型を用いて記述されている。そのため、ユーザは、ハードウェア設計検討段階で固定小数点のビット幅等の型の属性を検討する際には、アルゴリズム開発時に作成したプログラムを変換する必要がある。
実施形態1、実施形態2では、アルゴリズム開発後におけるハードウェア設計検討時のビット幅等の型の属性検討を行う方法を説明した。本実施形態では、アルゴリズム開発時から型の属性だけでなく型そのものを実行時のパラメータ入力により選択可能にし、ハードウェア設計検討時にアルゴリズム開発で開発したプログラムを変更せずにビット幅等の型の属性検討を行う方法について説明する。
本実施形態における型探索装置100について図14を用いて説明する。なお、図14は、本実施形態における型探索装置100のソフトウェア構成の一例を示す図である。本実施形態における型探索装置100は、アルゴリズム開発後のハードウェア設計において、プログラムの変更を行うことなく、変数の型の探索を行うことが可能な型探索装置である。
<Embodiment 3>
In general, a user develops an algorithm of a signal processing program such as image processing using a floating-point type variable, and performs hardware design examination after the algorithm development is completed. Therefore, a program created at the time of algorithm development is described using a floating point type. For this reason, the user needs to convert the program created at the time of algorithm development when examining attributes of a type such as a fixed-point bit width at the hardware design examination stage.
In the first embodiment and the second embodiment, the method of examining the attribute of the type such as the bit width at the time of hardware design examination after algorithm development has been described. In this embodiment, not only the type attribute but also the type itself can be selected from the parameter development at the time of algorithm development, and the type such as bit width can be changed without changing the program developed by the algorithm development at the time of hardware design examination. A method for performing attribute examination will be described.
The type |
プログラム作成部1301は、複数の型の中から1つの型を選択することが可能な型を用いてプログラムを作成する。本実施形態において、プログラム作成部1301は、実施形態1で示した固定小数点シミュレーション型と、浮動小数点型との何れかを選択するためのパラメータを有する小数点選択型を用いてプログラムを作成する。プログラム作成部1301が作成するプログラムは、アルゴリズム開発後のハードウェア設計において、プログラムを変更することなく変数の型の探索を行うことができるアルゴリズム開発プログラムである。また、小数点選択型を使用する対象となる変数は、アルゴリズム開発者が任意に選択してもよいし、浮動小数点型としたい変数を全て小数点選択型としてもよい。
ここで小数点選択型について説明する。小数点選択型は、本実施形態ではC++言語を用いたクラスとして定義する。まず、データ保持部では、浮動小数点型のデータと、実施形態1で示したCFixedPointSimクラスのインスタンスとをデータとして保持し、更に、型選択パラメータ値を保持する。型選択パラメータ値は、プログラム実行時に使用する型を決定する値であり、本実施形態では、浮動小数点型と、固定小数点シミュレーション型とを選択する際に使用される。小数点選択型のコンストラクタでは、パラメータファイルより入力される型選択パラメータ値を参照して、パラメータファイルより読み出してきた型選択パラメータ値を取得、保持する。プログラム作成部1301は、取得した型選択パラメータ値から、浮動小数点型とするか、CFixedPointSimクラスとするかを決定する。また、クラス内のメソッドとして演算子の処理の定義メソッドを宣言し、型選択パラメータ値に応じた演算を行うように定義しておく。以上が小数点選択型の説明である。
The
Here, the decimal point selection type will be described. The decimal point selection type is defined as a class using the C ++ language in this embodiment. First, the data holding unit holds the floating-point type data and the instance of the CFixedPointSim class shown in the first embodiment as data, and further holds the type selection parameter value. The type selection parameter value is a value that determines a type to be used during program execution. In this embodiment, the type selection parameter value is used when selecting a floating point type and a fixed point simulation type. The decimal point selection type constructor refers to the type selection parameter value input from the parameter file, and acquires and holds the type selection parameter value read from the parameter file. The
コンパイル部1302は、プログラム作成部1301で作成されたアルゴリズム開発プログラムのコンパイルを行い、オブジェクトプログラムを生成する。
属性値準備部1303は、小数点選択型の属性に設定する属性値を予め準備する。本実施形態において、属性値準備部1303は、固定小数点シミュレーション型に必要な属性に加え、浮動小数点型と、固定小数点シミュレーション型とのどちらを使用するか決定する型選択パラメータ値を準備する。例えば、属性値準備部1303は、浮動小数点型に「0」、固定小数点シミュレーション型に「1」の選択パラメータ値を設定しておく。また、属性値準備部1303は、アルゴリズム開発プログラム中の変数について浮動小数点型を使用したい場合は、「0」を設定しておく。即ち、属性値準備部1303は、アルゴリズム開発プログラム中の変数について、実施形態1及び実施形態2で示した固定小数点シミュレーション型の属性値に加え、型選択パラメータ値が記載されたパラメータファイルを準備する。なお、本実施形態では浮動小数点型と、固定小数点シミュレーション型とを用いるようにしているが、型はこれに限らず、例えば、整数型等を更に追加してもよい。
The
The attribute
型シミュレーション部1304は、プログラム作成部1301で作成されたアルゴリズム開発プログラムをコンパイルしたオブジェクトプログラムを実行する。型シミュレーション部1304は、実施形態1、実施形態2で示した型シミュレーション部704の機能に加え、複数ある型の中から1つの型を選択する機能を有する。ここでは、型シミュレーション部1304は、属性値準備部1303で準備された型選択パラメータ値が記載されたパラメータファイルを参照し、アルゴリズム開発プログラム中の変数の型を決定してプログラムを実行する。
実行結果出力部1305は、実施形態1、実施形態2で示した実行結果出力部705、実行結果出力部905の機能を有し、更に、アルゴリズム開発時のプログラム実行結果を取得する機能を有する。例えば、ユーザが画像から人物を検出するアルゴリズムを開発している場合、型シミュレーション部1304は、複数の画像入力を行い、複数回プログラムを実行する。そして、実行結果出力部1305は、人物の検出率を取得する。
実行結果評価部1306は、実施形態1、実施形態2で示した実行結果評価部706、実行結果評価部906の機能を有し、更に、前記アルゴリズム開発時のプログラム実行結果がユーザにより予め定められた性能を満たすか否か評価する。例えば、ユーザが画像から人物を検出するアルゴリズムを開発している場合、実行結果評価部1306は、人物の検出率がユーザにより予め定められた閾値以上であるか否かに基づいて性能を満たすか否か評価する。
プログラム生成部707の機能については、実施形態1、実施形態2で説明した通りであるため、ここでは説明を省略する。
以上が本実施形態における型探索装置100のソフトウェア構成の説明である。
The
The execution
The execution
Since the function of the
The above is the description of the software configuration of the
次に、図15を用いて、本実施形態における型探索処理の流れについて説明する。なお、図15は、本実施形態における型探索処理の一例を示すフローチャートである。S1400からS1405までの処理は、アルゴリズム開発に関わる処理である。また、S1406からS1411までの処理は、ハードウェア設計検討時のビット幅等の型の属性検討に関わる処理である。
S1400において、プログラム作成部1301は、型を選択するパラメータを持つ型である小数点選択型を用いてアルゴリズム開発プログラムを作成する。本実施形態において、プログラム作成部1301は、浮動小数点型と、固定小数点シミュレーション型とを選択可能な小数点選択型を用いてアルゴリズム開発プログラムを作成する。
S1401において、コンパイル部1302は、S1400で作成されたアルゴリズム開発プログラムをコンパイルし、オブジェクトプログラムを生成する。
S1402において、属性値準備部1303は、S1401でパラメータ化された型を決定する型選択パラメータ値が記載されたパラメータファイルを準備する。本実施形態において、属性値準備部1303は、浮動小数点型と、固定小数点シミュレーション型との何れかを選択するが、アルゴリズム開発時は浮動小数点型を選択する型選択パラメータ値をパラメータファイルに記載しておく。
S1403において、型シミュレーション部1304は、S1401でコンパイル処理されたアルゴリズム開発プログラムのオブジェクトプログラムを実行する。そして、型シミュレーション部1304は、前記オブジェクトプログラムに基づいてパラメータファイルを参照し、S1402で準備された型選択パラメータ値より変数の型を設定する。S1403の処理の詳細は、実施形態1で示した処理の流れと同じである。例えば、本実施形態のようにユーザが画像から人物を検出するアルゴリズム開発をしている場合、型シミュレーション部1304は、複数の画像入力に対して複数回プログラムを実行する。
Next, the flow of the type search process in this embodiment will be described with reference to FIG. FIG. 15 is a flowchart showing an example of the type search process in this embodiment. The processes from S1400 to S1405 are processes related to algorithm development. Further, the processing from S1406 to S1411 is processing related to examination of type attributes such as bit width at the time of hardware design examination.
In S1400, the
In S1401, the
In S1402, the attribute
In step S1403, the
S1404において、実行結果評価部1306は、プログラム実行結果を分析する。例えば、本実施形態のようにユーザが画像から人物を検出するアルゴリズムの開発を行っている場合、実行結果評価部1306は、S1403で複数回実行された結果から検出率を算出し、検出率をユーザに提示するように出力する。出力形式はどのような形式でもよく、実行結果評価部1306は、例えばファイル等に出力結果を書き込むようにしてもよい。
S1405において、実行結果評価部1306は、S1404で出力された人物の検出率が予め設定された性能値(閾値)を満たしているか否かを評価し、性能値を満たしている場合は、処理をS1406へ進める。一方、実行結果評価部1306は、性能値を満たしていない場合は、再度アルゴリズム開発プログラムの修正を行うため、処理をS1400へ戻す。
S1406において、属性値準備部1303は、図5で上述したS102の処理に加え、型選択パラメータ値を記載したパラメータファイルを準備する。本実施形態で、浮動小数点型と、固定小数点シミュレーション型とが選択可能であるものとする。属性値準備部1303は、固定小数点化の対象となる変数について、アルゴリズム開発時は浮動小数点型を選択するパラメータ値を、ハードウェア検討時は固定小数点シミュレーション型を選択する型選択パラメータ値をパラメータファイルに記載しておく。
S1407からS1411までの処理は、実施形態2で図13を用いて説明したS1103からS1107までの処理と同様であるため、説明を省略する。
以上が本実施形態における変数の型を探索する型探索処理の流れである。
本実施形態による固定小数点プログラムの生成方法を用いれば、型探索装置100は、ハードウェア設計検討時にアルゴリズム開発で開発したプログラムを変更することなくビット幅等の型の属性検討を行うことが可能となる。
In step S1404, the execution
In step S1405, the execution
In step S1406, the attribute
The processing from S1407 to S1411 is the same as the processing from S1103 to S1107 described with reference to FIG.
The flow of the type search process for searching for variable types in the present embodiment has been described above.
If the method for generating a fixed-point program according to the present embodiment is used, the
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
<Other embodiments>
The present invention can also be realized by executing the following processing. That is, software (program) that realizes the functions of the above-described embodiments is supplied to a system or apparatus via a network or various storage media, and a computer (or CPU, MPU, etc.) of the system or apparatus reads the program. It is a process to be executed.
以上、上述した各実施形態によれば、整数・固定小数点化における、変数のビット幅等の型の属性検討の際、型探索装置100は、実行時の変数の型の属性値を読み込んで設定し、前記属性値に応じた演算を行う。これにより、型探索装置100は、プログラムの書き換えや、コンパイルを必要とすることなく型の属性を変更可能とし、検討時間を削減させることができる。また、固定小数点プログラムを用いることにより、型探索装置100は、ハードウェア設計検討時にアルゴリズム開発で開発したプログラムを変更することなくビット幅等の型の属性検討を行うことが可能となる。
As described above, according to each of the embodiments described above, when examining type attributes such as the bit width of a variable in integer / fixed-point conversion, the
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。 The preferred embodiment of the present invention has been described in detail above, but the present embodiment is not limited to the specific embodiment, and various modifications can be made within the scope of the gist of the present invention described in the claims.・ Change is possible.
Claims (13)
前記読み込み手段により読み込まれたプログラムに基づく処理の実行時に、属性に関するパラメータ情報に基づいて、前記プログラムの対象変数の属性に属性値を設定する設定手段と、
前記設定手段により属性値が設定されたプログラムに基づいて処理を実行する実行手段と、
を有する情報処理装置。 Reading means for reading the compiled program with the attributes of the target variable parameterized,
Setting means for setting an attribute value to an attribute of a target variable of the program based on parameter information regarding the attribute when executing processing based on the program read by the reading means;
Execution means for executing processing based on a program in which attribute values are set by the setting means;
An information processing apparatus.
前記読み込み手段は、前記作成手段により作成されたプログラムがコンパイルされたプログラムを読み込む請求項1記載の情報処理装置。 And a creation means for creating a program that parameterizes the attributes of the target variable in the second type based on the first program including the variable in the first type and the variable information indicating the target variable;
The information processing apparatus according to claim 1, wherein the reading unit reads a program obtained by compiling a program created by the creating unit.
前記設定手段は、前記対象変数の型と、前記属性とに係るパラメータ情報に基づいて、前記対象変数の型を設定し、前記設定した型における対象変数の属性に属性値を設定する請求項2記載の情報処理装置。 The creating means parameterizes the type of the target variable based on the first program and the variable information, and generates a program parameterizing the attribute of the target variable,
The setting means sets the type of the target variable based on parameter information related to the type of the target variable and the attribute, and sets an attribute value to the attribute of the target variable in the set type. The information processing apparatus described.
前記実行手段により実行された処理に係るシミュレーション結果情報に基づいて、前記対象変数の属性に設定された属性値を設定値として決定するか否かを判定する判定手段を更に有する請求項2乃至4何れか1項記載の情報処理装置。 The execution means executes a calculation process related to a simulation based on a program in which the attribute value is set,
5. The determination unit according to claim 2, further comprising: a determination unit configured to determine whether or not an attribute value set in the attribute of the target variable is determined as a setting value based on simulation result information relating to processing executed by the execution unit. The information processing apparatus according to any one of claims.
前記判定手段は、前記出力手段により出力されたシミュレーション結果情報に基づくユーザの指示に基づいて、前記対象変数の属性に設定された属性値を設定値として決定するか否かを判定する請求項5載の情報処理装置。 If there is a plurality of simulation result information related to the processing executed by the execution means, further comprising an output means for outputting the simulation result information according to a preset objective function,
The determination unit determines whether or not to determine an attribute value set in the attribute of the target variable as a setting value based on a user instruction based on simulation result information output by the output unit. Information processing device.
前記設定手段は、前記対象変数の属性に基づいて前記パラメータ情報作成手段により作成されたパラメータ情報から属性値情報を取得し、前記取得した属性値情報に係る属性値を前記対象変数の属性に設定する請求項1乃至9何れか1項記載の情報処理装置。 Parameter information creating means for creating parameter information in which variable information indicating a variable and attribute value information of the variable are associated with each other;
The setting means acquires attribute value information from the parameter information created by the parameter information creation means based on the attribute of the target variable, and sets the attribute value related to the acquired attribute value information as the attribute of the target variable The information processing apparatus according to any one of claims 1 to 9.
対象変数の属性がパラメータ化され、コンパイルされたプログラムを読み込む読み込みステップと、
前記読み込みステップにより読み込まれたプログラムに基づく処理の実行時に、属性に関するパラメータ情報に基づいて、前記プログラムの対象変数の属性に属性値を設定する設定ステップと、
前記設定ステップにより属性値が設定されたプログラムに基づいて処理を実行する実行ステップと、
を含む情報処理方法。 An information processing method executed by an information processing apparatus,
A read step that loads the compiled program with the attributes of the target variable parameterized,
A setting step for setting an attribute value to an attribute of a target variable of the program based on parameter information regarding the attribute when executing a process based on the program read by the reading step;
An execution step of executing processing based on the program in which the attribute value is set by the setting step;
An information processing method including:
対象変数の属性がパラメータ化され、コンパイルされたプログラムを読み込む読み込みステップと、
前記読み込みステップにより読み込まれたプログラムに基づく処理の実行時に、属性に関するパラメータ情報に基づいて、前記プログラムの対象変数の属性に属性値を設定する設定ステップと、
前記設定ステップにより属性値が設定されたプログラムに基づいて処理を実行する実行ステップと、
を実行させるためのプログラム。 On the computer,
A read step that loads the compiled program with the attributes of the target variable parameterized,
A setting step for setting an attribute value to an attribute of a target variable of the program based on parameter information regarding the attribute when executing a process based on the program read by the reading step;
An execution step of executing processing based on the program in which the attribute value is set by the setting step;
A program for running
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013131885A JP6137962B2 (en) | 2013-06-24 | 2013-06-24 | Information processing apparatus, information processing method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013131885A JP6137962B2 (en) | 2013-06-24 | 2013-06-24 | Information processing apparatus, information processing method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015007820A JP2015007820A (en) | 2015-01-15 |
JP6137962B2 true JP6137962B2 (en) | 2017-05-31 |
Family
ID=52338076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013131885A Active JP6137962B2 (en) | 2013-06-24 | 2013-06-24 | Information processing apparatus, information processing method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6137962B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6528893B1 (en) | 2018-11-07 | 2019-06-12 | 富士通株式会社 | Learning program, learning method, information processing apparatus |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07281905A (en) * | 1994-04-04 | 1995-10-27 | Fujitsu Ltd | Type declaration correcting device |
JPH1021122A (en) * | 1996-07-05 | 1998-01-23 | Mitsubishi Electric Corp | Processor monitoring device |
US6460177B1 (en) * | 1999-09-22 | 2002-10-01 | Lucent Technologies Inc. | Method for target-specific development of fixed-point algorithms employing C++ class definitions |
JP4157016B2 (en) * | 2003-11-05 | 2008-09-24 | 株式会社東芝 | Compiler apparatus and compiling method |
JP4786268B2 (en) * | 2005-09-13 | 2011-10-05 | 株式会社東芝 | Compilation device |
JP4861087B2 (en) * | 2006-07-31 | 2012-01-25 | 富士通株式会社 | Arithmetic program conversion device, arithmetic program conversion program, arithmetic program conversion method |
JP2011186999A (en) * | 2010-03-11 | 2011-09-22 | Cats Kk | Device for supporting conversion of floating point representation program to fixed point representation and support program thereof |
-
2013
- 2013-06-24 JP JP2013131885A patent/JP6137962B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015007820A (en) | 2015-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170351493A1 (en) | Systems and methods for generating code from executable models with floating point data | |
US20140306964A1 (en) | Incremental compiling of a declarative program | |
JP4157016B2 (en) | Compiler apparatus and compiling method | |
JP2008033729A (en) | Arithmetic program conversion device, arithmetic program conversion program and arithmetic program conversion method | |
KR102195103B1 (en) | Method of compiling a program | |
US9335979B1 (en) | Data type visualization | |
US11126408B2 (en) | Incremental code generation method | |
US9146750B2 (en) | Mechanism for replacing an array creation routine within code | |
Daly et al. | Synthesizing Instruction Selection Rewrite Rules from RTL using SMT. | |
TWI437457B (en) | Method for analyzing dependency of target object | |
JP6137962B2 (en) | Information processing apparatus, information processing method, and program | |
JP2008276735A (en) | Program code converter and program code conversion method | |
US9244667B2 (en) | Mechanism for transforming between type-independent and type-specific code | |
JP2005063136A (en) | Design system, design method, and design program of semiconductor integrated circuit | |
JP6651974B2 (en) | Information processing apparatus, compiling method and compiler program | |
JP4870956B2 (en) | Embedded program generation method, embedded program development system, and information table section | |
WO2018066073A1 (en) | Information processing device, information processing method, and information processing program | |
US8850386B2 (en) | Method for estimating resource consumption in the generation of a control device program code | |
JP2009163662A (en) | Information processor, control method of information processor, and control program of information processor | |
JP4898365B2 (en) | Embedded program development apparatus and program automatic generation method | |
CN106557312B (en) | Program development support device and program development support software | |
JP2011186999A (en) | Device for supporting conversion of floating point representation program to fixed point representation and support program thereof | |
WO2021005130A1 (en) | A streaming compiler for automatic adjoint differentiation | |
JP6409639B2 (en) | Compiler program, system, method, and apparatus | |
US11989537B2 (en) | Dataflow-based computer program visualization and refactoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160518 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170215 |
|
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: 20170328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170425 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6137962 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |