Estoy interesado en la optimización del flujo de datos y gráficos de flujo de control y, en particular, más complejo desde el punto de vista computacional. Pero también será interesante conocer los últimos inventos en el campo de las optimizaciones de mirillas.
optimization
compilers
Evgeny Gavrin
fuente
fuente
Respuestas:
No estoy seguro de cuán novedoso es, o si es demasiado aplicado para su interés, pero Hoopl muestra cómo una optimización de control / flujo de datos puede modularizarse, con la propagación de hechos sobre vértices de gráficos de control que son independientes del lenguaje y optimización específica.
Hacen referencia a un algoritmo de 2002 de Lerner, Grove y Chambers que compone optimizaciones simples en una "superoptimización".
fuente
Supongo que la técnica de Saturación de Igualdad , como un enfoque diferente al problema de la optimización pasa a ordenar, sería relevante. Sin embargo, que yo sepa, aún no se ha demostrado práctico mediante una implementación concreta en un compilador completo. Las siguientes Optimizaciones del Generador de compiladores a partir de pruebas también pueden ser de interés.
fuente
Ha habido un poco de reactivación en los compiladores de optimización verificados. Además del artículo de Lerner (mencionado en un comentario anterior), puede consultar el proyecto CompCert dirigido por Xavier Leroy. Han hecho algunas cosas interesantes al especificar optimizaciones como pruebas verificables por máquina (usando Coq ). Todavía no he leído los documentos, pero el proyecto Verified Software Toolchain en Princeton también parece estar produciendo resultados interesantes en esta área.
fuente
Reconociendo que baz [i] + = force (foo [i], foo [j]) en un bucle FOR doble tiene resultados independientes para (i, j) y reordena las llamadas en una curva de relleno de espacio en (i, j) para reducir los errores de caché.
No es exactamente "mirilla", pero obtener un comportamiento ajeno a la memoria caché para "gratis" es bueno.
fuente