mozyのかきおき

mozyの読書感想文や思考置き場

2018/11/10 コンパイラ勉強会に行ってきた

コンパイラ勉強会とは

コンパイラとその関連技術について共有し学ぶ勉強会です。

connpass.com

まとめると

自分がまったく知らなかったことがたくさんあったので学びになった。もっと低レイヤーな部分を触っていかないといけないと思った。
そして、勉強会中に出てきた名言の通り、人生で一度くらいはコンパイラをつくらねば。。

Twitterハッシュタグ#compiler_study で一部実況していたので、詳細はそちらを参照のこと。

ここからは自分用のメモ(ガンガン突っ込んでください。。)

LLVM Backendについて

www.slideshare.net

  • LLVM ってLow Level Virtual Machineの略ではなかったんか。(公式サイトになんの略でもないぜとあるらしい)
  • Type-Legalizeの種類は以下のようなものがある
    • Promote
    • Expand
    • Splitting
    • Widening
    • Scalarizing
  • 個人的にはMCLayerあたりが気になった、調べよう。
  • バックエンドコンパイラとしてのLLVMは今後も主流であろうとのこと。
  • 質疑応答では、いいデバッグ方法はないだろうかなどと質問が飛んでいた。以下の回答ツイートが参考になりそう。

Deep Learning向けコンパイラ TVM の紹介

speakerdeck.com

  • 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の導入

スライド見つからず。ありそうな気がしているが。

  • 内容はメモが残っていないので他の方のツイートを参考にしてください。😥

順次更新していくぞ。