Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics

Solving partial differential equations (PDEs) is a fundamental challenge in many application domains in industry and academia alike. With increasingly large problems, efficient and highly scalable implementations become more and more crucial. Today, facing this challenge is more difficult than ever...

Mô tả đầy đủ

Đã lưu trong:
Chi tiết về thư mục
Tác giả chính: Kuckuk, Sebastian
Định dạng: Online
Ngôn ngữ:Tiếng Anh
Được phát hành: FAU University Press 2025
Những chủ đề:
Truy cập trực tuyến:ONIX_20251215T160010_9783961472741_47
Các nhãn: Thêm thẻ
Không có thẻ, Là người đầu tiên thẻ bản ghi này!
_version_ 1869528427496734720
author Kuckuk, Sebastian
author_browse Kuckuk, Sebastian
author_facet Kuckuk, Sebastian
author_sort Kuckuk, Sebastian
collection Directory of Open Access Books
description Solving partial differential equations (PDEs) is a fundamental challenge in many application domains in industry and academia alike. With increasingly large problems, efficient and highly scalable implementations become more and more crucial. Today, facing this challenge is more difficult than ever due to the increasingly heterogeneous hardware landscape. One promising approach is developing domain‐specific languages (DSLs) for a set of applications. Using code generation techniques then allows targeting a range of hardware platforms while concurrently applying domain‐specific optimizations in an automated fashion. The present work aims to further the state of the art in this field. As domain, we choose PDE solvers and, in particular, those from the group of geometric multigrid methods. To avoid having a focus too broad, we restrict ourselves to methods working on structured and patch‐structured grids. We face the challenge of handling a domain as complex as ours, while providing different abstractions for diverse user groups, by splitting our external DSL ExaSlang into multiple layers, each specifying different aspects of the final application. Layer 1 is designed to resemble LaTeX and allows inputting continuous equations and functions. Their discretization is expressed on layer 2. It is complemented by algorithmic components which can be implemented in a Matlab‐like syntax on layer 3. All information provided to this point is summarized on layer 4, enriched with particulars about data structures and the employed parallelization. Additionally, we support automated progression between the different layers. All ExaSlang input is processed by our jointly developed Scala code generation framework to ultimately emit C++ code. We particularly focus on how to generate applications parallelized with, e.g., MPI and OpenMP that are able to run on workstations and large‐scale cluster alike. We showcase the applicability of our approach by implementing simple test problems, like Poisson’s equation, as well as relevant applications from the field of computational fluid dynamics (CFD). In particular, we implement scalable solvers for the Stokes, Navier‐Stokes and shallow water equations (SWE) discretized using finite differences (FD) and finite volumes (FV). For the case of Navier‐Stokes, we also extend our implementation towards non‐uniform grids, thereby enabling static mesh refinement, and advanced effects such as the simulated fluid being non‐Newtonian and non‐isothermal.
format Online
id doab-20.500.12854ir-170177
institution Directory of Open Access Books
language eng
publishDate 2025
publishDateRange 2025
publishDateSort 2025
publisher FAU University Press
publisherStr FAU University Press
record_format ojs
spelling doab-20.500.12854ir-1701772025-12-16T05:09:56Z Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics Kuckuk, Sebastian Hochleistungsrechnen Domänenspezifische Programmiersprache Codegenerierung Partielle Differentialgleichung Numerische Strömungssimulation Mehrgitterverfahren thema EDItEUR::U Computing and Information Technology::UM Computer programming / software engineering thema EDItEUR::U Computing and Information Technology::UY Computer science::UYZ Human–computer interaction Solving partial differential equations (PDEs) is a fundamental challenge in many application domains in industry and academia alike. With increasingly large problems, efficient and highly scalable implementations become more and more crucial. Today, facing this challenge is more difficult than ever due to the increasingly heterogeneous hardware landscape. One promising approach is developing domain‐specific languages (DSLs) for a set of applications. Using code generation techniques then allows targeting a range of hardware platforms while concurrently applying domain‐specific optimizations in an automated fashion. The present work aims to further the state of the art in this field. As domain, we choose PDE solvers and, in particular, those from the group of geometric multigrid methods. To avoid having a focus too broad, we restrict ourselves to methods working on structured and patch‐structured grids. We face the challenge of handling a domain as complex as ours, while providing different abstractions for diverse user groups, by splitting our external DSL ExaSlang into multiple layers, each specifying different aspects of the final application. Layer 1 is designed to resemble LaTeX and allows inputting continuous equations and functions. Their discretization is expressed on layer 2. It is complemented by algorithmic components which can be implemented in a Matlab‐like syntax on layer 3. All information provided to this point is summarized on layer 4, enriched with particulars about data structures and the employed parallelization. Additionally, we support automated progression between the different layers. All ExaSlang input is processed by our jointly developed Scala code generation framework to ultimately emit C++ code. We particularly focus on how to generate applications parallelized with, e.g., MPI and OpenMP that are able to run on workstations and large‐scale cluster alike. We showcase the applicability of our approach by implementing simple test problems, like Poisson’s equation, as well as relevant applications from the field of computational fluid dynamics (CFD). In particular, we implement scalable solvers for the Stokes, Navier‐Stokes and shallow water equations (SWE) discretized using finite differences (FD) and finite volumes (FV). For the case of Navier‐Stokes, we also extend our implementation towards non‐uniform grids, thereby enabling static mesh refinement, and advanced effects such as the simulated fluid being non‐Newtonian and non‐isothermal. 2025-12-16T05:09:55Z 2025-12-16T05:09:55Z 2025-12-15T15:04:36Z 2019 book ONIX_20251215T160010_9783961472741_47 https://library.oapen.org/handle/20.500.12657/109167 9783961472741 9783961472734 https://directory.doabooks.org/handle/20.500.12854/170177 eng FAU Studien aus der Informatik open access image/jpeg Attribution 4.0 International https://library.oapen.org/bitstream/20.500.12657/109167/1/9783961472741.pdf FAU University Press 10.25593/978-3-96147-274-1 10.25593/978-3-96147-274-1 2c600dea-eece-4066-87be-da335e323fdb 9783961472741 9783961472734 243 Erlangen open access
spellingShingle Hochleistungsrechnen
Domänenspezifische Programmiersprache
Codegenerierung
Partielle Differentialgleichung
Numerische Strömungssimulation
Mehrgitterverfahren
thema EDItEUR::U Computing and Information Technology::UM Computer programming / software engineering
thema EDItEUR::U Computing and Information Technology::UY Computer science::UYZ Human–computer interaction
Kuckuk, Sebastian
Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title_full Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title_fullStr Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title_full_unstemmed Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title_short Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
title_sort automatic code generation for massively parallel applications in computational fluid dynamics
topic Hochleistungsrechnen
Domänenspezifische Programmiersprache
Codegenerierung
Partielle Differentialgleichung
Numerische Strömungssimulation
Mehrgitterverfahren
thema EDItEUR::U Computing and Information Technology::UM Computer programming / software engineering
thema EDItEUR::U Computing and Information Technology::UY Computer science::UYZ Human–computer interaction
topic_facet Hochleistungsrechnen
Domänenspezifische Programmiersprache
Codegenerierung
Partielle Differentialgleichung
Numerische Strömungssimulation
Mehrgitterverfahren
thema EDItEUR::U Computing and Information Technology::UM Computer programming / software engineering
thema EDItEUR::U Computing and Information Technology::UY Computer science::UYZ Human–computer interaction
url ONIX_20251215T160010_9783961472741_47
work_keys_str_mv AT kuckuksebastian automaticcodegenerationformassivelyparallelapplicationsincomputationalfluiddynamics