Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.

Slides:



Advertisements
Ähnliche Präsentationen
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Advertisements

Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
Düsseldorf, 20. März 2011.
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Kapitel 6: Klassifizierung von Sortiertechniken
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
1 Computergestützte Verifikation Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Polymorphie (Vielgestaltigkeit)
Algorithmentheorie 6 – Greedy-Verfahren
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Minimum Spanning Tree: MST
Akademie für Ältere Heidelberg
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Kapitel 2: Datenstrukturen
Einfach verkettete Listen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Rekursion mit Listen: Quicksort
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Effiziente Algorithmen
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Hintergrundgespräch der Ärztekammer für Wien
... Unternehmens- leitung
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Ingenieurhydrologie II
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Technische Universität München BDE! Mobile Entwicklung einer mobilen Webanwendung für einen auf ältere Menschen zugeschnittenen sozialen Marktplatz Bearbeiter:
Basel · Baden Brugg · Bern · Lausanne · Zürich · Düsseldorf Frankfurt/M. · Freiburg i. Br. · Hamburg · München Stuttgart · Wien Microsoft ALM Day 2011.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Informatik 1 Letzte Übung.
Variablenkonzept Klassisch, in Java Basistyp
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Projektmanagement neu gedacht
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Thomas Negeli | Reference Counting I Folie 1 / 20 Seminar Garbage Collection | WS2005 Reference Counting I Negeli Thomas.
Chemie und Kunst J. Lipscher: Bern 2011.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Herzlich willkommen in der..... Kehlert RS Stockach
Computergestützte Verifikation
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Binärer Suchbaum IV AVL-Baum I
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
 Präsentation transkript:

Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

Ziele Alias Sets SSA Form Verwendete Datenstruktur Benchmark-Ergebnisse Efficient Alias Set Analysis Using SSA Form Übersicht

Alias Sets werden vom Compiler genutzt Effiziente Alias Set Analyse – nur intra-prozedual – hierfür: Nutzung der SSA-Form Nutzung einer geeigneten Datenstruktur Efficient Alias Set Analysis Using SSA Form Ziele

Menge der lokalen Pointer-Variablen, die auf ein gemeinsames Objekt zeigen Zu einem gegebenen konkreten Objekt o: o # = { p | p zeigt auf o} Jedes alias set repräsentiert höchstens ein Objekt ρ # : Menge aller alias sets falls für Variablen x, y: {x,y} o #, so ist x ein Alias von y Sichere Entscheidung, falls x und y immer gemeinsam in einem o #, oder nie gemeinsam in einem o # Efficient Alias Set Analysis Using SSA Form Alias Sets

betrachten Zuweisungen s der Form s ::= v 1 v 2 | v e | e v | v null | v new wobei v, v 1, v 2 lokale Variablen sind und e eine Position auf dem Heap repräsentiert Heap wird als Black-Box behandelt Efficient Alias Set Analysis Using SSA Form Alias Sets

Bei Unsicherheit, ob ein alias set eine Variable enthält, wird es aufgeteilt Efficient Alias Set Analysis Using SSA Form Alias Sets - Übergangsfunktion

class Node { int value; Node next; Node (int v, Node n) { value = v; next = n; } Efficient Alias Set Analysis Using SSA Form Alias Sets - Beispiel

… void foo(int i) { Node a, b, c; a = new Node(i, null); c = a; if (i < 42) b = new Node(42+i, a); else b = a; c = b; b = b.next; } … Efficient Alias Set Analysis Using SSA Form Alias Sets - Beispiel a = new Node(i, null); b = new Node(42+i,a); c = b; b = a; b = b.next; Kontrollflussgraph c = a;

Efficient Alias Set Analysis Using SSA Form Alias Sets – Beispiel ρ # = {{a}} ρ # = {{a,c},{b}} ρ # = {{a,b,c}} ρ # = {{a}, {a,b}, {c}, {b,c}, {a,c}, {a,b,c}} a = new Node(i, null); b = new Node(42+i,a); c = b; b = a; b = b.next; c = a; ρ # = {{a,c}} ρ # = {{a}, {b,c}, {a,b,c}}

SSA = Single Static Assignment pro Variable höchstens eine Zuweisung – Jede Zuweisung erzeugt eine neue Variable Transformation in SSA form Efficient Alias Set Analysis Using SSA Form SSA Form

Efficient Alias Set Analysis Using SSA Form SSA Form - Beispiel Lösung? a = new Node(i, null); b = new Node(42+i,a); c = b; b = a; b = b.next; c = a; a1 = new Node(i, null); b1 = new Node(42+i,a1); c2 = b?; b2 = a1; b? = b?.next; c1 = a1;

Problem: Zuweisungen mit mehr als einer reaching definition Lösung: φ-Funktion einfügen – wählt den Wert des tatsächlich genommenen Kontrollflusses – Zuweisung dann an eine neue Variable Hier: φ-Funktion an jedem Merge-Knoten Efficient Alias Set Analysis Using SSA Form SSA Form

Efficient Alias Set Analysis Using SSA Form SSA Form - Beispiel a = new Node(i, null); b = new Node(42+i,a); c = b; b = a; b = b.next; c = a; a1 = new Node(i, null); b1 = new Node(42+i,a1); b3 = φ(b1,b2) c2 = b3; b2 = a1; b4 = b3.next; c1 = a1;

Erweiterung der Übergangsfunktion für Knoten mit φ-Funktion nötig Strategie: – für jede Eingehende Kante p: – aktualisiere die Alias-Sets entsprechend der Auswahl der φ-Funktion für p Efficient Alias Set Analysis Using SSA Form Alias Sets & SSA Form

Efficient Alias Set Analysis Using SSA Form Alias Sets & SSA Form a1 = new Node(i, null); b1 = new Node(42+i,a1); b3 = φ(b1,b2) c2 = b3; b2 = a1; b4 = b3.next; c1 = a1; ρ # = {{a1}} ρ # ={{a1,c1}} ρ # = {{a1,c1},{b1}}ρ # = {{a1,c1,b2}} ρ # = {{a1,c1}, {b1,b3,c2}} {{a1,c1,b2,b3,c2}} ρ # = {{a1,c1}, {a1,c1,b4}, {b1,b3,c2}, {b1,b3,c2,b4}, {a1,c1,b2,b3,c2}, {a1,c1,b2,b3,c2,b4}}

Beobachtung: Für nicht φ-Knoten ist die Mengendifferenz in der Übergangsfunktion überflüssig Weitere Analyse für φ-Knoten nötig Efficient Alias Set Analysis Using SSA Form Alias Sets & SSA Form

es können lineare Listen verwendet werden eine Liste repräsentiert ein alias set neues Element hinzufügen: neuer Listenkopf – Restliste bleibt unverändert Element entfernen: nicht nötig! gemeinsame Nutzung von Restlisten möglich Efficient Alias Set Analysis Using SSA Form Datenstruktur ecdba gf drei alias sets: {d,e}, {a,b,c,d,e},{d,e,f,g} Beachte: Für φ-Knoten gibt es eine andere Übergangsfunktion, d.h. es ist eine andere Listenoperation nötig

Efficient Alias Set Analysis Using SSA Form Alias Set-Analyse mit Listen a1 = new Node(i, null); b1 = new Node(42+i,a1); b3 = φ(b1,b2) c2 = b3; b2 = a1; b4 = b3.next; c1 = a1; a1 b2 c1 a1c1 b1 a1b2c1b3c2 b1b3c2 a1b2c1b3c2 b1b3c2 b4

Laufzeit: Im Schnitt etwa doppelt so schnell Efficient Alias Set Analysis Using SSA Form Benchmark-Ergebnisse

Speicherverbrauch (nur Alias-Analyse): Im Schnitt etwa 45% weniger Speicher etwa 7% zusätzlicher Speicherverbrauch für SSA-Form Efficient Alias Set Analysis Using SSA Form Benchmark-Ergebnisse

Efficient Alias Set Analysis Using SSA Form Vielen Dank für die Aufmerksamkeit Noch Fragen?