[general_comp] Taller corto: Compilar es Comprender: Rust, MLIR y la Revolución de la IA
Esteban Mocskos
emocskos at dc.uba.ar
Thu Jul 3 09:19:20 -03 2025
Días: Lunes 7 y Martes 8 de Julio o Jueves 10 y Viernes 11 de Julio
(puede ser una de las dos opciones o las dos dependiendo de los inscriptos).
Lugar: Laboratorio 1111, Pabellón 0 + infinito
Horario: de 18 a 22 (cerramos con algo para picar).
Inscripción: usar este form: https://forms.gle/FZK6edmttGWEkjudA
Profesores: Bienvenido Velez (Universidad de Puerto Rico Mayagüez), con
la colaboración de Esteban Mocskos.
Descripción:
===========
La rápida adopción de la inteligencia artificial generativa (genAI)
combinada con la amplia adopción de arquitecturas masivamente paralelas
como los GPUs han reanimado nuevamente el interés de los científicos de
computación en el desarrollo de compiladores optimizadores para
lenguajes de programación de alto nivel. Por un lado, la genAI requiere
uso masivo de redes neurales transformativas lo cual a su vez ofrece
grandes oportunidades para paralelizar operaciones en matrices
gigantescas. Por otro lado, las arquitecturas GPU combinan paralelismo
SIMD/SIMT masivo con "pipelines" y jerarquías de memoria especializadas
para manejo de grandes matrices lo cual hace virtualmente imposible la
optimización manual.
Durante nuestro taller de 3 horas estaremos explorando el curso de
Diseño de Compiladores que ofrecemos en la Universidad de Puerto Rico
Mayagüez (UPRM) con el propósito de generar interés entre los profesores
y estudiantes hacia los temas de compilación, sus retos y oportunidades
para la investigación y colaboración científicas.
El curso gira alrededor de un proyecto para desarrollar un compilador
para un lenguaje de juguete llamado "Cool" que combina características
de lenguaje funcional, "object-oriented" y "type safe".
El compilador lo desarrollamos utilizando Rust para traducir Cool a
lenguaje intermedio sobre la plataforma Multi-Level Intermediate
Representation (MLIR). Dicha plataforma está rápidamente convirtiéndose
en "lingua franca" en la comunidad científica de compilación y
optimización. El compilador realizará la traducción en varias fases
incluyendo: análisis ortográfico, análisis sintáctico, análisis
semántico y generación de código intermedio. MLIR se encargará de
traducir el lenguaje intermedio a lenguaje nativo de la computadora que
utilice el estudiante aplicando una gran variedad de optimizaciones
incluidas en el paquete.
Juntos trabajaremos algunas modificaciones simples a nuestro compilador
para añadir varias funcionalidades a Cool tales como nuevas expresiones
(nuevos tipos de loops como repeat-until) o nuevos tipos de datos (e.g.
añadir expresiones de punto flotante y coerciones automáticas). De esta
forma podrán apreciar el impacto de estas modificaciones lingüísticas en
todas las fases de un compilador. Los participantes podrán observar
versiones del programa fuente a diferentes niveles de abstracción
utilizando los diferentes dialectos de MLIR desde el código fuente hasta
el lenguaje de ensamblador nativo de sus computadoras personales.
Finalmente, presentaremos un preludio de las optimizaciones ya
existentes en MLIR y de cómo podemos desarrollar nuestras propias
optimizaciones apalancándonos de la información que automáticamente
recopila MLIR de sus análisis de flujo e interdependencias entre los
datos de los programas.
Nuestra meta es que el curso de compilación de una visión de las
posibilidades de las herramientas y técnicas actuales disponibles en el
desarrollo de compiladores.
Además, que sirva como muestra para luego llegar a tener una versión
completa de este curso a dictarse en Febrero de 2026 en el DC.
Referencias:
• The Rust Programming Language (https://doc.rust-lang.org/book/)
• The LLVM Compiler Infrastructure (https://llvm.org/)
• MLIR Multi-level IR Compiler Framework (https://mlir.llvm.org/)
Más información sobre la lista de distribución general_comp