Actualmente estoy en el proceso de elegir un proyecto para un curso de compilación de nivel de graduado durante las próximas 8 semanas. Me gustaría hacer algo relacionado con la optimización ya que no he trabajado mucho en esa área antes, pero cualquier cosa en el campo es juego limpio.Interesante compilador de proyectos
¿Cuál es el proyecto de compilador más interesante que has hecho? ¿De qué aprendiste más?
Editar: Gracias a todos por sus sugerencias. Me disculpo por no actualizar esto por tanto tiempo.
El proyecto que terminé haciendo fue una simple optimización de autovectorización en LLVM. LLVM tiene tipos de vectores, pero no parecía haber ninguna forma de aprovecharlos sin soporte para el front-end. Esta optimización convirtió el código escalar normal en código vectorial.
Dado que la auto-vectorización es una optimización bastante difícil de implementar, limitamos nuestro alcance tanto como pudimos. En primer lugar, para exponer el paralelismo del nivel de instrucción en el código, buscamos lazos de un bloque que coincidieran con nuestros criterios, luego los desenrollamos un número específico de veces para que pudieran ser convenientemente vectorizables. Luego implementamos el algoritmo de empaquetado establecido en Exploiting Superword Level Parallelism with Multimedia Instruction Sets por Larsen y Amarasinghe.
Incluso una versión simplificada de esta optimización es bastante complicada. Hay muchas restricciones; por ejemplo, no desea vectorizar una variable que viva fuera del ciclo, ya que el resto del programa espera que sea escalar. Hemos dedicado muchas horas en las últimas semanas. El proyecto fue muy divertido y aprendimos mucho.
So Jay han pasado más de 8 semanas. Háganos saber lo que sucedió. –
Cualquier noticia Jay? Pronto comenzaré a enseñar un curso de compilación de estudiante y será interesante saber lo que hiciste. – fbinder