概要
- CS 6120 はCornell大学のPhDレベルの コンパイラ実装 コース
- 中間表現 や データフロー解析、最適化などの基本トピックを網羅
- LLVMや独自IRを使った 実装課題、論文読解が中心
- 自己学習型 で、締切やディスカッション参加は不要
- コース修了後は フィードバックフォーム 提出を推奨
CS 6120: Advanced Compilers 自己学習型オンラインコース概要
- Adrian Sampson によるCornell CSのPhDレベル講義
- プログラミング言語実装技術、コンパイラ理論の体系的習得
- 中間表現(IR)、データフロー、古典的最適化、JIT、ガーベジコレクション等の幅広いテーマ
- オープンソース教材 (GitHub公開)、課題はLLVMおよび教育用IR(Bril)を利用
- 論文読解 ・ 動画視聴 ・ 実装課題 の組み合わせで進行
進行方法・特徴
- 想像上の大学 で4単位相当、成績評価なし
- 動画とノート による各レッスン、随時論文読解を挿入
- 実装課題 は抽象概念の具体化・理解深化を目的
- 課題締切なし、Zulipでの議論参加不可
- 本コースでは 期末プロジェクト の代わりに「コンパイラの魔法で世界を変える」課題
カリキュラム構成
-
Lesson 1: 概要と導入
- コース紹介動画
- 「Producing Wrong Data Without Doing Anything Obviously Wrong!」論文
- SIGPLAN Empirical Evaluation Guidelines
-
Lesson 2: プログラム表現
- プログラム表現法
- Brilによる実践入門
-
Lesson 3: 局所解析と最適化
- シンプルなデッドコード除去
- ローカル値番号付け
-
Lesson 4: データフロー解析
- データフロー理論と実装課題
-
Lesson 5: グローバル解析
- グローバル解析・最適化
- 「Efficient Path Profiling」論文
-
Lesson 6: 静的単一代入(SSA)
- SSA形式
- 「Provably Correct Peephole Optimizations with Alive」論文
-
Lesson 7: LLVM入門
- LLVM概要
- LLVMパス作成
-
Lesson 8: ループ最適化
- ループ最適化動画
-
Lesson 9: 手続き間解析
- 手続き間解析動画
- 「Type-Based Alias Analysis」論文
-
Lesson 10: エイリアス解析・ガーベジコレクション
- エイリアス解析動画
- 「A Unified Theory of Garbage Collection」論文
- 「Fast Conservative Garbage Collection」論文
-
Lesson 11: メモリ管理とJIT
- メモリ管理動画
- 「An Efficient Implementation of SELF」論文
- 「Trace-Based Just-in-Time Type Specialization for Dynamic Languages」論文
-
Lesson 12: 動的コンパイラと最適化
- 動的コンパイラ動画
- 「Tracing via Speculation」
- 「Superoptimizer: A Look at the Smallest Program」論文
- 「Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures」論文
-
Lesson 13: 並行性と並列化
- 並行性・並列化動画
- 「Threads Cannot Be Implemented as a Library」論文
- 「Exploiting Superword Level Parallelism with Multimedia Instruction Sets」論文
- 「A Type and Effect System for Deterministic Parallel Java」論文
- 「Formal Verification of a Realistic Compiler」論文
-
Lesson 14: 高速コンパイラ
- 高速コンパイラ設計
学習サポート・注意点
- 動画制作は初心者 によるため初期レッスンは画質等に配慮
- バグ報告 はGitHubリポジトリ経由で受付
- コース修了時は フィードバックフォーム 記入推奨
まとめ
- CS 6120 は理論と実践を融合した 先端コンパイラ教育
- 自己主導型学習 で柔軟に進行可能
- コンパイラ技術で 世界を変える ための基礎と応用力の養成