Ansys Fluent GPU Performance Testing – Use Case
Dr.-Ing. Matthias Voß 29.11.2024
Tech Artikel 24/17 | Geballte Prozessor Unterstützung oder kurz: GPU
Ob im Maschinenbau, in der Luftfahrt oder bei der Produktentwicklung: Strömungssimulationen sind für präzise und schnelle Entwicklungsprozesse unerlässlich. Doch wie unterscheiden sich CPU- und GPU-basierte Simulationen, und was sind die wichtigsten Kriterien bei der Hardwarebewertung? Dieser Beitrag beleuchtet grundlegende Unterschiede, Leistungsmetriken und die Anwendungsmöglichkeiten von GPU- und CPU-Setups für Ihre CFD-Projekte.
GPU Power | © Adobe Firefly
CPU/GPU – Aufbau und Unterschiede
CPU (Central Processing Unit) und GPU (Graphics Processing Unit) sind beides Recheneinheiten, jedoch mit unterschiedlicher Architektur und Funktion. Der technische Fortgang der vergangenen 30 Jahre zeigt, wie nicht mehr über Taktrate oder Einzel-Kern-Rechenleistung, sondern über die stetig wachsende Anzahl an Transistoren und die zunehmende Anzahl an Kernen pro CPU zukünftige Rechenaufgaben bewältigt werden können und „wohin die Reise geht“ (s. Abbildung). CPUs haben wenige, dafür aber leistungsstarke Kerne, die komplexe Aufgaben sequentiell verarbeiten. GPUs hingegen bestehen aus vielen sog. Streaming Multiprocessors (SMs). Diese SMs erlauben es der GPU, sehr viele Threads gleichzeitig zu verwalten, was sie ideal für simulationsbasierte Rechenoperationen macht.
Nvidia und AMD bieten unterschiedliche GPU-Architekturen. Die SMs bei Nvidia-Karten bestehen aus zahlreichen CUDA-Kernen, die bei der Ausführung von Simulationen enormen Durchsatz liefern. AMD bietet mit seinen Compute Units auf Basis der ROCm (Radeon Open Compute) eine flexible Architektur und gestattet eine dynamische Speichererweiterung. Seit dem Ansys Release 2024R2 können auch AMD-Karten eingesetzt werden. Insgesamt sind Nvidia-GPUs für Strömungssimulationen aktuell die bevorzugte Wahl, da die Hardware besser auf professionelle Simulationssoftware abgestimmt ist. Die hier nachfolgenden Erläuterungen beziehen sich auf Nvidia-Karten, sind aber zumeist auch auf Karten anderer Hersteller anwendbar.
Verlauf relevanter Chip-Eigenschaften und Komponenten bis 2021 | © CADFEM Germany GmbH, nach GitHub
Nehmen wir uns also ein Strömungsbeispiel zur Hand, z.B. ein Ventil, stationäre, turbulente Wasserströmung und rechnen auf CPU und GPU mit unterschiedlichen Gittergrößen, um die Systeme gegenüber stellen zu können. Die Größe des Gitters variiert dabei zwischen klein (0.65 Mio. Elemente) und deutlich größer (1.0, 3.2 bzw. 10 Mio. Elementen). Verwendet wurden polyhedrale Elemente inkl. Grenzschichtauflösung entsprechend der Sorgfaltspflicht einer guten Vernetzung für die Strömungssimulation mit Ansys Fluent (s. Abbildung). Doch wie bewerten wir die Berechnungen anschließend? Größere Gitter rechnen länger, mehr Gleichungen auch. Wir brauchen eine Bewertungsgrundlage- eine Metrik, eine Norm.
Typische Innenströmung am Beispiel eines Ventils & Gesamtberechnungszeiten auf unterschiedlicher Hardware. | © CADFEM Germany GmbH
CPU und GPU objektiv vergleichen mit MIUPS
Die Metrik MIUPS dient in unserem Fall dazu, die Effizienz und Leistung eines Systems quantitativ zu bewerten. Für die Strömungssimulation wird die Rechenleistung anhand von Million Iteration-Updates per Second (MIUPS) gemessen. Diese Metrik gibt an, wie viele numerische Berechnungen (Iterationen) das System in einem festgelegten Zeitraum (1s) für eine gegebene Anzahl an Gitterelementen ausführen kann und bieten somit eine Vergleichsgrundlage für verschiedene Hardware-Setups. Je höher der MIUPS-Wert, desto effizienter arbeitet das System. Es werden relative Leistungsdaten unabhängig von Gittergröße und Gesamtiterationsanzahl ermittelt – nun können CPU und GPU untereinander verglichen werden, sowie unterschiedliche Benchmarkfälle auf identischer Hardware.
Wie die Abbildung zeigt, steigen die Rechenzeiten für unseren Ventil-Fall erwartungsgemäß mit steigender Gittergröße an (0.6-10 Mio. Elemente; CPU 5-120 Minuten, GPU 1-10 Minuten); dies gilt für CPU und GPU gemeinsam. Entscheidend ist nun der MIUPS-Wert. Steigt die Rechenzeit hin zu größeren Gittern hinreichend linear an, so ergibt sich ein konstanter MIUPS-Wert für den untersuchten Fall und Hardware. Wir betrachten also den Anstieg der Rechenzeiten und vergleichen diesen Wert über die Hardwaresysteme/Berechnungsfälle. Für den hier betrachteten Fall ergibt sich ein MIUPS-Wert von ca. 1.5 für die CPU-Hardware und von ca. 35 für eine A800-Karte.
Die MIUPS-Werte von CPUs liegen oft unter denen von GPUs. Eine moderne Cluster-CPU erreicht in der Regel etwa 2-20 MIUPS, wohingegen GPUs Werte im Bereich von 50-100 MIUPS und darüber hinaus erzielen können. Diese höhere Rechenleistung der GPU ermöglicht es, Simulationen schneller durchzuführen und damit Entwicklungszyklen zu verkürzen – ein wesentlicher Vorteil in industriellen Anwendungen. Ebenso stellt man fest, dass erst aber einer gewissen Modelgröße (>1 Million Elemente im gewählten Beispiel) die GPU ihr Beschleunigungspotential voll ausnutzt (→ konstanter MIUPS-Wert) – vorher ist das Problem schlicht „zu klein“. Natürlich kann ein Problem auch „zu groß“ sein und nicht in den Videospeicher (VideoRAM, VRAM) der Karte passen; aber wovon hängt das ab?
Rechenzeiten für unterschiedliche Gittergrößen des Ventilbeispiels, sowie MIUPS-Werte für die verwendete Grafikkarte A800 | © CADFEM Germany GmbH
VRAM vs. RAM und deren Bedeutung in der CFD
Der sog. VRAM ist der Speicher, den die GPU zur Speicherung von Daten während der Verarbeitung benötigt, während RAM (Random Access Memory) als Arbeitsspeicher der CPU dient. VRAM ist für die parallele Verarbeitung optimiert und besitzt eine hohe Bandbreite, die speziell auf die schnellen Anforderungen von Grafik- und Simulationsaufgaben abgestimmt ist. Im Gegensatz dazu ist CPU-RAM vielseitiger einsetzbar, aber weniger auf parallele Verarbeitung ausgelegt. Ebenfalls relevant ist der Umstand, dass CPU-RAM sehr einfach nachgerüstet werden kann, VRAM jedoch ist fest in die Architektur der jeweiligen Karte verankert und kann NICHT geändert werden. Es passt also nur begrenzt „Strömung“ auf eine GPU.
Der Speicherbedarf bei GPU-gestützten Berechnungen hängt primär von der Größe des Simulationsgitters, den verwendeten physikalischen Modellen (Energie, Strahlung, Turbulenz, Gitterbewegung, Spezies, VoF…) und der eingestellten Genauigkeit (Single/Double) ab. Große und komplexe Modelle beanspruchen den VRAM stärker. Die VRAM-Kapazität der Grafikkarte begrenzt also die Größe und Detailtiefe der Simulation – eine Herausforderung, die bei der Berechnung auf CPU auch gilt, jedoch seltener zum Tragen kommt, da CPU-Systeme einfacher nachgerüstet werden können.
Prinzipieller Verlauf des VRAM-Bedarfs bei zusätzlichen Modellen, Einstellungen und Lösereinstellungen in Ansys Fluent | © CADFEM Germany GmbH
Konkrete Werte für den Ventilfall | © CADFEM Germany GmbH
Als Faustregel lässt sich sagen, dass ca. 1-3 GB an VRAM für eine Million Gitterelemente benötigt werden (s. Abbildung). Dieser Wert erhöht sich mit wechselnden Elementtypen (tet, hex, poly) und natürlich den weiteren Berechnungseinstellungen (Energie On/Off, Turbulenz, Festkörper-CHT, Strahlung, gekoppelter Löser). Inwieweit reicht also eine herkömmliche Grafikkarte und wann braucht es dezidierte Rechenkarten? Und wieviel kostet ein solcher Hardwareaufbau?
Ansys CFD
Strömungen von Fluiden sichtbar machen mit Computational Fluid Dynamics (CFD). Partikelströme und Materialflüsse analysieren mit Discrete-Element-Methode (DEM) und SPH (Smoothed-Particle Hydrodynamics).
Desktop-GPU oder Server-GPU – eine Guideline
Zur Hand nehmen wir für diese Gegenüberstellung je eine Karte aus dem Desktop- (Nvidia RTX A4000) und eine aus dem Server-Segment (Nvidia A800). Die RTX A4000, eine typische Desktop-Karte, bietet eine solide Single-Precision-Leistung und eignet sich gut für kleinere bis mittelgroße Rechenmodelle. Die A800 hingegen, eine Server-Karte, ist auf komplexere Simulationen mit hoher Präzision ausgelegt und bietet eine höhere Rechenleistung und eine höhere VRAM-Kapazität. Die A800 ist sowohl für Single- als auch für Double-Precision-Berechnungen geeignet. Bei Double-Precision ist sie deutlich leistungsstärker als eine Desktop-Karte, was sie zur besseren Wahl für Simulationen macht, bei denen eine doppelte Genauigkeit erforderlich ist.
In der Anschaffung ist die A4000 günstiger als die A800. Für Anwendungen, die nicht zwingend Double Precision benötigen, bietet die RTX A4000 ein attraktives Preis-Leistungs-Verhältnis. Die RTX A4000 steht hier stellvertretend für die Klasse Desktop-Grafikkarten, die durchaus schon in bestehenden Systemen in einem Unternehmen zu finden sein können. Hier lohnt sich ein genaueres Hinsehen, da diese Karten im Leistungs-Äquivalent in der Größenordnung 20-60 CPU mitspielen und diese CPU-Systeme bereits schlagen können (siehe MIUPS bzw. 30 Kerne = 2h vs. 1 RTX A400 = 24min im ersten Abschnitt). Sie stellen häufig eine nicht gehobene Rechenressource in Unternehmen dar. In der Regel reichen bestehende HPC-Lizenzen und ein Upgrade auf die für GPU notwendige Enterprise-Lizenz aus, um eine solche Karte zu betreiben (siehe dazu auch im letzten Abschnitt).
Die A800 wiederum rechtfertigt ihren höheren Preis durch bessere Performance und größeren VRAM, was sie zu einer lohnenden Investition für anspruchsvolle Simulationen macht. In vielen Fällen ist der größere VRAM das eigentliche Kaufargument, da CFD-Simulationen eben erst ab einigen Millionen Berechnungselementen effizient auf einer GPU laufen und dies einen gewissen Speicher erfordert. Ebenso bedeutend ist der Umstand, dass Serverkarten über ein Kühlsystem für den Dauerbetrieb verfügen. Das ist, besonders bei Desktop-Karten, nicht zwingend der Fall. Je kühler die Karte bleibt, umso schneller ist sie. Was aber, wenn auch eine Serverkarte das Problem nicht „schlucken“ kann? Antwort: Viel hilft viel – Multi-GPU.
|
Desktop: |
Server: |
|
|
|
Performance Double Precision |
- (0.3 TFLOPS, 48 SMs) |
++ (10 TFLOPS, 108 SMs) |
Memory |
+ (16 GB) |
+++ (80 GB) |
Multi-GPU |
+ |
+++ |
Price |
+++ (~1.000 €) |
+ (~17.000 €) |
ValveCase RunTime (10. Mio Elemente) |
++ 24 [min] |
++++ 7 [min] |
Vergleich der Karten anhand von Performance, VRAM und Anschaffungspreis, sowie ein Vergleich der Laufzeiten für den Ventiltestfall mit 10 Mio. Zellen | © CADFEM Germany GmbH
Multi-GPU, NVLink: Alles muss schnell sein.
Ist der Detailgrad einer CFD-Simulation gesetzt (Gittergröße), alle verwendeten Modelle und die Genauigkeit der Berechnung bekannt, so kann u.U. vorhandener VRAM einer einzelnen Karte nicht ausreichen und die Berechnung muss mit diesen Einstellungen auf mehreren GPU-Karten mit entsprechend mehr Gesamtspeicher erfolgen. Diese Karten müssen zwingend in derselben Geschwindigkeit untereinander kommunizieren, damit sie in der Lage sind, getrennt voneinander und trotzdem genauso performant zu arbeiten. Die Kommunikation der Karten untereinander kann über 2 Wege erfolgen: NVLink oder PCI.
NVLink ist eine Hochgeschwindigkeitsverbindung, die von Nvidia entwickelt wurde, um den Datenaustausch zwischen mehreren GPUs zu beschleunigen. NVLink überträgt Daten mit deutlich höheren Bandbreiten als die herkömmliche PCI-Schnittstelle und ermöglicht es GPUs, Speicherressourcen effizient zu teilen, was für große Simulationen von Vorteil ist, die eben hohe Datenmengen verarbeiten müssen.
PCI ist die Standardverbindung zwischen GPU und Mainboard, weist jedoch eine niedrigere Bandbreite auf. PCI-Verbindungen stoßen bei komplexeren Anwendungen an ihre Grenzen, weshalb NVLink für aufwendige Simulationen wie Strömungsanalysen mit hohen Datenanforderungen meist bevorzugt wird.
Wie in der Abbildung anhand eines großen Benchmarkfalles (DrivAer, 250 Mio. Elemente) zu sehen ist, sind Multi-GPU-Rechnungen in der Lage, auch sehr große CPU-Systeme (z.B. 512 Kerne mit 64 MIUPS) deutlich zu schlagen (2xH200 mit 630 MIUPS). Die Verbindung aus schneller Anbindung (NVLink) mit moderner GPU-Architektur (Nvidia Hopper, H100 oder H200) ist Stand 2024 bereits um den Faktor 10-100 schneller. Und dieser Trend geht weiter. Auch erkennt man, dass die Anbindung der Karten untereinander (Parallel Efficiency) mit Ansys Release 2024R2 nahezu bei 100% liegt. Erhalten bestehende Grafikkartensysteme ein Hardwareupgrade (z.B. durch zusätzliche Karten) so kann dies direkt in Performancegewinn übertragen werden.
Leistungsdatenvergleich für 512 - 12 288 Kerne bzw. Multi-GPU-Systeme L40, A100, H100, H200 | © Ansys, Inc.
Sie wollen direkt starten? Kein Problem.
Sie haben bereits einen guten Desktoprechner mit moderner GPU? Hier geht es zu den notwendigen Leistungsdaten (VRAM und Anzahl an SM).
Als ersten Anlaufpunkt für eine Kontrolle bzgl. bereits bestehender GPU-Ressourcen auf einem bestehenden Rechner finden Sie direkt im Fluent-Launcher alle relevanten Informationen. Nach Auswahl des Enterprise Levels, können Sie unter der Rubrik Solution nun unter den Optionen auf der rechten Seite den Native GPU Solver aktivieren. Nach dieser Auswahl werden Ihnen direkt alle verbauten GPU-Karten inklusive ihrer relevanten Spezifikationen (Typ, Name, VRAM, SMs) angezeigt. Es empfiehlt sich je GPU eine CPU für die Berechnungsvorbereitung zu verwenden.
Fluent Launcher mit aktiviertem Native GPU Solver, GPU: RTX A4500, VRAM: 17.18 GB, SM: 46 | © CADFEM Germany GmbH
Anders als CPU-Kerne, welche in Teilen der Gesamtkernanzahl frei verteilt bzw. ausgewählt werden können (z.B. 30 von 40 Kernen einer CPU), gilt das bei GPUs so nicht. Es werden immer alle verfügbaren Rechenkerne (SMs) der Karte verwendet, in unserm Launcher-Beispiel also 46 SMs. Diese SM müssen mit HPC-Lizenzen abgedeckt sein; analog zu den gewählten Kernen einer CPU-Rechnung. Die gewählte Grundlizenz (CFD Enterprise) verfügt bereits über 40 Inkremente für die Verwendung von GPUs. Das bedeutet: bei herkömmlichen GPUs im Desktopbereich kann mit der CFD Enterprise und einem HPC-Pack direkt losgelegt werden - typische CFD-Anwender verfügen meist über mindestens 1 HPC-Pack und können mit der GPU sofort starten. Testen Sie es gerne selbst.
Vor dem Hintergrund der aktuellen Hardwareentwicklung hin zu immer leistungsfähigen Single-GPU-Karten (z.B. Nvidia GraceHopper oder Nvidia Blackwell) und dementsprechend auch GPU-Clustern ist davon auszugehen, dass mittelfristig Rechenleistungen von ~100 MIUPS bereits im Desktopbereich bereitstehen. Das ist das ca. 10x an Rechenleistung heutiger Systeme! Große GPU-Systeme, im Bereich von 1000 - 10 000 MIUPS werden in Anschaffung, Betrieb und Verfügbarkeit im Vergleich zu entsprechenden CPU-Lösung noch attraktiver werden.
Sie sind neugierig geworden? Kommen Sie gerne mit Ihren Fragen und Ideen auf uns zu oder schauen Sie direkt in unserem Software- und Hardwareangebot nach einer passenden Lösung.
Technische Redaktion
Dr.-Ing. Marold Moosrainer
Head of Professional Development
+49 (0)8092 7005-45
mmoosrainer@cadfem.de