[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