- 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-new → flang 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
- Kode sumber Fortran
- Pembuatan MLIR (HLFIR + FIR)
- Transformasi FIR
- Transformasi ke LLVM IR
- 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.