  We present a novel, hardware-agnostic implementation strategy for lattice
Boltzmann (LB) simulations, which yields massive performance on homogeneous and
heterogeneous many-core platforms. Based solely on C++17 Parallel Algorithms,
our approach does not rely on any language extensions, external libraries,
vendor-specific code annotations, or pre-compilation steps. Thanks in
particular to a recently proposed GPU back-end to C++17 Parallel Algorithms, it
is shown that a single code can compile and reach state-of-the-art performance
on both many-core CPU and GPU environments for the solution of a given non
trivial fluid dynamics problem. The proposed strategy is tested with six
different, commonly used implementation schemes to test the performance impact
of memory access patterns on different platforms. Nine different LB collision
models are included in the tests and exhibit good performance, demonstrating
the versatility of our parallel approach. This work shows that it is less than
ever necessary to draw a distinction between research and production software,
as a concise and generic LB implementation yields performances comparable to
those achievable in a hardware specific programming language. The results also
highlight the gains of performance achieved by modern many-core CPUs and their
apparent capability to narrow the gap with the traditionally massively faster
GPU platforms. All code is made available to the community in form of the
open-source project "stlbm", which serves both as a stand-alone simulation
software and as a collection of reusable patterns for the acceleration of
pre-existing LB codes.
