logo de l'IRMA logo UDS logo INRIA logo CNRS ← Back

Philippe Helluy

4 Software

In my career I developed numerical methods that have been implemented in various software projects.


It is a finite volume software written in C++ for solving the gas-water inside a submarine gas generator. The flow is solved by the finite volume method in axisymmetric geometry with special tricks for handling liquid-gas interface, boundary conditions and local time-stepping (see section 1.2.1 ). The software was sold to DCN (“Direction des Construction Navales”, French navy industry) in 2000.


CM2 is a parallel FORTRAN software for computing 3D multifluid flows. It is used for instance for wave breaking simulations. It contains other models for computing flows with phase transitions, MHD flows with high order local time-stepping.

EOLENS is a modification of CM2 which contains additional k ϵ turbulence models. It was sold in 2006 to the PRINCIPIA company.

4.3 DIWA

DIWA it is a research software for solving Vlasov-Maxwell equations by a Particle-In-Cell (PIC) and a Discontinous Galerkin (DG) methods. It was written with Anaïs Crestetto. It uses the OpenCL library for addressing GPU acceleration. It was used for simulating a medical X-ray generator. The principle is to create a strong electromagnetic field that will extract and accelerate electrons from the cathode. When the electrons hit the anode they produce X-rays. The software was awarded a prize at an AMD OpenCL international competition in 2011.

A video demonstrating the acceleration offered by the GPU, the evolution of the electromagnetic field and electrons can be seen at:


The video was created by using the possibilities of OpenCL to create on the fly OpenGL visualizations (in other words, the video card is computing, creating OpenGL images and capturing itself at the same time !)


CLBUBBLE is also a research OpenCL software. It implemented the method described in [39] for solving gas-liquid compressible flows. A video demonstrating a shock-bubble interaction can be seen at:


For creating a fast video the mesh resolution is rather coarse. It is possible to run CLBUBBLE on much finer meshes and with several GPUs (see section 1.2.1 ).


In developing the two previous research programs, we obtain good GPU accelerations. However, in the multi-GPU simulation we realize that it is very important to send the computation and memory transfer tasks in an asynchronous way. In addition, on a supercomputer node it is generally possible to access several GPU and multicore CPU. For efficiency it is thus important to launch operations on both architectures (hybrid computing). It becomes difficult to handle the task dependencies directly and therefore very important to use a runtime system. I decided to use StarPU http://starpu.gforge.inria.fr. StarPU is a runtime system library developed at Inria Bordeaux since 2006. It allows to describing the computational task in a more abstract way. The programmer has to split its simulation into several computation tasks. For each task he describes the data dependency: read, write or read/write mode. This is the dataflow paradigm. Each task can be programmed in several different ways (CPU, GPU, CUDA, OpenCL, etc.). The tasks are submitted in a correct order to StarPU. The runtime system then distributes them in parallel on the available resources in the most efficient way.

SCHNAPS (“Solveur Conservatif Hyperbolique Non-linéaire Appliqué aux PlaSmas”) is a research software project developed in my team for handling this kind of hybrid computing approach. http://schnaps.gforge.inria.fr. SCHNAPS is a generic solver for conservation laws.

CLAC is an industrial version of SCHNAPS with specific models developed for electromagnetic simulations. It is developed in collaboration with the software company AxesSim in Strasbourg. One of the objectives is to develop numerical tools for simulating electromagnetic objects (antenna, smartphones, captors) near to the human body: http://www.axessim.eu/category/news/