こんにちは。Fixstars Solutionsの飯塚です。この度、2/17(土)に開催された、FPGAエクストリーム・コンピューティング第10回にて、「Halideでつくる、Domain Specific Architectureの世界」というタイトルで発表してきました。
Domain Specific Architecture、DSA という概念は、かの有名な Computer Architecture(通称ヘネパタ) 6th Edition により”第7章 Domain-Specific Architectures”が新設され、初めて体系だった説明が試みられました。曰く、DSAとは:
- Use dedicated memories to minimize the distance over which data is moved.
- Invest the resources saved from dropping advanced microarchitectural optimizations into more arithmetic units or bigger memories.
- Use the easiest form of parallelism that matches the domain.
- Reduce data size and type to the simplest needed for the domain.
- Use a domain-specific programming language to port code to the DSA.
John L. Hennessy and David Patterson. (2017), Computer Architecture
つまり、以下の5点、
- 固有の専用メモリを持ち、データの移動量を最小限に抑えられること
- マイクロアーキテクチャ最適化のための様々な機構を排し、演算器やメモリそのものにハードウェアリソースを配分できること
- ドメインに適した、もっともシンプルな並列性を有すること
- ドメインに必要な、最小限のデータサイズ/データ型を提供していること
- DSAに移植可能な Domain-Specific Programming Language、DSL を提供していること
これを満たすアーキテクチャがDSAである、と定義しています。ご存知の通り、デナードスケーリングが終焉を迎えたことで、半導体技術に閉じた世界だけでプロセッサの電力効率を上げるのは、非常にコストがかかる時代になりました。この問題に対して、アプリケーションという高次の文脈から一石を投じる試みが DSA であると言えるでしょう。
昨今の汎用マイクロプロセッサは、その電力の殆どがデータ移動とオーバヘッドに費やされていることが分かっています(R. Hameed, W. Qadeer, M. Wachs, O. Azizi, A. Solomatnikov, B. C. Lee, S. Richardson, C. Kozyrakis, and M. Horowitz. (2010), Understanding sources of inefficiency in general-purpose chips)。DSAは、実行するアプリケーションのドメインを限定することで、複雑な命令デコーダやキャッシュのスヌープ機構、各種クロスバースイッチと言った消費電力を増加させるハードウェアを排しつつ、プログラミングの手間はDSLでカバーするという両建ての構造になっているのが特徴です。
FPGAエクストリーム・コンピューティングでは、DSA自体をDSLからコンパイラによって自動生成し、FPGA上に実装するという内容の発表を行いました。いまや、FPGAはNANDと共に最先端の半導体プロセスを牽引する存在となっており、その適用範囲は組み込みからデータセンタと多岐にわたります。画像処理や認識処理、畳み込みニューラルネットワークをストリーミングで多段に接続し、ハードウェアとして実行するための技術、Halide to FPGA は、これからますます適用範囲が広がっていくと予想しています。
フィックスターズは、DSL/DSAのような最先端の技術を活用し、これからも次世代の並列化プログラミングの手法を追求していきます。
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....