{"id":5267,"date":"2014-09-02T12:39:20","date_gmt":"2014-09-02T10:39:20","guid":{"rendered":"http:\/\/www.f-sim.de\/?p=5267"},"modified":"2014-09-02T12:39:20","modified_gmt":"2014-09-02T10:39:20","slug":"openmp-benchmarks","status":"publish","type":"post","link":"https:\/\/www.f-sim.de\/?p=5267","title":{"rendered":"OpenMP Benchmarks"},"content":{"rendered":"<p>Geschwindigkeit ist der Heilige Gral der CFD-Simulation, die Achillesferse vieler praktischer Anwendungen und gleichzeitig das Goldene Kalb f\u00fcr nicht wenige wissenschaftlich-theoretische Anwender.<\/p>\n<p>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 &#8222;Shared-Memory-Parallelisierung&#8220;, da alle Instanzen des Programms gemeinsam auf den Arbeitsspeicher des Systems zugreifen k\u00f6nnen m\u00fcssen. Entwickelt wurde die aktuelle Implementierung wesentlich in Deutschland, am <a href=\"http:\/\/www.fz-juelich.de\/ias\/jsc\/EN\/AboutUs\/Organisation\/CivilSecurityAndTraffic\/_node.html\" title=\"JSC\">J\u00fclich Supercomputer Centre<\/a>. Eine echte serielle Programmversion existiert nicht mehr. FDS kann damit grunds\u00e4tzlich, ohne mehrere Berechnungsgebiete nutzen zu m\u00fcssen, deutliche Geschwindigkeitsgewinne gegen\u00fcber der bisherigen, seriellen Berechnung auf nur einem Kern erzielen.<br \/>\n<!--more--><\/p>\n<p>Wie hoch die erreichbaren Geschwindigkeitsgewinne liegen und unter welchen Randbedingungen OpenMP sinnvoll skaliert, das hat Bryan Klein von <a href=\"http:\/\/www.thunderheadeng.com\/\" title=\"Thunderhead Engineering\">Thunderhead Engineering<\/a>, dem Entwickler von <a href=\"http:\/\/www.thunderheadeng.com\/pyrosim\/\">PyroSim<\/a>, grunds\u00e4tzlich untersucht und seine Erkenntnisse in einem interessanten Blog-Post <a href=\"http:\/\/www.thunderheadeng.com\/2014\/08\/openmp-benchmarks\/\" title=\"FDS OpenMP-Benchmark\">ver\u00f6ffentlicht<\/a>.<\/p>\n<p>Trotz einiger Randbedingungen, die f\u00fcr aussagekr\u00e4ftige Benchmarks eher un\u00fcblich sind (jedes Szenario wurde nur einmal durchlaufen, der Server war w\u00e4hrend 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\u00e4ftige Schl\u00fcsse zu:<\/p>\n<p>1. Bei kleinen Simulationen (bspw. < 500.000 Zellen) lohnt der Einsatz von OpenMP kaum (maximal 11 % Geschwindigkeitszuwachs trotz 6fachem Aufwand).\n2. Die Nutzung von <a href=\"https:\/\/de.wikipedia.org\/wiki\/Hyper-Threading\" title=\"HTT\">Hyper-Threading<\/a> 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.<br \/>\n3. Ein signifikanter Geschwindigkeitszuwachs von ca. 50 % wird aktuell im handels\u00fcblichen 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.<\/p>\n<p><a href=\"https:\/\/code.google.com\/p\/fds-smv\/wiki\/OpenMP_Notes\" title=\"OpenMP in FDS\">OpenMP<\/a> skaliert nach wie vor schlechter als die ebenfalls zur Verf\u00fcgung 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\u00dfen ist, dass volle Potential der Parallelisierung werden Anwender zuk\u00fcnftig nur mit einer geschickten Mischung beider Parallelisierungstechniken nutzen k\u00f6nnen.<\/p>\n<p><strong>Vorbildlich<\/strong>: Thunderhead Engineering stellt nicht nur die Auswertungen im Artikel, sondern auch die <a href=\"http:\/\/www.thunderheadeng.net\/special_downloads\/openmp-benchmark-out-files.zip\">Rohdaten<\/a> zur Verf\u00fcgung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Geschwindigkeit ist der Heilige Gral der CFD-Simulation, die Achillesferse vieler praktischer Anwendungen und gleichzeitig das Goldene Kalb f\u00fcr nicht wenige wissenschaftlich-theoretische Anwender. Seit der Version 6.1.0 nutzt FDS, erstmals als Standard, OpenMP zur parallelen Nutzung<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-5267","post","type-post","status-publish","format-standard","hentry","category-fds"],"_links":{"self":[{"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/posts\/5267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5267"}],"version-history":[{"count":9,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/posts\/5267\/revisions"}],"predecessor-version":[{"id":5276,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=\/wp\/v2\/posts\/5267\/revisions\/5276"}],"wp:attachment":[{"href":"https:\/\/www.f-sim.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.f-sim.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}