The aim of this thesis is the porting on accelerators of a collocated finite-difference solver for the incompressible Navier-Stokes equations, based on the direction-splitting method proposed by Guermond and Minev and later developed by Chiarini, Quadrio, and Auteri. The solver has been partially ported to GPU in order to leverage the computational power of modern accelerators. The implementation was carried out using CUDA Fortran, targeting the Leonardo cluster at CINECA, equipped with NVIDIA A100 GPUs. At this stage of development, the code supports multi-GPU execution; however, direct GPU-to-GPU message passing is not implemented, as only the most computationally demanding sections of the time loop are accelerated using dedicated kernels. This approach provided an initial performance improvement while maintaining the numerical stability of the solver, confirming the consistency of the method. Finally, a preliminary performance analysis was conducted using an analytical solution of the Navier-Stokes equations, to assess the computational gains achievable even in this limited configuration.

Lo scopo di questa tesi è lo sviluppo su acceleratori di un solutore alle differenze finite collocate per le equazioni di Navier-Stokes incomprimibili, basato sul metodo di direction splitting proposto da Guermond e Minev e successivamente sviluppato da Chiarini, Quadrio e Auteri. Il solutore è stato parzialmente portato su GPU, con l’obiettivo di sfruttare le capacità computazionali dei moderni acceleratori. L’implementazione è stata realizzata in CUDA Fortran, con l’obiettivo di eseguire il codice sul cluster Leonardo presso CINECA, equipaggiato con GPU NVIDIA A100. In questa fase dello sviluppo, il codice supporta l’esecuzione multi-GPU; tuttavia, non è implementato un passaggio diretto di messaggi tra GPU, e la comunicazione tra esse avviene tramite l’host. Solo le sezioni più onerose dal punto di vista computazionale all’interno del ciclo temporale sono state accelerate mediante kernel dedicati. Questa scelta ha permesso un primo incremento delle prestazioni, mantenendo la stabilità numerica del solutore, a conferma della consistenza dell’approccio. Infine, è stato eseguito un primo studio prestazionale tramite una soluzione analitica delle equazioni di Navier-Stokes, utile a valutare i guadagni computazionali ottenibili anche in questa configurazione limitata.

Partial GPU porting of a direction-splitting Navier-Stokes solver in CUDA Fortran

GAZZOLA, DANIELE
2024/2025

Abstract

The aim of this thesis is the porting on accelerators of a collocated finite-difference solver for the incompressible Navier-Stokes equations, based on the direction-splitting method proposed by Guermond and Minev and later developed by Chiarini, Quadrio, and Auteri. The solver has been partially ported to GPU in order to leverage the computational power of modern accelerators. The implementation was carried out using CUDA Fortran, targeting the Leonardo cluster at CINECA, equipped with NVIDIA A100 GPUs. At this stage of development, the code supports multi-GPU execution; however, direct GPU-to-GPU message passing is not implemented, as only the most computationally demanding sections of the time loop are accelerated using dedicated kernels. This approach provided an initial performance improvement while maintaining the numerical stability of the solver, confirming the consistency of the method. Finally, a preliminary performance analysis was conducted using an analytical solution of the Navier-Stokes equations, to assess the computational gains achievable even in this limited configuration.
ING - Scuola di Ingegneria Industriale e dell'Informazione
22-lug-2025
2024/2025
Lo scopo di questa tesi è lo sviluppo su acceleratori di un solutore alle differenze finite collocate per le equazioni di Navier-Stokes incomprimibili, basato sul metodo di direction splitting proposto da Guermond e Minev e successivamente sviluppato da Chiarini, Quadrio e Auteri. Il solutore è stato parzialmente portato su GPU, con l’obiettivo di sfruttare le capacità computazionali dei moderni acceleratori. L’implementazione è stata realizzata in CUDA Fortran, con l’obiettivo di eseguire il codice sul cluster Leonardo presso CINECA, equipaggiato con GPU NVIDIA A100. In questa fase dello sviluppo, il codice supporta l’esecuzione multi-GPU; tuttavia, non è implementato un passaggio diretto di messaggi tra GPU, e la comunicazione tra esse avviene tramite l’host. Solo le sezioni più onerose dal punto di vista computazionale all’interno del ciclo temporale sono state accelerate mediante kernel dedicati. Questa scelta ha permesso un primo incremento delle prestazioni, mantenendo la stabilità numerica del solutore, a conferma della consistenza dell’approccio. Infine, è stato eseguito un primo studio prestazionale tramite una soluzione analitica delle equazioni di Navier-Stokes, utile a valutare i guadagni computazionali ottenibili anche in questa configurazione limitata.
File allegati
File Dimensione Formato  
Tesi_Gazzola.pdf

accessibile in internet per tutti

Dimensione 2.71 MB
Formato Adobe PDF
2.71 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/240171