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
Respuestas:
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)
fuente