18
Friedrich-Alexander-Universität Erlangen-Nürnberg Philipp Kutzer, Hauke Stähle 1 Hauptseminar Multicore 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

Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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

Page 2: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 2

Übersicht

Fraktale und deren Bedeutung

Die Mandelbrotmenge

Parallelisierung

Optimierung

Ergebnisse

Probleme

Page 3: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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

Page 4: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 4

Fraktale und deren Bedeutung

Blumenkohl, Bakterienstamm, Schneeflocken

Page 5: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 5

Fraktale und deren Bedeutung

Börsenkurs

Page 6: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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∈ℂ

Page 7: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 7

Die Mandelbrotmenge

Darstellung in der komplexen Ebene:

Page 8: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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;}

Page 9: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 9

Die Mandelbrotmenge

Färbung entsprechend Iterationen:

Page 10: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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

Page 11: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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;

Page 12: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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;}

Page 13: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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;}

Page 14: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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;}

Page 15: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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

Page 16: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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

Page 17: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

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 ]

Page 18: Parallelization and Generation of Mandelbrot fractal set on CELL … · 2008. 7. 6. · Die Mandelbrotmenge Parallelisierung Optimierung Ergebnisse Probleme. Friedrich-Alexander-Universität

Friedrich-Alexander-Universität Erlangen-NürnbergPhilipp Kutzer, Hauke Stähle 18

The END

Danke für eure Aufmerksamkeit

Demo !?