Charlas abiertas de HPC, Distribuídos y Arq: Ciclo 1: Compiladores
Queremos invitarlos a participar de los Seminarios de Computación de Alto Desempeño, Sistemas Distribuidos y Arquitectura, un nuevo espacio de formación y discusión orientado a estudiantes avanzados de grado, tesistas y estudiantes de posgrado.
La idea es generar un espacio horizontal de estudio e intercambio donde podamos abordar distintos temas relevantes dentro del gran área de la computación de alto desempeño (HPC) combinando encuentros introductorios, discusión de artículos científicos clásicos y recientes, presentaciones de trabajos de tesis e investigación, sesiones sobre herramientas y, cuando sea posible, reproducción de resultados.
Los temas se van a organizar en pequeños ciclos de varios encuentros realizados semana por medio.
Primer ciclo: COMPILADORES
1. Compiladores en general
2. Compiladores para HPC y Tensor Compilers
3. Arquitecturas RISC-V, intrinsics y su relación con compiladores
Encuentro 1: Introducción a compiladores
========================================
En el primer encuentro vamos a introducirnos en el mundo de los general-purpose compilers. La idea principal es dejar de ver al compilador como caja negra. Queremos entender qué problemas resuelve y cómo funciona, cuál es el proceso que termina generando una ejecución eficiente de un programa en cualquier arquitectura.
Entre los temas que vamos a discutir:
* ¿Qué es un compilador y por qué existen distintos compiladores?
* Código compilado vs. interpretado.
* Diferencias entre lenguajes y concepto de DSL (Domain-Specific Language).
* Pipeline clásico de compilación: lexer, parser, optimizaciones y code generation.
* Representaciones intermedias.
* AST (Abstract Syntax Tree) y distintas representaciones de un programa.
* Optimizaciones en el middle end.
* Introducción a LLVM.
* Optimizaciones y transformaciones relacionadas con generación de código y performance: paralelización, loop unrolling, inlining, entre otras.
No es necesario tener conocimientos previos de compiladores. El objetivo del primer encuentro es construir una base común para poder avanzar luego hacia compiladores orientados a HPC y arquitecturas específicas.
Referencias:
* Aho, Lam, Sethi & Ullman — Compilers: Principles, Techniques, and Tools (“Dragon Book”). Secciones 1.2, 1.4 y 8.1.
* LLVM Documentation: https://llvm.org/docs/
* LLVM Tutorial: https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html (capítulos 1–4)
* Compiler Explorer: https://godbolt.org/
Saludos,
LICAR PhD team