Tylek, N. (2026). GPU Implementations and CUDA Graph Acceleration of Krylov Solvers for Incompressible Navier-Stokes in NGSolve [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2026.142912
E101 - Institut für Analysis und Scientific Computing
-
Date (published):
2026
-
Number of Pages:
63
-
Keywords:
GPU computing; Krylov space solvers; Navier-Stokes Equations
en
Abstract:
Die effiziente numerische Lösung der inkompressiblen Navier–Stokes-Gleichungen bleibt eine zentrale Herausforderung in der Computational Science and Engineering. Auf modernen GPU-Architekturen könnten iterative Krylov-Verfahren zur Lösung der resultierenden großen, dünn besetzten linearen Systeme erheblich von der hohen Speicherbandbreite der GPU profitieren — in der Praxis werden sie jedoch häufig durch Kernel-Launch-Overhead und CPU–GPU-Synchronisierungen pro Iteration begrenzt.Diese Arbeit analysiert und optimiert Krylov-Löser im NGSolve-Finite-Elemente-Framework mit Schwerpunkt auf GPU-Ausführung über das ngscuda-Modul. Systematisches Benchmarking und NVIDIA-Nsight-Systems-Profiling identifizieren Launch-Overhead und hostseitige Synchronisierung als dominante Engpässe. Zur Behebung werden eine GPU-residente Skalarinfrastruktur (UnifiedScalar) sowie ein CUDA-Conditional-While-Graph-Framework (CudaWhileGraph) entwickelt und auf zwei präkonditionierte Krylov-Löser angewendet: DevCGSolver für das symmetrische Konjugierte-Gradienten-Verfahren und DevTFQMRSolver für das unsymmetrische Transpose-Free-QMR-Verfahren, das häufig in Navier–Stokes-Diskretisierungen verwendet wird.Der zentrale Beitrag dieser Arbeit ist der Conditional While Graph, der den gesamten Konvergenzloop in einem einzelnen geräteresidenten Graphen kapselt. Dadurch werden alle iterationsweisen CPU–GPU-Synchronisierungen eliminiert und die Laufzeit auf der NVIDIA H100 über einen weiten Bereich von Problemgrößen reduziert. Eine partielle Integration in einen inkompressiblen Navier–Stokes-Löser bestätigt die korrekte Funktionsweise des DevCGSolver innerhalb einer Multiphysik-Zeitschrittschleife.Die Ergebnisse zeigen, dass die Kombination aus CUDA-Graph-Capture und konditionaler Ausführung eine bislang unvermeidliche Synchronisationsschranke beseitigt und einen Weg hin zu vollständig GPU-residenten Krylov-Lösern für Navier–Stokes-Zeitschrittverfahren auf modernen GPU-Plattformen eröffnet.
de
The efficient numerical solution of the incompressible Navier–Stokes equations remains a central challenge in computational science and engineering. On modern GPU architectures, iterative Krylov solvers for the resulting large, sparse linear systems could benefit significantly from the GPU's high memory bandwidth — yet in practice they are often limited by kernel-launch overhead and per-iteration CPU–GPU synchronisation.This thesis analyses and optimises Krylov solvers within the NGSolve finite element framework, with a focus on GPU execution via the ngscuda module. Systematic benchmarking and NVIDIA Nsight Systems profiling identify launch overhead and per-iteration host synchronisation as the dominant bottlenecks. To address them, a GPU-resident scalar infrastructure (UnifiedScalar) and a CUDA Conditional While Graph framework (CudaWhileGraph) are developed and applied to two preconditioned Krylov solvers: DevCGSolver for the symmetric Conjugate Gradient method, and DevTFQMRSolver for the non-symmetric Transpose-Free QMR method commonly used in Navier–Stokes discretisations.The main contribution of this work is the Conditional While Graph, which encapsulates the entire convergence loop in a single device-resident graph, eliminating all per-iteration CPU–GPU synchronisation and reducing wall-clock solve time across a wide range of problem sizes on the NVIDIA H100. A partial integration with an incompressible Navier–Stokes solver confirms correct operation of DevCGSolver within a multi-physics time-stepping loop.The results demonstrate that combining CUDA graph capture with conditional execution removes a previously unavoidable synchronisation barrier, opening a path toward fully GPU-resident Krylov solvers for Navier–Stokes time-stepping on modern GPU platforms.
en
Additional information:
Arbeit an der Bibliothek noch nicht eingelangt - Daten nicht geprüft