線形計画法に基づく逐次化を利用したシステムレベル設計での動作並列化前後での等価性検証手法

Slides:



Advertisements
Similar presentations
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
Advertisements

OWL-Sを用いたWebアプリケーションの検査と生成
メタモデル記述を用いた成果物間の依存関係追跡手法
シーケンス図の生成のための実行履歴圧縮手法
Chapter11-4(前半) 加藤健.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
ラベル付き区間グラフを列挙するBDDとその応用
PCクラスタにおける2個体分散遺伝的アルゴリズムの高速化
Verilog HDL 12月21日(月).
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
プログラムの動作を理解するための技術として
条件式 (Conditional Expressions)
Hybrid ccにおけるアニメーションが破綻しないための処理系の改良
CSP記述によるモデル設計と ツールによる検証
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
アスペクト指向プログラミングを用いたIDSオフロード
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
Occam言語による マルチプリエンプティブシステムの 実装と検証
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
OpenMPハードウェア動作合成システムの検証(Ⅰ)
静的情報と動的情報を用いた プログラムスライス計算法
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
高速剰余算アルゴリズムとそのハードウェア実装についての研究
組込みシステムの外部環境分析のためのUMLプロファイル
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
PCPU物理設計 ~マクロレベルの配置配線~
暗黙的に型付けされる構造体の Java言語への導入
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
実行時情報に基づく OSカーネルのコンフィグ最小化
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
通信機構合わせた最適化をおこなう並列化ンパイラ
UMLモデルを対象とした リファクタリング候補検出の試み
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
バイトコードを単位とするJavaスライスシステムの試作
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
ソフトウェア保守のための コードクローン情報検索ツール
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
関数型言語による Timed CSP 検証技法の提案
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
設計情報の再利用を目的とした UML図の自動推薦ツール
米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴.
保守請負時を対象とした 労力見積のためのメトリクスの提案
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
Cソースコード解析による ハード/ソフト最適分割システムの構築
ゲームのタスクシステム 導入編 レベル2くまー By keychan.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
統合開発環境のための プログラミング言語拡張 フレームワーク
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コンパイラ 2012年10月11日
コードクローン解析に基づく デザインパターン適用候補の検出手法
PROGRAMMING IN HASKELL
回帰テストにおける実行系列の差分の効率的な検出手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
1.2 言語処理の諸観点 (1)言語処理の利用分野
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

線形計画法に基づく逐次化を利用したシステムレベル設計での動作並列化前後での等価性検証手法 松本 剛史(1), Thanyapat Sakunkonchak(1), 齋藤 寛(2), 小松 聡(1), 藤田 昌宏(1) (1) 東京大学, (2) 会津大学

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

システムレベル設計における等価性検証 システムレベル設計 システムレベル設計における等価性検証 仕様からアーキテクチャ決定までの設計を行う 利点 柔軟なHW/SW分割 高速なシミュレーション 少ない記述量 Cベース設計言語が使われることが多い 動作の並列化やスケジューリング変更を伴う アーキテクチャ変更などの際に システムレベル設計における等価性検証 動作の等価性を保ったまま変更する場合が多い 並列化・スケジューリング変更が典型的な例

本研究の目的 並列化・スケジューリング前後での等価性検証手法の提案・評価 研究の特徴 記述言語はSpecCを対象とする 既存のプロパティ検証フレームワークを応用して、並列動作を逐次化 依存関係に基づくプロパティ検証により、逐次化可能であることを保証する 検証エンジンとしてILPソルバーを用いる 逐次化された設計間で形式的等価性検証を行う 記号シミュレーションによる

SpecC言語における並列・同期 並列: par 構文で表現 同期: notify/wait 構文で表現 A.main st1 main() { x = 0; //st0 par { A.main(); B.main(); } } behavior A { main() { wait(e); a = x + 10; //st1 } } behavior B { main() { x = 20; //st2 notify(e); } } st0 B.main st2 Time st2 is always executed followed by st1 Tstart_A = Tstart_B, Tend_A = Tend_B (parより) Tstart_A <= Twait <= Tstart_st1 < Tend_st1 <= Tend_A Tstart_B <= Tstart_st2 < Tend_st2 <= Tnotify <= Tend_B Tnotify < Twait

関連研究 FSMDモデル上での検証 [3,4,5] 規則に基づく検証 [2] 高位合成ツールの情報によって対応付け [5] 変数名によって対応付け [3] 本研究では、大規模設計における並列化・スケジューリングの検証を目指す 規則に基づく検証 [2] 事前に定義して等価な変換モデルに該当するかどうかを調べる 関数単位での並列化・スケジューリングが対象 関数内部の変更は対象としない 本研究では、並列化・スケジューリングに伴う関数内部の変更も検証できる

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

ILPソルバーを利用した同期検証 [6] 対象 手法 (概要) 並列・同期を含むシステムレベル設計 1. 各 statement が実行される時刻が満たす条件式を設計記述から作成 2. 検証するプロパティを実行時刻の等式・不等式で表現 デッドロックの場合、Twait < Tnotify 3. プロパティを満たす代入値があるかをILPソルバーによって求める CEGAR (Counter-Example Guided Abstraction Refinement) を採用しており、1-3 を繰り返す

同期検証の流れ Synch. property Abstraction Refinement of abstraction behavior A (…) { void main() { y = x – 1; notify e; if(x==10) z=1; } } behavior A (…) { void main() { … notify e; if(c0) … } } Abstraction Original SpecC Boolean SpecC (Abstracted) Refinement of abstraction No Extract equalities/inequalities and solve them by ILP solver Synch. property Is the trace feasible? Fail with a trace Yes Pass Synch. error is found No synch. error

記号シミュレーションによる等価性検証 [7] 逐次動作記述に対する等価性検証手法 本研究では、逐次化された設計記述間での等価性検証に利用 手法 (概要) 設計記述を記号的に実行する 代入文などから得られる等価関係をEquivalence Class としてまとめていく 入力を等価と仮定して記号シミュレーションを行い、出力が等価であるかどうかを調べる

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

全体の流れ System-level Design 1 System-level Design 2 Fail Synchronization check Sync. Error (i.e. deadlock) Pass Fail Sequentialization Error Pass Sequential Design 1 Sequential Design 2 Equivalence checking Result: Eqv. or Ineqv.

逐次化可能な場合 逐次化可能な並列動作の条件 条件2を調べる手法 条件1: デッドロックがない 既存手法で検証可能 条件2: 任意の実行順序に対して、等価な実行結果が得られる SpecC言語では、ある時点で、1つの statement だけが評価・実行されることになっている 条件2を調べる手法 依存関係のある statement 間で実行順序が常に同じであるか、を調べる 実行順序が異なっても結果が等価になる場合は、本研究では対象としない 依存関係がなければ、並列動作間の実行順序に制約はない

プロパティの導出 (1) 依存関係のある statement 間で実行順序が常に同じであるか? 依存関係のある2つの statement st1, st2 が P1: T(st1) > T(st2) ⇒「st1 は必ず st2 の後に実行される」 P2: T(st1) < T(st2) ⇒「st2 は必ず st1 の後に実行される」

プロパティの導出 (2) 検証結果による場合分け 実際の検証はベーシックブロックを単位として行う P1: T(st1) > T(st2) P2: T(st1) < T(st2) 実際の検証はベーシックブロックを単位として行う ここでは、par/wait/notify/条件分岐 を含まない一連の statement をベーシックブロックとする (P1, P2) = (pass, pass) 起こりえない (P1, P2) = (fail, pass) 必ず st1st2 の順に実行 (P1, P2) = (pass, fail) 必ず st2st1 の順に実行 (P1, P2) = (fail, fail) 実行順序は一意ではない 逐次化 可能

逐次化の例 依存関係があり、並列動作するBB BB1, BB3 … 検証結果: BB1  BB3 c1 = a1 + b1; c2 = a2 + b2; d1 = c1 * c2; if(d1 != 0) d2 = (c2-c1)/d1; else ERROR(); BB1 c1 = a1 + b1; c2 = a2 + b2; notify e1; wait e2; d2 = (c2-c1)/d1; wait e1; d1 = c1 * c2; if(d1 != 0) notify e2; else ERROR(); BB3 逐次化 BB2 BB4

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

例題 IDCT Vocoder MP3 Decoder IDCT1: 逐次実行 IDCT2: 行計算・列計算を2並列で実行 VocSpec: 仕様。全動作を1つのHWで実現することを想定 VocArch: 動作の一部をDSPに割り当てたもの VocSched: 各PEでスケジューリングを決定したもの MP3 Decoder MP3DEC1: SWと1つの追加HW MP3DEC2: 負荷の大きいDCT計算に2つの追加モジュールを割り当てたもの

例題規模と実験環境 例題規模 実験環境 例題は全てSpecC言語で記述 CPU 3.2GHz、メモリ 4GB のPCで実行 依存関係の解析: GrammaTech 社の CodeSurfer を利用 ILPソルバー: ILOG 社の CPLEX を使用 例題 行数 par 構文数 同期数 IDCT1 300 IDCT2 314 8 IDCT3 256 2 IDCT4 390 4 10 例題 行数 par 構文数 同期数 VocSpec 9165 10 4 VocArch 10178 15 14 VocSched 10139 2 MP3DEC1 8580 6 MP3DEC2 8560 5

実験結果 (逐次化) ILPソルバーを用いた逐次化 Vocoder, MP3 ではデッドロックを検出 ILPベースの検証が不要な場合も多い バグ修正して、実験を続行 ILPベースの検証が不要な場合も多い 依存関係のない部分のみで並列化が行われた場合 ただし、依存関係がないことは依存グラフ上で調べている ILP実行時間は非常に短時間 例題 行数 (前) 行数 (後) ILP (回数) 時間 (sec) IDCT1 300 0.7 IDCT2 314 298 0.8 IDCT3 256 251 IDCT4 390 360 48 1.0 例題 行数 (前) 行数 (後) ILP (回数) 時間 (sec) VocSpec 9165 39.0 VocArch 10178 10164 48.5 VocSched 10139 10132 42.0 MP3DEC1 8580 160 MP3DEC2 8560 18 162

実験結果 (等価性検証) 記号シミュレーションによる等価性検証 逐次化後に差異のあるビヘイビア(関数)に対してのみ実行 いずれも0.1秒以内で等価性を検証できた 全体を記号シミュレーションにより検証することは現実的に不可能 逐次化された 変更前設計 逐次化された 変更後設計 差異 (行) 検証時間 (sec) seq_IDCT1 seq_IDCT2 156 < 0.1 seq_IDCT3 148 seq_IDCT4 224 seq_VocSpec seq_VocArch 25 seq_VocSched - seq_MP3DEC1 seq_MP3DEC2 478

発表内容 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題

まとめと今後の課題 まとめ 今後の課題 並列化・スケジューリング前後での等価性検証手法を提案 ILPベースのプロパティ検証を利用して、逐次化を行う 実例題を用いた実験で検証ができることを確認 今後の課題 一意に逐次化できない場合の検証手法 並列化・スケジューリングの間違いである場合が多いが 高位合成前後における等価性検証への応用 スケジューリング以外の変更・詳細化に対応する必要