【要約】Vitis HLS で Rust を使えるようにした [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
FPGA開発者がC/C++を用いた高位合成(HLS)を行う際、開発効率と安全性の両面で深刻な課題に直面している。具体的には、以下の問題が挙げられる。
- ・C/C++による記述の煩雑さと、メモリ安全性(バッファオーバーフロー等)の欠如。
- ・既存の他言語向けHLSコンパイラは独自バックエンドを持つため、ベンダーの最新最適化を享受できない。
- ・これらの要因が、高品質なカーネル開発における大きな障壁となっている。
// Approach
著者はVitis HLSのバックエンドがLLVM IRを入力とする特性を利用し、Rustをフロントエンドとして接続する構成を構築した。解決のために以下の4要素を整備している。
- ・FPGAターゲットの登録と、任意ビット幅整数のネイティブ表現の実現。
- ・LLVM 11系との整合性を保つため、Rust 1.51をベースとしたツールチェーンの構築。
- ・IR整形Passの実装による、言語固有の構造とHLSの期待する形式の差の解消。
- ・
barista-hlsによる、Rust上でのHLS API(型や属性)の提供。
// Result
著者がVitis HLS公式の99個の例を用いて検証を行った結果、実用レベルの成果が得られた。検証結果は以下の通りである。
- ・98例において、C++版とポート構成(名前・方向・バス形式)が完全一致。
- ・99/99例で機能検証(cosim)に成功し、RTLレベルでの動作を確認。
- ・クロック周期は多くの例でC++と同等、あるいはそれ以下の性能を達成。
- ・ただし、一部のケースではLUTやFFのリソース消費が増大する傾向が見られた。
Senior Engineer Insight
> Rustの安全性はFPGA開発のバグ削減に大きく寄与する。しかし、リソース消費の増大や、特定のLLVMバージョンに依存するツールチェーンの管理コストが懸念される。実戦投入には、リソース制約下での性能評価と、既存のC++資産との共存戦略が不可欠だ。