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
Parece que está pidiendo referencias a cualquier documento en el diseño del compilador. Hay muchos.
—
Tsuyoshi Ito
¡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
probablemente deberías ir a metaoptimize.com. Esta pregunta está fuera de alcance aquí.
—
Suresh Venkat
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