1 điểm bởi GN⁺ 2025-03-13 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • LLVM đã đưa trình biên dịch Fortran Flang vào từ LLVM 11 năm 2020
  • Tên tệp thực thi ban đầu là flang-new, không phải flang
  • Trong LLVM 20, flang-new được đổi thành flang, thừa nhận mức độ trưởng thành của Flang
  • Sau nhiều năm phát triển, Flang đã trở thành trình biên dịch Fortran chính thức

Tầm quan trọng của Fortran

  • Fortran bắt đầu từ những năm 1950 như ngôn ngữ Formula Translation
  • Được sử dụng rộng rãi trong tính toán khoa học (mô hình khí tượng, động lực học chất lưu, hóa học tính toán, v.v.)
  • Gần đây hệ sinh thái Fortran đang sôi động trở lại
    • Xuất hiện Fortran package manager (fpm), thư viện chuẩn không chính thức, LFortran, v.v.
  • Hơn 80% mã chạy trên siêu máy tính ARCHER2 được viết bằng Fortran

Vì sao cần một trình biên dịch Fortran mới

  • Các trình biên dịch Fortran hiện có:
    • Intel Fortran Compiler, NVIDIA HPC Compilers, v.v.
    • Trình biên dịch mã nguồn mở: GFortran
  • Đối tác ban đầu của dự án Flang: các phòng thí nghiệm nghiên cứu quốc gia của Mỹ và NVIDIA
  • Mục tiêu:
    • Cung cấp giấy phép mã nguồn mở phù hợp cho cả sử dụng thương mại
    • Xây dựng cộng đồng nhà phát triển trình biên dịch Fortran năng động
    • Hỗ trợ phát triển Fortran bằng các công cụ dựa trên LLVM
    • Cung cấp nền tảng thử nghiệm cho các đề xuất tiêu chuẩn ngôn ngữ mới
  • Sự tồn tại của nhiều cách triển khai giúp giảm vấn đề tương thích và thúc đẩy cải tiến

Dòng thời gian của Flang

  • 1989: Portland Group (PGI) được thành lập
  • 2015: Dự án Classic Flang bắt đầu (do NVIDIA và các phòng thí nghiệm quốc gia của Mỹ dẫn dắt)
  • 2017: Bản phát hành đầu tiên của Classic Flang và chuyển sang mã nguồn mở
  • 2018: Bắt đầu viết lại frontend của Classic Flang thành F18
  • 2019: F18 được tích hợp vào dự án LLVM
  • 2020: Giới thiệu driver mới flang-new của Flang
  • 2022: NVIDIA đóng góp FIR (Fortran IR) cho LLVM
  • 2024: flang-new được đổi tên thành flang
  • 2025: LLVM 20.1 bao gồm tệp thực thi flang

Quá trình đổi tên của Flang

  • Việc đổi tên Flang đã được thảo luận nhiều lần
  • Tiêu chí quyết định:
    • Giải quyết các vấn đề chính về tính năng và hiệu năng
    • Với các tính năng ngôn ngữ chưa hoàn thiện, phải đưa ra thông báo lỗi rõ ràng
    • Cần có kết quả tốt khi so sánh hiệu năng với các trình biên dịch Fortran khác
    • Xác nhận độ ổn định thông qua bộ kiểm thử diện rộng
  • Lời khuyên từ đồng sáng lập LLVM Chris Lattner:
    > "Cần giải quyết vấn đề xung đột tên giữa Flang cũ và Flang mới"
  • Tháng 10/2024, sau khi cộng đồng đạt đồng thuận, việc đổi tên flang-newflang đã hoàn tất

Quy trình biên dịch của Flang và việc đưa MLIR vào

MLIR(Multi-Level Intermediate Representation)

  • Chỉ với LLVM IR thì khó bảo toàn thông tin ngôn ngữ ở mức cao
  • MLIR có thể giữ lại đặc tính của ngôn ngữ bậc cao và cho phép tối ưu hóa
  • Flang xây dựng FIR (Fortran IR) trên nền tảng MLIR
  • FIR bảo toàn thông tin như mảng, kiểu dữ liệu của Fortran

HLFIR(High Level FIR)

  • Biểu diễn ở mức cao hơn của FIR
  • Hỗ trợ tối ưu hóa mảng và cú pháp Fortran nâng cao

Các bước biên dịch

  1. Mã nguồn Fortran
  2. Tạo MLIR (HLFIR + FIR)
  3. Chuyển đổi FIR
  4. Chuyển đổi sang LLVM IR
  5. Machine IR → assembly → tệp thực thi

Hỗ trợ OpenMP của Flang

  • OpenMP là API tiêu chuẩn cho lập trình song song
  • Flang bổ sung dialect chuyên dụng cho OpenMP trong MLIR
  • Chuyển đổi sang LLVM IR bằng OpenMPIRBuilder
  • Triển khai OpenMP của Flang có cấu trúc tương tự Clang

Thiết kế driver của Flang

  • flang → driver thân thiện với người dùng
  • flang -fc1 → driver frontend thân thiện với nhà phát triển
  • Được triển khai dựa trên thư viện clangDriver của Clang
  • Có thể hỗ trợ nhiều target và công cụ khác nhau

Đóng góp và phản hồi về Flang

  • Arm: phát triển toolchain HPC dựa trên Flang
  • Fujitsu: đóng góp cải thiện Flang thông qua bộ kiểm thử HPC
  • Linaro: sửa lỗi thông qua bộ kiểm thử của Fujitsu
  • SciPy: giải quyết vấn đề hỗ trợ Windows nhờ áp dụng Flang
  • Barcelona Supercomputing Center: hỗ trợ vector hóa RISC-V và mô hình song song nội bộ
  • Chris Lattner:
    > "Flang là biểu tượng cho mô hình cộng tác mà dự án LLVM mang lại"
  • AMD: đang phát triển trình biên dịch Fortran thế hệ tiếp theo dựa trên Flang

Cách đóng góp cho Flang

  • Flang là dự án mã nguồn mở đang tiếp tục phát triển
  • Có thể trực tiếp sử dụng và gửi phản hồi
  • Có nhiều cách đóng góp như đóng góp mã nguồn, chỉnh sửa tài liệu, v.v.
  • Tuân theo quy trình đóng góp tiêu chuẩn của LLVM

Chưa có bình luận nào.

Chưa có bình luận nào.