Home Computer Software Site Map counter

Fraktale - ein ästhetisches Benchmarkprogramm

Einleitung

Das Grundfractal - die GesamtmengeWie hat sich der PC entwickelt? Wie viel leistungsfähiger ist er geworden? Diesen Fragen geht in meine Artikelserie über die Entwicklung des PCs nach. Natürlich kann man dies an technischen Daten festmachen - Der Taktfrequenz, die Größe des Arbeitsspeicher, die Anzahl an Transistoren der CPU. Doch was interessiert den Anwender? Wie es ein Bundeskanzler ausdrückte: "Was hinten rauskommt". Die subjektive Leistung eines Computers ist schwer zu fassen, da er bei den meisten Aufgaben nur Däumchen dreht, um auf den nächsten Tastendruck zu warten. Schon früher ging es daher darum die Geschwindigkeit in einem "Benchmark" zu messen. Um ein Benchmark geht es in diesem Artikel.

Was sind Benchmarks?

Ein Benchmark ist vereinfacht ein Test in der ein Computer eine Aufgabe löst. Idealerweise sollte man diese Aufgabe mit Ergebnissen anderer Computer vergleichen können, um eine Objekte Maßzahl der Geschwindigkeit zu erhalten. Bei Großrechnern berechnete man n Ziffern der Zahl Pi oder ermittelte die 1 Millionste Primzahl. Heute wendet man eine Reihe von Wissenschaftlich - Technischen Rechnungen an die sehr viele Einzelkomponenten prüfen. Trotzdem gab es von der bekanntesten "Suite", den SPEC Benchmarks mindestens 4 größere Versionen seit 1992, auch um der gestiegenen Rechenkraft der Prozessoren Rechnung zu tragen.

Viel problematischer sind hier die Rechner mit denen der Autor den Einstieg in die Computerei machte. 8 Bit Rechnern mit typischerweise 16-128 KByte RAM. Wer damals einen Rechner kaufte, der tat dies um Programmieren zu lernen. Es meldete sich kein MS-DOS Prompt oder gar eine grafische Oberfläche. Sondern ein BASIC Interpreter meldete "Ready", und wartete auf Eingaben wie "Print 3+5-7". Benchmarks bestanden damals darin in BASIC in kurzen Schleifen einige 1000 Zahlen zu addieren, 100 Strings zu sortieren oder aus dem Bildschirm auszugeben. Was damals getestet wurde war nicht die Geschwindigkeit des Mikroprozessors, sondern die des Systems inklusive BASIC Interpreters. Der Autor kann sich noch ganz gut an Benchmarks erinnern die auf einem Rechner schnell liefen, auf dem anderen mit demselben Mikroprozessor aber langsam, weil die Implementierung des Interpreters schlecht war. Beispiel: Z80 Prozessor einmal in Schneider CPC 464 und einmal in MSX Rechnern - bei fast gleicher Taktfrequenz waren letzter viermal langsamer.

Fraktale - ein etwas anderer Benchmark

Selbnstähnlichkeit - Die gleiche Struktur, in verschiedenen Skalen1985 wurde von Benoit Mandelbrot ein Aufsatz veröffentlicht, der von Fraktalen handelte, einer mathematischen Menge, die selbstähnlich ist. Darunter versteht man, das man die zugrunde liegende Grafik immer wieder vergrößern kann um immer wieder auf dieselben Figuren zu stoßen. (Siehe die Apfelförmige Struktur, die im Übersichtsbild, wie im Detail auftritt). Die ästhetischen Bilder dazu konnte jeder mit einem Rechner selber programmieren und ausgeben und bald brach eine Fractalmanie aus. Der Vorteil von Transputern - Chips die dazu bestimmt waren parallel an einem Problem zu arbeiten, wurde an Fraktalen gezeigt als 12 Transputer dieses Bild in Minuten anstatt einer Stunde aufbauten.

Damit ist ein Fraktal ein sinnvoller Benchmark, denn es gibt eine Rechenvorschrift die man auch heute noch umsetzen und mit den damaligen Werten vergleichen kann.

Was sind Fraktale?

Eigentlich sind Fraktale sehr einfach. Es sind Ergebnisse einer Rechenvorschrift. Sie ist sehr einfach und lautet:

Z=Z2+C

Das klingt etwas profan oder?

Nun bei den reellen Zahlen - denen sie im täglichen Leben begegnen - gibt es auch nur eine Lösung für diese Gleichung. Doch Z und C sind komplexe Zahlen. Darunter versteht man Zahlen die aus einem reellen und einem imaginären Wert bestehen. Bei einer komplexen Zahl gibt es z.B. für den gleichen Wert Z2 unendlich viele Lösungen die in einem Kreis mit dem Radius Z liegen. Man braucht komplexe Zahlen für einige Fragestellungen in Wissenschaft und Technik, z.B. in der Elektrotechnik. Die Grafiken entstehen nun dadurch das man den Bildschirmkoordinaten reelle (X Achse) und Imaginäre (Y Achse) Anteile der Zahl z zuordnet und die Rechenvorschrift durchführt. Dabei geht man so vor:

  1. Berechne die Gleichung Z=Z2+C und prüfe ob sie erfüllt ist. Wenn ja dann gehört diese Zahl zur Mandelbrotmenge und das Pixel ist Schwarz zu färben.
  2. Wenn nicht, prüfe ob das neue Z größer als ein Grenzwert ist, der so gewählt ist, das man weiß das dieses Z nie zur Mandelbrotmenge gehört. Ist dies der Fall so färbe das Pixel in der Farbe, die der Anzahl der Wiederholungen der Rechenvorschrift entspricht.
  3. Wenn dieses nicht der Fall ist, dann wiederhole die Rechnung mit dem neuen Z Wert als Basis, und merke dir die Wiederholung
  4. Wurde die Rechnung n mal wiederholt ohne das man ermittelt hat ob das Z zur Mandelbrotmenge gehört oder nicht, so betrachte als zur Mandelbrotmenge gehörend und färbe das Pixel schwarz.

Alle Z laufen entweder irgendwann in die Mandelbrotmenge herein oder heraus. Es ist nur die Frage wann. Das macht diese Rechenvorschrift die in Pascal etwa so aussieht so aufwendig:

Einfluss der Tiefe auf die Zeichnung. Hier Tiefe 30


function Tmandelbrot.Rechne(Re,Im:Double; const X,Y: Double): 
Integer;
const Abbruch = 8;
var Reel,Imag:Double;
    Farbe: Integer;
begin
  for Farbe:=0 to Iteration do
  begin
    Reel:=Re*Re;
    Imag:=Im*Im;
    if Reel+Imag>Abbruch then begin Result:=Farbe; Exit; end;
    Im:=Im*Re*2-Y;
    Re:=Reel-Imag-X;
  end;
  Result:=0;
end;

Hier entspricht dem "n" das Erreichen des Grenzwertes "Iteration", Abbruch ist der Wert von dem man weiß das er nie zur Mandelbrotmenge gehört. Es wird hier die komplexe Zahl in reelle und imaginäre Teile zerlegt. Pro Durchlauf fallen hier 4 Multiplikationen, 3 Subtraktionen und eine Addition an. Im schlimmsten Fall pro Pixel also Iteration*8 Rechnungen. Damit hängt die Rechendauer auch von der Iterationstiefe ab.

Die Entwicklung der letzten 17 Jahre.

...und bei Teiefe 300Das erste Programm zur Berechnung der Fraktale, das ich sah, war in BASIC geschrieben mit Assemblerteilen um bei diesem rechenintensiven Kernstück Zeit zu sparen. Es war ein Z80 8 Bit Rechner mit 64 K Hauptspeicher und er brauchte 45 min für das Übersichtsbild mit den Koordinaten (-0.5..2,4 in X und -1.2,..1.2 in Y) bei einer Tiefe von 30 zu zeichnen. Das war nicht schlecht, denn ein Turbo Pascal Programm brauchte dafür eine Stunde weil die Rechengenauigkeit mit 12 Stellen höher war. Der Rechner zeichnete damals 320 × 200 Punkte. Schaffte also 24 Punkte pro Sekunde. Mein heutiger Rechner braucht für dieselbe Aufgabe erheblich weniger Zeit - weniger als eine Sekunde bei erheblich mehr Punkten. Er kommt auf 378000 Punkte pro Sekunde, wobei bei Windows das Zeichnen der Punkte einen großen Teil der Rechenzeit ausmacht - anders als bei meinem 8 Bitter. Eine Assembler optimierte Fassung mit MMX Befehlen ohne Zeichnen der Punkte schafft sogar über 1 Million Punkte pro Sekunde.

Mein heutiger Rechner mit einem 1200 MHz Athlon ist also fast 40000 mal schneller als mein damaliger 8 Bit Rechner. Das ist eigentlich nicht überraschend, denn ein 8 Bitter hat weder einen Fliesskommaprozessor noch verfügt er über Befehle um auch nur Ganzzahlen zu multiplizieren. Er muss also relativ schlecht bei einem solchen Vergleich abschneiden. Benutzt man wie damals Variablen die nur der Prozessor verarbeitet aber nicht der Coprozessor, so ist der heutige Rechner nur noch 5400 mal schneller - trotzdem eine enorme Steigerung der Rechengeschwindigkeit in den letzten 17 Jahren. Es ist auch heute noch möglich den Rechner durchaus lange mit Fraktalen zu beschäftigen. Denn die Menge ist unendlich groß. Nur die Tiefe entscheidet wie viel man davon sieht (vor allem bei kleinen Ausschnitten. Hier z.B. die Spitze in der Mitte des Fraktales. Bei der Tiefe 30 und der Tiefe 300. Würde man hier noch weiter gehen, so würde man noch immer feinere Strukturen erkennen.

Dabei haben diese Bilder in den letzten 17 Jahren nichts von ihrer Anziehungskraft und ästhetischen Schönheit verloren. Man findet dieses Prinzip der Selbstähnlichkeit übrigens laufend in der Natur. Sie es bei der Form von Wolken, Küstenformen oder dem Verlauf von Blutgefäßen oder Blattadern. Doch dies ist ein anderes Thema.


Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.

Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.

Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.

Mehr über das Buch auf dieser eigenen Seite.

Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.

© des Textes: Bernd Leitenberger. Jede Veröffentlichung dieses Textes im Ganzen oder in Auszügen darf nur mit Zustimmung des Urhebers erfolgen.
Sitemap Kontakt Neues Hier werben Bücher vom Autor Buchempfehlungen Top 99