2018/11/10 コンパイラ勉強会に行ってきた
コンパイラ勉強会とは
コンパイラとその関連技術について共有し学ぶ勉強会です。
まとめると
自分がまったく知らなかったことがたくさんあったので学びになった。もっと低レイヤーな部分を触っていかないといけないと思った。
そして、勉強会中に出てきた名言の通り、人生で一度くらいはコンパイラをつくらねば。。
Twitterのハッシュタグ#compiler_study
で一部実況していたので、詳細はそちらを参照のこと。
始まった#compiler_study
— mozy (@ok_mozy) November 10, 2018
ここからは自分用のメモ(ガンガン突っ込んでください。。)
LLVM Backendについて
www.slideshare.net
- LLVM ってLow Level Virtual Machineの略ではなかったんか。(公式サイトになんの略でもないぜとあるらしい)
- Type-Legalizeの種類は以下のようなものがある
- Promote
- Expand
- Splitting
- Widening
- Scalarizing
- 個人的にはMCLayerあたりが気になった、調べよう。
- バックエンドコンパイラとしてのLLVMは今後も主流であろうとのこと。
- 質疑応答では、いいデバッグ方法はないだろうかなどと質問が飛んでいた。以下の回答ツイートが参考になりそう。
LLVMバックエンドのデバッグ方法、僕レベルだとnoopt/dbgバイナリとninjaとlldを使う、に落ち着いた記憶。つまりデバッグ情報に期待するのをやめて、ビルド速度最速にしてprintfを入れてはビルドして動かすを高速回転 #compiler_study
— shinichiro hamaji (@shinh) November 10, 2018
Deep Learning向けコンパイラ TVM の紹介
- TVM とは
- グラフ全体を扱うのは、NNVMで、今回はオペレータ(各ノード)をあつかうTVMのお話。
- Halide (へーライド) と同じIRを利用しているのでメモリ上の表現はほぼ同じとのこと。にってる〜。
- cuDNNなどの、手で最適化されたコードは使わない。自分でコード生成する
- 出力されるコードの雛形を設定する
- コード生成部分 NEON はターゲットを変更すれば全く違ったアーキテクチャ向けのコード生成ができる。
- AutoTVM: 学習ベースの Auto Tuning フレームワークとな
- これめっちゃ面白そう
- グラフレベルでの最適化は先述のTVMの上位レイヤーであるNNVMが担当する
- グラフレベルでのAuto TuningはAutoTVMによってノード単位でのチューニングはできるようになった
- だがしかしたかし、入力レイアウトが固定で最適なレイアウトは入力によって変わりうる
- なのでレイアウト変換のコストを考慮したグラフ全体のチューニングが必要となってくる
- これは離散最適化を解くのだろう
- TVMのコミュニティはいわゆる暖かいコミュニティってやつ。しばらくコントリビュートしているとレビュアーやってくれとか頼まれるらしい
- Amazon, Huawei, FB, Alibaba, MicroSoft, Qualcommなどの企業からPRがきたり、Issueがきたり、興味を持たれているらしい
- 国内からはNTTのFPGA関連で?
- プログラミング言語や、コンパイラ技術のディープラーニングへの導入が流行っている。
参考
TVM github.com
AutoTVM [AUTOTVM] Automated Operator Optimization · Issue #1311 · dmlc/tvm · GitHub
めっちゃ参考になりそう qiita.com
ワシントン大学で直近にカンファレンスがあるとのこと www.eventbrite.com
VC4C: RaspberryPiのGPUを使うOSS OpenCLコンパイラ開発の現状と課題
www.slideshare.net
- VideoCore IV(VC4) のおはなし
- ラズパイに載ってるGPUの闇に関して
- QPU周りのクセが激しい
- 1スライス4QPU それが3スライスある 計12個
- ストアはVPMしかできないのでここら辺が難しい
- GPUはメモリバスが太いといっているな。あれは嘘だ。ラズパイのGPUのメモリアクセスは遅い。
- loadしてstoreしてその後またloadするとバグるw
- キャッシュコヒーレンシの管理はプログラマ責任で行う必要がある
- GPUのアセンブリを直書きできるのはラズパイのVC4のみらしい
- 掛け算して足すだけなのに60行くらい吐き出されるw
未経験プログラマがコボルコンパイラを作った話
スライド見つからず。
- 吉岡さん!?
- コボルと日本の歴史のおはなし。
- 色々と得るものが多かった。
- COBOLの開発プロセスは想像よりも普通で、CIみたいなことも行われていた。
- 今も昔も本流は変わらない。
- Be a Hacker. Make the world better.
GENESISコンパイラへのZ3の導入
スライド見つからず。ありそうな気がしているが。
- 内容はメモが残っていないので他の方のツイートを参考にしてください。😥
順次更新していくぞ。