5.3.2 Utilisation de mathématiques rapide

Nous allons utiliser une option supplémentaire pour utiliser des mathématiques plus avancé. Il est possible de faire une multiplication et une addition en même temps si ces deux opérations sont indépendantes. Ou encore faire un c += a*b en faisant l'addition et la multiplication ensemble.

On va remplacer :

1
add_definitions(-Wall -O2)

par :

1
add_definitions(-Wall -O2 -ffast-math)

Et on recompile :

make
-- Configuring done
-- Generating done
-- Build files have been written to: /...../build
[ 50%] Building C object CMakeFiles/libcalcul.dir/calcul.c.o
Linking C static library liblibcalcul.a
[ 50%] Built target libcalcul
[100%] Building C object CMakeFiles/optimisationsgemm.dir/main.c.o
Linking C executable optimisationsgemm
[100%] Built target optimisationsgemm

Si on exécute le programme on obtient ceci :

./optimisationsgemm 
3.739698 cy/fma

Je vous rappel que précédemment nous étions à 3.716025 cy/fma, nous avons donc perdu, mais pas beaucoup.