1 ポイント 投稿者 GN⁺ 2025-03-13 | まだコメントはありません。 | WhatsAppで共有
  • LLVMは2020年のLLVM 11からFortranコンパイラFlangを含めてきた
  • 初期の実行ファイル名はflangではなくflang-newだった
  • LLVM 20でflang-newflangへ変更し、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-newflangへ改名
  • 2025年: LLVM 20.1にflang実行ファイルが含まれる

Flangの名称変更プロセス

  • Flangの名称変更は複数回にわたって議論されてきた
  • 決定基準:
    • 主要な機能と性能の問題を解決していること
    • 未完成の言語機能については明確なエラーメッセージを出力すること
    • 他のFortranコンパイラとの性能比較で優れた結果が必要
    • 広範なテストスイートによる安定性確認
  • LLVM共同創設者Chris Lattnerの助言:

    "既存のFlangと新しいFlangの名称衝突問題を解決する必要がある"

  • 2024年10月、コミュニティ合意の後にflang-newflangへの名称変更が完了

Flangのコンパイル工程とMLIR導入

MLIR(Multi-Level Intermediate Representation)

  • LLVM IRだけでは高水準言語の情報を保持しにくい
  • MLIRは高水準言語の特性を保持したまま最適化できる
  • FlangはFIR(Fortran IR)をMLIRベースで構築している
  • FIRはFortranの配列や型などの情報を保持する

HLFIR(High Level FIR)

  • FIRの上位レベル表現
  • 配列最適化と高度なFortran構文をサポート

コンパイル段階

  1. Fortranソースコード
  2. MLIR(HLFIR + FIR)生成
  3. FIR変換
  4. LLVM IR変換
  5. 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の標準的な貢献プロセスに従う

まだコメントはありません。

まだコメントはありません。