Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 2 2015-07-27
Übersetzerbau 2 2015-07-27
Fach: Optimierungen in Übersetzern
Prüfer: Prof. Philippsen
Wie in anderen Protokollen schon erwähnt, es gibt wohl eine Agenda, thematisch bis zum letzten Teil durchzukommen. Ungefragte Extrainformation kosten Zeit und bringen keinen Bonus. Fragen werden aber sehr oft offen gestellt (Typisch: Was kann man denn hier noch so tun?) und nachdem man das richtige Schlüsselwort genannt hat gibts dazu eine Frage. Die Themen auf der Prüfungsagenda sind immer recht ähnlich, es lohnt sich also sich die entsprechenden Punkte zu merken und (wenn im Code Beispiel passend) gezielt zu nennen.
Fragen
b = foo(); for( int i = 0; i < 1024; i++) { t = 23 + A[i]; if( b %2 == 0) { for( int j = 0; j < 1024; j++) { t += A[i*4+j]; A[i*4+j] = bar( A[i*4+j-1]); } } A[i] = t; }
- Was macht ein Compiler da so?
- Was ist invarianter Code und wann kann der vorgezogen werden?
- Was ist Dominanz?
- Dominiert die Schleife hier den Schleifenausgang/Wo ist der Schleifenausgang?
- Wie kann man trotzdem Code aus der Schleife herausziehen?
- Dominatorberechnung (hier muss man möglw. immer nur das Verfahren erklären das man als erstes nennt)?
- Dominanzgrenzen?
- Wie werden gemeinsame Teilausdrücke gefunden?
- Was ist SSA/Wie wird SSA konstruiert?
- Welchen Vorteil hat das?
- Was sind Induktionsvariablen/was kann man damit machen?
- Wie verändert sich die Schleife wenn man die Induktionsvariable ersetzt (detailliert)?
- Was können wir noch machen (Parallelisierung)?
- Was sind die Abhängigkeiten?
- Wann genau kann eine Schleife parallelisiert werden/Welche Schleife kann hier parallelisiert werden?
- Was kann getan werden, um die äußere Schleife zu parallelisieren/Wie kann die Abhängigkeit von t aufgelöst werden?
- Wie funktioniert scalar splitting?