A comparison of the shared-memory parallel programming models OpenMP, OpenACC and Kokkos in the context of implicit solvers for high-order FEM

J. Eichstädt, M. Vymazal, D. Moxey, J. Peiró

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.