FLZ_Vortex Laufzeiten Demo vs. Vollversion

Hallo,

zusammen mit unserem Kollegen Erich Fuhrer habe ich die letzten Monate an Beschleunigungsverfahren für das FLZ_Vortex gearbeitet. Hierbei ging es darum, sowohl die Mehrkern-Fähigkeiten (Multithreadding) unserer Rechner besser auszunutzen als auch neuartige Mathematische Verfahren zu versuchen.

In der bis bisherigen Vollversion ist das Multithreadding schon aktiv geschaltet und alle User die eine solche haben profitieren bereits davon. Etliche Routinen in der FLZ_Vortex-Vollversion habe ich da schon Multithreading-fähig gemacht, weitere könnten noch folgen.

Irgendwann bringt das mit dem Aufbohren von Hardware (mehr CPU-Kerne) alleine aber kaum noch Vorteile, das haben auch Mathematiker und Programmierer erkannt. Speziell bei der Wettervorhersage und auch im Bereich der Strömungsmechanik wurden die Rechenmodelle immer feiner und die Rechenzeit stieg enorm an. Man bekommt dann schnell Gleichungssyteme mit zig tausend Unbekannten.

Bei den Gleichungs-Lösern gibt es zwei Hauptgruppen:
1) die exakten Löser wie z.B. das Gaussche Eliminationsverfahren
2) die Näherungs-Löser die in einer Schleife das Ergbenis immer weiter annähern bis die Lösung mindestens die geforderte Genauigkeit erreicht hat. Das wird vorgegeben durch die maximale zulässige Lösungs-Abweichung (hier 10-6 oder 6 Nachkommastellen).

In der Demo-Version wird nur der Gauss-Algorithmus verwendet. Ab einer Panelauflösung von ca. 800 quält sich dieser dann aber sehr. In der bisherigen FLZ_Vortex-Vollversion wird ab 800 Panels dann der BigStab-Algorithmus (Näherungslöser) in Verbindung mit Multithreadig angeworfen. Das ist dann schon mal ein paar Runden schneller.

Vor einiger Zeit hatte ich von dem Multigrid(Mehrgitter)-Verfahren gehört, habe es aber programmtechnisch nicht umsetzten können. Als ich Erich davon erzählte, hat er Blut geleckt und es dann auch geschafft dieses in eine Routine zu giessen.

Nach ein paar Monaten mit Verbesserungen und Rückschlägen sind wir nun soweit dass der neue Multigrid-Algorithmus ganz ordentlich funktioniert und einen richtigen Geschwindigkeits-Vorteil bringt.

Anbei habe ich ein paar Grafiken angefügt die den Zeitgewinn verdeutlichen. Als Modell habe ich den Demo-Flieger Besenstiel.flz mit verschiendenen Panelauflösungen verwendet.

Hier findet man die Laufzeiten von zwei Einzelauslegungen und einer Gesamtpolaren-Klappenrechung mit 10 Höhenruderstellungen, jeweils in Minuten. Dabei ist...
1) die Demoversion (blau)
2) die bisherige Vollversion mit 8 Threads/Kernen (rot)
3) die neue Vollversion mit Multigrid-Solver mit 8 Threads/Kernen (gelb)

Schon bei einer Erhöhung der Panelzahl um ca. 50% (von 748 auf 1188) erhöht sich die Laufzeit der Demo um den Faktor 2.77. Dieses Zeitverhalten ist bekannt für den Gauss-Algorithmus.

Deshalb habe ich in der letzten Grafik (3828_Panels) auf die Gesamtpolarenrechnung der Demo-Version verzichtet da diese fast 24 Stunden gedauert hätte.

Gegenüber der Demo ist die bisherige Multithreadig-Algorithmus dann schon um den Faktor 12 schneller, der neue Multigrid Algorithmus macht mit einem Faktor 14 gegenüber der Demo klar das Rennen. Bei noch höheren Panelzahlen fällt auch die bisherige Multithreading-Version zudem immer weiter hinter dem Multigrid Löser zurück.

Gruß

Frank

748_Panels.png


1188_Panels.png

3828_Panels.png
 
Guten Tag!

Ich habe bereits diese tolle Software im Einsatz. Wie kann ich von der Version 1.2 auf die neue Software mit Multigrid updaten?
Vielen Dank für die Antwort im Voraus und die gesamte bisherige Arbeit.

Mfg
Georg
 
Ansicht hell / dunkel umschalten
Oben Unten