Impact of Economics on Compiler Optimization fileData Flow. 3 Übersetzer in der Praxis Optimierer...

29
0 Impact of Economics on Compiler Optimization Arch D. Robinson Kai Software Seminar „Zwischensprachen & Codegenerierung“ IPD Goos Dimitar Dimitrov Betreuer Rubino Geiß

Transcript of Impact of Economics on Compiler Optimization fileData Flow. 3 Übersetzer in der Praxis Optimierer...

0

Impact of Economics on Compiler Optimization Arch D. Robinson

Kai Software

Seminar „Zwischensprachen & Codegenerierung“

IPD GoosDimitar Dimitrov

Betreuer Rubino Geiß

1

Überblick

ÜberblickProblem

Übersetzer in der PraxisÜbersetzermarkt

LösungTemplate MetaprogrammingForschungsrichtung und DesiderataAndere Komponentenlösungen

PräprozessorPlug-in OptimiererPartielle EvaluierungBenutzerdefinierte Abstrakte Interpretationen

Checkliste

2

Übersetzer in der Praxis

Register Promotion eine vieler Optimierungen

InliningConstant Propagation

Branch Simplification

Register Promotion

Copy EliminationRedundancy Elimination

Loop UnrollingRegister AllocationSoftware Pipelining

Instruction Scheduling

Alias Analysis

Algebraic Simplifier

Data Flow

3

Übersetzer in der Praxis

Optimierer als Teil der Übersetzer

Zerteiler

Optimierer

Ausgabe(Objektdatei)

Standartbibiliothek

Templateinstanzierung

Debug Inforamtionen

4

Übersetzer in der Praxis

Übersetzer im ProduktDriver / IDE

Kundenbetreuung

Übersetzer Handbuch

MarketingLinker

Lizenz ManagerDebugger

5

Übersetzermarkt

Anforderungen

StandartkonformKundenbetreuungDebuggingSchnelles ÜbersetzenPreisEntwicklungsumgebungOptimierungen

6

Übersetzermarkt

Erwarteter Nutzwert der Optimierungen

Optimierung

Nutzwert

niedrig

hoch

schwach stark

Die Annahme ist:

Bei monatelangen Berechnungen auf SuperrechnerRichtig

Im AllgemeinemFalsch

7

Eigentlicher Nutzwert der Optimierungen

Übersetzermarkt

Nutzwert

Grossen Vorteil ab gewisser Grenze:Wechsel zu höherer Programmiersprache(Assembler -> CFortran -> C++)

Akzeptable Performanz von schwachen OptimiererKein Quellcode

8

Übersetzermarkt

Alternativen für schnellere Programmen1. mehr Speicher2. schnelleren Prozessor3. mehrere Prozessoren4. anderen Algorithmus

•1. und 2. sind am effektivsten

•3. und 4. erfordern viel mehr technisches Wissen

9

Übersetzermarkt

Fazit

Optimierungen bringen nicht allen den gewünschten NutzwertÜbersetzer sind:

kompliziertteuer zu entwickeln

AnsatzOptimierungen von dem Übersetzer entkoppelnOptimierungen als Komponenten

10

Möglichkeiten

C++ Schablonen

Alternative KomponentenmethodenPräprozessorPlug-insPartielle EvaluierungBenutzerdefinierte Abstrakte Interpretationen

11

Template Metaprogramming

C++ Schablonen Exkurs

Typ als Parameter verwendenZu Übersetzungszeit instanziert

template <class T> class Stack {

public:

void push(T element);

T pop();

};

12

Template Metaprogramming

Schablonen Spezialisierung

Auf bestimmte Typen oder Werte spezialisieren

template<> class Stack<int>{

public:

int push(int element);

int pop();

};

13

Template Metaprogramming

Rekursion

template<int n> class Factorial {

public: enum

{ RET = n * Factorial<n-1>::RET };

};

template<> class Factorial<0> {

public: enum { RET = 1 };

};

14

Template Metaprogramming

Schablonen - funktionale Programmiersprache

Komplizierte Datenstrukturen auch möglich

Turing vollständig

Keine Übersetzer spezifische Funktionen

Integraler Teil von der Sprache

15

Template Metaprogramming

Schablonen Nachteile

Nicht geplant – Seiteneffektschwer lesbare Syntaxlangsam

BeitragEntkoppelung der Optimierungen

16

Optimierer als Komponente

Aufgaben der Optimierer:

Zulässigkeit nachprüfen

Vorteil schätzen

Transformation machen

17

Weitere gewünschte Eigenschaften

Semantische Repräsentation visualisierenvor und nach der Optimierung

MächtigkeitDen Übersetzer entlastenPortabel – standardisiert und mehrere Anbietern

18

Präprozessor

Transformationen in der QuellspracheEigene Erfahrungen des AutorsNachteile

Die ganze Sprache muss erkennt werdenOptimierung in den Präprozessor oft falsch gesetztOptimierung in der Sprache nicht ausdrückbarNicht skalierbar

Extra Zerteilen für jede Optimierung

19

Plug-In Optimierungen

Jeder Pass als Bibliothek implementieren

Verbreitete ErweiterungsstrategieForschungsübersetzer schon entwickeltNachteile

Wissen über die interne Darstellung notwendigInterne Repräsentation kann sich ändern

20

Partielle Evaluierung

Auswertung von Programmteilen zu ÜbersetzungszeitRoutinen und Strukturen für bestimmte Instanzen kopierenSchablonen Metaprogrammierung ist auch partielle Evaluierung

21

Partielle Evaluierung(2)

Benutzerdefinierte Optimierungenbool p = Informationen über das Programm sammeln;

if(true_at_compile_time(p)) {

spezialisierte Form benutzten;

} else {

allgemeine Form benutzen;

}

22

Partielle Evaluierung(3)

Keine Metasprache einführendient der Einfachheitkeine klare Unterscheidung zwischen Übersetzung und LaufzeitevaluierungenProgrammierer muss den Evaluator kennenPerformance Hit bei Fehlern

23

Benutzerdefinierte AbstrakteInterpretation

Statische Analyse des Programmverhaltens beeinflusst die TransformationenDer Benutzer könnte das auch machenlexikalische Instanzvariablen

Variable pro Klasseninstanz in der internen Repräsentation

Dekorieren des ParsebaumsBerechnung zu Übersetzungszeit von benutzerdefinierten Attributen

24

Praxistauglichkeit

Vorgestellte Methoden sind:

zu komplex von den Entwicklern einzusetzen

können in Bibliotheken realisiert werden

25

Checkliste für erweiterbare Übersetzer

parallele ProgrammierungFehler Behandlung zu ÜbersetzungszeitDead operation eliminationLoop FusionObjekt inliningGarbage collectionSerializationC++ Bibliothek Optimierungen

26

Zusammenfassung

Für den Übersetzer sind nicht nur Optimierungen wichtigRuf nach erweiterbarem Übersetzer, benutzerdefinierten OptimierungenTemplate Metaprogramming demonstriert solche OptimierungenWeitere Möglichkeiten sind vorhanden

27

Zusammenfassung(2)

Erweiterungen in BereichenAnalysis Transformation

Übersetzerhersteller dabei nicht weiter belasten

28

Dankefür IhreAufmerksamkeit!