• Keine Ergebnisse gefunden

POLYTOPE MODEL

N/A
N/A
Protected

Academic year: 2022

Aktie "POLYTOPE MODEL"

Copied!
29
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

POLYTOPE MODEL

Seminar “Sprachen für Parallelprogrammierung”

Tim Habermaas

1

(2)

POLYTOPE MODEL

Ist ein mathematisches Modell zur automatischen Parallelisierung von Schleifen.

Dabei wird das Quellprogramm als Polytop beschrieben und dieses Polytop so transformiert, dass das resultierende

Zielprogramm parallelisierbar ist.

2

(3)

POLYTOP

Verallgemeinertes Polygon in beliebiger Dimension

Konvexe Polytope lassen sich als lineares Ungleichungssystem

darstellen

Polygon n = 2

Polyeder n = 3

A x b

3

(4)

POLYTOP-BEISPIEL

4

(5)

QUELLPROGRAMM

Der einzige erlaubte Datentyp ist Array.

Array-Indizes müssen affine Funktionen in den Schleifenvariablen sein.

Die einzigen erlaubten Statements sind Schleifen (mit Schrittweite ±1) und Array-Zuweisungen.

for i1 = l1 to u1

for i2 = l2 to u2

...

a[i1, i2] = a[i1, 0] * 4 + b[i10 + 10 * i1] end

S2

end

5

(6)

INDEXRAUM

Jedes Statement S besitzt einen Indexraum IS.

Dieser Indexraum lässt sich als Ungleichungssystem darstellen, welches ein Polytop beschreibt.

for i = 0 to n for j = 0 to m S1

end S2

end

i 0 j 0

i n j m

S1: S2: i 0

i n

6

(7)

INDEXVEKTOR

Ein Element eines Indexraumes heißt Indexvektor.

for i = 0 to 3 for j = 0 to 4 a[i, j] = 10 end

end

�x =

1 2

7

(8)

BEISPIEL

for i = 0 to 5 for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

A x =

1 0

1 0

0 1

0 1

i j

0

5 0

4

Als Polytop:

8

(9)

BEISPIEL

for i = 0 to 5 for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

j

i

9

(10)

ABHÄNGIGKEITEN

j

i

10 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

d1 =

1 0

d2 =

0 1

(11)

SCHEDULE

Ist gültig, wenn er alle Abhängigkeiten erhält:

Muss eine affine Funktion sein.

Beschreibt welche Operationen zum Zeitpunkt t ausgeführt werden.

x, x : x, x (x, x) E : t(x) <lex t(x)

11

t : Statement × Indexvektor Z

(12)

ALLOKATION

Weist einer Operation (Statement x Indexvektor) einen Prozessor zu.

Muss ebenfalls eine affine Funktion sein.

12

a : Statement × Indexvektor Zr

(13)

SCHEDULE

j

i

t(

i j

) = i + j

13 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

(14)

ALLOCATION

j

i

t(

i j

) = i + j

a(

i j

) = i

14 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

(15)

l

k

ZIEL

t(

i j

) = i + j

a(

i j

) = i

15 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

(16)

TRANSFORMATIONSMATRIX

t(

i j

) = i + j

a(

i j

) = i

T =

1 1 1 0

16 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

(17)

NEUE INDIZES

T =

1 1 1 0

T x = T

i j

= y =

k l

=

i + j i

17 for i = 0 to 5

for j = 0 to 4

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

(18)

TRANSFORMIERTES POLYTOP

A x = A (T 1 y) b

T 1 =

0 1 1 1

1 0

1 0

0 1

0 1

(

0 1 1 1

y) =

l

l k l l k

0

5 0

4

18

(19)

TRANSFORMIERTES POLYTOP

l

l k l l k

0

5 0

4

Problem:

Das transformierte Polytope lässt sich nicht ohne

weiteres in eine Schleife verwandeln, da l von k und k von l abhängt.

Lösung:

Fourier-Motzkin-Elimination

19

(20)

FOURIER-MOTZKIN- ELIMINATION

Eliminiert Variablen aus einem Ungleichungssystem.

20

(21)

FOURIER-MOTZKIN- ELIMINATION

max(0, k 4) l min(k, 5)

max(0, k 4) min(k, 5)

0 k k 9

21

l 0

l k 4 l 5

l k

(22)

l

k

for k = 0 to 9

parfor l = max(0, k - 4) to min(5, k) i = l

j = k - l

a[i, j] = a[i - 1, j] + a[i, j - 1] * 10 end

end

ZIELPROGRAMM

22

(23)

FINDEN EINES SCHEDULES

Hyperebenen-Methode von Lampert

Methode von Feautrier

23

(24)

HYPEREBENEN-METHODE

benötigt perfekt verschachtelte Schleifen

schleifenbasiert, dies heißt für jede Schleife wird eine Transformationsmatrix berechnet

nicht immer optimal

24

for i1 = l1 to u1

for i2 = l2 to u2

S1 S2 ...

end end

(25)

METHODE VON FEAUTRIER

statementbasiert, das heißt für jedes Statement gewinnt man eine eigene Transformationsmatrix

optimal

löst LIP (Linear Integer Program)

hoher Rechenaufwand

25

(26)

ZUSAMMENFÜGEN VON SCHLEIFEN

Runtime

Compile time

26

(27)

RUNTIME

27

for i = 0 to 8 for j = 0 to m S1

end S2

end

for i = 0 to 5 S3

end

for i = 0 to 8 for j = 0 to m S1

end S2

if i <= 5 S3

end end

(28)

COMPILE TIME

28

for i = 0 to n for j = 0 to m S1

end S2 S3

end

for i = n + 1 to 8 for j = 0 to m S1

end S2

end for i = 0 to 8

for j = 0 to m S1

end S2

end

for i = 0 to n S3

end

0 <= n <= 8

(29)

LITERATUR

Loop Parallelization in the Polytope Model (Christian Lengauer)

Code Generation in the Polytope Model (Martin Griebl, Christian Lengauer, Sabine Wetzel)

Automatische Methoden zur Parallelisierung im Polyedermodell (Christian Wieninger)

29

Referenzen

ÄHNLICHE DOKUMENTE

Der Zusatz von Sodalauge, welche das Na,CO, in starker Konzentration enthält, wird geregelt entweder durch einen vom Wasserstand im Rohwasserbehälter betätigten Schwimmer oder durch

Der Vektor F muss korrekt eingetragen sein. Geringe Ungenauigkeiten sind

Diese neuen Zahlen dürfen jedoch nicht an die Gemeinden zurückgespielt werden, so dass IT.NRW und Kommunen mit unterschiedlichen Datengrundlagen arbeiten.. Die Zahlen der

Ich vermute, dass sich die Sache in den  n verallgmeinern lässt: Im  n beginnen wir mit einem Polytop (Verallgemeinerung von Punkt, Strecke, Polygon, Polyeder .... Das Polytop

Kar- ger stellte dar, welche verrückten Sachen vorstellbar sind, wenn man die heute bereits verfügbaren tech- nischen Möglichkeiten zur interak- tiven Verknüpfung von Information

Zeigen Sie, dass sich unter den minimalen Erweiterungspolyed- ern von P auch immer ein volldimensionales Polytop

Allerdings hat diese Eleganz auch den Preis, dass es sehr starke Einschr¨ankungen (Abschnitt 3) an die Quellprogramme geben muss, damit dieses auch als Polytop beschrieben

Beginnt man mit den sechs in jeder Ecke liegenden Oktaedern, so kann man sich dieses Gebilde wie einen Würfel vorstellen, auf dessen Seitenflächen jeweils eine Pyramide steht,