現状の FP-Fixerの使われ方 コード全体の固定小数点化は困難 個々の関数毎の固定小数点化に使用 2

Similar documents
Agenda なぜ 固定小数点か? 固定小数点デザインフロー FP-Fixer Professional 製品構成 固定小数点化の課題 FP-Fixer 無料セミナー FP-Fixer の設計環境 FP-Fixer お問合せ FP-Fixer の特徴 FP-Fixer のデザインフロー FP-Fix

プログラミング実習I

PowerPoint プレゼンテーション

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

memo

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft Word - Cプログラミング演習(12)

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

数値計算

Microsoft PowerPoint - kougi2.ppt

Java講座

gengo1-12

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - kougi8.ppt

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

PowerPoint Presentation

PowerPoint プレゼンテーション

Microsoft Word - Cプログラミング演習(10)

gengo1-12

gengo1-2

情報処理演習 B8クラス

gengo1-12

プログラミング基礎

Microsoft PowerPoint - 第3回目.ppt [互換モード]

Microsoft PowerPoint - kougi6.ppt

Microsoft Word - Training10_プリプロセッサ.docx

Taro-ファイル処理(公開版).jtd

Microsoft PowerPoint - kougi4.ppt

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - kougi7.ppt

ファイル入出力

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

PowerPoint プレゼンテーション

JavaプログラミングⅠ

2006年10月5日(木)実施

Microsoft Word - Cプログラミング演習(9)

PowerPoint Presentation

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - kougi11.ppt

ファイル入出力

Cコンパイラパッケージお知らせ

memo

Microsoft Word - no02.doc

スライド 1

Microsoft PowerPoint - CproNt11.ppt [互換モード]

slide5.pptx

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - kougi9.ppt

Prog1_6th

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

Microsoft PowerPoint - 12.ppt [互換モード]

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

JavaプログラミングⅠ

program7app.ppt

Microsoft PowerPoint - prog06.ppt

インテル(R) Visual Fortran コンパイラ 10.0

Prog1_12th

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

メソッドのまとめ


(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

模擬試験問題(第1章~第3章)

PowerPoint プレゼンテーション

JavaプログラミングⅠ

ガイダンス

PowerPoint プレゼンテーション

Microsoft Word - Cプログラミング演習(11)

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

ゲームエンジンの構成要素

Microsoft PowerPoint - 13th.ppt [互換モード]

講習No.8

Microsoft PowerPoint - prog04.ppt

02: 変数と標準入出力

Prog1_2nd

AquesTalk プログラミングガイド

PowerPoint プレゼンテーション

演習課題No12

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Prog1_10th

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

02: 変数と標準入出力

スライド 1

ex05_2012.pptx

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

PowerPoint Presentation

PowerPoint プレゼンテーション

Microsoft PowerPoint pptx

デジタル表現論・第6回

Microsoft PowerPoint - ruby_instruction.ppt

JavaプログラミングⅠ

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

PowerPoint プレゼンテーション

A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B

gengo1-10

PowerPoint プレゼンテーション

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Transcription:

Feb. 20, 2013 浮動小数点変数の固定小数点化ツール FP-Fixer Ver.3 Ver.3 のご紹介 2007 年度 LSI オブザイヤー優秀賞受賞製品 2007 年度東京都ベンチャー技術大賞優秀賞受賞製品 2008 年度中小企業優秀新技術 新製品賞奨励賞受賞製品 2009 年度東京都トライアル発注認定製品株式会社礎デザインオートメーション http://www.ishizue-da.co.jp 1

現状の FP-Fixerの使われ方 コード全体の固定小数点化は困難 個々の関数毎の固定小数点化に使用 2

現状の FP-Fixer の問題 1 入力テストデータの規模 動画などは膨大なフレーム数で検証が必要で 数時間 ~ 数日かかる 解析エラーの対策 解析エラー変数は検出するがコード上のどの位置の演算でエラーか分からない 高精度な解析の対応 必ず整数部 1 ビット以上が必要で 小数部のみから成る高精度解析ができない C 言語の記述制約 キャストが動的メモリ等の扱いのルールは記述してみないと分からない 3

現状の FP-Fixer の問題 2 既存のコード利用 既に固定小数点化済みの関数の使用は困難 浮動小数点変数のある関数の使用はできない テストデータの分割による解析 64ビットマシーン対応 GUI 4

主な強化機能 大幅な解析時間の高速化の実現 入力テストデータの圧縮 限定ビット幅指定により大幅なビット幅高速解析 解析精度の改善 小数部のみのデータの解析 浮動小数点変数と固定小数点変数の混在解析 解析エラーおよび C 言語記述制約の対策 エラーが発生した演算位置の解析エラーレポート C ルールチェッカと記述例のフリーダウンロード 2013 年 2 月より弊社 web より 5

大幅な解析時間の高速化の実現 入力テストデータの圧縮 各変数のビット幅に影響するデータを抽出 丸めを考慮したテストデータ解析アルゴリズムを開発 単なる最大値 最小値データの抽出とは異なる 圧縮率はデータの規模が多ければ多いほど効果的 ある動画処理の 3 種類のデータでは 1/3 1/5 1/8 に ある静止画データは 1/100 に 限定ビット幅指定による解析 変数のビット幅は必ずしもギリギリまで解析は不要 解析したいビット幅のグループ指定が可能 例えば 4,8,12,16,20,24,28,32 ビットでおよそ 1/10 に改善 6

解析精度の改善 小数部のみのデータの解析 小数部の実際の値を仮数として表現可能に 以下のディレクティブもサポート // fpfix fixedp U 5:7 i.e 0.00nnnnn : 仮数部の開始が小数点以降 2 桁後に仮数値を開始 浮動小数点変数と固定小数点変数の混在解析 浮動小数点のまま解析したい変数には以下のディレクティブの指定が可能 // fpfix float 7

FP-Fixer Ver.3 改善項目一覧 No. 改善項目 1 解析データ圧縮コマンドの追加 2 ビット限定精度解析の追加 3 解析エラー ( ビット不足 ) のエラー表示強化 4 高精度実数演算のビット幅解析処理追加 5 浮動小数点と固定小数点の混在サポート1 ( 浮動小数点変数の混在 ) 6 浮動小数点と固定小数点の混在サポート2 ( 浮動小数点関数の混在 ) 7 ブロック ( ループ ) 単位の解析 ( シミュレーション ) を追加 8 積和変数を明示的に指定するディレクティブ追加 9 自動発生中間変数のプレフィクス文字列の指定オプション追加 10 解析速度向上のために DSP 簡易解析モードの割算解析変更 11 16ビット CPU 対応の関数ライブラリの追加 12 その他 8

高精度実数演算のビット幅解析処理追加 1 概要 高精度実数演算のビット幅の解析処理は AlgorithmicC(-all_algoc) のみの対応となります 高精度実数演算対象の変数がある場合 デフォルトで 高精度実数演算を行います 高精度実数演算を行わない場合は -En オプションを指定してください この機能は 以下の 2 つの機能をもちます 小数点以下の 0( ゼロ ) が多い極小値 整数部が大きい場合 9

高精度実数演算のビット幅解析処理追加 2 小数点以下の 0( ゼロ ) が多い極小値 0.005のように正数部が無く 小数部のみでかつ 0で始まるような数値の場合整数部 : 1ビット 小数部 : 31ビット拡張小数部 : 2ビット ( 小数部は合計 33ビット分で表現 ) として 解析処理をを行います (-max 32の場合 ) 拡張小数部は 小数部開始の0( ゼロ ) の数により異なります ディレクティブで指定する場合は次のようになります // fpfix fixedp S 32:34 i.t 32 は 変数全体のビット幅で 整数部が 1 ビット 小数部が 31 ビット 拡張小数部が (34-32) で 2 ビットとなります よって 小数部は (31+2) で 33 ビットで解析します ディレクティブ指定する場合 小数部の 0(2 進 ) の数に注意して下さい 0 の数より大きく拡張小数部を指定すると正常に解析できません 10

高精度実数演算のビット幅解析処理追加 3 整数部が大きい場合 小数部が無く整数部のみの変数で max ビットを超えるような値となる場合 max ビットに収まるように仮数表現でデータを保持します ディレクティブで指定する場合次のようになります // fpfix fifxedp S 32:-2 i.t 32+2=34 ビットのデータを表現するようになります 但し 下位 2 ビットは 0 となります 11

解析データ圧縮起動コマンド 1 概要本コマンドは FP-Fixer への入力データを精度解析に必要なデータのみに圧縮する コマンド extract_fpfdat [option's] <src_files> <src_files> : C source files [option's] -sw : S/W(DSP) の解析用にデータ圧縮 -hw : H/W(AlgorithmicC) の解析用データ圧縮 -arg <args> : 入力引数 -erate <err_rate> : 評価レート ( デフォルト0.1%) -mft <file_name> : モジュール引数定義ファイル ( 必須 ) -ctf <file_name> : 制約条件ファイル指定 (FP-Fixerの制約条件ファイル同様) その他 FP-Fixerの起動オプション コマンド使用例 FP-Fixer の実行ディレクトリで 次のようにコマンドを起動してください %extract_fpfdat -mft mod_form.txt -erate 0.3 -arg input.data *.c 1 モジュール引数定義ファイル mod_form.txt 2 入力データファイル input.data 3 評価レート 0.3% 12

解析データ圧縮起動コマンド 2 コーディング規約 1 入力引数は モジュール関数 (//fpfix module) の入出力データのみとする 2 評価関数で NG となる場合の レコード番号を出力するコードを記述レコード番号を出力するファイルは./fpfdat_addrec.txt 固定 3 入力引数が複数の入出力ファイルで構成する場合 fpfdat コマンドの モジュール引数定義ファイル の順番に注意してください 入出力引数の順番と同じになるように記述してください 記述例 typedef struct{ double real; double image; }complex; int main( int argc, char *argv[] ) rr = 0; { complex inbuf[4]; complex outbuf_sfft[4]; complex outbuf_sfftfp[4]; FILE *fp; int rr, r; int rec_no; FILE *rec_fp; // レコード番号出力ファイルオープン rec_fp = fopen( "./fpfdat_addrec.txt", "w" ); // モジュール入力データファイルオープン fp = fopen( argv[1], "r" ); rec_no = 0; while(1){ // データ読込み及びモジュール変数 // argv[1] のファイルから // inbuf へデータセット ++rec_no; // 期待値作成 fft(inbuf,outbuf_sfft); / モジュールコール fftfp(inbuf,outbuf_sfftfp); //fpfix module // 評価 r = evfunc( outbuf_sfft, outbuf_sfftfp, rate ); if( r!= 0 ){ rr = 1; // NG フラグ ON // NG レコード番号に出力 fprintf( rec_fp, "%d\n", rec_no ); } } fclose( fp ); fclose( rec_fp ); return rr; } 13

ビット限定精度解析の追加 1 プロファイルで取得した値を評価レートにかけ 仮の固定小数点のビット幅を算出して このビット幅を基に固定小数点化を行います 評価レートは -erate で指定した値 S/W 用 (-dsp) 及び H/W(-algoc) で それぞれの限定ビットは 次のようになります 起動のオプション -bx_mode で動作します 14

ビット限定精度解析の追加 2 S/W S/W(-dsp -dsp) 向けの限定精度解析 C 言語変数の型を基本としたビット幅 char 8 ビット short 16 int 32 long long 64 accum -maxt で指定した値 -maxt 指定なしの場合は -maxの値 各型のビット幅は 次のオプションにより変更可能です char : -bx_byte <size> short : -bx_sort <size> int : -bx_int <size> long long : -bx_longlong <size> accum : -bx_accum <size> (-maxtより優先) char から acuum の指定は char < short < int < longlong <accum となるように指定してください なお -max 32 の時は それ以上の値を指定しても accum を除いて 32 以下になります (-max で指定した値が優先 ) 15

ビット限定精度解析の追加 3 H/W 向け限定精度解析 デフォルトは 4 8 12 16 20 24 28 32... -max で指定した値以下です 次のように -bx_bits オプションで変更可能です -bx_bits 8:16:24:32 (-max で指定した値以下が有効 ) 16

礎解析エラー DA ( ビット不足 ) のエラー表示強化 1 概要解析時のエラー ( ビット不足 ) のエラー表示を 変数名及びエラー箇所が分かるように表示強化しました 通常は エラーの変数名及び必要と思われるビット数をのみ表示します 表示されるビット数はあくまでも目安です -erep オプション指定では 次のようなフォーマットを使用います <type> : <name> <file_name> <func_name> <iw>:<fw> <u_iw>:<u_fw> <fixval> <file_name> <func_name> <lineno> <floatval> <exp> <leftval> <rightval>... <u_fw> : 必要と思われる小数部ビット幅 ( 参考 ) <type> : var 変数 <fixval> : 固定小数点時の値 ( 参考 ) cnst 定数 exp 式 <lineno> : ソース行 <name> : varの時変数名 <floatval> : 浮動小数点時の値 cnstの時定数の値 <exp> : 演算子 expの時 mul( 乗算 ) 又はdiv( 除算 ) <leftval> : 浮動小数点時の入力値 <file_name> : ソースファイル名 <rightval> : 浮動小数点時の入力値 <func_name> : 関数名 グローバル変数の場合 $ <iw> : エラー時の正数部ビット幅 必要と思われる小数部ビット幅は 参考値です <fw> : エラー時の小数部ビット幅実際の必要ビット数とは異なる場合があります 17 <u_iw> : 必要と思われる正数部ビット幅 ( 参考 )

解析エラー ( ビット不足 ) のエラー表示強化 2 1 実行レベルオプション -grun_level <level> <level> の部分追加 0: プロファイルの最大値 / 最小値で必要ビット幅を計算し -max または -maxt に収まらない場合エラー出力します ( 解析を行う前に行います ) 1: 解析を実行します (-grun_level オプション指定しない場合と同様 ) 2-erate オプション -erate <error_rate> エラーレートをパーセントで指定します デフォルトは (1%) です 上記 エラーの検出や 必要ビット幅計算に用います 実際のエラーレートより少し小さめの指定をオススメします 3その他のオプション -erep : エラー表示機能を動作します -no_erep : エラー表示機能を動作しません -erep_o <file> : 上記エラー表示を指定ファイルに出力します 18

礎浮動小数点と固定小数点の混在サポート DA 1 概要 ( 浮動小数点変数の混在使用 ) 浮動小数点変数と固定小数点変数の混在をサポートします 次のディレクティブで指定された変数は 浮動小数点 (double) のままとします // fpfix float この機能は AlgorithmicC(-algoc) 及び DSP(-dsp) のみ対応です また -float オプションで max ビットを超えるような整数値となる場合その変数は浮動小数点 (double) のままとします 但し この機能は AlgorithmicC(-algoc) のみで対応です 注意 DSP の場合 //fpfix float の追加により 16 ビット CPU の場合は double は 4 バイト (float 型 ) で解析します 従って 4 バイト (float 型 ) で解析するするオプション -grun_float を追加しました 19

礎浮動小数点と固定小数点の混在サポート DA 2 概要 ( 浮動小数点関数の混在使用 ) 浮動小数点関数 ( 固定化しない :unmodule float) 及びユーザが作成した関数をコール する場合 コールする前に 固定小数点化しない (//fpfix float) 変数に代入式を記述してください この記述をより 浮動小数点関数の呼び出しが可能となります 例 typedef struct _ss { double MA; double MB; } SS_STR; void test_fp( double A, double B, double *Y ) { SS_STR in_tmp; // fpfix float double y_tmp; // fpfix float void func_ummodule( SS_STR *in, double *Y ) { in_tmp.ma = A; --- in_tmp.mb = B; } func_unmodule( in_tmp, &y_tmp ); // fpfix unmodule float *Y = y_tmp; } 20

ブロック ( ループ ) 単位の解析 概要 -bsim_mode オプションで ループを 1 つのブロックとして 解析を実行します 最初のブロックに関係する変数のビット幅が決定したら そのブロックからの出力をログテーブルとして作成します ログテーブルを作成したブロックは ログを参照しブロック内は実行しません 注意 1 このブロック単位の解析の高速化は 負荷のかかるループが平行している場合などに有効です 2 負荷が余りかからないループや ループが 1 つの場合などは 解析時間は余計にかかる場合があります 21

積和変数を指定するディレクティブの追加 概要 積和変数を明示的に指定するディレクティブ //fpfix muladd_var を追加しました 22

自動発生中間変数のプレフィクス文字列 概要 例 多項演算の 2 項式化及びキャストで発生するテンポラリ変数のプレフィクス文字列を指定できるようにしました -p_tvar <prefix> : 多項演算の 2 項式 -p_cvar <prefix> : キャスト fpfix... -p_tvar _tmp_.. _tmp_0 となります 23

製品別機能サポート状況 機能 SW 向け Alogi-C 向け HW-Ansi-C 特記事項 標準実行モード - Express 実行モード -ex_mode ビット限定実行モード -bx_mode math 関数テーブル生成 - 高精度実数解析 予定 ビット限定モード時 は不可 浮動小数点混在 - 24

価格と出荷時期 価格 年間ライセンス FP-Fixer Professional : 120 万円 FP-Fixer Express : 55 万円 (FPGA 版と SW 版それぞれ用意 ) 永久ライセンス 出荷 FP-Fixer Professional : 350 万円 ( 年間保守料は 15%) FP-Fixer Express : 95 万円 (FPGA 版とSW 版それぞれ用意 バージョンアップ費用は 35 万円 ) 2012 年 12 月 21 日より 25

FP-Fixer お問合せ 図研エルミック株式会社東日本営業部 TEL:045-624-8002 FAX:045-476-1102 E-mail:info@elwsc.co.jp 株式会社礎デザインオートメーション営業部 TEL:03-6869-9458 FAX:03-5501-9054 E-mail( 営業部 ):sales@ishizue-da.co.jp E-mail( サポート ):fpf_support@ishizue-da.co.jp ホームページ :http://ishizue-da.co.jp/ ISZFP10003 26

27