Der Artikel beschreibt die Optimierung der Assemblierung des rechten Seitenteils (RHS) im inkompressiblen Strömungsmodul des Hochleistungsrechenmechanik-Codes Alya, einem der beiden CFD-Codes im Unified European Benchmark Suite.
Ausgehend von einer effizienten CPU-Version und einer zugehörigen OpenACC-Portierung für GPUs werden sukzessive Leistungspotenziale durch Codepezialisierung, algorithmische Umstrukturierung und Low-Level-Optimierungen untersucht.
Es wird gezeigt, dass nur die Kombination dieser verschiedenen Dimensionen der Laufzeitoptimierung das volle Leistungspotenzial auf der GPU und CPU enthüllt. Dabei wird die Roofline-basierte Leistungsmodellierung angewendet und es wird demonstriert, dass neue Optimierungsstrategien untersucht werden müssen, wenn eine klassische Roofline-Grenze wie die Ausnutzung der Speicherbandbreite erreicht ist, anstatt den Prozess zu beenden.
Die endgültige, vereinheitlichte OpenACC-basierte Implementierung steigert die Leistung um mehr als 50x auf einer NVIDIA A100 GPU (mit etwa 2,5 TF/s FP64) und einen weiteren Faktor von 5x für einen Intel Icelake-basierten CPU-Knoten (mit etwa 1,0 TF/s FP64).
Die gewonnenen Erkenntnisse legen den Grundstein für die Implementierung vereinheitlichter, aber immer noch hocheffizienter Codestrukturen für verwandte Kernel in Alya und anderen Anwendungen, die manuell oder durch automatische Codegenerierungsframeworks realisiert werden können.
In un'altra lingua
dal contenuto originale
arxiv.org
Approfondimenti chiave tratti da
by Herbert Owen... alle arxiv.org 03-15-2024
https://arxiv.org/pdf/2403.08777.pdfDomande più approfondite