Simpósio Brasileiro de Linguagens de Programação

Desvendando o MLIR: Do Alto Nível ao LLVM com Redes Neurais e Otimizações

O tutorial do SBLP 2025, patrocinado pela Cadence Design Systems, apresentará uma introdução à Multi-Level Intermediate Representation (MLIR), voltada para pessoas que estudam, pesquisam ou trabalham com compiladores, otimizações e machine learning. Conhecimentos prévios em LLVM ou MLIR não são obrigatórios — apenas curiosidade e vontade de aprender!

O MLIR é uma infraestrutura poderosa para representar e transformar programas em múltiplos níveis de abstração. Este tutorial explorará como o MLIR pode ser usado para compilar e otimizar representações de grafos computacionais, como os encontrados em redes neurais. Serão apresentados os conceitos fundamentais do MLIR: representações intermediárias e suas estruturas, dialetos e passes. Também será discutido como o MLIR se encaixa no ecossistema de compiladores modernos e por que tem se tornado essencial em aplicações de machine learning e além.

O tutorial também permitirá que os participantes botem a mão na massa! Através de um exercício prático, acompanharemos o rebaixamento (lowering) de uma multiplicação de matrizes 2D escrita no dialeto linalg até o nível de representação intermediária (IR) do LLVM. Durante o processo, aplicaremos transformações como unroll de laços e uso do dialeto scf, proporcionando uma visão concreta de como o MLIR permite otimizações progressivas e controladas.

Foto de Guilherme Silva
Guilherme Silva

Guilherme Silva é mestre em Ciência da Computação pela Universidade Federal de Minas Gerais. Durante a pós-graduação, trabalhou no desenvolvimento de um SDK para um projeto nacional de microchip baseado em RISC-V e desenvolveu uma técnica de compilação certificada. Atualmente, é engenheiro de compiladores na Cadence e trabalha na otimização de redes neurais para execução em DSPs da empresa.

Foto de Rafael Sumitani
Rafael Sumitani

Rafael Sumitani é bacharel em Ciência da Computação pela Universidade Federal de Minas Gerais. Durante a graduação, teve experiência com pesquisa na área de compiladores, com foco em análise automática de complexidade e em fuzzing. Atualmente é Engenheiro de Software na Cadence Design Systems, onde trabalha no desenvolvimento de compiladores voltados para a otimização de modelos de inteligência artificial.

Foto de Michael Canesche
Michael Canesche

Michael Canesche é doutor em Ciência da Computação pela Universidade Federal de Minas Gerais (UFMG), com ênfase em Compiladores. É também mestre e bacharel em Ciência da Computação pela Universidade Federal de Viçosa (UFV), com foco em Arquitetura de Computadores. Atualmente, atua como Engenheiro de Software Líder na Cadence Design Systems, onde trabalha no desenvolvimento de compiladores voltados para a otimização de modelos de inteligência artificial.