GPU computing

SPH model has proven to be a suitable tool to reproduce a wide variety of astrophysical applications and hydrodynamic problems. The SPH method is capable of dealing with problems with free surface, deformable boundary, moving interface, wave propagation and solid simulation. However any of this applications requires an excessive computation time if a fully three dimensional simulation is carried out. In order to analyze some seconds of physical time, an implementation on a single CPU not only takes a large computational time that also provides results that do not revealed the enough physical information if millions of particles are not being simulated.

A short period of physical time takes a large computational time of simulation when the code runs on a single CPU and the number of particles to be considered is limited if parallel computing is not implemented. Graphics Processing Units (GPUs) are designed to treat a high data flow and to render pixels (at a few tens of frames per second). From a computational point of view they are highly efficient. Moreover, driven by the market of video games, their computing power has increased much faster than the one of CPUs.

floating-point-operations-per-second.png

Source: NVIDIA Cuda C Programming Guide

Graphics Processing Units (GPUs) appear as an accessible alternative to accelerate SPH models using a powerful parallel programming model where the graphics card is used as the execution device. This new technology makes possible the study of real-life engineering problems using SPH models.

The Compute Unified Device Architecture (CUDA) is a parallel programming framework and language for the multi-core computations on the GPU device which is effectively the C/C++ language with some extensions. Researchers and engineers of different fields are achieving high speedups implementing their codes with the CUDA language.  The parallel power computing of GPUs can be also applied to SPH methods where the same loops for each particle along the simulation can be parallelised.