Schneller im Fluss

CAD CAM

Strömungsanalyse – Ob Aerodynamik, Durchlüftung oder der Verlauf einer Flüssigkeitsströmung – Software zur Berechnung von Strömungen profitiert stark von der Rechenpower der Grafikprozessoren.

04. Mai 2012

Das Strömungsverhalten in oder um ein Produkt muss oft schon sehr früh in der Produktentwicklung berücksichtigt werden. Eine schlechte Aerodynamik führt beispielsweise bei Fahrzeugen zu hohem Kraftstoffverbrauch. Aerodynamik-Untersuchungen wurden früher in einem Windkanal durchgeführt. Sie waren sehr kostenintensiv, weil für den Test von realen Prototypen oder Modellen ein großer Aufwand für die Vorbereitung des Modells und den Versuchsaufbau im Windkanal sowie teure Analysewerkzeuge anfielen. Auch die Untersuchung des Strömungsverhaltens in der Entwicklung von Pumpen oder Ventilatoren konnte nur mit hohen Kosten realisiert werden.

Mittlerweile stellen computergestützte Strömungssimulationen eine günstige Alternative dazu dar. Das Ingenieurbüro FluiDyna aus Garching bei München hat sich auf solche Simulationen spezialisiert und berechnet physikalische Strömungen in und um Körper. Das Unternehmen wurde 2006 vom Lehrstuhl für Aerodynamik an der Technischen Universität München gegründet.

Berechnung auf die CPU verlagert

Eugen Riegel, ein Absolvent der TU, entwickelte mit Unterstützung durch Geschäftsführer Dr. Thomas Indinger, der an der TU München den Bereich Automobilaerodynamik leitet, die Simulationssoftware LBultra. Die Software nutzt zur Berechnung Nvidia-Grafikprozessoren (GPU, Graphics Processing Unit). Indinger trägt bei der Entwicklung seine Expertise in der Strömungsmechanik bei.

Die Kalkulationen der Software beruhen auf der Lattice-Boltzmann-Methode. Die aus der statistischen Physik stammende Vorgehensweise zergliedert ein komplexes Modell auf Teilchenebene. Bei der Lattice-Boltzmann-Methode wird das zu simulierende Volumen in viele kleine Zellen aufgeteilt. Die Methode bietet im Vergleich zu anderen Methoden den Vorteil, dass zur Berechnung des neuen Zustands einer Zelle nur die Informationen zum alten Zustand der Zelle selbst sowie deren Nachbarzellen benötigt werden. Dadurch ist die Lattice-Boltzmann-Methode ideal für eine hochgradig parallele Implementierung geeignet.

Führt die CPU diese Berechnungen durch, wirkt diese wie ein Flaschenhals. Lange Zeit griffen Systementwickler auf schnellere CPUs mit immer leistungsfähigeren Architekturen und höheren Taktfrequenzen zurück. Dabei liegt das Problem nicht in der Leistung, sondern in der Struktur der Prozessoren. Eine Single-Core-CPU kann Aufgaben nur sequenziell abarbeiten. Multitasking oder Multithreading bieten hier keinen Performance-Gewinn, da sie Aufgaben nur scheinbar parallel ablaufen lassen – bei diesen zwei Verfahren arbeitet die CPU die Aufgaben ebenfalls hintereinander ab, wobei durch geschickte Ausnutzung der System-Ressourcen der Eindruck der Gleichzeitigkeit entsteht.

Mit wachsender Anzahl der CPU-Kerne steigt die Fähigkeit, mehrere Rechenaufgaben parallel zu erledigen. Daher könnte eine Lösung in der simultanen Nutzung vieler Multicore-CPUs liegen, was aber angesichts der damit verbundenen hohen Kosten oft keine Alternative ist. Es müssten ganze Cluster mit vielen Knoten aufgebaut werden, da in einem Rechner nicht unzählig viele CPUs einsetzbar sind. Neben dem Kostenaspekt ist ein weiterer Nachteil eines ausschließlich auf CPUs basierenden Cluster-Konzepts, dass das aufwändige Management des Gesamt-Systems wertvolle Kapazitäten bindet.

Jeder Zelle ein eigener Prozessor

Für Berechnungen nach der Lattice-Boltzmann-Methode ist daher eine massiv parallele GPU-Architektur vorzuziehen, denn mit ihr kann jede einzelne Zelle des simulierten Volumens von einem eigenen GPU-Kern berechnet werden.

»Ursprünglich wurden GPUs für die Berechnung von Visualisierungen konzipiert und optimiert. Sie haben sich durch die Anforderung der unabhängigen Berechnung jedes einzelnen Pixels einer Darstellung zu massiv parallelen Prozessoren gewandelt«, erklärt Thomas Indinger. »Seit dem Erscheinen der CUDA-Technologie von Nvidia eignen sich die Grafikprozessoren auch für die Berechnung von Nicht-Bilddaten.«

Für die Berechnung einer Aufgabe auf GPUs mit der CUDA-Technologie muss sie parallelisierbar sein, also sich in viele kleine Einheiten aufteilen lassen, die unabhängig voneinander berechnet werden. Wie auch die zweite Voraussetzung, die prozedurale Unabhängigkeit der einzelnen Berechnungseinheiten, liegt die Parallelisierbarkeit bei der Strömungssimulation mit der Lattice-Boltzmann-Methode vor. Die Vorteile der parallelen Berechnung auf einer GPU anstelle der Verwendung einer oder mehrerer CPUs liegen in der vielfach höheren Rechenleistung und besseren Verteilbarkeit der einzelnen Aufgaben durch die spezielle Ausrichtung der GPU-Architektur auf kleine modulare Rechenschritte. Ein Grafikprozessor stellt dafür viele Recheneinheiten zur Verfügung. In Nvidia-GPUs, die auf der Fermi-Achitektur basieren, sind bis zu 512 parallel arbeitende Rechenkerne vorhanden.

Riegel hat sich zu Beginn seiner Entwicklungsarbeit zunächst dafür entschieden, die Open-Source-Implementierung einer auf Lattice-Boltzmann basierten Strömungssimulation für GPUs zu portieren. »Die Portierung konnte die besonderen Vorzüge der GPU-Architektur nicht ausreichend nutzen. Daher waren die Berechnungen nicht wesentlich schneller«, betont Riegel. »Der Durchbruch bei der Performance kam erst durch die Entwicklung von LBultra. Durch den Einsatz der GPU-Technologie rechnet LBultra dieselbe Aufgabe zwanzig Mal schneller als ein Quadcore-Prozessor.« Dabei verwendet LBultra die Nvidia-CUDA-Technologie und ist in der Lage, mehrere GPUs zu verwenden, um das System gemäß den Anforderungen zu skalieren.

Bald auf dem Markt verfügbar

Gegenwärtig wird die Software mit akademischen Testfällen getestet, um die Modellkonstanten einzustellen und die Programmierung der physikalischen Gleichungen zu überprüfen. Geplant ist der Vertrieb von LBultra als Komplettlösung zusammen mit einer Workstation und Tesla-GPUs. Das Unternehmen setzt auf die CUDA-Plattform und wird in Zukunft auch noch andere Simulationsanwendungen wie eine Vermischungssimulation von Flüssigkeiten in Behältern auf Nvidia-GPUs portieren. Auch für LBultra selbst planen Indinger und Riegel Funktionserweiterungen. So wird zukünftig auch der Einfluss bewegter Gitter, beispielsweise ein sich drehendes Rad am Kraftfahrzeug, oder der Wärmeübergang berücksichtigt.

Erschienen in Ausgabe: 03/2012