Automatisches Parallelisieren Vorlesung im Wintersemester 2010/11 Eberhard Zehendner FSU Jena Thema: Retiming Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 1 / 33 Schleifenverdichtung (loop compaction) Schleifenverdichtung ( ) Berechne zu p Prozessoren listenbasierten Ablaufplan 0 für A G Konstruiere daraus zyklischen Ablaufplan ( ) = (sj ) + i mit = ( ) i ; sj 0 0 Definition ((G)) ( ) ( ) G ist das maximale Gewicht eines Pfads in A G Satz (Abschätzung der Güte der Heuristik) p opt (p) + (p p Eberhard Zehendner (FSU Jena) ) (G) 1 Automatisches Parallelisieren Retiming 2 / 33 Abschätzung der Güte der Heuristik Satz (Abschätzung der Güte der Heuristik) p opt (p) + (p p ) (G) 1 Beweis. Ansatz wie für Güteschranke der listenbasierten Ablaufplanung gilt: ) () + Pj (sj ) Benutze () (G) P und j (sj ) p opt (p) Für gewissen Abhängigkeitspfad p ( ) (p 0 1 Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 3 / 33 Naiver Ansatz erfolglos Problem der Abschätzung p opt (p) + (p p ) (G) 1 ( ) () A priori kein Zusammenhang zwischen G und opt p Zunächst nur uninteressante globale Schranken, etwa p opt (p) mittels (G) ( ) Abhilfe 0 ( ) Vorgeschaltete Minimierung von G durch Schleifenverschiebung (1. Schritt im Software-Pipelining) Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 4 / 33 Schleifenverschiebung (loop shifting) Definition (Retiming) : ! N zu G = (V ; E ; ; ) Retiming ist Funktion r V Definition (Schleifenverschiebung) Nach Schleifenverschiebung mit Retiming r repräsentiert generischer Auftrag sj Instanzen i rj ; sj statt Instanzen i ; sj ( ) Interpretation ( ) ( ) Retiming r verzögert Instanz i ; sj um rj Iterationen Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 5 / 33 Eigenschaften des Retimings r Modifizierte Distanzfunktion () = (sj ; sk ) geht über in Distanz r (e) = (e) + rk Aus G = (V ; E ; ; ) wird Gr = (V ; E ; r ; ) e auf e rj Distanzen auf Pfaden ! sk in G gilt r () = () + rk Für alle Zyklen C gilt r (C ) = (C ) Für alle Pfade sj rj Pfade geringster Distanz zwischen zwei Knoten sj und sk stimmen in G und Gr überein Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 6 / 33 Legales Retiming Erhaltung der Präzedenz sj () sk zur Kante e = (sj ; sk ) r e > 0 Präzedenz wird schleifenbefördert: ist durch serielle Ausführung der Schleifeniterationen garantiert ( ) = 0 Präzedenz wird schleifenunabhängig: r e () sj ist textuell vor sk zu platzieren, um ursprüngliche Abfolge zu erzwingen; immer möglich, da G (und damit Gr ) keine Zyklen vom Gewicht Null besitzt r e < 0 Präzedenz verletzt: nicht erlaubt, r daher illegal Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 7 / 33 Semantische Äquivalenz Retiming und Ablaufpläne r Ablaufplan für Gr , mit (i ; sj ) = r (i + rj ; sj ) Ablaufplan für G Konstanten zyklischer Ablaufpläne durch cj = cr j + rj verbunden ; Ursprüngliches Programm äquivalent umformen Schleifenverschiebung mit legalem Retiming Ablaufplanung für neuen Schleifenrumpf Geeignete Schleifenabschälung (loop peeling) Entfernung überzähliger Aufträge in abgerollten Programmstücken Eventuell Erzeugung von Mehrversionscode Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 8 / 33 Definitionen zum Retiming Definition (Wj ;k , Dj ;k , (G)) ; sj ! sk , die sj mit sk verbinden Triviale Pfade = (sj ) mit () = 0, () = (sj ) Wj k = minf () : sj ! sk g (falls es ein solches gibt) Dj k = maxf() : sj ! sk ^ () = Wj k g (falls es ein solches gibt) (G) = maxf() : () = 0g Menge der Pfade ; ; Eberhard Zehendner (FSU Jena) ; Automatisches Parallelisieren Retiming 9 / 33 Retiming-Lemma Lemma (Schranke für schwersten Pfad in A(G)) ( ) c , Wj k 1 8sj ; sk 2 V ; Dj k > c G ; ; Beweis ()) ( ) c, sj ; sk 2 V , Dj k > c, Wj k = 0 Dann gibt es ; sj ! sk ; () = 0; () = Dj k > c Es folgt Widerspruch (G) () > c Sei G ; ; ; Beweis (() ; sj ! sk ; () = 0 Es folgt Wj k = 0 Also () Dj k c Sei ; ; Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 10 / 33 Erfüllbarkeitstest für Retiming Satz (Lineares Programm für Retiming) ( ) , 8 =( )2 8 2 r legales Retiming mit Gr c rj rk e e sj ; sk E rj rk Wj ;k 1 sj ; sk V ; Dj ;k > c () Beweis. ( ) = (e) + rk r e rj für e = (sj ; sk ) Retiming genau dann legal, wenn r Wr ;j ;k = Wj k + rk ; Bemerkung Für Dj ;k > c ist rj rk 0, also erste Bedingung gilt ( ) c , Wr j k 1 8sj ; sk 2 V ; Dr j k > c rj , Dr j k = Dj k Dann mit Lemma: Gr ; ; ; ; ; ; ; (e) redundant wegen Wj k (e) Eberhard Zehendner (FSU Jena) ; Automatisches Parallelisieren Retiming 11 / 33 Retiming-Verfahren von Leiserson und Saxe Definition (opt (G)) ( ) = minf(Gr ) : r legales Retimingg opt G Berechnung eines legalen Retimings r mit (Gr ) = opt (G) ( ) 1. Entfernung isolierter Knoten, untere Schranke für opt G 2. Berechnung von Wj ;k und Dj ;k für alle nicht isolierten sj ; sk 3. Sortieren der Werte von Dj ;k 4. Binäre Suche nach kleinstem erfüllenden c Erfüllbarkeitstest mittels Bellman-Ford 5. Potenzialfunktion für c Eberhard Zehendner (FSU Jena) = opt (G) auf Werten von Dj k , ; = opt (G) ist gesuchtes Retiming r Automatisches Parallelisieren Retiming 12 / 33 Retiming-Verfahren: Phase 1 Untere Schranke für opt (G) ( ) (v ) 8v 2 V opt G Berechne untere Schranke (j j) (G) = maxv 2V () v Zeitkomplexität O V Entferne isolierte Knoten Isolierte Knoten tragen keine weitere Information Durchlaufen der Kanten findet alle nicht isolierten Knoten j j 2 O(jE j) Reduzierte Knotenmenge V mit V (j j) Zeitkomplexität O E Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 13 / 33 Retiming-Verfahren: Phase 2 Berechne Wj ;k und Dj ;k für alle sj ; sk 2 = (V in G ; E ; ; ) V () über alle Pfade von sj nach sk Maximiere sodann () über diese Teilmenge Minimiere all-pairs shortest-path problem (j j3 ) (j j jE j + jV j2 log jV j) Floyd-Warshall-Algorithmus, Zeitkomplexität O V Alternativ: Algorithmus von Johnson, O V Berechne leichteste Pfade zwischen je zwei Knoten in Graph G0 G0 = (V ; E ; ) mit (e) = ((e); (sj )) für alle e = (sj ; sk ) 2 E Addition auf Gewichten komponentenweise, Vergleich lexikalisch (x ; y ) Gewicht eines leichtesten Pfads von sj zu sk in G , dann Wj k = x und Dj k = (sk ) 0 Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren ; ; Retiming y 14 / 33 Floyd-Warshall-Algorithmus Allgemeiner Floyd-Warshall-Algorithmus DO k = 1, n DO i = 1, n DO j = 1, n d(i,j) = min ( d(i,j), d(i,k) + d(k,j) ) Initialisierung und spezielle Rechenregeln ( ) = ((e); (sj )), falls j 6= k und e = (sj ; sk ) 2 E d (j ; j ) = (0; 0) d (j ; k ) = (1; 0) sonst (x1 ; y1 ) + (x2 ; y2 ) = (x1 + x2 ; y1 + y2 ) min((x1 ; y1 ); (x2 ; y2 )) = (min(x1 ; x2 ); h) mit h = y1 für x1 < x2 , h = y2 für x2 < x1 , h = min(y1 ; y2 ) sonst min(x ; 1) = min(1; x ) = x x +1=1+x =1 d j; k Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 15 / 33 Retiming-Verfahren: Phase 3 Sortiere Werte von Dj ;k Zu Retiming r gibt es Pfad sj (j j2 ) Werte zu sortieren ! sk mit (Gr ) = () = Dj k ; O V (j j2 log jV j), z. B. Quicksort Optimierung: nur Werte Dj k > (G) sortieren D = fDj k (G)g Sortieren in Zeitkomplexität O V ; ; Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 16 / 33 Retiming-Verfahren: Phase 4 Potenzialgraph für charakteristische Ungleichungen jV j Knoten sj , maximal jV j2 jV j Kanten (sj ; sk ), sj 6= sk : Kante e = (sj ; sk ) mit ! (e) = (e), falls e 2 E ; Dj k c Potenzialungleichung rj (e) rk entspricht rj rk (e) ; = (sj ; sk ) mit !(e) = 1 Wj k , falls Dj k > c + 1 Wj k rk entspricht rj (sk ) > c: rj rk Wj k (sj ) > c oder Dj k Kante e ; Potenzialungleichung rj Dj ;k ; ; ; ; rk Wj k ; 1 1 redundant Binäre Suche nach opt (G) 2 D Erfüllbarkeitstest für ein c 2 D mittels Bellman-Ford Bisektion der linear sortierten Menge D Kleinstes erfüllendes c Eberhard Zehendner (FSU Jena) 2 D ist opt (G) Automatisches Parallelisieren Retiming 17 / 33 Retiming-Verfahren: Phase 5 Bestimmung des Retimings Aufruf von Bellman-Ford mit c = opt (G) war erfolgreich Gespeicherte Potenzialfunktion ganzzahlig, da ! ganzzahlig Retiming ergibt sich durch rj Eberhard Zehendner (FSU Jena) = (sj ) für sj 2 V und rj = 0 sonst Automatisches Parallelisieren Retiming 18 / 33 Zeitkomplexität des Retiming-Verfahrens j3 log jV j + jV j) Gesamtkomplexität O (jV (j j) für (G), O(jE j) für isolierte Knoten (j j3 ) für Floyd-Warshall-Verfahren j2 log jV j) für Sortieren von O(jV j2 ) Werten Phase 3 O (jV j3 ) für jeden Aufruf von Bellman-Ford, Phase 4 O (jV j) Aufrufe wegen Bisektion auf O(jV j2 ), O (log jV j3 log jV j) ergibt insgesamt O (jV Phase 5 O (jV j) für Auslesen der Werte Phase 1 O V Phase 2 O V Vereinfachte Komplexitätsformeln (j j3 log jV j) O (jE j3 log jE j + jV j) für jE j 2 o(jV j) O V Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 19 / 33 Optimierter Algorithmus für Phase 4 Geringere Zeitkomplexität mit Folgendem statt Bellman-Ford ( ) := 0 für alle v 2 V , O(jV j) j 1-mal: 4.2. Wiederhole jV 4.1. Setze v ( ) ( ) ( ) = ( ) + ( ) ( ) := ( ) + 4.2.1. Berechne A Gr , O jE j 4.2.2. Berechne v vl v v für alle v 2 A Gr , O jE j 4.2.3. Setze v v 1 für alle v 2 A Gr mit v > c, O jE j ( ) ( ) ( ) c, O(jE j) ( ) ( ) ( ) ( ) 4.3. Berechne A Gr und teste Gr Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 20 / 33 Zeitkomplexität des optimierten Retiming-Verfahrens j jE j log jV j + jV j) Gesamtkomplexität O (jV (j j) für (G), O(jE j) für isolierte Knoten (j j jE j + jV j2 log jV j) für Johnson-Verfahren j2 log jV j) für Sortieren von O(jV j2 ) Werten Phase 3 O (jV j jE j) für jeden Aufruf in Phase 4, Phase 4 O (jV j) Aufrufe wegen Bisektion auf O(jV j2 ), O (log jV j jE j log jV j) ergibt insgesamt O (jV Phase 5 O (jV j) für Auslesen der Werte Phase 1 O V Phase 2 O V Vereinfachte Komplexitätsformeln (j j jE j log jV j) für jE j 2 o(jV j2 ) O (jE j2 log jE j + jV j) für jE j 2 o(jV j) O V Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 21 / 33 Schleifenverdichtung nach optimalem Retiming Satz (Schleifenverdichtung nach optimalem Retiming) opt (1) opt (G) dopt (1)e + max 1 Beweis. ( ) = opt (G) ( ) := ( ) = opt (G) Ablaufplan (i ; sj ) = (sj ) + i opt (1) = opt (G) r Retiming mit Gr 0 ASAP-Schedule auf A Gr 0 0 Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 22 / 33 Beweis von opt (G) dopt (1)e + max 1 ( ) = cj + i Ablaufplan für G, = dopt (1)e = cj mod , rj = bcj =c, also cj = rj + qj cj + (sj ) ck + (e) für e = (sj ; sk ) 2 E qj qk + (sj ) ( (e) + rk rj ) qj qk + (sj ) qk + (sj ) qk > (e) + rk rj > 1 (e) + rk rj 0, also r legales Retiming = (s1 ; : : : ; sn ) Pfad in A(Gr ) (e) + rk rj = 0 ) (sj ) qk qj für e = (sj ; sk ) 2 E P n () = 1 + (sn ) k =1 (sk ) q1 + qn + (sn ) qn + (sn ) opt (G) (Gr ) = maxf() : 2 A(Gr )g 1 + max i ; sj qj Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren 1 + max Retiming 23 / 33 Güteschranke nach optimalem Retiming Satz (Güteschranke nach optimalem Retiming) Zyklischer Ablaufplan mit Initiierungsintervall , wobei p opt (p) + (p 1) (dopt (1)e + max 1) (1) opt (p) kann in Zeit O (jV j jE j log jV j) berechnet werden p opt Beweis. p opt (p) + (p 1) (G) p opt (p) + (p 1) opt (G) nach optimalem Retiming opt (G) dopt (1)e + max 1 p p Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 24 / 33 Minimierung der schleifenunabhängigen Präzedenzen Freiheitsgrade für Instanzbindung schaffen ( ) ( ) = opt (G) Minimiere Anzahl der Kanten in A Gr mit Gr Soll zu verkürzter Ausführungszeit führen ( ) = 1, falls r (e) = 0; ansonsten v (e) = 0 Neue Variable v e P v (e); v (e) 2 f0; 1g Beschreibung durch ganzzahlig lineares Programm (ILP) min e 2E rj rj rk rk ( ) (e) v e Wj k Eberhard Zehendner (FSU Jena) ; (Anzahl der Kanten vom Gewicht Null in Gr ) 1 1 8e = (sj ; sk ) 2 E 8sj ; sk 2 V ; Dj k > opt (G) ; Automatisches Parallelisieren Retiming 25 / 33 Beweis des ganzzahlig linearen Programms P v (e); v (e) 2 f0; 1g Ganzzahlig lineares Programm min e 2E rj rj rk rk ( ) (e) v e Wj k ; (Anzahl der Kanten vom Gewicht Null in Gr ) 1 1 8e = (sj ; sk ) 2 E 8sj ; sk 2 V ; Dj k > opt (G) ; Beweis. ) r legales Retiming mit (Gr ) = opt (G) () rk v (e) (e) 1 r (e) = 0 ) v (e) 1 also v (e) = 1 (e wird gezählt) r (e) > 0 ) v (e) = 0 und v (e) = 1 möglich P v (e) zieht v (e) auf Null (e wird nicht gezählt) Minimierung über r ; v ganzzahlige Lösung v e nur eingeschränkt durch rj Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 26 / 33 Lineare Programme und unimodulare Matrizen Definition (unimodulare Matrix) Ganzzahlige quadratische Matrix A unimodular , , jAj = 1 Ganzzahlige Matrix A total unimodular Jede nicht singuläre quadratische Submatrix von A ist unimodular Satz (ganzzahlige Ecken eines Polyeders) A total unimodular, b ganz ) fx 0 : Ax bg hat nur ganze Ecken Anwendung auf lineares Programm mit rj ; v (e) 0 rj rj rk rk ( ) 1 ( ) (e ) v e v e Wj k Eberhard Zehendner (FSU Jena) ; 1 1 8e 2 E 8e = (sj ; sk ) 2 E 8sj ; sk 2 V ; Dj k > opt (G) ; Automatisches Parallelisieren Retiming 27 / 33 ILP durch LP ersetzen P v (e) Lineares Programm (LP) mit ausschließlich ganzzahligen Optimallösungen min e 2E (Anzahl der Kanten vom Gewicht Null in Gr ) () () v (e) v e v e rj rj rj rk rk 0 1 0 (e) Wj k ; 1 1 8e 2 E 8e 2 E 8sj 2 V 8e = (sj ; sk ) 2 E 8sj ; sk 2 V ; Dj k > opt (G) ; Bemerkung Berechnung in polynomialer Zeit möglich Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 28 / 33 Dekomposition des Problems Definition (starke Zusammenhangskomponente) Teilgraph eines gerichteten Graphen je zwei Knoten sind durch gerichteten Pfad verbunden maximal bezüglich dieser Eigenschaft Reduzierte Komplexität durch Dekomposition Jeder Zyklus liegt in genau einer starken Zusammenhangskomponente Separate Lösung auf jeder starken Zusammenhangskomponente möglich Starke Zusammenhangskomponenten sind Knoten des gerichteten azyklischen Kollabierungsgraphen Additive Verschiebung der Retimings der Zusammenhangskomponenten gegeneinander Nur positiv gewichtete Kanten zwischen starken Zusammenhangskomponenten erlauben Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 29 / 33 Zyklischer Ablaufplan mit Ressourcenbeschränkung Heuristik I. Bestimme starke Zusammenhangskomponenten G(i ) von G ( ) II. Berechne opt G(i ) durch Retiming (i ) III. Minimiere Anzahl der Kanten vom Gewicht Null in Gr ( (i ) ) IV. Bestimme listenbasierten Ablaufplan 0 für A Gr V. Verschiebe Retimings der Zusammenhangskomponenten so gegeneinander, dass positive Kantengewichte entstehen VI. Setze 0 zu zyklischem Ablaufplan fort: i ; sj r i rj ; sj 0 sj 0 i ( )= ( + ) = ( ) + ( ) ( + rj ) Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 30 / 33 Die schlechten Nachrichten Für eine gewählte Listenheuristik . . . ( ) können einem Gr mehrere entsprechen ( ) ist nicht notwendig monoton in Gr ( ) ist für festes Gr nicht notwendig monoton in der Anzahl der Kanten vom Gewicht Null Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 31 / 33 Rationale Ablaufpläne mit Ressourcenbeschränkung Von zyklischen zu rationalen Ablaufplänen Abrollen von Iterationen ermöglicht evtl. kürzere Ablaufpläne Führt im Allgemeinen zu rationalen Ablaufplänen Diese sind nicht unbedingt K-periodisch im strengen Sinne = Um zu durchschnittlicher Zykluszeit p=q zu kommen, kann die Schleife versuchsweise q Mal abgerollt werden Optimale Lösungen haben evtl. die Eigenschaft, dass sich jede Iteration mit der nächsten überlappt Können mit Retiming und Abrollen alleine nicht gefunden werden Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 32 / 33 Literatur Charles E. Leiserson, James B. Saxe: Retiming Synchronous Circuitry. Algorithmica (1991) 6:5–35 Christos H. Papadimitriou, Kenneth Steiglitz: Combinatorial Optimization: Algorithms and Complexity. Prentice-Hall, 1982 Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Retiming 33 / 33