Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Aufgabe 8.5 - Fractal Flame
Hallo zusammen!
Ich stehe gerade mal wieder auf dem Schlauch und hoffe, dass mir jemand weiterhelfen kann.
Ich komme bei Teilaufgabe b) einfach nicht zurande.
Ich habe mir eine private innere Klasse geschrieben, die von Thread erbt, um den Gaußfilter-Algorithmus zu parallelisieren.
Diese Klasse bekommt im Konstruktor
FractalResult colors, int frequencyBound, FractalResult dstColors, CyclicBarrier barrier
übergeben. Als “colors” und “frequencyBound” gebe ich direkt die Parameter weiter, die an die Methode “gaussianFilter” übergeben werden.
“dstColors” erstelle ich mir analog zur sequentiellen Implementierung (Code nach Kommentar “initialize result image”).
“barrier” erstelle ich einfach für nThread Threads.
Start- und Ende-Variablen fehler hier noch mit Absicht. Auch die for-Schleifen habe ich noch unverändert in die run-Methode kopiert.
Grund dafür ist, dass es einfach nicht funktioniert hat und immer die falschen Ergebnisse geliefert wurden.
Also dachte ich mir, ich will zumindest für nThreads == 1 eine laufende Version erstellen.
Kann sich jemand erklären, warum für nThreads == 1 und beschriebener “Implementierung” das falsche Ergebnis berechnet wird?
Der Test-Case schlägt immer an einer anderen Stelle fehl.
Eigentlich ist es ja immer noch eine sequentielle Version, da nur ein Thread verwendet wird.
Was habe ich übersehen?
Vielen Dank!
EDIT: Hat sich erledigt - war ein Problem mit den Referenzen und dem Tauschen der FractalResult-Objekte.