1 pontos por GN⁺ 2025-03-13 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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

  1. Código-fonte Fortran
  2. Geração de MLIR (HLFIR + FIR)
  3. Transformação de FIR
  4. Transformação para LLVM IR
  5. 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.

Ainda não há comentários.