Genaue Simulation des Kristallisationsprozesses in teilkristallinen Thermoplasten am Institut für Kunststoffverarbeitung (IKV)

 

Wissenschaftlicher Bereich
Spritzgießen, teilkristalline Thermoplaste

Kurzbeschreibung
Spritzgießen hat eine große Bedeutung in der Kunststoffverarbeitung, da es eine günstige und gut anpassbare Produktion von Kunststoffteilen in großer Zahl ermöglicht. Die Mikrostruktur teilkristalliner Thermoplaste beeinflusst stark die mechanischen Eigenschaften der Bauteile. Daher wurde am Institut für Kunststoffverarbeitung der RWTH Aachen (IKV) die Simulationssoftware SphäroSim entwickelt, mit der die Mikrostruktur teilkristalliner Thermoplaste während der Erstarrung vorhergesagt werden kann. Aufgrund der hohen Rechenzeit können allerdings nur sehr kleine Simulationsgebiete in ausreichender Auflösung simuliert werden. Deswegen wurde in 2014 SphäroSim parallelisiert und die Performance optimiert [1]. Ein algorithmisch veränderter Simulationszweig erfordert jedoch eine erneute Performanceanalyse und -optimierung. Im Rahmen dieses Projekts haben wir die entsprechende Simulationslaufzeit verkürzt und den Speicherbedarf verringert, sodass die Simulation auf einzelnen Rechenknoten ohne fehlerhafte Speicherüberschreitung durchgeführt werden kann. Des Weiteren haben wir das unter Windows weiterentwickelte Programm auf Linux portiert, um die Kapazitäten des Linux Clusters der RWTH Aachen nutzen zu können.

Durch Performanceanalysen mit dem Werkzeug Intel VTune Amplifier konnten wir Funktionen, die nicht die Kapazitäten der parallelen Rechnerarchitekturen ausnutzen, identifizieren. Wir haben nicht benötigte Mutexe, die die Parallelisierung verhinderten, entfernt und einige Instruktionen aus einer großen Schleife herausgezogen. Zudem stellten wir lange Wartezeiten beim Schreiben der Zwischenergebnisse fest, die wir durch asynchrones, paralleles IO mittels OpenMP Tasks erheblich verringern konnten. Außerdem haben wir die verwendete Eigen Bibliothek auf die aktuellste Version aktualisiert und mittels Compilerflaggen aggressives Inlining forciert. Mithilfe einer Analyse des Speicherverbrauchs konnten wir eine sehr große, zentrale Datenstruktur identifizieren, die mehrere Millionen Speicherseiten reservierte, jedoch jeweils nur einen Bruchteil des Speichers tatsächlich nutzte. Durch eine entsprechende Verkleinerung der Datenstruktur konnten wir die bereits implementierte Vorberechnung einiger oft genutzter Werte aktivieren, was vorher aufgrund von Speichermangel nicht möglich war. Das Nutzen dieser Vorberechnungen ermöglicht eine weitere Reduktion der Laufzeit.

Ergebnisse
Ausgangspunkt der Performanceevaluierung ist eine mit OpenMP parallelisierte und von uns auf Linux portierte Version des Programms (im Folgenden Init genannt). Diese Version, die mit dem Intel 18.0 Compiler kompiliert wird, benötigt etwa 20 Stunden mit 48 Threads auf einem CLAIX-2018 Rechenknoten. Das folgende Diagramm zeigt die Laufzeiten der Simulation nach den zuvor beschriebenen Optimierungsschritten. Alle Messungen wurden auf einem Intel Skylake Knoten des CLAIX-2018 Hochleistungsrechners der RWTH Aachen durchgeführt, der 48 Kerne mit einer Taktfrequenz von 2,1 GHz besitzt und 192 GB Hauptspeicher zur Verfügung stellt.

Das Entfernen einiger Mutexe und das Verschieben der Instruktionen aus der Schleife (Version rmSerMov ) beschleunigt die Simulation um 30% im Vergleich zur ursprünglichen Version Init. Durch die zusätzliche Parallelisierung der Ausgabe der Ergebnisse mit OpenMP Tasks (Version ParIO) können wir die Laufzeit um weitere 10% (im Vergleich zu Init) senken. Die Aktualisierung der verwendeten Eigen Bibliothek und aggressives Inlining (Version Eig) verkürzt die Laufzeit um 5%. Zudem führt die Aktivierung der Vorberechnung (Precalc) zu einer zusätzlichen Verbesserung der Laufzeit von 37%, sodass diese Version insgesamt 77% (im Vergleich zu Init) schneller ist, d. h. innerhalb von ca. 5 Stunden Simulationsergebnisse liefert. Dadurch wird nun eine Simulation über Nacht möglich.

 
  Balkendiagramm
 
 

Die Verkleinerung der zentralen Datenstruktur hat außerdem den Speicherverbrauch der Anwendung von über 250 GB (berechneter Wert) auf 80 GB (gemessener Wert) senken können, sodass die Simulation bei großen Läufen jetzt nicht mehr aufgrund von Speichermangel abbricht. Insgesamt konnten wir folglich den Speicherverbrauch um ca. 70% und die Laufzeit um 77% senken, was nun auch die Möglichkeit eröffnet größere Datensätze zu simulieren.

Code-Details
Anzahl Codezeilen: ~15.000
Programmiersprachen und -modelle: C++, OpenMP

Entwicklung & Zusammenarbeit
Severin Schüller, Dr. Sandra Wienke, IT Center, RWTH Aachen
Hamed Nokhostin, Institut für Kunststoffverarbeitung (IKV), RWTH Aachen

Referenz
[1] Wienke, S., Spekowius, M., Dammer, A., Mey, D. an, Hopmann, C., & Müller, M. S. (2014). Towards an accurate simulation of the crystallisation process in injection moulded plastic components by hybrid parallelisation. The International Journal of High Performance Computing Applications, 28(3), 356–367. https://doi.org/10.1177/1094342013511837