top of page

Computerspielereien

Mandelbrotflug

Schon am legendären Commodore 64 war es möglich, Programme zu schreiben, um die die Mandelbrotmenge zu visualisieren. In Basic wurden wenige Iterationen bei geringer Auflösung durchgerechnet und farblich dargestellt. Allerdings hieß es "Bitte warten..." bis das Bild zu sehen war. Eine deutliche Verbesserung war es, zeitkritische Passagen in Assembler zu berechnen. 

​

Gegen heutige Hardware ist das natürlich etwas ärmlich. Aber man hatte Spaß und obendrein viel gelernt.

​

Um die verschiedenen Komponenten in  meinem PC zu testen, gibt es reichlich Benchmark-Programme. Ich wollte aber etwas anderes. Statt profaner Zahlen wäre doch eine Visualisierung toll. Die Frage war: Wie wirken sich Berechnungen aus mit

​

  • der Standard-CPU mit einem Kern

  • den parallelen Kernen der CPU

  • der GPU auf der Grafikkarte

​

Dazu fiel mir wieder die Mandelbrotmenge ein. Statt ein paar Iterationen nimmt man heute halt ein paar tausend, statt eines kleinen Bildes rendert man ein großes und lässt das Ergebnis in tollen Farben darstellen. 

​

Allerdings gibt beim Rendern eines einzigen Bildes kaum einen optisch wahrnehmbaren Unterschied zwischen den 3 Recheneinheiten. Sämtliche Zeiten liegen im Millisekundenbereich. Also musste eine Serie an Bildern her. Und daraus sind die folgenden Filmchen entstanden, bei denen 16 Zehnerpotenzen in die Mandelbrotmenge hineingezoomt wurde (zehnbilliardenfache Vergrößerung).

​​

​

Flug durch die Mandelbrotmenge mit einem CPU-Kern

Wenn es ins Detail geht, werden die Berechnungen mit der CPU (1 Kern) zu einer Art Diashow..

... parallel mit 16 Kernen / 32 logischen Prozessoren

Mit parallelem Einsatz aller Kerne wird der Film erst in der zweiten Hälfte ruckelig.

... mit der GPU der Grafikkarte

Mit der GPU läuft ein nettes Filmchen. 

Hardware:

PRIME B850-PLUS WIFI Board mit
AMD Ryzen 9 9950x 16-Core Processor; 32 logische Prozessoren; 4,3 GHz
NVIDIA Geforce RTX 5060 Ti

​

Software:

C# (Visual Studio, Windows 11 Pro)

Ich habe das Programm in C# geschrieben, um mit der Bibliothek ILGPU den Kernel der GPU aufsetzen zu können. Das ist alles noch nicht optimal gelungen, weil 20% der GPU-Zeit für Administration drauf gehen. Für meine Spielereien reicht es aber aus. Für die Erstellung der Videos habe ich das Multimedia Framework FFmpeg benutzt.

​

Vergleich der reinen Rechenzeit bei tiefem Zoom:

Die GPU ist 5x schneller als die parallelen Kerne der CPU und 110x schneller als die Standard-CPU (1 Kern).  

​

bottom of page