粗粒度再構成可能アレイの進展
新しいコンパイラが多様なソフトウェアアプリケーションのためにCGRAの能力を向上させる。
― 1 分で読む
目次
粗粒度再構成可能配列(CGRAs)は、フィールドプログラマブルゲートアレイ(FPGAs)の柔軟性とアプリケーション特化型集積回路(ASICs)の速度と効率を組み合わせた特別なハードウェアの一種なんだ。一般的なプロセッサよりも特定のタスクをより速く、エネルギー効率よく実行するように設計されてるけど、狭い範囲のタスクのために設計されてると、将来のソフトウェアニーズに対応できなくなることがあるから、あまり価値がない場合もある。
ドメイン制限の課題
CGRAsのような特殊なハードウェアの大きな問題は、特定のタイプのソフトウェアしか実行できないことだ。これが幅広い利用にとって大きな障壁になることもあるんだ。ユーザーがその特殊なシステムに合わせてアルゴリズムを修正する必要があると、時間やコストのことで躊躇しちゃうことが多いからね。
既存のCGRAsはタスクを効率よく実行することを目指してるけど、操作の範囲が狭いことが多い。これが理由で、ソフトウェアがCGRAがサポートしていないたった1つの操作を含んでいるだけで、そのソフトウェアは全く動かないことがある。この問題は、特殊なハードウェアが十分な範囲のソフトウェアアプリケーションをサポートしないドメイン制限の問題を浮き彫りにしてる。
より良い解決策の必要性
この問題を解決するには、ユーザープログラムを自動的にCGRAsの能力に合わせて調整できる新しいアプローチが必要だよ。これができれば、ユーザーが元のプログラムを変更しなくても、ハードウェアがより多くのソフトウェアをサポートできるようになるんだ。
提案されている解決策の一つは、柔軟なCGRAコンパイラなんだ。このコンパイラは、CGRAsがネイティブで処理できない操作をサポートするように適応させるのを助けることができる。ソフトウェアコードを書き換えることで、サポートされていない操作をCGRAがサポートする代替措置に置き換えることができるんだ。
柔軟なCGRAコンパイラの仕組み
この柔軟なCGRAコンパイラはデータフロー書き換えという戦略を利用してる。これは、CGRAが実行できないコードの部分を特定して、それをハードウェアが扱える形式に変換するって流れだよ。このプロセスを効率的に管理するために、等価飽和という技術が使われていて、コンパイラが様々な書き換えオプションを探索して最適な適応を見つけるのを助けるんだ。
この柔軟なコンパイラをいろんなループ構造に適用することで、CGRAs上で動作できるソフトウェアアプリケーションの数をかなり増やすことができる。これにより、一般的なCPU上で同じソフトウェアを実行するよりも速くなるんだ。
パフォーマンス向上の評価
基本的に、柔軟なCGRAコンパイラは、コンパイルできるループ構造の数が着実に増加することを示してる。テスト結果では、現在利用可能な他の技術よりも2.2倍多くのループをサポートできたんだ。
パフォーマンスの改善もすごいよ。通常サポートされないループを実行すると、コンパイラは従来のプロセッサ上で似たようなタスクを実行するよりも約3倍の速度を達成できる。これは、柔軟なアプローチをCGRAsに採用することで、ソフトウェアの大幅な変更なしにパフォーマンスを劇的に向上させることができることを意味してるんだ。
CGRAsの構造
CGRAsは、様々な操作を実行できる処理要素(PE)のグリッドで構成されてる。従来のアーキテクチャが単一のタイプのPEを持つことが多いのに対し、CGRAsは能力が異なることがある。いくつかのCGRAsは数少ない操作しかサポートしない一方で、他のCGRAsはより広範囲の操作を処理できる。この柔軟性が魅力的だけど、プログラミングの複雑さにもつながるから、ユーザーは自分のソフトウェアがハードウェアの能力に合うように気をつけなきゃいけない。
CGRAsのタイプ
均質CGRAs: これらは均一な配置を持っていて、すべての処理要素が同じ操作をサポートする。プログラミングは簡単だけど、特化の利点は欠けてる。
異質CGRAs: 特定のタスクに合わせた特化した処理要素を持っていて、その分野でのパフォーマンスが向上するけど、これらのシステムのプログラミングは難しいことが多いんだ。
書き換えルールの重要性
柔軟なCGRAコンパイラの重要な側面は、書き換えルールの使用だよ。これらのルールは、サポートされていない操作をCGRAが実行できるものに変換するための事前定義されたパターンだ。これらのルールを積極的に適用することで、コンパイラはプログラムをハードウェアにより効果的にフィットさせることができるんだ。
効率的なコンパイルのための技術
柔軟なCGRAコンパイラは、伝統的な貪欲な書き換え技術と等価飽和を組み合わせたハイブリッドアプローチを採用してる。この二つの戦略により、簡単なケースを迅速に適応させるだけでなく、ソフトウェアがCGRAと互換性を持つために大きな変更を必要とする複雑なケースも探ることができるんだ。
貪欲な書き換え: この技術は、ハードウェアにフィットするマッチを見つけるために迅速に書き換えルールを適用する。ただし、より深い探究が必要な複雑な構造にぶつかることもある。
等価飽和: この進んだ方法は、すべての可能な書き換えを体系的に探索することができ、他の技術では見逃されがちな挑戦的なソフトウェア構造の解決策を見つけることができるんだ。
ベンチマーキングの役割
柔軟なCGRAコンパイラの効果を評価するために、幅広いベンチマークスイートが開発された。このスイートは、さまざまなオープンソースプロジェクトから得られた数千の実世界のループで構成されていて、多様なプログラミングスタイルや技術を確保しているんだ。
このベンチマークスイートを検査することによって、コンパイラは様々なアーキテクチャ全体での能力を示すことができる。CGRAコンパイラは、元のソフトウェアのパフォーマンスを向上させるだけでなく、効果的に異なるCGRAsで動作できるコードの範囲も広げることが明らかになるんだ。
書き換えルールの適用
書き換えルールの適用は、異なるCGRAs間で均一ではない。各アーキテクチャは、その特定の能力に基づいて異なるルールセットから恩恵を受けることがある。例えば、いくつかのルールは浮動小数点の操作を向上させることができ、他のルールは論理操作に焦点を当てることができる。
この様々なルールセットのターゲットを絞った適用により、柔軟なCGRAコンパイラはそれぞれのアーキテクチャの独自の強みや弱みに応じてパフォーマンスを最大化できるんだ。
実験的研究からの結果
多数のテストが示しているのは、柔軟なCGRAコンパイラが様々なCGRAsで実行できるループの数を大幅に増やせるってこと。実際、アーキテクチャと関わるソフトウェアによって、いくつかのCGRAsではサポートされるループの数が倍以上になることもあるんだ。
パフォーマンスの改善
実際のところ、CGRAs上で適応されたソフトウェアを実行したときの平均速度向上は、標準的なCPUで同じタスクを実行するのに比べて約3倍早いことが観察されてる。この大幅なパフォーマンスの向上は、柔軟なCGRAコンパイラが専門的なハードウェアを活用することを目指す業界にとって興味深い進展になってるんだ。
結論
柔軟なCGRAコンパイラの導入は、ドメイン制限の問題に効果的に取り組むことによって、専門的な計算システムの最適化において重要なステップを表してる。先進的な書き換え技術と慎重に選ばれたルールセットを活用することで、このアプローチはさまざまなソフトウェアプロジェクトにわたるCGRAsのより広範な適用を可能にするんだ。
従来のプロセッサよりもより多くのソフトウェアを効果的かつ早く実行できる能力を高めることで、CGRAsは特定の計算タスクが処理される方法を革新する可能性を秘めてる。ソフトウェアの領域が進化し続ける中で、既存のアプリケーションや将来のアプリケーションを専門的なハードウェアに合わせて適応させるためのツールがあることは、コンピュータシステムのパフォーマンスと効率を最大化する上で重要だよ。
この進展は、新たな開発と革新の道を開き、技術が変化する需要に適応するのを可能にし、時代遅れになることを防げるようにするんだ。業界が専門的なハードウェアの利点を模索し続ける中、柔軟なCGRAコンパイラはコンピューティングの分野で革命的な存在として際立っているんだ。
タイトル: Rewriting History: Repurposing Domain-Specific CGRAs
概要: Coarse-grained reconfigurable arrays (CGRAs) are domain-specific devices promising both the flexibility of FPGAs and the performance of ASICs. However, with restricted domains comes a danger: designing chips that cannot accelerate enough current and future software to justify the hardware cost. We introduce FlexC, the first flexible CGRA compiler, which allows CGRAs to be adapted to operations they do not natively support. FlexC uses dataflow rewriting, replacing unsupported regions of code with equivalent operations that are supported by the CGRA. We use equality saturation, a technique enabling efficient exploration of a large space of rewrite rules, to effectively search through the program-space for supported programs. We applied FlexC to over 2,000 loop kernels, compiling to four different research CGRAs and 300 generated CGRAs and demonstrate a 2.2$\times$ increase in the number of loop kernels accelerated leading to 3$\times$ speedup compared to an Arm A5 CPU on kernels that would otherwise be unsupported by the accelerator.
著者: Jackson Woodruff, Thomas Koehler, Alexander Brauckmann, Chris Cummins, Sam Ainsworth, Michael F. P. O'Boyle
最終更新: 2023-09-16 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2309.09112
ソースPDF: https://arxiv.org/pdf/2309.09112
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。