このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
こんにちは、丸岡です。
2018/7/28(土)にフィックスターズ主催で「Halide勉強会」 を開催致しました。
Halideは画像処理の高性能計算に特化したドメイン特化型言語(DSL)です。最近では単純にプログラミング言語としての利用だけではなく、中間表現であるHalide IRや、Halide IRを用いて解析や最適化を行うコンパイルパスを採用しているOSSが登場してきています。特にHalideが記述できる計算パターンはDeep Learningの計算パターンととても相性がよいため、TVMやTensor ComprehensionsといったDeep Lerarning フレームワークにも採用されており、注目を集めています。
弊社でもコンパイラを用いてHalideからFPGAのIPを生成する「Halide to FPGA」ソリューションに取り組んでおり、昨年11月にも「Halideによる画像処理プログラミング入門」と題してセミナーを開催しています。
今回のHalide勉強会は日本国内におけるHalideユーザーの技術共有や交流を目的として開催に至りました。今回は外部からも発表者をお招きし、合計5名による本発表と、2名によるLTの発表が行われました。Halideのスケジューリング機能やC++でチューニングした場合との比較などのHalideの基幹的な技術に関する発表から、TiramisuやTensor Comprehensions, TVMなどHalideを活用しているOSSの紹介まで多岐に渡る発表が行われました。
フィックスターズからは丸岡と、米国子会社のFixstars Solutionsの飯塚がそれぞれ発表してきました。
私は「Prelude to Halide」と題して、今回の勉強会の導入としてHalideの簡単な紹介から始まり、その後中間表現のHalide IRとコンパイルパスについて説明しました。また、Halideを使用したコンパイラツールにおいても多く使用されているコンパイラ技法である「Polyhedral Model」について紹介しました。
Polyhedral Modelはループのイテレーションも状態として含めたプログラムモデルやデータ依存、ループ変形を線形代数で表現できるコンパイラ技法であり、より高度なループ最適化を実現することができます。そしてHalide IRはその高レベルな抽象度と制約から、Polyhedral Modelをはじめとしたループレベルにおける解析や最適化に対して非常に親和性の高い中間表現となっています。
半導体の微細化による性能向上が終焉を迎えつつあると言われている今、今後はハードウェアをどれだけ効率的に利用出来るか、そしてそれをどれだけ容易に実現出来るかがより重要となってきます。そのためにはコンパイラを始めとしたツールチェインによる最適化や、それに伴うプログラミングモデルや中間表現などが重要な技術要素となるでしょう。フィックスターズではこのような観点から、次世代にあるべき高性能プログラミングモデルを探求していきます。
keisuke.kimura in Livox Mid-360をROS1/ROS2で動かしてみた
Sorry for the delay in replying. I have done SLAM (FAST_LIO) with Livox MID360, but for various reasons I have not be...
Miya in ウエハースケールエンジン向けSimulated Annealingを複数タイルによる並列化で実装しました
作成されたプロファイラがとても良さそうです :) ぜひ詳細を書いていただきたいです!...
Deivaprakash in Livox Mid-360をROS1/ROS2で動かしてみた
Hey guys myself deiva from India currently i am working in this Livox MID360 and eager to knwo whether you have done the...
岩崎システム設計 岩崎 満 in Alveo U50で10G Ethernetを試してみる
仕事の都合で、検索を行い、御社サイトにたどりつきました。 内容は大変参考になりま...
Prabuddhi Wariyapperuma in Livox Mid-360をROS1/ROS2で動かしてみた
This issue was sorted....