Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Laufzeitoptimierung, MandelbrodtJuliaZoom

  Alt 3. Mai 2009, 03:45
Auch wenn manche Optimierungen in Anbetracht heutiger Rechner sehr weit führend erscheinen mögen, dennoch hübsch!
Edit: Nicht hübsch ist jedoch die sehr "eigene" Bedienung des ganzen. Insbesondere missfiel mir, dass in Eingabefeldern Backspace und Entfernen keine Wirkung haben, sowie teils nicht offensichtliche Optionen bzw. Reaktionen. Bsp.: Umschalten von Mandelbrot->Julia. Ich habe nicht verstanden dass ich via Klick einen Startwert aussuchen kann, und da die Augen soeben noch auf der Menuleiste waren fielen die neuen Buttons ganz rechts nicht auf. Ich habe erst gewartet ob etwas passiert, nach etwas "gelangweiltem" Umsehen erst habe ich die Buttons für die Aktualisierung entdeckt. Insgesamt fällt die Bedienung ziemlich eigenwillig aus, leider auch nicht im positiven Sinne (finde -ich-).
Das hat zwar nun in keiner Weise etwas mit dem eigentlichen Thema zu tun, aber ich hoffe dass es als konstruktive Kritik dennoch willkommen ist.


Bei derart hochgradig parallelisierbaren Aufgaben gibt es mittlerweile auch noch eine weitere Möglichkeit, die immense Unterschiede ausmacht: Bei Google suchenGPGPU. Ein Problem hat man bei Fraktalen hier allerdings (noch): Fast alle aktuellen GPUs arbeiten mit Single-Precision, wodurch entweder die Zoombarkeit schnell an ihre Grenzen kommt, oder man ist genötigt höhere Genauigkeit via Software (bzw. Shader) zu basteln, was der Geschwindigkeit wieder etwas nimmt - jedoch weit weniger als durch die Bearbeitung auf der GPU gewonnen wurde.
Hierzu empfiehlt sich zudem eine Grafikkarte mit mind. DirectX 9, da erst ab da die Shader genügend Komfort (= die nötigen Instruktionen) bieten. Mit DirectX 11 werden allerdings "Compute-Shader" in den Standard aufgenommen, die die Zweckentfremdung der GPU nativ möglich machen. Derzeit ist das noch etwas in den Kinderschuhen und bedarf manchem Kunstgriff (Array=Textur und dergleichen).

Da es leider für Win32 Delphi keine brauchbare D3D Umsetzung gibt, ist man auf C++ angewiesen. Mit C# habe ich sowas in der Art schon einmal für .NET implementiert, wobei auch hier Hürden zu nehmen sind: Managed DirectX wurde komplett eingestellt, und wird von MS in keiner Weise mehr supported, geupdated noch sonst etwas. Statt dessen gibt es jetzt XNA, ein Spieleentwichlungs-Framework basierend auf .NET, was aber leider Crossplatform für PC und XBox gedacht ist. Da die XBox eine DX9 kompatible GPU hat, ist bis auf unbestimmte Zeit auf keine "native" D3D Unterstützung für .NET für DX10 und das bereits im Test befindliche DX11 zu erwarten.
Ziemlich ärgerlich, gäbe es da nicht eine kleine aber geniale OS Truppe, die mit Bei Google suchenSlimDX einen bislang DX9 und 10 unterstützenden Wrapper erstellt haben der dem Stil von Managed DirectX nahezu gleicht - und es ist erstaunlich komplett, sowie aktiv in Betreuung und Weiterentwicklung.

NVidia hat mit Bei Google suchenCUDA bereits ein Framework für GPGPU auf aktuellen (NV) GPUs geschaffen, dass ohne Compute-Shader oder Kunstgriffe auskommt. Um dieses sinnvoll einsetzen zu können ist jedoch mit einiger Einarbeitungszeit zu rechnen, insbesondere muss man sich die zu x86/x64 doch SEHR unterschiedliche Architektur der Grafikkarten zu eigen machen. Ob sich dieses mit der Aussicht auf die Compute-Shader noch lohnt wage ich allerdings zu bezweifeln, dennoch sind die Ansätze und Perspektiven ausgesprochen interessant.

CPU und GPU kommen sich immer näher (immer mehr Cores in einer CPU / immer generellere Verwendung von GPUs), und ich kann mir gut vorstellen dass wir in ein paar Jahren diese Unterscheidung gar nicht mehr machen. Daher lohnt es sich denke ich sehr, sich jetzt schon mit Parallel-Computing auch auf Einzelplatzrechnern zu befassen. Ich wittere eine kleine neue Ära in nicht allzu ferner Zukunft


Ich hoffe ich konnte damit zumindest ein wenig Lust auf diese recht spannenden und verhältnismäßig neuen Möglichkeiten machen, und Fraktalmengen sind eines der Paradebeispiele für diese Art der DV.

Schönen Gruß,
Medium


Edit: Schlechtschreibung
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat