aprendizado de máquina para otimização de código e compilador?

8

Estou procurando no ML a geração de código mais eficiente (ou seja, heurísticas de tempo de compilação e tempo de execução). Eu tenho um phd (compiladores, hpc), mas muito pouca experiência em ML.

Eu apreciaria todas as referências ao trabalho existente.

Mais importante, quais técnicas de aprendizado de máquina devo explorar?

  • cada amostra de dados é um código + execução de teste + dados de desempenho
  • grande número de amostras de dados, com rotulagem correta
  • grande número de parâmetros para modificar
  • qualquer amostra pode ser executada novamente com todos os parâmetros (e obter rotulagem correta)
  • grande quantidade de CPU para executar e executar novamente amostras

E também algumas das minhas suposições muito suspeitas ...

  • grande parte do código já é ideal localmente (otimização básica do compilador)
  • alguns dos parâmetros são "conceitos de alto nível", por exemplo, substituem array por lista vinculada. (portanto, uma pequena alteração de parâmetro terá efeitos variados)
  • a melhoria desejada é limitada (uma melhoria de xK é "boa o suficiente", K é bem conhecido)
  • os parâmetros são escassos, ou seja, praticamente zero (suspeito que a maioria dos códigos seja basicamente boa e que haja relativamente poucas alterações benéficas)

Qualquer indicação para me colocar no meu caminho seria apreciada

OA1
fonte
Parece que você está solicitando referências a quaisquer documentos no design do compilador. Há muitos.
Tsuyoshi Ito
1
Absolutamente não! Estou olhando para heurísticas que estão completamente fora do design do compilador. Essas heurísticas constituem um espaço de problemas muito grande e não podem ser facilmente analisadas, mesmo em tempo de execução, daí o ML.
OA1
1
você provavelmente deveria ir para metaoptimize.com. Esta questão está fora de escopo aqui.
Suresh Venkat
6
Eu percebi que "ML" na pergunta não significa o que eu pensei que isso significava .
Tsuyoshi Ito
@TsuyoshiIto eu diria que estas técnicas podem ser desembarcados em máquina virtual, não o compilador em si
om-nom-nom

Respostas:

3

A Programação Genética (GP) foi usada para modificar o código fonte para melhorar o desempenho.

por exemplo, melhoria evolutiva de programas

(Isso é próximo ao meu tópico de doutorado, ficaria muito interessado em ouvir sua abordagem)

Brendan Cody-Kenny
fonte