31 jan 2024
14:00 Defesa de Mestrado Sala 53 do prédio IC2
Tema
Reconhecimento e Reescrita de Padrões em Código-Fonte para MLIR Utilizando Autômatos Baseados em Strings
Aluno
Vinícius Couto Espindola
Orientador / Docente
Guido Costa Souza de Araújo - Coorientador: Hervé Cédric Yviquel
Breve resumo
Um fluxo típico de compilador depende de uma sequência unidirecional de etapas de tradução/otimização que reduzem o nível de abstração do programa, tornando difícil pre- servar informações de alto nível em cada etapa de transformação. Extensões modernas de ISA e aceleradores de hardware podem se beneficiar da habilidade do compilador de detectar e elevar trechos do programa para instruções de aceleração ou chamadas de bibli- otecas otimizadas. Embora estudos recentes baseados em MLIR (Multi-Level IR) tenham sido propostos para elevar o nível de abstração de códigos, eles dependem de linguagens especializadas, recompilação do compilador ou conhecimento de linguagens especializadas em descrição de padrões. Esta tese discute o algoritmo Source-code Matching and Repla- cement (SMR), uma abordagem focada em código-fonte para reconhecimento e reescrita de padrões em MLIR, que não exige a intervenção de um especialista em compiladores. Aproveitando a flexibilidade do MLIR, uma representação intermediária, o SMR ofe- rece uma abordagem inovadora para detectar e substituir idiomas diretamente no código- fonte. O SMR emprega um algoritmo de reconhecimento de grafos direcionados acíclicos em duas etapas, implementado por meio de autômatos de strings, inspirado em traba- lhos anteriores sobre correspondência de padrões em árvores. Inicialmente, o Control- Dependency Graph (CDG) do padrão é comparado com o CDG do código a ser reescrito, descartando segmentos que não possuam uma estrutura de fluxo de controle similar ao padrão desejado. Na segunda etapa, os fragmentos de código filtrados anteriormente têm seus Data-Dependency Graphs (DDGs) construídos e comparados com o DDG do padrão. Resultados experimentais demonstram que o SMR identifica eficazmente padrões em Fortran (FIR) e C (CIL), reescrevendo-os como chamadas BLAS para elevar o nível de abstração do código visando otimização. Além do algoritmo central, esta tese explora as capacidades de pré-processamento do SMR, facilitando a integração de diversos front- ends e dialetos, e garantindo a adaptabilidade da ferramenta a vários front-ends e dialetos. Desafios como restrições de estrutura MLIR, sensibilidades de frontend e dialetos também são discutidos. Análises adicionais também indicam melhorias de desempenho ao utilizar o SMR para substituição de código em áreas como computação aproximada e aceleração de hardware.
Banca examinadora
Titulares:
Guido Costa Souza de Araújo IC/UNICAMP
Sandro Rigo IC/UNICAMP
Guilherme de lima Ottoni Meta
Suplentes:
Lucas Francisco Wanner IC/UNICAMP
Alexandro José Baldassin DEMAC/UNESP