Mandelbrot
-
Mit float meint er vermutlich nicht den float-Datentyp in C++ sondern generelle Gleitkomma-Geschichten, die ja nicht hardwaremäßig sein müssen, sondern auch selbst als Klasse (und dann mit beliebiger Präzision) implementiert werden können. Und da sind Fraktale dann toll um die Geschwindigkeit und die Präzision zu testen.
-
Ach so, ok. Ja, daran hatte ich auch gedacht, aber die Geschwindigkeit schreckt doch etwas ab. Mein Rechner ist bei 4e+16 ja jetzt schon ganz schön am Ackern (je mehr je mehr der Menge ich auf dem Bildschirm habe), und ich kann mir nur vorstellen, dass das schlimmer wird wenn man keine hardware floats mehr hat.
-
Jupp, wahrscheinlich gibt's dann wieder irgendwelche anderen Tricks, die Anzahl der Operationen zu verringern. Kannst ja mal in sourcen der bekannten offenen Fraktal-Generatoren reingucken. Vielleicht kann man ja irgendwas interessantes erkennen.
-
Kannst es ja auch auf der Grafikkarte rechnen lassen.
Siehe auch:
www.cygnus-software.com/papers/index.html bzw. der dazugehörige Blog
http://randomascii.wordpress.com/
-
Dachte reinzoomen bedeutet einfach das Gitter lokal enger zu fassen und diesen Ausschnitt zu berechnen. D.h. die Aufloesung insgesamt bleibt gleich und damit auch die Rechenzeit fuer ein Bild. Hinzukommt noch die triviale Parallelisierung. Aber was erwartet man noch neues bei einer Vergroesserung von 4e+16?
-
Du zoomst ja nicht irgendwo rein, sondern da wo's interessant ist, am Rand der Menge. Dementsprechend sind pro Punkt mehr Iterationen erforderlich.
-
@JFB
Joa, ich hatte schon überlegt aus Spaß mal eine kleine Pixelshader Version zu machen, nur um zu gucken wie schnell das wird.knivil schrieb:
Dachte reinzoomen bedeutet einfach das Gitter lokal enger zu fassen und diesen Ausschnitt zu berechnen. D.h. die Aufloesung insgesamt bleibt gleich und damit auch die Rechenzeit fuer ein Bild.
Das Problem ist wie folgt. Je näher ein Punkt der Menge kommt, desdo mehr Iterationen braucht man, bis er "ausbricht". Wenn du weit weg bist hast du nur wenig Punkte in Mengennähe, aber wenn du am Rand der Menge zoomst, gibt es immer mehr Punkte im Bild die sehr nah an der Menge sind, man braucht also mehr Iterationen um noch ein scharfes Bild zu erhalten.
knivil schrieb:
Hinzukommt noch die triviale Parallelisierung.
Joa, auf der CPU hier eher uninteressant, aber in der Grafikkarte.. sehr schön.
knivil schrieb:
Aber was erwartet man noch neues bei einer Vergroesserung von 4e+16?
Da wäre dann ja auch auf der Grafikkarte schluss, solange man normale doubles nutzt. Was man noch neues erwartet? Die Mandelbrotmenge ist unendlich komplex (soweit ich das verstanden habe), insofern erwartest du unendlich viel Neues. :p
Die Ungenauigkeit kommt vermutlich dadurch zustande, dass man nicht in der Mitte zoomt, sondern je nach dem im Gegensatz zur Position des Bildpunkts ziemlich große Werte für die Verschiebung draufrechnen muss. (Wenn man das nicht machen würde dürfte ein weiterer Zoom doch eigentlich kaum Einfluss auf die Präzision haben.)
-
cooky451 schrieb:
knivil schrieb:
Hinzukommt noch die triviale Parallelisierung.
Joa, auf der CPU hier eher uninteressant, aber in der Grafikkarte.. sehr schön.
eigentlich ist es auf der cpu sehr interessant, gerade wenn man mehrere pixel parallel auf den SIMD einheiten berechnet und z.b. genauere floats implementiert.
-
rapso schrieb:
eigentlich ist es auf der cpu sehr interessant, gerade wenn man mehrere pixel parallel auf den SIMD einheiten berechnet und z.b. genauere floats implementiert.
Ok, vielleicht ist es auf meinem System nicht interessant. Ein Q6600 hat halt keine Chance gegen eine GTX 460 bei so einer Aufgabe.
PS: Jetzt wo du es erwähnst, mal gucken ob der neue auto-vectorizer von VS11 den Loop geknackt hat.
-
Hm.. Tatsache, auch mit doubles ist auf der Grafikkarte bei ~5e+10 schluss. Schade. Mal gucken ob ich das noch höher emulieren kann.
-
daß man die (Mandelbrot-)Iteration x <- x^2+c für rationale Gitterpunkte c mit exakter Arithmetik berechnen kann, und damit in praktisch unbegrenzter Detailstufe, solange man a) genug Zeit hat und b) die Zahlenlängen ins RAM passen, hat das schon jemand erwähnt?