最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
コンパイラ 第13回 最適化 38号館4階N-411 内線5459
4章 制御の流れ-3.
FORTRAN 科学技術計算用 数値演算精度を重視したシステム K=0 DO 10 I=0,N,1 K=K+I 10 CONTINUE
計算機アーキテクチャ特論Chapter.6.6~6.9
言語処理系(4) 金子敬一.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
2006/10/12 山下 諒蔵 佐藤 春旗 前田俊行 大山 恵弘 佐藤 秀明 住井 英二郎
コンパイラ 第9回 コード生成 ― スタックマシン ―
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
2012年度 計算機システム演習 第4回 白幡 晃一.
言語処理系(9) 金子敬一.
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
6.4 コード最適化 (1)コード最適化(code optimization)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
プログラムの制御構造 選択・繰り返し.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
並列計算システム特論演習 SCS特別講義 平成13年10月15日.
目的コードの生成 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第9章.
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
関数の定義.
帰納変数 iが基本帰納変数 変数iに対して、 i := i±c という形の代入が一つのみ jがiに対する帰納変数
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
アルゴリズムとプログラミング (Algorithms and Programming)
Advanced Computer Architecture
プログラミング演習I 2003年5月7日(第4回) 木村巌.
Structured programming
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第2回 状態モデルと 命令型言語(1) 担当:犬塚
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
レジスタの割付け 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第12章5節.
通信機構合わせた最適化をおこなう並列化ンパイラ
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
プログラミング言語論 第4回 文の翻訳 C言語の文 表明 Hoare論理
依存型で型付けされた 副作用のある関数のための 型保存コンパイラ
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
プログラムの制御構造 配列・繰り返し.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向プログラミングと開発環境
プログラミング言語論 第7回 文の翻訳 C言語の文 表明 Hoare論理
再帰的手続き.
プログラムの基本構造と 構造化チャート(PAD)
コンパイラ 2011年10月20日
JAVAバイトコードにおける データ依存解析手法の提案と実装
参照されないリテラル 長谷川啓
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミングⅡ 第2回.
コンパイラ 2012年11月5日
コンパイラ 2011年11月10日
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
C#プログラミング実習 第2回.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
プログラミング言語論 第4回 文の翻訳 C言語の文 表明 Hoare論理
プログラミング言語論 第4回 文の翻訳 C言語の文 表明 Hoare論理
言語プロセッサ 第12日目 平成20年1月9日.
プログラミング基礎演習 第4回.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報処理Ⅱ 第3回 2004年10月19日(火).
6.3 インタプリタ (1)インタプリタ(interpreter)とは
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
プログラミング 2 静的変数.
Presentation transcript:

最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章

最適化の種類 実行速度を速いものにする。 所要メモリを少なくする。 大域的最適化 局所的最適化 命令の実行回数を減らす。 より速い命令を使う。 並列度を上げる。 所要メモリを少なくする。 大域的最適化 局所的最適化 のぞき穴式最適化

命令の実行回数を減らす 1度実行した結果を再利用する。 コンパイル時に実行してしまう。 命令をより実行頻度の低いところに移す。 共通部分式の削除 コンパイル時に実行してしまう。 定数の畳み込み 命令をより実行頻度の低いところに移す。 命令のループの外への移動 プログラムの形を変換する。 ループの変換 式の性質を利用して実行を省略する。 冗長な命令を取り除く。 無用命令の削除・複写の削除 特殊化する。 手続き呼出しの展開・判定の置換え

共通部分式の削除 a = b + c; (1) … d = (b + c) * e; (2) フロー解析 (2)の計算の前に必ず(1)の計算は行われていること データフロー解析 (1)の計算をしてから(2)の計算をするまでに b, cの値が変わらないこと

定数の畳み込み a = 3.5 * 2.0; (3) … b = a + 16.5; (4) (3) ⇒ a = 7.0;

命令のループの外への移動 t = b*c do i = 1, 10 do i = 1, 10 … … a = b*c a = t end do do i = 1, 10 … a = b*c end do ⇒ b*c: ループ不変 相対定数

ループ変換 ループつぶし ループ融合 ループ展開 ループif展開

式の性質の利用 論理式の部分的評価 算術式の演算順序変更 式の簡単化 x * 1 y + 0

無用命令の削除 a = a; a = b + c; その結果得られるaの値がどこでも使われない。

複写の削除 a = b; (5) … c = a + d; (6) (5)を削除 (6) ⇒ c = b + d; (5)を実行してから(6)を実行するまでの間に bの定義はない。 (5)で定義されたaを使うすべての文について 上記の(A), (B)が成り立つ。

手続き呼出しの特殊化 手続き呼び出しの展開 手続きの複製 int p(int x) { if (x<10) return x+2; else return x*2; } a = p(5); ⇒ a = 7; 手続きの複製

判定の置換え i = i + 1; if (i <= n) goto loop;

のぞき穴式最適化 BrF L ! Branch if False JUMP M L: ⇒ BrT M

より速い命令の利用 レジスタ割付け 特殊な命令の利用 メモリアクセス順序の最適化 演算の強さの軽減 ベクトル化 x**2 ⇒ x*x