Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

Slides:



Advertisements
Ähnliche Präsentationen
Programme in C++.
Advertisements

Entscheidungsunterstützungssysteme -
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Programmierung: Einführung
CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /
Leistung.
Technische Universität Dortmund
Designing Software for Ease of Extension and Contraction
2. Kapitel: Komplexität und Komplexitätsklassen
Anwendung und Visual Basic
Heuristiken für komplexe
Neumannrechner.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Seminar parallele Programmierung SS 2003
Vortrag im Rahmen des Seminars
Agenda Einführung Haskell QuickCheck Zusammenfassung
Parsing regulärer Ausdrücke
Sebastian Grahn Sebastian Kühn
Imperative Programmierung
Grundlegende Analysen & Zwischendarstellungen
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
Strukturgleichungsmodelle
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Minimum Spanning Tree: MST
Displacement Mapping Dynamische Generierung detaillierter Geometrien
Marcus Haller & René Schulze
Duo- und Quad Prozessor-Architektur
Maschinenunabhängige Codeoptimierung
grundlagen der Wirtschafts- informatik
Splay Trees Von Projdakov Benjamin.
Abschlussvortrag zur Studienarbeit
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
… oder wie finde ich den Weg
UML-Kurzüberblick Peter Brusten.
Instandhaltung ist ein Thema für das Topmanagement: von der reaktiven Fehlerbehebung zum Wertschöpfungsfaktor Tobias Zaers.
Optimierungstechniken in modernen Compilern
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Komplexität von Algorithmen
Klassifikation und Regression mittels neuronaler Netze
Parallelisierung für Multiprozessor-Maschinen
Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Computer Algebra für Brüche --- angepasst an Ausbildungszwecke
Minimal spannende Bäume
Korrektheit von Programmen – Testen
Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag:
Der A*-Algorithmus.
Spärliche Kodierung von Videos natürlicher Szenen Vortragender: Christian Fischer.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
 Gegenstandsbereich der Testtheorie: Analyse der Charakteristika von Tests:  Güte von Tests.  Struktur von Tests.  Schwierigkeit von Tests.  Gruppenunterschiede.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Wie wird sich die Wissenschaft rund um Web Content Management Systeme 2016 entwickeln?
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
 Präsentation transkript:

Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann

2 Motivation Moderne Rechnerarchitekturen nutzen die parallele Befehlsausführung für eine beschleunigte/effiziente Programmausführung VLIW Very Long Instruction Word Mehrere Befehle zu einem VLIW-Befehl zusammengefasst Statische Planung Super- skalar Mehrere parallelarbeitende Funktionseinheiten Dynamische Planung Parallelität auf Instruktionsebene

3 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

4 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

5 Phasenstruktur eines Compilers Die Optimierung für Befehlsparallelität erfolgt auf Basis eines Zwischencodes und für eine spezifische Architektur Frontend Lexikalische AnalyseSyntaktische AnalyseSemantische Analyse Zwischencode- Generierung Optimierung Optimierung für Parallelität auf Instruktionsebene u.a. Backend Zielcode-Generierung

6 Darstellungsformen (1) Das Programmbeispiel berechnet den größten gemeinsamen Teiler zweier Zahlen nach Euklid Ursprungsprogramm (C#): Code für abstrakte Maschine: Generiere Zwischencode Abstrakte Maschine  RISC-ähnliche Architektur  Lade- und Speicherbefehl (LD bzw. ST)  Addition und Subtraktion (ADD bzw. SUB)  Bedingter Sprungbefehl (CJMP)  1x Rechenwerk (ALU)  1x Speicherkommunikationseinheit (MEM)

7 Darstellungsformen (2) Im Programm befindliche Steuerungs- und Datenabhängigkeiten lassen sich mit Hilfe von Graphen veranschaulichen Kontrollflussgraph (und Verfeinerung)Datenabhängigkeitsgraph SUB r5, r3 – r4 ST r0, r4 ST r1, r5 CJMP r4 > r2, S  echte Datenabängigkeiten  Ressourcenreservierungstabelle  Kantenbeschriftung mit Verzögerungszeiten  Steuerungsabhängigkeiten  Beschreibt Programmfluss mit Bedingungsprüfungen  Programmverzweigungen mit wahr (T) und unwahr (F)

8 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

9 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

10 Planung eines Grundblockes (1) Die lokale Codeplanung ergibt einen Ablaufplan für einen Grundblock, und stellt somit den ersten Schritt einer Optimierung dar Datenabhängigkeitsgraph: Optimiertes Maschinenprogramm: Listenplanung Grundsatz der Listenplanung „… berechnet der Algorithmus den frühesten Zeitpunkt, zu dem ein Knoten ausgeführt werden kann, gemäß seinen Datenabhängigkeiten zu den vorher verplanten Knoten.“ Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

11 Planung eines Grundblockes (2) Nicht alle Grundblöcke bieten die Möglichkeit einer parallelen Befehlsausführung Ablaufpläne optimierter GrundblöckeAuswertung  Grundblock A: Keine parallele Ausführung  Grundblock B: Benötigt 3 statt 4 Takte  Grundblock C: Keine parallele Ausführung Fazit Die Listenplanung im Rahmen der lokalen Ablaufplanung erfasst nur ein geringes Parallelitätspotential.

12 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

13 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

14 Planung mehrerer Grundblöcke / Bereiche (1) Im Rahmen der Bereichsplanung erfolgt eine Herausarbeitung von Parallelität über Grundblockgrenzen hinaus Dominanzbeziehungen und Parallelitätskonzepte Bereichsplanung  berücksichtigt Dominanzbeziehungen  einfache Codeverschiebung (aufwärts)  spekulative Ausführung  erfolgt an Hand eines azyklischen Graphen Ein Bereich ist eine Menge von Grundblöcken und im Programmablauf nur durch einen Eingangspunkt erreichbar. (Definition in Anlehnung an David Bernstein, Michael Rodeh)  Dominanzbeziehungen zwischen Grundblöcken Dominanz Postdominanz  Konzepte einfache Codeverschiebung aufwärts abwärts Spekulative Ausführung Duplikation Kontrolläquivalenz

15 Planung mehrerer Grundblöcke / Bereiche (2) Die Bereichsplanung erfolgt von innen nach außen und ermöglicht die parallele Ausführung von Befehlen verschiedener Grundblöcke Global geplanter AblaufplanAuswertung  ursprünglich: 11 Zeilen / max. 17 Takte  jetzt: 9 Zeilen / max. 9 Takte Der Grad der parallelen Ausführung lässt sich mit Hilfe der Bereichsplanung steigern. Jedoch ist das Parallelitäts- potential auf Grund der azyklischen Optimierung von Schleifen begrenzt.

16 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

17 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

18 Schleifentypen Zu beachtende Abhängigkeiten zwischen einzelnen Iterationen einer Schleife existieren in sogenannten Do-Across-Schleifen Do-Schleife  z.B. Operationen auf Vektoren  einzelne Schleifendurchläufe unabhängig  einfacher Fall Do-Across-Schleife  z.B. Berechnungen mit Zwischenprodukten  Abhängigkeiten zwischen den Iterationen  komplex

19 Abwickeln von Schleifen Bestehen keine Datenabhängigkeiten zwischen den Durchläufen, kann die Schleife theoretisch vollständig abgewickelt werden Viermal abgewickelte Do-Schleife  sehr hohes Parallelitätspotential  drastischer Codezuwachs  Kompromiss notwendig Lösung Softwarepipeling: Ermöglicht die geforderte Ausführungs- beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.

20 Umsetzung der Do-Schleife in einer Softwarepipeline Eine Pipeline bietet i.d.R. schon für wenige Iterationen einen hohen, mit der Durchlaufzahl wachsenden Geschwindigkeitsvorteil. Bestandteile  Prolog „Füllen“ der Pipeline einmalig ausgeführt  Stationärer Zustand („Kernel“) Mini-Schleife maximale Parallelität n-fach ausgeführt  Epilog „Leeren“ der Pipeline einmalig ausgeführt Softwarepipeline  SZ bearbeitet n – 2 Iterationen  SZ benötigt 2 (statt 3) Takte je Iteration  Schleife muss mindestens 3x durchlaufen werden  Konfliktprüfung: Modulare Ressourcenreservierungstabelle

21 Umsetzung der Do-Across-Schleife (1) Die Umsetzung einer Do-Across-Schleife findet auf Basis eines zyklischen Abhängigkeitsgraphen statt. GraphenerweiterungPlanungsverfahren  Planung eines zyklischen Graphen  Minimierung des Einleitungsintervalls ist nur NP-lösbar  Vereinfachung durch Anwendung einer Heuristik Ober- und Untergrenze des Einleitungsintervalls liefert Ergebnisse nahe am Optimum  Sukzessive Planung von SCCs (Strong Connected Components)  Berechnung der längsten einfachen Pfade Zyklen haben keine Auswirkung garantiert Einhaltung aller Abhängigkeiten  Rückverfolgung (engl. „Backtracking“)

22 Umsetzung der Do-Across-Schleife (2) Im Beispiel ergibt sich ein Einleitungsintervall s von 3 Takten VerfahrensanwendungSoftwarepipeline Rück- verfolgung

23 Umsetzung der Do-Across-Schleife (3) Eine geringe Codeverlängerung ist in Betracht des Geschwindigkeitszuwachses zu vernachlässigen Auswertung  Codeverlängerung 8 Zeilen / Takte ursprünglich 5 Takte  Gesamtausführungszeit Pipeline: 5 + 3n Takte ursprüngliche Schleife: 4 Takte Vorteil schon ab 6 Durchläufen  Planung schon im 2. Versuch erfolgreich Fazit Softwarepipeling: Ermöglicht die geforderte Ausführungs- beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.

24 Hierarchische Reduktion Durch die hierarchische Reduktion wird das Konzept des Softwarepipelinings universeller anwendbar Bisher  Schleifen mit nur einem Grundblock  keine Verzweigungen innerhalb der Schleife  umgebender Code nicht betrachtet Konzept der hierarchischen Reduktion  ähnlich der Bereichsplanung (globale Codeplanung)  Behandlung von Kontrollstrukturen  „if-then-else“-Konstrukte  Zurückführen auf elementares Objekt  Objekt wird wie Grundblock behandelt  reduzierte Objekte können überlappt werden  Glassbox statt Blackbox (Bereichsplanung)  Abhängigkeiten als Maximum beider Äste  keine Ressourcenüberbeanspruchung  Überlappung: Prolog/Epilog und andere Instruktionen  Objekte erhalten Ressourcenverbrauch des SZ  SZ darf nicht überlappt werden

25 Zusammenfassung Lokale Codeplanung  für ein (Grundblock-)Element  geringes Parallelitätspotential  einfach zu planen  Grundlage für globale Planung

26 Zusammenfassung Lokale Codeplanung Globale Codeplanung  für ein (Grundblock-)Element  geringes Parallelitätspotential  einfach zu planen  Grundlage für globale Planung  Bereichsplanung  mittleres Parallelitätspotential  Dominanzbeziehungen

27 Zusammenfassung Lokale Codeplanung Globale Codeplanung Softwarepipelining  für ein (Grundblock-)Element  geringes Parallelitätspotential  einfach zu planen  Grundlage für globale Planung  Bereichsplanung  mittleres Parallelitätspotential  Dominanzbeziehungen  Schleifen  Kompromiss Codelänge Geschwindigkeit  hohes Parallelitätspotential

Vielen Dank für die Aufmerksamkeit!