maschinelles Lernen zur Code- und Compileroptimierung?

8

Ich beschäftige mich mit ML, um effizienteren Code zu generieren (dh Kompilierungszeit- und Laufzeitheuristiken). Ich habe einen Doktortitel (Compiler, HPC), aber sehr wenig ML-Erfahrung.

Ich würde mich über Hinweise auf bestehende Arbeiten freuen.

Noch wichtiger ist, welche Techniken des maschinellen Lernens sollte ich erforschen?

  • Jedes Datenmuster ist ein Code + Testlauf + Leistungsdaten
  • große Anzahl von Datenproben mit korrekter Kennzeichnung
  • große Anzahl von zu ändernden Parametern
  • Jede Probe kann mit beliebigen Parametern erneut ausgeführt werden (und die korrekte Kennzeichnung erhalten).
  • große Menge an CPU zum Ausführen und erneuten Ausführen von Samples

Und auch einige meiner sehr verdächtigen Annahmen ...

  • Ein Großteil des Codes ist bereits lokal optimal (grundlegende Compileroptimierung)
  • Einige der Parameter sind "High-Level-Konzepte", z. B. Array durch verknüpfte Liste ersetzen. (Eine kleine Parameteränderung hat also unterschiedliche Auswirkungen.)
  • Die gewünschte Verbesserung ist begrenzt (eine xK-Verbesserung ist "gut genug", K ist bekannt).
  • Die Parameter sind spärlich, dh meistens Null (ich vermute, dass der meiste Code grundsätzlich gut ist und es relativ wenige vorteilhafte Änderungen gibt).

Alle Hinweise, die mich auf den Weg bringen, wären willkommen

OA1
quelle
Klingt so, als würden Sie nach Verweisen auf Papiere im Compiler-Design fragen. Da sind viele.
Tsuyoshi Ito
1
Absolut nicht! Ich betrachte Heuristiken, die völlig außerhalb des Compiler-Designs liegen. Diese Heuristiken stellen einen sehr großen Problemraum dar und können selbst zur Laufzeit nicht einfach analysiert werden, daher ML.
OA1
1
Sie sollten wahrscheinlich zu metaoptimize.com gehen. Diese Frage ist hier nicht möglich.
Suresh Venkat
6
Mir wurde klar, dass „ML“ in der Frage nicht bedeutet, was ich dachte, dass es bedeutet .
Tsuyoshi Ito
@ TsuyoshiIto Ich würde sagen, dass diese Technik in Virtual Machine gelandet werden könnte, nicht der Compiler selbst
om-nom-nom

Antworten:

3

Genetische Programmierung (GP) wurde verwendet, um den Quellcode zur Leistungsverbesserung zu ändern.

zB evolutionäre Verbesserung von Programmen

(Dies ist nah an meinem Doktorandenthema, wäre sehr interessiert, Ihren Ansatz zu hören)

Brendan Cody-Kenny
quelle