- 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
- Código fuente Fortran
- Generación de MLIR (HLFIR + FIR)
- Transformación de FIR
- Transformación a LLVM IR
- 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.