• LLVM ने 2020 में LLVM 11 से Fortran कंपाइलर Flang को शामिल करना शुरू किया
  • शुरुआती executable का नाम flang नहीं बल्कि flang-new था
  • LLVM 20 में flang-new को flang में बदलकर Flang की परिपक्वता को मान्यता दी गई
  • कई वर्षों के विकास के बाद Flang अब आधिकारिक Fortran कंपाइलर के रूप में स्थापित हो गया है

Fortran का महत्व

  • Fortran की शुरुआत 1950 के दशक में Formula Translation भाषा के रूप में हुई
  • इसका वैज्ञानिक गणना में व्यापक उपयोग होता है (मौसम मॉडलिंग, fluid dynamics, computational chemistry आदि)
  • हाल के वर्षों में Fortran ecosystem फिर से सक्रिय हुआ है
    • Fortran package manager (fpm), अनौपचारिक standard library, LFortran आदि सामने आए हैं
  • ARCHER2 supercomputer पर चलने वाले 80% से अधिक कोड Fortran में लिखे गए हैं

नए Fortran कंपाइलर की ज़रूरत क्यों है

  • मौजूदा Fortran कंपाइलर:
    • Intel Fortran Compiler, NVIDIA HPC Compiler आदि
    • open source कंपाइलर: GFortran
  • Flang प्रोजेक्ट के शुरुआती साझेदार: अमेरिकी राष्ट्रीय प्रयोगशालाएँ और NVIDIA
  • लक्ष्य:
    • open source और commercial उपयोग, दोनों के लिए उपयुक्त license उपलब्ध कराना
    • Fortran कंपाइलर डेवलपर्स की सक्रिय community बनाना
    • LLVM-आधारित tools के ज़रिए Fortran development को समर्थन देना
    • नए language standard proposals के लिए experimental platform उपलब्ध कराना
  • कई implementations होने से compatibility समस्याएँ कम की जा सकती हैं और सुधार संभव होता है

Flang की टाइमलाइन

  • 1989: Portland Group(PGI) की स्थापना
  • 2015: Classic Flang प्रोजेक्ट की शुरुआत (NVIDIA और अमेरिकी राष्ट्रीय प्रयोगशालाओं के नेतृत्व में)
  • 2017: Classic Flang की पहली रिलीज़ और open source में परिवर्तन
  • 2018: Classic Flang के frontend को F18 के रूप में दोबारा लिखने की शुरुआत
  • 2019: F18 को LLVM प्रोजेक्ट में एकीकृत किया गया
  • 2020: Flang का नया driver flang-new पेश किया गया
  • 2022: NVIDIA ने FIR(Fortran IR) को LLVM में योगदान दिया
  • 2024: flang-new का नाम बदलकर flang किया गया
  • 2025: LLVM 20.1 में flang executable शामिल किया गया

Flang के नाम बदलने की प्रक्रिया

  • Flang का नाम बदलने पर कई बार चर्चा हुई
  • निर्णय के मानदंड:
    • प्रमुख functionality और performance समस्याओं का समाधान
    • अधूरी language features के लिए स्पष्ट error messages
    • अन्य Fortran कंपाइलरों की तुलना में performance में बेहतर परिणाम आवश्यक
    • व्यापक test suite के माध्यम से stability की पुष्टि
  • LLVM के सह-संस्थापक Chris Lattner की सलाह:

    "मौजूदा Flang और नए Flang के बीच नाम टकराव की समस्या को हल करना ज़रूरी है"

  • अक्टूबर 2024 में community consensus के बाद flang-newflang नाम परिवर्तन पूरा हुआ

Flang की compilation प्रक्रिया और MLIR का उपयोग

MLIR(Multi-Level Intermediate Representation)

  • केवल LLVM IR से high-level language information को संरक्षित रखना कठिन है
  • MLIR high-level language की विशेषताओं को सुरक्षित रखते हुए optimization की सुविधा देता है
  • Flang ने FIR(Fortran IR) को MLIR-आधारित रूप में बनाया है
  • FIR, Fortran के array, type आदि की जानकारी को सुरक्षित रखता है

HLFIR(High Level FIR)

  • FIR का ऊपरी-स्तर representation
  • array optimization और उन्नत Fortran syntax के लिए समर्थन

compilation चरण

  1. Fortran source code
  2. MLIR (HLFIR + FIR) का निर्माण
  3. FIR transformation
  4. LLVM IR transformation
  5. machine IR → assembly → executable

Flang का OpenMP समर्थन

  • OpenMP parallel programming के लिए मानक API है
  • Flang ने MLIR में OpenMP-विशिष्ट dialect जोड़ा है
  • OpenMPIRBuilder का उपयोग कर इसे LLVM IR में बदला जाता है
  • Flang का OpenMP implementation संरचनात्मक रूप से Clang के समान है

Flang का driver डिज़ाइन

  • flang → user-friendly driver
  • flang -fc1 → developer-friendly frontend driver
  • Clang की clangDriver library पर आधारित implementation
  • विभिन्न targets और tools का समर्थन संभव

Flang के योगदान और प्रतिक्रियाएँ

  • Arm: Flang-आधारित HPC toolchain का विकास
  • Fujitsu: HPC test suite के माध्यम से Flang सुधार में योगदान
  • Linaro: Fujitsu test suite के ज़रिए defects को ठीक किया
  • SciPy: Flang अपनाने से Windows support समस्याओं का समाधान
  • Barcelona Supercomputing Center: RISC-V vectorization और internal parallel model का समर्थन
  • Chris Lattner:

    "Flang, LLVM प्रोजेक्ट द्वारा उपलब्ध कराए गए collaboration model का प्रतीक है"

  • AMD: अगली पीढ़ी का Fortran कंपाइलर Flang-आधारित रूप में विकसित कर रहा है

Flang में योगदान कैसे करें

  • Flang एक open source प्रोजेक्ट है और लगातार विकसित हो रहा है
  • इसे सीधे इस्तेमाल करके feedback दिया जा सकता है
  • code contribution, documentation सुधार आदि जैसे कई योगदान के तरीके मौजूद हैं
  • यह LLVM की standard contribution process का पालन करता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.