- O LLVM vem incluindo o compilador Fortran Flang desde o LLVM 11, em 2020
- O nome inicial do executável era
flang-new, e não flang
- No LLVM 20,
flang-new foi renomeado para flang, reconhecendo a maturidade do Flang
- Após anos de desenvolvimento, o Flang se consolidou como o compilador Fortran oficial
A importância do Fortran
- O Fortran surgiu nos anos 1950 como a linguagem Formula Translation
- É amplamente usado em computação científica (modelagem climática, dinâmica dos fluidos, química computacional etc.)
- Recentemente, o ecossistema Fortran voltou a ganhar força
- Surgiram o gerenciador de pacotes Fortran (fpm), uma biblioteca padrão não oficial, o LFortran e outros
- Mais de 80% do código executado no supercomputador ARCHER2 é escrito em Fortran
Por que um novo compilador Fortran é necessário
- Compiladores Fortran existentes:
- compilador Fortran da Intel, compiladores NVIDIA HPC etc.
- compilador open source: GFortran
- Parceiros iniciais do projeto Flang: laboratórios nacionais dos EUA e a NVIDIA
- Objetivos:
- oferecer uma licença open source adequada também para uso comercial
- construir uma comunidade ativa de desenvolvedores de compiladores Fortran
- dar suporte ao desenvolvimento em Fortran com ferramentas baseadas em LLVM
- fornecer uma plataforma experimental para propostas de novos padrões da linguagem
- A existência de múltiplas implementações ajuda a reduzir problemas de compatibilidade e permite melhorias
Linha do tempo do Flang
- 1989: fundação do Portland Group (PGI)
- 2015: início do projeto Classic Flang (liderado pela NVIDIA e por laboratórios nacionais dos EUA)
- 2017: primeiro lançamento do Classic Flang e transição para open source
- 2018: início da reescrita do frontend do Classic Flang como F18
- 2019: F18 é integrado ao projeto LLVM
- 2020: introdução do novo driver
flang-new
- 2022: a NVIDIA contribui com o FIR (Fortran IR) para o LLVM
- 2024:
flang-new é renomeado para flang
- 2025: o executável
flang passa a ser incluído no LLVM 20.1
O processo de mudança de nome do Flang
- A mudança de nome do Flang foi discutida várias vezes
- Critérios da decisão:
- resolver os principais problemas de funcionalidade e desempenho
- exibir mensagens de erro claras para recursos da linguagem ainda incompletos
- obter bons resultados em comparações de desempenho com outros compiladores Fortran
- confirmar a estabilidade por meio de uma ampla suíte de testes
- Conselho de Chris Lattner, cofundador do LLVM:
> "É preciso resolver o problema de conflito de nomes entre o Flang existente e o novo Flang"
- Em outubro de 2024, após consenso da comunidade, a mudança de nome de
flang-new para flang foi concluída
O processo de compilação do Flang e a adoção do MLIR
MLIR (Multi-Level Intermediate Representation)
- Só o LLVM IR tem dificuldade para preservar informações de linguagens de alto nível
- O MLIR permite preservar e otimizar características de linguagens de alto nível
- O Flang constrói o FIR (Fortran IR) com base no MLIR
- O FIR preserva informações de arrays, tipos e outros elementos do Fortran
HLFIR (High Level FIR)
- Representação de nível superior sobre o FIR
- Dá suporte à otimização de arrays e a sintaxes avançadas do Fortran
Etapas de compilação
- Código-fonte Fortran
- Geração de MLIR (HLFIR + FIR)
- Transformação de FIR
- Transformação para LLVM IR
- Machine IR → assembly → executável
Suporte a OpenMP no Flang
- OpenMP é uma API padrão para programação paralela
- O Flang adiciona um dialect específico de OpenMP ao MLIR
- Usa
OpenMPIRBuilder para a conversão para LLVM IR
- A implementação de OpenMP no Flang é estruturalmente semelhante à do Clang
O design do driver do Flang
flang → driver amigável para o usuário
flang -fc1 → driver de frontend voltado a desenvolvedores
- Implementado com base na biblioteca
clangDriver do Clang
- Permite suporte a diversos targets e ferramentas
Contribuições e repercussão do Flang
- Arm: desenvolvimento de toolchain HPC baseado em Flang
- Fujitsu: contribuição para melhorar o Flang por meio de uma suíte de testes HPC
- Linaro: correção de defeitos usando a suíte de testes da Fujitsu
- SciPy: adoção do Flang para resolver problemas de suporte ao Windows
- Barcelona Supercomputing Center: suporte a vetorização RISC-V e a modelo interno de paralelismo
- Chris Lattner:
> "O Flang é um símbolo do modelo de colaboração que o projeto LLVM oferece"
- AMD: desenvolvendo o compilador Fortran de próxima geração com base no Flang
Como contribuir com o Flang
- O Flang continua evoluindo como projeto open source
- É possível testá-lo diretamente e enviar feedback
- Há várias formas de contribuição, como código e documentação
- Segue o processo padrão de contribuição do LLVM
Ainda não há comentários.