1 poin oleh GN⁺ 2025-03-13 | Belum ada komentar. | Bagikan ke WhatsApp
  • LLVM telah menyertakan kompiler Fortran Flang sejak LLVM 11 pada 2020
  • Nama executable awalnya bukan flang, melainkan flang-new
  • Di LLVM 20, flang-new diubah menjadi flang, yang menandakan pengakuan atas kematangan Flang
  • Setelah bertahun-tahun dikembangkan, Flang kini memantapkan posisinya sebagai kompiler Fortran resmi

Pentingnya Fortran

  • Fortran bermula pada 1950-an sebagai bahasa Formula Translation
  • Digunakan luas dalam komputasi ilmiah (pemodelan cuaca, dinamika fluida, kimia komputasional, dll.)
  • Belakangan ini, ekosistem Fortran kembali aktif
    • Munculnya manajer paket Fortran (fpm), pustaka standar tidak resmi, LFortran, dan lainnya
  • Lebih dari 80% kode yang berjalan di superkomputer ARCHER2 ditulis dalam Fortran

Mengapa kompiler Fortran baru diperlukan

  • Kompiler Fortran yang sudah ada:
    • Intel Fortran Compiler, NVIDIA HPC Compiler, dan lain-lain
    • Kompiler open source: GFortran
  • Mitra awal proyek Flang: laboratorium riset nasional AS dan NVIDIA
  • Tujuan:
    • Menyediakan lisensi open source yang juga cocok untuk penggunaan komersial
    • Membangun komunitas pengembang kompiler Fortran yang aktif
    • Mendukung pengembangan Fortran dengan tool berbasis LLVM
    • Menyediakan platform eksperimen untuk usulan standar bahasa baru
  • Adanya beberapa implementasi dapat mengurangi masalah kompatibilitas dan mendorong perbaikan

Linimasa Flang

  • 1989: Portland Group(PGI) didirikan
  • 2015: Proyek Classic Flang dimulai (dipimpin NVIDIA dan laboratorium nasional AS)
  • 2017: Rilis pertama Classic Flang dan transisi menjadi open source
  • 2018: Mulai penulisan ulang frontend Classic Flang menjadi F18
  • 2019: F18 diintegrasikan ke proyek LLVM
  • 2020: Driver baru Flang, flang-new, diperkenalkan
  • 2022: NVIDIA menyumbangkan FIR (Fortran IR) ke LLVM
  • 2024: flang-new diubah namanya menjadi flang
  • 2025: LLVM 20.1 menyertakan executable flang

Proses pergantian nama Flang

  • Pergantian nama Flang telah dibahas beberapa kali
  • Kriteria keputusan:
    • Masalah utama pada fitur dan performa telah diselesaikan
    • Fitur bahasa yang belum selesai harus menampilkan pesan galat yang jelas
    • Dibutuhkan hasil unggul dalam perbandingan performa dengan kompiler Fortran lain
    • Stabilitas harus dibuktikan melalui test suite yang luas
  • Saran dari salah satu pendiri LLVM, Chris Lattner:
    > "Perlu menyelesaikan masalah benturan nama antara Flang lama dan Flang baru"
  • Pada Oktober 2024, setelah tercapai konsensus komunitas, perubahan nama flang-newflang selesai dilakukan

Proses kompilasi Flang dan adopsi MLIR

MLIR(Multi-Level Intermediate Representation)

  • Sulit mempertahankan informasi bahasa tingkat tinggi hanya dengan LLVM IR
  • MLIR memungkinkan karakteristik bahasa tingkat tinggi dipertahankan dan dioptimalkan
  • Flang membangun FIR (Fortran IR) di atas MLIR
  • FIR mempertahankan informasi seperti array dan type pada Fortran

HLFIR(High Level FIR)

  • Representasi tingkat yang lebih tinggi di atas FIR
  • Mendukung optimisasi array dan sintaks Fortran tingkat lanjut

Tahap kompilasi

  1. Kode sumber Fortran
  2. Pembuatan MLIR (HLFIR + FIR)
  3. Transformasi FIR
  4. Transformasi ke LLVM IR
  5. Machine IR → assembly → executable

Dukungan OpenMP di Flang

  • OpenMP adalah API standar untuk pemrograman paralel
  • Flang menambahkan dialect khusus OpenMP ke MLIR
  • Dikonversi ke LLVM IR menggunakan OpenMPIRBuilder
  • Implementasi OpenMP di Flang secara struktural mirip dengan Clang

Desain driver Flang

  • flang → driver yang ramah pengguna
  • flang -fc1 → driver frontend yang ramah pengembang
  • Diimplementasikan berdasarkan pustaka clangDriver milik Clang
  • Dapat mendukung beragam target dan tool

Kontribusi dan respons terhadap Flang

  • Arm: Mengembangkan toolchain HPC berbasis Flang
  • Fujitsu: Berkontribusi meningkatkan Flang melalui HPC test suite
  • Linaro: Memperbaiki bug melalui test suite dari Fujitsu
  • SciPy: Mengatasi masalah dukungan Windows dengan mengadopsi Flang
  • Barcelona Supercomputing Center: Mendukung vektorisasi RISC-V dan model paralel internal
  • Chris Lattner:
    > "Flang adalah simbol model kolaborasi yang ditawarkan proyek LLVM"
  • AMD: Sedang mengembangkan kompiler Fortran generasi berikutnya berbasis Flang

Cara berkontribusi ke Flang

  • Flang terus berkembang sebagai proyek open source
  • Siapa pun dapat mencobanya langsung dan memberikan masukan
  • Ada banyak cara untuk berkontribusi, termasuk kontribusi kode dan perbaikan dokumentasi
  • Mengikuti proses kontribusi standar LLVM

Belum ada komentar.

Belum ada komentar.