Sailfish: a flexible multi-GPU implementation of the lattice Boltzmann method
arXiv:1311.2404 · doi:10.1016/j.cpc.2014.04.018
Abstract
We present Sailfish, an open source fluid simulation package implementing the lattice Boltzmann method (LBM) on modern Graphics Processing Units (GPUs) using CUDA/OpenCL. We take a novel approach to GPU code implementation and use run-time code generation techniques and a high level programming language (Python) to achieve state of the art performance, while allowing easy experimentation with different LBM models and tuning for various types of hardware. We discuss the general design principles of the code, scaling to multiple GPUs in a distributed environment, as well as the GPU implementation and optimization of many different LBM models, both single component (BGK, MRT, ELBM) and multicomponent (Shan-Chen, free energy). The paper also presents results of performance benchmarks spanning the last three NVIDIA GPU generations (Tesla, Fermi, Kepler), which we hope will be useful for researchers working with this type of hardware and similar codes.
36 pages, 15 figures
References in corpus (3)
Cited by in corpus (19)
- GPU accelerated Monte Carlo simulation of Brownian motors dynamics with CUDA
- Multi-GPU thermal lattice Boltzmann simulations using OpenACC and MPI
- Particle-resolved thermal lattice Boltzmann simulation using OpenACC on multi-GPUs
- Cross-platform programming model for many-core lattice Boltzmann simulations
- A GPU-accelerated package for simulation of flow in nanoporous source rocks with many-body dissipative particle dynamics
- XLB: A differentiable massively parallel lattice Boltzmann library in Python
- Performance portability of lattice Boltzmann methods for two-phase flows with phase change
- Towards a full solution of relativistic Boltzmann equation for quark-gluon matter on GPUs
- GPU-based acceleration of free energy calculations in solid state physics
- Memory-efficient Lattice Boltzmann Method for low Reynolds number flows
- Study of fluid displacement in 3D porous media with an improved multi-component pseudopotential lattice Boltzmann method
- Sparse geometries handling in lattice-Boltzmann method implementation for graphic processors
- TLBfind: a Thermal Lattice Boltzmann code for concentrated emulsions with FINite-size Droplets
- A Python Extension for the Massively Parallel Multiphysics Simulation Framework waLBerla
- Finite difference numerical method for the superlattice Boltzmann transport equation and case comparison of CPU(C) and GPU(CUDA) implementations
- GPU-accelerated algorithms for many-particle continuous-time quantum walks
- Fluid dynamics in porous media with Sailfish
- A progressive mesh method for physical simulations using lattice Boltzmann method on single-node multi-gpu architectures
- Adaptive Kinetic-Fluid Solvers for Heterogeneous Computing Architectures