Submit Search
Upload
“Symbolic bounds analysis of pointers, array indices, and accessed memory regions”他の紹介@PLDIr#4
•
0 likes
•
1,290 views
Masahiro Sakai
Follow
PLDIr#4 (2009-12-02) での紹介。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 27
Download now
Download to read offline
Recommended
Cpp cv04
Cpp cv04
Satoshi Fujimoto
N3495 inplace realloc
N3495 inplace realloc
Takatoshi Kondo
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpoint
Logico
C# 8
C# 8
m ishizaki
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
言語処理系入門10
言語処理系入門10
Kenta Hattori
SICP
SICP
S W
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Masahiro Sakai
Recommended
Cpp cv04
Cpp cv04
Satoshi Fujimoto
N3495 inplace realloc
N3495 inplace realloc
Takatoshi Kondo
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpoint
Logico
C# 8
C# 8
m ishizaki
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
言語処理系入門10
言語処理系入門10
Kenta Hattori
SICP
SICP
S W
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Run-time Code Generation and Modal-ML の紹介@PLDIr#2
Masahiro Sakai
モナドをつくろう
モナドをつくろう
dico_leque
CppCV03
CppCV03
Satoshi Fujimoto
Boost17 cpplinq
Boost17 cpplinq
miki_hirofumi
C#のキモイ高速プログラミング
C#のキモイ高速プログラミング
Kaisei Sunaga
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
Kazuyuki TAKASE
GC in C++0x
GC in C++0x
yak1ex
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
円と円の交点の求め方
円と円の交点の求め方
Sho IIZUKA
Cpp cv01
Cpp cv01
Satoshi Fujimoto
入出力
入出力
rippro
imset による条件付き独立性の記述(文献紹介)
imset による条件付き独立性の記述(文献紹介)
Tomonari Sei
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
オブジェクト指向入門7
オブジェクト指向入門7
Kenta Hattori
NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波
洋史 東平
kagami_comput2016_07
kagami_comput2016_07
swkagami
積分要素の応答性(MATLAB)
積分要素の応答性(MATLAB)
Tsuyoshi Horigome
Processing資料(2) 再帰
Processing資料(2) 再帰
reona396
C++ lecture-2
C++ lecture-2
sunaemon
OpenGLと行列
OpenGLと行列
miyosuda
TVM の紹介
TVM の紹介
Masahiro Masuda
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
More Related Content
What's hot
モナドをつくろう
モナドをつくろう
dico_leque
CppCV03
CppCV03
Satoshi Fujimoto
Boost17 cpplinq
Boost17 cpplinq
miki_hirofumi
C#のキモイ高速プログラミング
C#のキモイ高速プログラミング
Kaisei Sunaga
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
Kazuyuki TAKASE
GC in C++0x
GC in C++0x
yak1ex
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
円と円の交点の求め方
円と円の交点の求め方
Sho IIZUKA
Cpp cv01
Cpp cv01
Satoshi Fujimoto
入出力
入出力
rippro
imset による条件付き独立性の記述(文献紹介)
imset による条件付き独立性の記述(文献紹介)
Tomonari Sei
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
オブジェクト指向入門7
オブジェクト指向入門7
Kenta Hattori
NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波
洋史 東平
kagami_comput2016_07
kagami_comput2016_07
swkagami
積分要素の応答性(MATLAB)
積分要素の応答性(MATLAB)
Tsuyoshi Horigome
Processing資料(2) 再帰
Processing資料(2) 再帰
reona396
C++ lecture-2
C++ lecture-2
sunaemon
OpenGLと行列
OpenGLと行列
miyosuda
What's hot
(20)
モナドをつくろう
モナドをつくろう
CppCV03
CppCV03
Boost17 cpplinq
Boost17 cpplinq
C#のキモイ高速プログラミング
C#のキモイ高速プログラミング
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
GC in C++0x
GC in C++0x
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
円と円の交点の求め方
円と円の交点の求め方
Cpp cv01
Cpp cv01
入出力
入出力
imset による条件付き独立性の記述(文献紹介)
imset による条件付き独立性の記述(文献紹介)
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
オブジェクト指向入門7
オブジェクト指向入門7
NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波
kagami_comput2016_07
kagami_comput2016_07
積分要素の応答性(MATLAB)
積分要素の応答性(MATLAB)
Processing資料(2) 再帰
Processing資料(2) 再帰
C++ lecture-2
C++ lecture-2
OpenGLと行列
OpenGLと行列
Similar to “Symbolic bounds analysis of pointers, array indices, and accessed memory regions”他の紹介@PLDIr#4
TVM の紹介
TVM の紹介
Masahiro Masuda
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
C++0x in programming competition
C++0x in programming competition
yak1ex
C++ lecture-1
C++ lecture-1
sunaemon
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
ssuser3a4b8c
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
Slide
Slide
Takefumi MIYOSHI
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
llvm入門
llvm入門
MITSUNARI Shigeo
Python physicalcomputing
Python physicalcomputing
Noboru Irieda
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
Ryuuta Tsunashima
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
Hello, Guava ! samples
Hello, Guava ! samples
輝 子安
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
Kiyoshi Ogawa
Similar to “Symbolic bounds analysis of pointers, array indices, and accessed memory regions”他の紹介@PLDIr#4
(20)
TVM の紹介
TVM の紹介
ぱっと見でわかるC++11
ぱっと見でわかるC++11
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
新しい並列for構文のご提案
新しい並列for構文のご提案
C++0x in programming competition
C++0x in programming competition
C++ lecture-1
C++ lecture-1
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
Slide
Slide
Cython intro prelerease
Cython intro prelerease
llvm入門
llvm入門
Python physicalcomputing
Python physicalcomputing
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
Hello, Guava ! samples
Hello, Guava ! samples
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
More from Masahiro Sakai
DeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep Learning
Masahiro Sakai
Towards formal verification of neural networks
Towards formal verification of neural networks
Masahiro Sakai
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習
Masahiro Sakai
Writing a SAT solver as a hobby project
Writing a SAT solver as a hobby project
Masahiro Sakai
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
Masahiro Sakai
ゼロピッチ: MOOC
ゼロピッチ: MOOC
Masahiro Sakai
SAT/SMT solving in Haskell
SAT/SMT solving in Haskell
Masahiro Sakai
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Introduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT Evaluation
Masahiro Sakai
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through Minimality
Masahiro Sakai
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
Masahiro Sakai
How a CDCL SAT solver works
How a CDCL SAT solver works
Masahiro Sakai
Omega test and beyond
Omega test and beyond
Masahiro Sakai
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
Masahiro Sakai
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
Masahiro Sakai
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Masahiro Sakai
Relaxed Dependency Analysis
Relaxed Dependency Analysis
Masahiro Sakai
自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装
Masahiro Sakai
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3
Masahiro Sakai
More from Masahiro Sakai
(20)
DeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep Learning
Towards formal verification of neural networks
Towards formal verification of neural networks
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習
Writing a SAT solver as a hobby project
Writing a SAT solver as a hobby project
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
RClassify: Classifying Race Conditions in Web Applications via Deterministic ...
ゼロピッチ: MOOC
ゼロピッチ: MOOC
SAT/SMT solving in Haskell
SAT/SMT solving in Haskell
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Introduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT Evaluation
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through Minimality
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
How a CDCL SAT solver works
How a CDCL SAT solver works
Omega test and beyond
Omega test and beyond
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
自動定理証明の紹介
自動定理証明の紹介
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Relaxed Dependency Analysis
Relaxed Dependency Analysis
自然言語をラムダ式で解釈する体系PTQのHaskell実装
自然言語をラムダ式で解釈する体系PTQのHaskell実装
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3
Recently uploaded
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
“Symbolic bounds analysis of pointers, array indices, and accessed memory regions”他の紹介@PLDIr#4
1.
PLDIr#4 (PLDI 2000)
2009-12-02 酒井 政裕
2.
Citation Count: 34 Symbolic
bounds analysis of pointers, array indices, and accessed memory regions Radu Rugina, Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology
3.
概要 プログラムがアクセスするメモリの範囲を解析す るアルゴリズム 用途 競合の検出 ・
自動並列化 範囲外アクセスの検出 ・ 範囲チェックの省略 ターゲットのプログラム 制御に再帰を用いるような分割統治型のプログラム メモリの動的確保とポインタ演算を含む
4.
特徴 シンボリックな解析 (具体的な値ではなく式の形で範囲を求める) 範囲の包含に関する不動点計算は用いない 有限回で収束しない場合がある 線形計画問題に還元して解く 上限と下限を多項式で表現
線形計画問題に変換 線形計画問題の解から、ポインタや配列の添え字の 上限・下限が求まる
5.
ターゲットのプログラムの例 (Cilk) 1:
#define CUTOFF 16 20: void main(int argc, char *argv[]) { 2: 21: int size, *A; 3: void baseInc(int *q, int m) { 22: scanf("%d", &size); 4: int i; 23: if (size > 0) { 5: i = 0; 24: A = malloc(size * sizeof(int)); 6: while(i <= m-1) { 25: /* code that initializes A */ 7: *(q+i) += 1; 26: dcInc(A, size); 8: i = i+1; 27: /* code that uses A */ 9: } 28: } 10: } 29: } 11: void dcInc(int *p, int n) { 12: if (n <= CUTOFF) { 13: baseInc(p, n); 14: } else { 15: spawn dcInc(p, n/2); 16: spawn dcInc(p+n/2, n-n/2); 並列呼び出しで 17: 18: } sync; 競合が発生するか? 19: }
6.
基本的な概念 allocation blocks 確保されたメモリブロック
メモリ確保位置(変数宣言, mallocの呼び出し等)に対 して一個 (同じ場所が複数回実行される場合でも、確保される複数の メモリブロックを区別しない) symbolic regions あるblock中の連続した領域 有理数係数の多項式による上限と下限で表わされる
7.
流れ
どの allocation block がどこで 読み書きされうるかを interprocedual に解析
8.
Symbolic Bounds at
the Start of Basic Blocks まず、各基本ブロックの 入り口での各変数の上 下限を表す変数を導入 (右図) 次に記号実行で上下限 を伝播 ただし多項式で表現できな い場合には、-∞, ∞ にす る
9.
基本ブロック内で記号実行
記 号 実 行
10.
制約の生成
「基本ブロックの出口で の値の範囲 ⊆ 続く基本 ブロックの入り口での範 囲」という制約を生成 例: l i,2 ≤ 0 0 ≤ u i,2
11.
得られた制約
← 引数の上下限は その引数の初期値。 他の変数は[-∞,∞] ← 記号実行結果か ら得られた制約 ← 出来るだけ範囲 を小さくしたい
12.
線形計画問題への変換 上下限の変数を、引数の初期値を変数とする 多項式で表現されると仮定して、置き換える 例) li,2
= c1q0 + c2m0 + c3 , li,3 = c7q0 + c8m0 + c9 制約条件は係数の不等式に変換 li,2 ≤ li,3 + 1 ならば、 c1 ≤ c7 、 c2 ≤ c8 、 c3 ≤ c9 + 1 目的関数も全係数が最小という条件に変換 注: これらの変換には q0, m0 が正である必要がある 簡単な解析で引数の初期値の符号を別途推論
13.
得られた線形計画問題と解
←得られた問題 これを解いて、各ciの 値が求まる それらから、各変数 の各点での上下限 の多項式が得られる 例: li,3 = 0, ui,3 = m0 - 1
14.
Intraprocedural Region Analysis
ポインタ/配列アクセス時点での各変数の上下限 から、アクセスする範囲がわかる *(q+i) += 1 の実行前の q の範囲が [q0,q0], i の範囲が [0, m0 - 1] なら、この文は [q0,q0 + m0 – 1] の範囲に,アクセス 手続き中で読む範囲と書く範囲を、各 allocation block ごとにまとめる どの allocation block にアクセスする可能性がある かは、Pointer and Read-Write Sets Analysis で解 析できているはず
15.
Interprocedural Region Analysis
基本的には、Call graph の SCC 単位で、情報 を伝播しつつやる
16.
Interprocedural Region Analysis
Symbolic Unmapping 呼ばれた関数の仮引数を変数とする多項式で範囲が 得られるが、呼び出し側の変数で表現された範囲が 欲しい 再帰がある場合の取扱いが肝だけど、 説明が面倒なので省略 同様に線形計画問題に還元して
17.
解析の例
read/write [q0, q0+m0-1] in a 1: #define CUTOFF 16 20: void main(int argc, char *argv[]) { 2: 21: int size, *A; 3: void baseInc(int *q, int m) { 22: scanf("%d", &size); 4: int i; 23: if (size > 0) { 5: i = 0; read/write 24: A = malloc(size * sizeof(int)); 6: while(i <= m-1) { 7: *(q+i) += 1; [p , p +n0-1] in a 0 0 25: 26: /* code that initializes A */ dcInc(A, size); 8: i = i+1; 27: /* code that uses A */ 9: } 28: } 10: } 29: } 11: void dcInc(int *p, int n) { read/write 12: if (n <= CUTOFF) { read/write [A, A+size-1] in a 13: baseInc(p, n); 14: } else { [p, p+n/2-1] in a 15: spawn dcInc(p, n/2); 16: spawn dcInc(p+n/2, n-n/2); 17: sync; 18: } read/write 19: } [p+n/2, p+n-1] in a
18.
アルゴリズムの拡張 Correlation Analysis Integer Division Constraint
System Decomposition 同じく省略
19.
実験 SUIF compiler infrastructure
を使って実装 Cプログラムを自動並列化 Cilkプログラムがrace-freeかを検査 C/Cilkプログラムが配列の範囲エラーを起こしうるかを検査 対象プログラム Fibonacci, QuickSort, MergeSort, Heat(メッシュでの熱拡散), Knapsack, BlockMul (行列の積、スタック上に一時配列を確 保), NoTempMul(同上、ただし一時配列不使用), LU 逐次版(C)と並列版(Cilk) 相互再帰、ポインタ演算、キャストを含む
20.
実験結果 Race-freeの検査 Knapsack以外のプログラムがRace-freeであること を確認できた
(Knapsackのraceは意図的なもの) Cの自動並列化 Cilk版と同じ並列性を検出できた 配列の範囲エラーを起こしうるかの検査 すべてのプログラムが範囲エラーを起こさないことを 確認できた
21.
並列化によるスピードアップ
22.
ビット幅の解析 このアルゴリズムは変数の値の範囲を求めてい るので、ビット幅の解析に応用可能 アルゴリズムを修正して実験したら、結構ビット 幅を減らせた
23.
Citation Count: 51 Translation
Validation for an Optimizing Compiler George C. Necula University of California, Berkeley
24.
Translation Validation Infrastructure
TVI (Translation Validation Infrastructure) コンパイラの最適化の各フェーズで変換前と 変換後で意味が等しいことを検証するインフラス トラクチャ トランスレータそのものを検証するのは大変なの で、個々の翻訳自体を検証
25.
Simulation relation correct
な“simulation relation” Σが存在すれ ば等価 Σは三つ組 (PCS, PCT, E) の集合 PCS, PCT,は変換前と変換後のプログラムポイント Eは変数やレジスタの対応を表す論理式 各 (PCS, PCT, E) ∈ Σ がPCS, PCT,から実行 をはじめたときに、同じ関数呼び出しの系列と返 り値になるときに、correct
26.
最適化器が simulation relation
を出力すれば 検査可能 しかし、多くの最適化については simulation relation を推論可能 Symbolic evaluation を使って推論? 完全ではないので、simulation relation を発見できず false alarm が出る可能性あり
27.
コンパイラの1パスを実装する程度の労力で実 装できた gccでgccそのものやLinuxカーネルをコンパイル した場合を対象に実験 結構検証出来た? コンパイラのテスト・メンテナンスに有効
Download now