+ All Categories
Home > Documents > OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität...

OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität...

Date post: 15-Aug-2019
Category:
Upload: lamminh
View: 216 times
Download: 0 times
Share this document with a friend
14
Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore Architectures and Programming Apelt, Nicolas – Zoellner, Christian Hardware-Software-Co-Design Universität Erlangen-Nürnberg
Transcript
Page 1: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 1

OpenCL (Cell B. E., PS3)

Multicore Architectures and ProgrammingApelt, Nicolas – Zoellner, Christian

Hardware-Software-Co-Design

Universität Erlangen-Nürnberg

Page 2: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 2

Übersicht

Image Flooding Algorithmus Implementierung OpenCL

Integer Factorization Algorithmus Implementierung C Implementierung OpenCL

Page 3: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 3

Image Flooding (Algorithmus)

Naiv Setze Farbe des Startpunktes Untersuche anschliessend rekursiv alle Nachbarn des Punktes

und deren Nachbarn und deren Nachbarn …

Page 4: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 4

Image Flooding (Algorithmus)

Scanline Farbe des Startpunktes als Referenzfarbe speichern Startpunkt auf Stack legen Solange Stack nicht leer

- Hole Punkt vom Stack- Faerbe alle Punkte gleicher/aehnlicher Farbe links und rechts in der

gleichen Zeile ein- Lege alle Punkte gleicher bzw. aehnlicher Farbe auf den Stack, die

oberhalb oder unterhalb der eingefaerbten Reihe liegen

Vorteile Etwas schneller, da eine Zeile gleich in einem Durchlauf

eingefaerbt wird Geringere Stackgroesse, da auch weniger Punkte (einzeln)

untersucht werden muessen

Page 5: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 5

Image Flooding (Algorithmus)

Versuch Keine Verwendung eines Stack (oder einer Queue) Erstellung einer Hoehenkarte mit Differenzen zur

Referenzfarbe Sukzessives Fluten des Gebietes unterhalb des Schwellwertes

- Das komplette Bild wird durchlaufen und das geflutete Gebiet wird sukzessive (an den Raendern) immer weiter vergroessert

- keine weitere Vergroesserung des Gebietes mehr moeglich → Ende

Ergebnis Die haeufigen Speicherzugriffe auf ein relativ grosses bzw.

weit verteiles Speichergebiet kosten zu viel Performance Sowohl auf CPU als auch unter OpenCL (GPU und Cell B. E)

signifikant langsamer (etwa Faktor 100)

Page 6: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 6

Image Flooding (Implementierung OpenCL)

Probleme Bei komplexen Bildern die (nahezu) vollstaendig geflutet

werden, stoesst man schnell an Speichergrenzen (Stack) Ueberpruefung auf doppelte Elemente beim Hinzufuegen hilft

etwas, kostet jedoch hingegen wieder Performance Spezieller Datentyp fuer Bilder

- Vorteile 2-dimensionales Caching Ablage in speziellem Format im Graphik-/Textur-Speicher (kann auch komprimiert abgelegt

werden)

- Probleme Andere Byte-Order, muss vor und nach Bearbeitung angepasst werden

Page 7: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 7

Integer Factorization (Algorithmus)

Auswahl des Algorithmus

Quadratisches Sieb- schnellstes Verfahren (bis etwa 100-110 Dezimalstellen)- Implementierung im Rahmen des Seminars zu komplex

Probedivision- trivial, zu langsam

Sieb des Eratosthenes- Schlecht parallelisierbar

Pollard-p-1- Komplexitaet: O(n1/3)

Pollard-Rho- niedriegere Komplexitaet als Pollard-p-1: O(n1/4 polylog(n))- einfach zu implementieren

Page 8: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 8

Integer Factorization (Implementierung C)

Extrem schnell bei Zahlen bis 32-Bit Trivial

Bei groesseren Zahlen unter Verwendung der GMPLib immer noch sehr schnell

Optimierungen: Berechnung des GGT erst nach einigen Iterationen

- Beispiel: 128 bit-Zahl, GGT nach i Iterationen i= 1: 100% i=10: 52% i=50: 48% Hoehere Werte fuer i brachten keine weitere (signifikante) Verbesserung

Keine nennenswerten Probleme

Page 9: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 9

Integer Factorization (Implementierung C)

Einfache Implementierung:

...while (mpz_cmp_si(d, 1) == 0){

mpz_mul (x, x, x); mpz_add_ui (x, x, 1); mpz_mod (x, x, n);mpz_mul (y, y, y); mpz_add_ui (y, y, 1); mpz_mod (y, y, n);mpz_mul (y, y, y); mpz_add_ui (y, y, 1); mpz_mod (y, y, n);mpz_sub(c, x, y);mpz_abs(c, c);mpz_gcd(d, c, n);

}...

Page 10: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 10

Integer Factorization (Implementierung C)

Optimierte Implementierung:...while (mpz_cmp_si(d, 1) == 0){

mpz_set_si(p,1);for (i=1; i<=50; i++) {

mpz_mul (x, x, x); mpz_add_ui (x, x, 1); mpz_mod (x, x, n);mpz_mul (y, y, y); mpz_add_ui (y, y, 1); mpz_mod (y, y, n);mpz_mul (y, y, y); mpz_add_ui (y, y, 1); mpz_mod (y, y, n);mpz_sub(c, x, y);mpz_abs(c, c);mpz_mul(p,p,c);mpz_mod(p,p,n);

}mpz_gcd(d, p, n);

}...

Page 11: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 11

Integer Factorization (Implementierung OpenCL)

Parallelisierung Mehrfaches Starten des gleichen Kernel

- Unterschiedliche Startwerte fuer die Threads

Jeder Kernel durchlaeuft nur eine bestimmte Anzahl an Iterationen- Findet er waehrenddessen einen Faktor, so terminiert er vorzeitig

Der Host prueft, ob einer der Kernel einen (gueltigen) Faktor gefunden hat- Falls ja, ist die Arbeit beendet.- Wenn nicht, beginnt der Prozess wieder von vorn.

Page 12: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 12

Integer Factorization (Implementierung OpenCL)__kernel void PollardRho(ulong n_, __global ulong * x_, __global ulong * d_) {

const int idx = (get_global_id(0) * get_local_size(0)) + get_local_id(0);const ulong n = n_;ulong x = x_[idx];ulong y = x;ulong d;

for (int i = 0; i < (1<<14); ++i) {x = F(x, n); y = F(F(y,n),n);d = gcd(abs_diff(y, x), n);

if ((d > 1) && (d < n))break;

else if (d == n) {y = x;--x;

}}d_[idx] = d;x_[idx] = x;

mem_fence(CLK_LOCAL_MEM_FENCE);mem_fence(CLK_GLOBAL_MEM_FENCE);

}

Page 13: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 13

Integer Factorization (Implementierung OpenCL)

Probleme Absturz des Kernels nach einigen Sekunden

- Loesung: Watchdog im Treiber beendet Kernel nach etwa 5-7 Sekunden Tritt bei Tesla-Karten und PS3 nicht auf (spaeter?)

Das ewige Problemkind: Ueberlauf bei Multiplikation- Multiplikation zweier 64-Bit-Zahlen liefert 127-Bit-Zahl- Loesung: Aufteilung der Multiplikation in vier 32-Bit-Multiplikationen

Gleiches fuer Modulo und Subtraktion\

- Mit dieser polynomiellen Zahlendarstellung lassen sich im Grunde beliebig grosse Zahlen berechnen

Geschwindigkeit- Trotz praktisch identischer Implementierung ist das OpenCL-Programm

um etliche Groessenordnungen langsamer Teilweise erklaerbar: Kompilieren und Initialisieren kostet Zeit Unklar: Iterationen erheblich langsamer als auf CPU

Debugging- Keine allgemeine Debugging-Moeglichkeit

Page 14: OpenCL (Cell B. E., PS3) Multicore Architectures and ... · Friedrich-Alexander-Universität Erlangen-Nürnberg Apelt, Nicolas – Zoellner, Christian 1 OpenCL (Cell B. E., PS3) Multicore

Friedrich-Alexander-Universität Erlangen-NürnbergApelt, Nicolas – Zoellner, Christian 14

ENDE


Recommended