1 puntos por GN⁺ 2025-03-13 | Aún no hay comentarios. | Compartir por WhatsApp
  • LLVM ha incluido el compilador Fortran Flang desde LLVM 11 en 2020
  • Al principio, el nombre del ejecutable no era flang, sino flang-new
  • En LLVM 20, flang-new cambió a flang, reconociendo la madurez de Flang
  • Tras años de desarrollo, Flang se consolidó como el compilador oficial de Fortran

La importancia de Fortran

  • Fortran comenzó en la década de 1950 como el lenguaje de traducción de fórmulas (Formula Translation)
  • Se usa ampliamente en cómputo científico (modelado meteorológico, dinámica de fluidos, química computacional, etc.)
  • Recientemente, el ecosistema de Fortran se ha reactivado
    • Han aparecido el administrador de paquetes de Fortran (fpm), la biblioteca estándar no oficial, LFortran y otros
  • Más del 80% del código que se ejecuta en la supercomputadora ARCHER2 está escrito en Fortran

Por qué se necesita un nuevo compilador Fortran

  • Compiladores Fortran existentes:
    • compilador Fortran de Intel, compilador NVIDIA HPC, etc.
    • compilador de código abierto: GFortran
  • Socios iniciales del proyecto Flang: laboratorios nacionales de EE. UU. y NVIDIA
  • Objetivos:
    • ofrecer una licencia de código abierto y apta para uso comercial
    • construir una comunidad activa de desarrolladores de compiladores Fortran
    • apoyar el desarrollo en Fortran con herramientas basadas en LLVM
    • ofrecer una plataforma experimental para proponer nuevos estándares del lenguaje
  • Tener varias implementaciones permite reducir problemas de compatibilidad y mejorar el ecosistema

Línea de tiempo de Flang

  • 1989: se funda Portland Group (PGI)
  • 2015: comienza el proyecto Classic Flang (liderado por NVIDIA y laboratorios nacionales de EE. UU.)
  • 2017: primer lanzamiento de Classic Flang y transición a código abierto
  • 2018: comienza la reescritura del frontend de Classic Flang como F18
  • 2019: F18 se integra al proyecto LLVM
  • 2020: se introduce el nuevo driver flang-new de Flang
  • 2022: NVIDIA aporta FIR (Fortran IR) a LLVM
  • 2024: flang-new cambia de nombre a flang
  • 2025: LLVM 20.1 incluye el ejecutable flang

El proceso de cambio de nombre de Flang

  • El cambio de nombre de Flang se discutió en varias ocasiones
  • Criterios para la decisión:
    • resolver problemas importantes de funcionalidad y rendimiento
    • que las funciones del lenguaje aún no terminadas mostraran mensajes de error claros
    • obtener buenos resultados en comparaciones de rendimiento con otros compiladores Fortran
    • confirmar la estabilidad mediante una amplia suite de pruebas
  • Consejo de Chris Lattner, cofundador de LLVM:
    > "Es necesario resolver el conflicto de nombres entre el Flang existente y el nuevo Flang"
  • En octubre de 2024, tras el consenso de la comunidad, se completó el cambio de nombre de flang-new a flang

Proceso de compilación de Flang y adopción de MLIR

MLIR (Multi-Level Intermediate Representation)

  • Solo con LLVM IR es difícil preservar la información de alto nivel del lenguaje
  • MLIR permite conservar y optimizar las características de lenguajes de alto nivel
  • Flang construye FIR (Fortran IR) sobre MLIR
  • FIR preserva información de Fortran como arreglos y tipos

HLFIR (High Level FIR)

  • Una representación de nivel superior sobre FIR
  • Soporta optimización de arreglos y sintaxis avanzada de Fortran

Etapas de compilación

  1. Código fuente Fortran
  2. Generación de MLIR (HLFIR + FIR)
  3. Transformación de FIR
  4. Transformación a LLVM IR
  5. Machine IR → ensamblador → ejecutable

Soporte de OpenMP en Flang

  • OpenMP es una API estándar para programación paralela
  • Flang añade a MLIR un dialect dedicado a OpenMP
  • Usa OpenMPIRBuilder para convertir a LLVM IR
  • La implementación de OpenMP en Flang es estructuralmente similar a la de Clang

Diseño del driver de Flang

  • flang → driver amigable para usuarios
  • flang -fc1 → driver frontend amigable para desarrolladores
  • Implementado sobre la biblioteca clangDriver de Clang
  • Puede dar soporte a diversos targets y herramientas

Contribuciones y recepción de Flang

  • Arm: desarrolla una toolchain HPC basada en Flang
  • Fujitsu: contribuyó a mejorar Flang mediante una suite de pruebas HPC
  • Linaro: corrigió defectos usando la suite de pruebas de Fujitsu
  • SciPy: la adopción de Flang resolvió problemas de soporte en Windows
  • Barcelona Supercomputing Center: soporte para vectorización RISC-V y modelo de paralelismo interno
  • Chris Lattner:
    > "Flang simboliza el modelo de colaboración que ofrece el proyecto LLVM"
  • AMD: está desarrollando un compilador Fortran de próxima generación basado en Flang

Cómo contribuir a Flang

  • Flang sigue evolucionando de forma continua como proyecto de código abierto
  • Es posible probarlo directamente y enviar retroalimentación
  • Hay varias formas de contribuir, como aportar código o corregir documentación
  • Sigue el proceso estándar de contribución de LLVM

Aún no hay comentarios.

Aún no hay comentarios.