aprendizaje automático para la optimización de código y compilador?

8

Estoy buscando ML para generar código más eficiente (es decir, heurística de tiempo de compilación y tiempo de ejecución). Tengo un phd (compiladores, hpc), pero muy poca experiencia en ML.

Agradecería cualquier referencia al trabajo existente.

Más importante aún, ¿qué técnicas de aprendizaje automático debería explorar?

  • cada muestra de datos es un código + prueba de ejecución + datos de rendimiento
  • gran cantidad de muestras de datos, con el etiquetado correcto
  • gran cantidad de parámetros a modificar
  • cualquier muestra se puede volver a analizar con cualquier parámetro (y obtener el etiquetado correcto)
  • gran cantidad de CPU para ejecutar y volver a ejecutar muestras

Y también algunos de mis supuestos muy sospechosos ...

  • gran parte del código ya es óptimo localmente (optimización básica del compilador)
  • algunos de los parámetros son "conceptos de alto nivel", por ejemplo, reemplazar la matriz con una lista vinculada. (por lo que un pequeño cambio de parámetro tendrá efectos variados)
  • la mejora deseada está limitada (una mejora xK es "suficientemente buena", K es bien conocida)
  • los parámetros son escasos, es decir, en su mayoría cero (sospecho que la mayoría del código es básicamente bueno, y hay relativamente pocos cambios beneficiosos)

Cualquier sugerencia para ponerme en mi camino sería apreciada

OA1
fuente
Parece que está pidiendo referencias a cualquier documento en el diseño del compilador. Hay muchos.
Tsuyoshi Ito
1
¡Absolutamente no! Estoy mirando las heurísticas que están completamente fuera del diseño del compilador. Estos heurísticos constituyen un espacio problemático muy grande y no pueden analizarse fácilmente incluso en tiempo de ejecución, por lo tanto, ML.
OA1
1
probablemente deberías ir a metaoptimize.com. Esta pregunta está fuera de alcance aquí.
Suresh Venkat
66
Me di cuenta de que "ML" en la pregunta no significa lo que pensé que significaba .
Tsuyoshi Ito
@TsuyoshiIto Diría que estas técnicas podrían aterrizarse en la máquina virtual, no en el compilador en sí mismo
om-nom-nom

Respuestas:

3

La programación genética (GP) se ha utilizado para modificar el código fuente para mejorar el rendimiento.

Ej. Mejora evolutiva de programas

(Esto está cerca de mi tema de doctorado, estaría muy interesado en escuchar su enfoque)

Brendan Cody-Kenny
fuente