OpenMP Benchmarks

Geschwindigkeit ist der Heilige Gral der CFD-Simulation, die Achillesferse vieler praktischer Anwendungen und gleichzeitig das Goldene Kalb für nicht wenige wissenschaftlich-theoretische Anwender.

Seit der Version 6.1.0 nutzt FDS, erstmals als Standard, OpenMP zur parallelen Nutzung mehrerer CPUs auf einem System oder Kerne einer CPU. Man spricht hier, im Gegensatz zu der Parallelisierung mittels MPI, von einer „Shared-Memory-Parallelisierung“, da alle Instanzen des Programms gemeinsam auf den Arbeitsspeicher des Systems zugreifen können müssen. Entwickelt wurde die aktuelle Implementierung wesentlich in Deutschland, am Jülich Supercomputer Centre. Eine echte serielle Programmversion existiert nicht mehr. FDS kann damit grundsätzlich, ohne mehrere Berechnungsgebiete nutzen zu müssen, deutliche Geschwindigkeitsgewinne gegenüber der bisherigen, seriellen Berechnung auf nur einem Kern erzielen.

Wie hoch die erreichbaren Geschwindigkeitsgewinne liegen und unter welchen Randbedingungen OpenMP sinnvoll skaliert, das hat Bryan Klein von Thunderhead Engineering, dem Entwickler von PyroSim, grundsätzlich untersucht und seine Erkenntnisse in einem interessanten Blog-Post veröffentlicht.

Trotz einiger Randbedingungen, die für aussagekräftige Benchmarks eher unüblich sind (jedes Szenario wurde nur einmal durchlaufen, der Server war während der Benchmarks in Nutzung, als Baseline wurde (mangels serieller Programmversion) nicht FDS 6.1.0, sondern FDS 6.0.1 herangezogen), lassen die Ergebnisse einige aussagekräftige Schlüsse zu:

1. Bei kleinen Simulationen (bspw. < 500.000 Zellen) lohnt der Einsatz von OpenMP kaum (maximal 11 % Geschwindigkeitszuwachs trotz 6fachem Aufwand). 2. Die Nutzung von Hyper-Threading kostet Geschwindigkeit. Um eine maximale Geschwindigkeit zu erreichen, sollte Hyper-Threading im Bios des Rechners deaktiviert werden. Das sieht im Task-Manager nicht mehr so beeindruckend aus, hilft letztendlich aber schneller zu rechnen.
3. Ein signifikanter Geschwindigkeitszuwachs von ca. 50 % wird aktuell im handelsüblichen Bereich von ca. 4 Kernen erreicht. Die Nutzung von mehr als 4 Kernen bringt nur noch eine geringe Geschwindigkeitssteigerung und ist, vor allem vor dem Hintergrund, dass normalerweise mehrere Varianten einer Simulationen parallel gerechnet werden, fraglich.

OpenMP skaliert nach wie vor schlechter als die ebenfalls zur Verfügung stehende Parallelisierung mittels MPI. Auch wenn die aktuelle OpenMP Implementierung gewiss noch Optimierungspotential hat und die Nutzung mehrerer Berechnungsgebiete in FDS durchaus noch mit Vorsicht zu genießen ist, dass volle Potential der Parallelisierung werden Anwender zukünftig nur mit einer geschickten Mischung beider Parallelisierungstechniken nutzen können.

Vorbildlich: Thunderhead Engineering stellt nicht nur die Auswertungen im Artikel, sondern auch die Rohdaten zur Verfügung.

WordPress Cookie Hinweis von Real Cookie Banner