Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 1
HauptseminarMulticore Architectures and Programming
Parallelization and Generation of Mandelbrot fractal set on CELL BE
Philipp Kutzer, Hauke Stähle
{siphkutz,sihastae}@fau.de
Betreuung: Hritam Dutta, Matthias Hartl, Frank Hannig
Hardware-Software-Co-Design
Universität Erlangen-Nürnberg
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 2
Übersicht
Fraktale und deren Bedeutung
Die Mandelbrotmenge
Parallelisierung
Optimierung
Ergebnisse
Probleme
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 3
Fraktale und deren Bedeutung
Fraktale dienen zur Beschreibung chaotischer Prozesse
Einfache geometrische Modelle oftmals nicht ausreichend
Wichtige Eigenschaft: Selbstähnlichkeit
Anwendbarkeit z.B.: Wirtschaft Naturbeschreibung
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 4
Fraktale und deren Bedeutung
Blumenkohl, Bakterienstamm, Schneeflocken
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 5
Fraktale und deren Bedeutung
Börsenkurs
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 6
Die Mandelbrotmenge
Teilmenge der komplexen Zahlen
Definition:
Alle komplexen Zahlen c, für welche
beschränkt ist.
zn1=zn2c z0=0, z∈ℂ
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 7
Die Mandelbrotmenge
Darstellung in der komplexen Ebene:
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 8
Die Mandelbrotmenge
Implementierung:
uint32_t mandel_double(double cx, double cy, uint32_t max_iter) {
uint32_t iter = 1;double x = 0, y = 0, xtemp = 0;double x2, y2;
// z = x + y * img
do {x2 = x * x;y2 = y * y;
if( x2+y2 > MAX_VALUE ) return iter;
xtemp = x2 - y2 + cx;y = 2 * x * y + cy;x = xtemp;
iter++;
} while ( iter <= max_iter );
return 0;}
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 9
Die Mandelbrotmenge
Färbung entsprechend Iterationen:
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 10
Parallelisierung
Punkte können unabhängig voneinander berechnet werden!
Aufteilung der Rechenlast auf die SPUs Vertikale Aufteilung des Bildes
PPU übernimmt Verwaltungsarbeit Zuteilung der Arbeitsaufträge
Länge eines Arbeitsauftrages unbekannt Realisierung mit einer Ready/Busy-Queue
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 11
Parallelisierung
SPUs bekommen Aufträge zugeteilt Signalisieren Auftragsende
Warteschlangenkonzept Ready-Queue: SPUs, welche IDLE sind Busy-Queue: Arbeitende SPUs
Arbeitsauftrag:
typedef struct {uint32_t posy;uint32_t* framebuffer_addr;uint32_t framebuffer_width;double zoomx;double zoomy;double movex;double movey;uint32_t max_iter;
} workload;
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 12
Optimierung
Verzweigungen sind teuer!
Loop unrolling Branch prediction
uint32_t mandel_double(double cx, double cy, uint32_t max_iter) {
//Init
do {//Calc x^2, y^2
if( x2+y2 > MAX_VALUE ) return iter;
//Calc z+1
iter++;
} while ( iter <= max_iter );
return 0;}
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 13
Optimierung
Loop unrolling:uint32_t mandel_double(double cx, double cy, uint32_t max_iter){
//Initdouble temp[4];
do {//Do 4 calculations, save result to temp[1-4]
iter +=4;
if(temp[3] > MAX_VALUE) {
if ( temp[0] > MAX_VALUE ) { return iter-3; }if ( temp[1] > MAX_VALUE ) { return iter-2; }if ( temp[2] > MAX_VALUE ) { return iter-1; }
return iter;}
} while ( iter < max_iter );
result 0;
return result;}
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 14
Optimierung
Branch prediction:
uint32_t mandel_double(double cx, double cy, uint32_t max_iter) {
//Init
do {//Calc x^2, y^2
if( __builtin_expect( (x2+y2 > MAX_VALUE) , 0 ) ) {return iter;
}
//Calc z+1
iter++;
} while ( iter <= max_iter );
return 0;}
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 15
Optimierung
Float vs. Double
Float schnell, aber ungenau
Double nur bei hohen Zoomstufen interessant
Verwendung von zwei Implementierungen zur Punktberechnung Float-Genauigkeit bei kleinen Zoomstufen Double-Genauigkeit bei hohen Zoomstufen
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 16
Ergebnisse
Abhängigkeit von Anzahl SPUs [FPS] Framebufferauflösung: 50 Frames Double Max. Value = 4 100 Iterationen
Doppelpuffer brachte keine Verbesserung, da Daten nicht weiterverarbeitet werden
1 2 3 4 5 6normal 0,82 1,63 2,44 3,24 4,05 4,85
5,914,9
12,84optimal 15,29
SPUs
+ loop unrolling+ branch prediction
+ float/double
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 17
Probleme
SIMD
Berechnung mehrerer Punkte parallel Abbruchzeitpunkte unterschiedlich Mehr if-Anweisungen Keine Perfomanzsteigerung
Ausnutzung zur schnelleren Berechnung eines Punktes Keine Perfomanzsteigerung
[x2 y2]=[x y ]∗[x y ]
Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 18
The END
Danke für eure Aufmerksamkeit
Demo !?