このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
丸岡です。
2018/11/10(土) にフィックスターズ主催で、「コンパイラ勉強会」を開催しました。
7月に「Halide勉強会」を開催しましたが、その第2弾ということで、今回はもう少し分野を広げて「コンパイラ」というテーマにしました。
イベント公開当初から応募者がとても多く、ピーク時は参加応募数が100人を超えるなど、予想を大きく上回る参加希望者数で私自身とても驚いていました。
当初は45人だった一般参加枠を後ほど60人まで引き上げたのですが、それでも最終的にキャンセル待ちが16人ほど出てしまい、参加出来なかった方は申し訳ありませんでした。
それほどまでにコンパイラ技術が今注目されているということですね!
以下、本発表のレポートです。
最初の発表では丸岡から、LLVMのBackendについて紹介しました。
コンパイラといえばLLVMということで、学生時代の研究で得られた知見を元にして発表しました。
内容としてはMIPSバックエンドを例に取り上げて、バックエンド内部の中間表現や、Instruction Selectionにおける中間表現のLoweringの様子、
バックエンドにおけるターゲット情報の実装を紹介しました。
最近ではDomain Specificなコンパイラの研究や開発が盛んですが、その多くはバックエンドにLLVMを採用しています。
新規プロセッサのバックエンドコンパイラを作る際にも、LLVMの採用は有用な選択肢に入るでしょう。
今回の発表が、みなさんのコンパイラ開発に役立てば幸いです。
2つ目の発表は増田さんから、TVMについて紹介していただきました。
TVMはDeep Learningの推論用コンパイラとして、とても注目されているOSSです。
前回のHalide勉強会でもLTでTVMに関する発表が2件ありました。
増田さんはTVMのレビュアーをやっている方で、QiitaにもTVMに関する記事を幾つか投稿しており、TVMの公式ページでもAMDGPUバックエンドに関する記事にも著者として入っています。
内容としてはTVMの概要的な説明から、開発中の機能や開発コミュニティに関する説明など、開発者ならではの濃密な発表をしていただきました。
3つ目の発表はIdein株式会社の徳田さんから、RasPi GPUのコンパイラに関する発表でした。
Load/StoreするためにDMA操作する必要があったり、Cache Incoherentだったり、コンパイラがレジスタスピルを保証してなかったりという
個性的なアーキテクチャの中でのコンパイラ開発の苦労話が多数ありました。(筆者もその苦労にとても共感していました…)
発表の最後には
「みなさんコンパイラ書きたいですよね?」
「コンパイラ開発してない人生はFAKEなので、みなさんコンパイラ書きましょう」
という本勉強会一の名言まで飛び出し、大変賑わった発表でした。
また、この発表のときにTwitterのハッシュタグがトレンド12位に浮上しました。Twitterでの実況やコメントも盛況でしたね!
ツイッターのトレンドで12位! 参加者のみなさんが参加出来なかった方々に積極的に情報共有していただいていて、ありがとうございます。 #compiler_study pic.twitter.com/AmDmh0GYlm
— 株式会社フィックスターズ (@Fixstars_JP) November 10, 2018
4つ目の発表では、かの伝説のハッカー吉岡さんに登壇していただきました。
温故知新ということで、30年以上前のDEC在籍時に日本語COBOLを開発した際のお話でした。業務用コンパイラにおける開発プロセスの話はとても貴重でしたね。
テスト駆動で当時からCIを構築して開発していたなど、今でも主流になっている開発プロセスが当時から行われていたのは驚きでした。
最後の発表は弊社の朝倉から、GENESISコンパイラに関する発表でした。
GENESISコンパイラはFixstarsが開発しているFPGA向けのHalideコンパイラで、ストリームI/Oを用いたデータフローアーキテクチャへと変換します。
Halideの論文ではその特徴として、「簡易なインターバル計算によって、Polyhedral Modelのような複雑な解析を使用することなくループ変換や領域推定を実現することができる」と記述されているのですが、
領域外アクセスに対する条件分岐が存在するなどの複雑なアクセスパターンの場合では、真の必要領域を推論出来ない場合が存在しています。
そこでZ3というMicrosoft Researchで開発されているSMTソルバを用いて、必要領域推定を強化した、という内容でした。
その後LTでは、TVMのRelay IRの紹介、WebAssemblyの紹介、seccamp2018におけるコンパイラ自作コースに関する話がありました。
特に最後のコンパイラ自作のLTは実際にコンパイラを開発してみたい気持ちになる、とても良い締めくくりだったと思います。
残念ながら参加出来なかった人も、発表資料やTogetterのまとめを見て当日の雰囲気を感じていただければと思います。
最後になりますが、本発表やLTで登壇していただいたみなさま、そしてご来場いただいたみなさま、
本当にありがとうございました!
コンピュータビジョンセミナーvol.2 開催のお知らせ - ニュース一覧 - 株式会社フィックスターズ in Realizing Self-Driving Cars with General-Purpose Processors 日本語版
[…] バージョンアップに伴い、オンラインセミナーを開催します。 本セミナーでは、...
【Docker】NVIDIA SDK Managerでエラー無く環境構築する【Jetson】 | マサキノート in NVIDIA SDK Manager on Dockerで快適なJetsonライフ
[…] 参考:https://proc-cpuinfo.fixstars.com/2019/06/nvidia-sdk-manager-on-docker/ […]...
Windowsカーネルドライバを自作してWinDbgで解析してみる① - かえるのほんだな in Windowsデバイスドライバの基本動作を確認する (1)
[…] 参考:Windowsデバイスドライバの基本動作を確認する (1) - Fixstars Tech Blog /proc/cpuinfo ...
2021年版G検定チートシート | エビワークス in ニューラルネットの共通フォーマット対決! NNEF vs ONNX
[…] ONNX(オニキス):Open Neural Network Exchange formatフレームワーク間のモデル変換ツー...
YOSHIFUJI Naoki in CUDAデバイスメモリもスマートポインタで管理したい
ありがとうございます。別に型にこだわる必要がないので、ユニバーサル参照を受けるよ...