Adaptierung des Shallow Water Codes zur Simulation seichter Gewässer für den Intel Xeon Phi

Bachelorarbeit

In vielen Ingenieurswissenschaften nimmt die Simulation von realen Vorgängen (Verbrennungen, Strömungen von Gasen oder Flüssigkeiten, Partikelbewegungen, …) einen großen Stellenwert ein. Durch rechnergestützte Simulationen ist es zum Beispiel möglich schon während der Entwicklung die Auswirkungen bestimmter Parameterveränderungen auf das Verhalten eines neu zu konstruierenden Systems zu analysieren. Simulationen, welche große Systeme mit vielen Freiheitsgraden nachbilden, besitzen allerdings oft sehr hohe Laufzeiten für die Berechnung.

Um diese Berechnungszeiten zu verkürzen, wird durch Anpassungen an den existierenden Simulationsprogrammen versucht, sich die Leistung zu Nutze zu machen, welche moderne parallele Hardware in verschiedener Form bietet. Zu nennen sind hier zum Beispiel Rechencluster, GPGPU-Anwendungen oder Intels Xeon Phi Coprozessor. Diese Architekturen ermöglichen es dem Entwickler die Rechenlast von Anwendungssoftware auf verschiedene Einheiten zu verteilen, um auf diese Weise kürzere Laufzeiten zu erreichen. Hierbei kommen je nach Zielarchitektur verschiedene Techniken wie OpenMP, Cilk Plus, Intel TBB, MPI oder OpenCL zum Einsatz.

Im Rahmen dieser Arbeit soll ein bestehender Simulationscode für das Verhalten seichter Gewässer auf Intels Xeon Phi Coprozessor adaptiert werden. Hierzu ist zunächst eine Parallelisierung für SMP-Systeme (z.B. mittels OpenMP) durchzuführen, um die inhärente Parallelität der Berechnung auszunutzen. Anschließend erfolgt die Portierung auf den Xeon Phi mit einer Analyse des Verhaltens auf dem Coprozessor.

In einem weiteren Schritt sollen verschiedene Codeoptimierungen durchgeführt und ihre Vorteile untersucht werden. Hierzu zählen vor allem die Implementierung eines kürzlich beschriebenen, optimierten Verfahrens zur Berechnung dünnbesetzter Matrizen[1] und die Restrukturierung des Codes, um die 512bit breiten SIMD-Einheiten durch Vektorisierung zu nutzen. Ein weiterer Punkt ist die Untersuchung des Einflusses verschiedener Parameter auf die Laufzeit der Software. Hierbei sind vor allem das die Anzahl der parallel zu berechnenden Threads und deren Scheduling zu nennen.

Als weitere Arbeitsschritte sind der Performancevergleich mit den vorhandenen Cluster Knoten oder eine MPI Parallelisierung denkbar.

Voraussetzungen für die Bearbeitung der Thesis sind:

• Gute C/C++ Kenntnisse

• Grundkenntnisse der parallelen Programmierung (OpenMP, Cilk Plus oder Intel TBB)

Im Rahmen dieser Arbeit werden sie sich Wissen über:

• Wissenschaftliches Arbeiten

• Praktische Anwendung von Parallelisierungstechniken

• Vektorisierung von Berechnungen

• Arbeiten mit Acceleratoren

aneignen und

• Eine schriftliche Ausarbeitungen von ca. 40 Seiten verfassen.