LLVM Fortranコンパイラ Flang、初の公式リリース
(blog.llvm.org)- LLVMは2020年のLLVM 11からFortranコンパイラFlangを含めてきた
- 初期の実行ファイル名は
flangではなくflang-newだった - LLVM 20で
flang-newをflangへ変更し、Flangの成熟度が認められた - Flangは長年の開発を経て、公式Fortranコンパイラとして定着した
Fortranの重要性
- Fortranは1950年代に数式翻訳(Formula Translation)言語として始まった
- 科学技術計算で広く使われている(気象モデリング、流体力学、計算化学など)
- 近年、Fortranエコシステムが再び活性化している
- Fortranパッケージマネージャー(fpm)、非公式標準ライブラリ、LFortranなどが登場
- ARCHER2スーパーコンピュータで実行されるコードの80%以上がFortranで書かれている
新しいFortranコンパイラが必要な理由
- 既存のFortranコンパイラ:
- Intel Fortran Compiler、NVIDIA HPC Compilerなど
- オープンソースコンパイラ: GFortran
- Flangプロジェクトの初期パートナー: 米国の国立研究所およびNVIDIA
- 目標:
- オープンソースであり、商用利用に適したライセンスを提供
- 活発なFortranコンパイラ開発者コミュニティを構築
- LLVMベースのツールでFortran開発を支援
- 新しい言語標準提案のための実験プラットフォームを提供
- 複数の実装が存在することで、互換性の問題を緩和し改善できる
Flangのタイムライン
- 1989年: Portland Group(PGI)設立
- 2015年: Classic Flangプロジェクト開始(NVIDIA、米国の国立研究所が主導)
- 2017年: Classic Flangの初リリースおよびオープンソース化
- 2018年: Classic FlangのフロントエンドをF18として再実装開始
- 2019年: F18がLLVMプロジェクトに統合される
- 2020年: Flangの新しいドライバ
flang-new導入 - 2022年: NVIDIAがFIR(Fortran IR)をLLVMに提供
- 2024年:
flang-newがflangへ改名 - 2025年: LLVM 20.1に
flang実行ファイルが含まれる
Flangの名称変更プロセス
- Flangの名称変更は複数回にわたって議論されてきた
- 決定基準:
- 主要な機能と性能の問題を解決していること
- 未完成の言語機能については明確なエラーメッセージを出力すること
- 他のFortranコンパイラとの性能比較で優れた結果が必要
- 広範なテストスイートによる安定性確認
- LLVM共同創設者Chris Lattnerの助言:
"既存のFlangと新しいFlangの名称衝突問題を解決する必要がある"
- 2024年10月、コミュニティ合意の後に
flang-new→flangへの名称変更が完了
Flangのコンパイル工程とMLIR導入
MLIR(Multi-Level Intermediate Representation)
- LLVM IRだけでは高水準言語の情報を保持しにくい
- MLIRは高水準言語の特性を保持したまま最適化できる
- FlangはFIR(Fortran IR)をMLIRベースで構築している
- FIRはFortranの配列や型などの情報を保持する
HLFIR(High Level FIR)
- FIRの上位レベル表現
- 配列最適化と高度なFortran構文をサポート
コンパイル段階
- Fortranソースコード
- MLIR(HLFIR + FIR)生成
- FIR変換
- LLVM IR変換
- Machine IR → アセンブリ → 実行ファイル
FlangのOpenMPサポート
- OpenMPは並列プログラミングのための標準API
- FlangはMLIRにOpenMP専用dialectを追加
OpenMPIRBuilderを使ってLLVM IRへ変換- FlangのOpenMP実装はClangと構造的に類似している
Flangのドライバ設計
flang→ ユーザーフレンドリーなドライバflang -fc1→ 開発者向けフロントエンドドライバ- Clangの
clangDriverライブラリを基に実装 - 多様なターゲットとツールをサポート可能
Flangの貢献と反応
- Arm: FlangベースのHPCツールチェーンを開発
- Fujitsu: HPCテストスイートを通じてFlang改善に貢献
- Linaro: Fujitsuのテストスイートを通じた不具合修正
- SciPy: Flang導入によりWindowsサポート問題を解決
- Barcelona Supercomputing Center: RISC-Vベクトル化と内部並列モデルをサポート
- Chris Lattner:
"FlangはLLVMプロジェクトが提供する協業モデルの象徴だ"
- AMD: 次世代FortranコンパイラをFlangベースで開発中
Flangへの貢献方法
- Flangはオープンソースプロジェクトとして継続的に発展している
- 実際に使ってみてフィードバックを提供できる
- コード貢献、ドキュメント修正などさまざまな貢献方法がある
- LLVMの標準的な貢献プロセスに従う
まだコメントはありません。