Lattice Boltzmann Solvers in DPC++
SankhyaSutra Labs builds massively high-fidelity multiphysics solvers that cater to design and optimization needs in the following sectors:
- Semiconductor process engineering
Their high-fidelity solvers are complemented by reduced-order models (based on machine learning) that quickly filter out candidates of interest in large dimensional-design parameter spaces. This session highlights SankhyaSutra Labs experience of porting a core solver to DPC++.
The lattice Boltzmann method simulates the movement and interaction of mesoscopic particles. It reproduces the continuum behavior of partial differential equations like the Fourier equation for thermal physics and Navier-Stokes equation for flow physics. The method involves manipulating vectors at each grid point of a lattice using repeated application of two kernels:
- A memory-bandwidth-limited advection kernel that performs a strided copy of variables along stencil directions
- A compute-limited collision kernel that involves numerous matrix operations on small vectors
SankhyaSutra Labs runs fined-tuned C++ implementations of these solvers on CPUs. Through the Intel® oneAPI Base Toolkit and HPC Toolkits, they converted C++ solver modules to DPC++ device kernels. This process uses performance benefits from heterogeneous nodes containing CPUs, GPUs, and, FPGAs while maintaining a unified codebase.