Accelerating high-order mesh generation with an architecture-independent programming model
Comput. Phys. Commun., vol. 229, pp. 36-53 (2018)
@article{eichstadt-2018,
title = {Accelerating high-order mesh generation with an architecture-independent programming model},
author = {Eichst\"adt, J. and Green, M. and Turner, M. and Peir\'o, J. and Moxey, D.},
journal = cpc,
volume = {229},
pages = {36-53},
year = {2018},
doi = {10.1016/j.cpc.2018.03.025},
url = {https://www.sciencedirect.com/science/article/pii/S0010465518300973},
abstract = {Heterogeneous manycore performance-portable programming models and libraries, such as \emph{Kokkos}, have been developed to facilitate portability and maintainability of high-performance computing codes and enhance their resilience to architectural changes. Here we investigate the suitability of the \emph{Kokkos} programming model for optimizing the performance of the high-order mesh generator \emph{NekMesh}, which has been developed to efficiently generate meshes containing millions of elements for industrial problem involving complex geometries. We describe the variational approach for \emph{a posteriori} high-order mesh generation employed within \emph{NekMesh} and its parallel implementation. We discuss its optimisation for modern manycore massively parallel shared-memory CPU and GPU platforms using \emph{Kokkos} and demonstrate that we achieve increased performance on multicore CPUs and accelerators compared with a native \emph{Pthreads} implementation. Further, we show that we achieve additional speedup and cost reduction by running on GPUs without any hardware-specific code optimisation.}
}
NekMesh generates meshes running to millions of elements, and the variational optimisation at its core is the expensive part. This paper ports that optimisation to the Kokkos programming model so that one implementation runs across multicore CPUs, accelerators and GPUs, and compares it against the native Pthreads implementation it replaces.
Abstract
Heterogeneous manycore performance-portable programming models and libraries, such as Kokkos, have been developed to facilitate portability and maintainability of high-performance computing codes and enhance their resilience to architectural changes. Here we investigate the suitability of the Kokkos programming model for optimizing the performance of the high-order mesh generator NekMesh, which has been developed to efficiently generate meshes containing millions of elements for industrial problem involving complex geometries. We describe the variational approach for a posteriori high-order mesh generation employed within NekMesh and its parallel implementation. We discuss its optimisation for modern manycore massively parallel shared-memory CPU and GPU platforms using Kokkos and demonstrate that we achieve increased performance on multicore CPUs and accelerators compared with a native Pthreads implementation. Further, we show that we achieve additional speedup and cost reduction by running on GPUs without any hardware-specific code optimisation.