Development and optimisations

Pierre Aubert




Introduction



This tutorial aims to highlight the performances we can obtain with several implementations : with object programmation and table programmation.

Prerequisites

Compiler

We are going to use the GCC-7 compiler (or GCC-8 or GCC-9 at least newer than GCC-6). If you are stucked with an other compiler or with an older version of GCC you can install it with Anaconda (in your tutorial environement) :
conda install gcc7


Follow with Docker

This lecture can be followed with a docker image :
docker pull gitlab-registry.in2p3.fr/cta-lapp/cours/development_and_optimisation/development-and-optimisation:latest
docker run -it -p 8888:8888 gitlab-registry.in2p3.fr/cta-lapp/cours/development_and_optimisation/development-and-optimisation:latest


Compilation tools

We will use CMake and Make to compile our programs.

Ploting tools

We will use Gnuplot to plot the results of our tests.

Optimisations

We are going to focus on the optimisation of single precision floating points computations. Basically, you can divide all the following speed-up by 2 to have the equivalent for double precision.

Correction

The correction sources can be found here.