Cross-platform programming model for many-core lattice Boltzmann simulations

10/22/2020
by   Jonas Lätt, et al.
0

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.

READ FULL TEXT

page 15

page 16

research
08/10/2022

Designing a 3D Parallel Memory-Aware Lattice Boltzmann Algorithm on Manycore Systems

Lattice Boltzmann method (LBM) is a promising approach to solving Comput...
research
12/14/2021

Matrix-free approaches for GPU acceleration of a high-order finite element hydrodynamics application using MFEM, Umpire, and RAJA

With the introduction of advanced heterogeneous computing architectures ...
research
06/24/2015

Ebb: A DSL for Physical Simulation on CPUs and GPUs

Designing programming environments for physical simulation is challengin...
research
12/12/2021

Scalable and Conservative Continuous Collision Detection for GPU

We introduce an algorithm for continuous collision detection (CCD) for l...
research
11/08/2016

A new GPU implementation for lattice-Boltzmann simulations on sparse geometries

We describe a high-performance implementation of the lattice Boltzmann m...
research
08/30/2021

Data-Oriented Language Implementation of Lattice-Boltzmann Method for Dense and Sparse Geometries

The performance of lattice-Boltzmann solver implementations usually depe...
research
01/27/2022

IMEXLBM 1.0: A Proxy Application based on the Lattice Boltzmann Method for solving Computational Fluid Dynamic problems on GPUs

The US Department of Energy launched the Exascale Computing Project (ECP...

Please sign up or login with your details

Forgot password? Click here to reset