Effizienz der Parallelisierung

In der letzten Zeit ist vielfach über die Parallelisierung des Drucklösers von FDS berichtet worden. Wie wichtig eine effiziente Parallelisierung auch für andere große CFD-Pakete ist, zeigen die folgenden Stilblüten.

Auf der Homepage eines der großen CFD-Pakete wird das folgende Diagramm als Beweis der hohen Effizienz der Parallelisierung gezeigt:

Auf den ersten Blick beeindruckend: der Solver skaliert bis zu einer Anzahl von fast 1.024 (!) Kernen annähernd linear. Für sich genommen eine respektable Leistung der Entwickler.

Auf den zweiten Blick fallen jedoch einige Ungereimtheiten auf. Interessant wäre beispielsweise wie der Solver im niedrigen Bereich bei 1, 2 oder 4 Kernen skaliert. Angaben hierzu fehlen vollständig.

Sehr fraglich werden dann die Ergebnisse bei 256 und 512 Kernen. Hier skaliert der Solver auf einmal überproportional gut. Die Erhöhung der Kerne auf 256 bzw. 512 bewirkt eine Geschwindigkeitssteigerung auf 265 bzw. 521, also eine Steigung von mehr als 1!

Vielleicht nur ein Zahlendreher, auf jeden Fall aber nicht unbedingt vertrauenssteigernd.

Ein weiteres schönes Beispiel ist die folgende Tabelle auf der Homepage eines anderen bekannten CFD-Paketes:

No of CPUs CPU time to convergence Speedup



1 35620.4 s 1.00
2 22398.8 s 1.60
4 11406.6 s 3.10
8 4247.32 s 8.88
16 2872.58 s 12.4

Mein alter Mathematik-Lehrer hat zu so etwas immer gesagt: „Whow, whow, whow, das lassen wir uns einmal auf der Zunge zergehen!“

Die Verdoppelung der Kerne von 4 auf 8 bewirkt eine Geschwindigkeitssteigerung um den Faktor 2,86. Respekt! Eine beachtliche Leistung der Entwickler oder vielleicht doch eher ein weiterer Zahlendreher? Auf jeden Fall ein Grund zur Skepsis. In Zeiten, in denen sich die kommerziellen Hersteller von Version zu Version mit Superlativen überbieten, sollte man definitiv ein kritisches Auge auf die beworbenen Funktionen werfen.

3 Kommentare

  1. Hallo Boris,

    das mit den identischen Ergebnissen ist nach meiner Erfahrung eher das Problem von FDS… gerade die kommerziellen Tools (und auch ander Open-Source tools wie z.B. OpenFOAM) koennen guten Gewissens parallel eingesetzt werden.

    Gruesse!
    Fabian

  2. Fabian,

    danke für die Links.
    Stimmt, so etwas tritt nicht nur bei kommerziellen Programmen auf, allerdings stehen die vermehrt unter einem großen Druck das Invest in eine neue Version begründen zu müssen.

    In dem 3. Link steht es ja auch sehr schön erklärt:
    „the number of iterations needed for convergence in the sub-domains
    decreases on increasing the number of processors.“ Das wäre aber mit mehreren MESHes auch auf einem Kern möglich.
    Nur ist das natürlich wieder so eine Sache: wenn man vergleichen will, soll man Gleiches vergleichen.
    1. FDS nutzt standardmäßig einheitliche Zeitschritte (und das aus gutem Grund) und
    2. Vergleichen diese Tests eben nicht mehr das gleiche, da in einigen MESHes deutlich größere Zeitschritte möglich sind oder bei iterativen Lösern eben weniger Iterationen.

    Bei den teilweise doch sehr hohen Anteilen nicht parallelisierbaren Codes und dem Aufwand für Kommunikation, sind solche Traumergebnisse meiner Erfahrung nach eher kritisch zu sehen (Tabelle 3: 8 CPUs, Speedup > 11).

    Interessieren würde mich aber mal, ob diese Berechnungen auf 2048 Kernen wirklich identische Ergebnisse im Vergleich zu 1-Kern-Simulationen liefern.

Kommentare sind geschlossen.

WordPress Cookie Hinweis von Real Cookie Banner