A comparison of the shared-memory parallel programming models OpenMP, OpenACC and Kokkos in the context of implicit solvers for high-order FEM
Comput. Phys. Commun., vol. 255, pp. 107245 (2020)
@article{eichstadt-2020,
title = {A comparison of the shared-memory parallel programming models OpenMP, OpenACC and Kokkos in the context of implicit solvers for high-order FEM},
author = {Eichst\"adt, J. and Vymazal, M. and Moxey, D. and Peir\'o, J.},
journal = cpc,
volume = {255},
pages = {107245},
year = {2020},
abstract = {We consider the application of three performance-portable programming models in the context of a high-order spectral element, implicit time-stepping solver for the Navier-Stokes equations. We aim to evaluate whether the use of these models allows code developers to deliver high-performance solvers for computational fluid dynamics simulations that are capable of effectively utilising both many-core CPU and GPU architectures. Using the core elliptic solver for the Navier-Stokes equations as a benchmarking guide, we evaluate the performance of these models on a range of unstructured meshes and give guidelines for the translation of existing codebases and their data structures to these models.},
doi = {10.1016/j.cpc.2020.107245},
url = {https://davidmoxey.uk/assets/pubs/2020-cpc-comparison.pdf}
}
Writing a solver once and having it run well on both many-core CPUs and GPUs is what performance-portable programming models promise. This paper evaluates three of them, OpenMP, OpenACC and Kokkos, on the elliptic solver at the heart of a high-order implicit Navier-Stokes code, across a range of unstructured meshes, and gives guidelines for translating an existing codebase and its data structures to each.
Abstract
We consider the application of three performance-portable programming models in the context of a high-order spectral element, implicit time-stepping solver for the Navier-Stokes equations. We aim to evaluate whether the use of these models allows code developers to deliver high-performance solvers for computational fluid dynamics simulations that are capable of effectively utilising both many-core CPU and GPU architectures. Using the core elliptic solver for the Navier-Stokes equations as a benchmarking guide, we evaluate the performance of these models on a range of unstructured meshes and give guidelines for the translation of existing codebases and their data structures to these models.