- Fedora LinuxのRISC-V移植作業が約3か月にわたり進行しており、ほとんどのパッケージがFedora 43向けにビルド完了
- 現在のRISC-Vハードウェアは非常に遅いビルド速度を示しており、同じパッケージのビルドでx86_64比で最大5倍以上の時間が必要
- Fedoraの公式アーキテクチャとして採用されるには、binutilsを1時間以内にビルドできるサーバー級ハードウェアが必要
- ビルド遅延はパッケージメンテナーの不満を招いており、RISC-Vが除外される可能性にも言及
- 今後はFedora 44のビルド開始と高速ビルダーの導入を通じて速度問題を改善し、カーネル統一とLTO無効化を維持する計画
Fedora RISC-V移植の進捗状況
- 約3か月前からFedora LinuxのRISC-V移植作業が進められており、さまざまな変化があった
- Fedora RISC-Vトラッカーの大半の項目が整理され、現在は17項目のみがNEW状態で残っている
- Fedoraパッケージソースを取得し、
fedpkg mockbuild -r fedora-43-riscv64コマンドでビルドを実行
- これまでに86件のパッケージに対するPull Requestが提出され、その大半がマージされてFedora 43向けのビルドが完了
f43-updatesタグに沿って追加ビルドを進めることが可能
-
RISC-Vのビルド速度問題
- RISC-Vハードウェアは現在非常に遅いビルド速度を示している
binutils 2.45.1-4.fc43のビルド時間は、riscv64が143分、aarch64が36分、x86_64が29分と測定された
- 使用されたStarFive VisionFive 2ボードはドライバー対応は良好だが、速度は遅い
- 同じパッケージをMilk-V Megrezボードでビルドすると58分を要した
- 現在のRISC-Vビルドは**LTO(リンク時最適化)**が無効化された状態で、メモリ使用量とビルド時間を削減するための措置となっている
- ビルダーは4〜8コア、8〜32GB RAMを備え、性能はArm Cortex-A55水準と評価されている
- 今後はUltraRISC UR-DP1000 SoC(最大64GB RAM)とSpacemiT K3ベースのシステム(最大32GB RAM)が改善候補として期待されている
-
Fedora公式アーキテクチャ編入要件
- Fedoraの公式アーキテクチャに含まれるには、binutilsパッケージを1時間以内にビルドできるハードウェアが必要
- LTOをシステム全体で有効化した状態でも、他アーキテクチャと同等の速度を確保する必要がある
- ビルド結果はすべてのアーキテクチャが完了して初めてリポジトリに反映されるため、遅いビルダーはパッケージメンテナーの不満を招く
- 過去にはAArch64ビルダーの速度問題でも不満があり、一部の開発者はRISC-V除外の可能性に言及していた
- 今後のビルダーはラック搭載およびリモート管理が可能なサーバー型システムである必要があり、SBCベースで手動再起動が必要な環境は不適切
- これらの条件を満たせなければ、Fedoraの公式64ビットRISC-Vアーキテクチャ採用は不可能
-
QEMUを使ったローカルテスト
- ビルド時間が長いため、QEMUエミュレーションによるローカルテストが有用
- 80コアのAArch64デスクトップでQEMUユーザー空間のriscv64エミュレーションを使うと、
llvm15パッケージを約4時間でビルド可能
- 同じパッケージをBanana Pi BPI-F3ビルダーでビルドすると10.5時間かかった
- LLVMパッケージはコアとメモリの両方を活用するため、Ampere Oneベースの192/384コアシステムでの性能向上が期待される
- QEMUはローカルビルドおよびテスト専用で使われ、Fedoraはネイティブビルドのみ実行する
-
今後の計画
- Fedora Linux 44のビルド開始を予定
- すべてのビルダーで同じカーネルイメージを使用することを目標としており、現在はカーネルバージョンが混在している
- LTOは引き続き無効化した状態を維持する予定
- 速度問題の解決に向けて新しく高速なビルダーの導入を計画しており、一部の重いパッケージをそのビルダーに割り当てる予定
1件のコメント
Hacker Newsの意見
ISA自体を責めるより、シリコン実装とアーキテクチャ別最適化のないソフトウェアの問題だと思う
RISC-Vもいずれ発展していくはず
ARMも当初は速度重視だったが、その後は電力効率へ舵を切って組み込み市場で成功し、今は再び速度重視に戻ってきた流れがある
例えば LLVM issue #150263、#141488 のような事例がある
また、4KiBページサイズが固定されているため、ARM比で性能が制約される面もある
ARMは速かった時期も遅かった時期もあり、そこからまた速くなったが、RISC-Vはまだ一度も高性能領域で競争力を示したことがない
小規模チームが作った実装は印象的だが、モバイル・デスクトップ・サーバークラスでは依然として不足している
実際にはキャッシュ構造やDDR・PCIインターフェースのようなアナログVLSI設計が核心だが、これをきちんとやれるチームがほとんどない
また、どの企業も「高性能RISC-Vベンダー」にはなりたがる一方で、「組み込み市場」を担おうとするところはない
米国ではチップを自社生産するよりIPだけを売る構造なので、実際のハードウェアを入手しようとすると中国ベンダーに依存せざるを得ないのが現実だ
Pentium 4のNetburstアーキテクチャが限界に突き当たり、低消費電力コアから派生したCoreアーキテクチャがIntelの主力になった事例が代表的だ
ARMの歴史も似た流れをたどっている
Steve Furberによれば、電源接続を忘れたのにコードが実行されたほど効率的だったという
同僚が書いたブログ記事に対する訂正を共有する
Fedora RISC-Vビルドシステムでは、Milk-V “Megrez”で67分でbinutilsのビルドを完了しており、これは従来の143分記録から大幅な改善だ
現在最速の開発ボードはBanana Piではなく、SiFive “HiFive P550”とUltraRISC “DP1000”である
FOSDEM発表 “Fedora on RISC-V: state of the arch” でも関連ベンチマークを扱っている
MarcinのテストはStarFive “VisionFive 2”で行われたが、このボードは安定している一方で速度は遅めだ
gccビルド時に4つのバイナリを同時リンクするには最低16GB以上が必要で、swapを有効にしないと安定しない
VisionFive 2では
-j1または-j2でビルドする必要があるため、時間が2〜4倍に延びるより良い**リンカー(ld代替)**を使うか、LLVMビルドシステムのように並列リンク数を別指定できるようにするほうが効率的だ
ARMが今の位置に来るまで40年かかり、RISC-Vはまだ15年しか経っていない
今年はTenstorrentがRVA23ベースのサーバープラットフォームを投入予定とのことで、注目に値する
結局のところ、ハードウェアベンダーが高性能シリコンを出してくるかどうかが鍵だ
felixがMilk-V PioneerでArch Linux RISC-Vリポジトリをビルド中である
SOPHGOへの制裁で開発が遅れたことも原因だと思う
SOPHGOのSG2380ベースMilk-V Oasisは発売中止になったが、非常に有望なSoCだった
この会社のチップはARM/RISC-Vを切り替え可能なデュアルアーキテクチャをサポートしていた
Arch RISC-Vリポジトリ、関連記事 を参照
なぜRISC-Vソフトウェアを必ずRISC-Vシステム上でビルドしなければならないのか疑問だ
コンパイラは対象アーキテクチャ情報をコードに埋め込むのだから、理論上は別のシステムでも可能ではないかという疑問である
Fedoraは現在ネイティブビルドのみをサポートしており、クロスコンパイラはファームウェア向けのbare-metal版しかない
また、テスト自動化が難しいため、実機ハードウェアでテストできるネイティブビルドのほうが現実的だ
AArch64も初期は遅かったが、今ではQt4ビルドが18分で終わるほど進歩した
言語ごとに解決策はあるが、C/C++エコシステムは特に複雑だ
そのため、多くはVMや実際のターゲットハードウェア上でビルドしている
LLVM以降は可能になったが、テストには依然としてエミュレータが必要だ
「単にx86_64サーバーでクロスコンパイルすればいいのでは?」という意見もある
1年前にMastodonで「最速のRISC-VハードウェアがQEMUより遅い」という投稿を見た
RISC-Vはさまざまな分野へ広がりつつあるが、高性能コンピューティングでは依然として弱い
しかも開発元は米国の制裁で消滅した
クロスコンパイルが不可能なわけではないが、
%installと%check段階でのテスト実行が問題になる例えば rpyパッケージPR では、RISC-Vでベクタテストを無効にする必要があった
ビルドとテストを分離することはできるが、複雑さのわりに時間短縮効果は大きくない
2012年のLWNスレッド(リンク)でもすでにクロスコンパイル反対の議論があった
i686がx86_64より14%速いという結果は疑わしい
通常はx86_64のほうが速く、これはレジスタ数の増加とベクタ命令のおかげだ
ただし、コンパイラがより多くの最適化を試みるため、ビルド時間が長くなる可能性はある
RISC-Vでも似た現象が起きている可能性がある
記事でどのRISC-V CPUを使ったのか明記されておらず、比較が曖昧だ
Milk-V Pioneerは64コア・128GB RAMで例外的だが、古いアーキテクチャで価格も高い