In OPTIMA one of the objectives is to develop the industrial use cases and the libraries using the programming environments of the OPTIMA framework so as to take full advantage of the underlying novel HPC system. The 4 industrial use cases from 3 distinct different application areas are:
- Underground analysis using Finite Element Methods (FEM)
- Lattice-Boltzmann particle-based computational fluid dynamics
- MESHFREE: particle-based computational fluid dynamics
- Robotics Simulations
In this post we will explain the application of SAILFISH-CFD – Lattice-Boltzmann particle-based computational fluid dynamics:
Fluid dynamics is a notoriously difficult part in simulation analysis. Only a few problems can be solved analytically. Computations often are approximated at a first degree of the turbulence models and do not catch the real physics in all space but only as a mean value. Especially when coupling more physics into the same Computational Fluid Dynamics (CFD) problem (for example sound waves, radiation etc.) the behavior can run into secondary order effects (due to oscillating waves that often form vortices). These effects need second degree approximations which require a lot of computational resources. This behavior is inherently nonlinear and difficult to understand quantitatively and it needs a huge quantity of equations and iterations in order to be solved.
As such, LBM-CFD is a free and high-quality CFD solver based on the Lattice Boltzmann method, and was chosen for acceleration on the JUMAX platform.
In the first part of the project the main work was focused on implementing a hybrid CPU-FPGA version of the solver, mainly based on an SMP (OpenMP) code and a specific lattice pattern: D2Q9. By instrumenting the kernel with run-time performance collecting libraries and running a number of different simulations using D2Q9 lattice, the main computational kernel has been isolated. The kernel has been then re-programmed in order to execute in a single FPGA CU the entire domain of the analysis. The performance results have shown that the speed of the computational kernel was boosted by a factor of 10.0, while the overall time by a 4.7x. All computations were run on the JUMAX host and one FPGA.
Given the initial results we will further focus on parallelizing on multiple FPGAs and refactoring the code in order to better parallelize the CPU related processing of the iterative steps.
EnginSoft develops vertical applications based on the SAILFISH-CFD code, especially for very complex models (i.e. pressure waves for air-frames) for complex parametrized studies that are infeasible with traditional approaches due to the complexity of communication that causes poor scalability.In the past decades Lattice Boltzmann method (LBM) for CFD applications has received increasing attention and progressed significantly in the fields of multiphase flows and turbulent flows (the two most demanding -in terms of computational resources- CFD problems).
CFD codes nowadays are becoming more and more demanding in computer resources due to the number of equations per cell that needs to be solved for coupled problems.
Lattice Boltzmann methods (LBM) The lattice Boltzmann method (LBM) models fluids with fictive particles performing propagation and collision processes over a discrete lattice mesh. LBM offers advantages over traditional Navier-Stokes equation solvers in the form of exceptional scalability, robust treatment of complex boundaries, and the capacity to take greater time steps.
The LBM code used is a general purpose fluid dynamics solver optimized for modern multi-core processors, especially Graphics Processing Units (GPUs). The solver is based on the Lattice Boltzmann Method, which is conceptually quite simple to understand and which scales very well with increasing computational resources.
Within the OPTIMA project the code will be ported and deployed in FPGA systems in order to accelerate the solution and benefit from multi FPGAs systems.