5.3 Le premier résultat

Comme d'habitude, on créer un dossier build et on compile dedans :

mkdir build
cmake ..
-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /..../build
make
Scanning dependencies of target libcalcul
[ 50%] Building C object CMakeFiles/libcalcul.dir/calcul.c.o
Linking C static library liblibcalcul.a
[ 50%] Built target libcalcul
Scanning dependencies of target optimisationsgemm
[100%] Building C object CMakeFiles/optimisationsgemm.dir/main.c.o
Linking C executable optimisationsgemm
[100%] Built target optimisationsgemm

Ensuite on lance le programme :

./optimisationsgemm 
6.957980 cy/fma

Donc, pour le moment le programme fait un calcul en un peu moins de 7 cycles, ce qui est nul, il faut bien le dire.

Si on recompile tout ça en -O3 il faut changer une ligne du fichier CMakeLists.txt :

1
add_definitions(-Wall -O2)

par :

1
add_definitions(-Wall -O3)
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 
18.820729 cy/fma

Voilà un bel exemple du moment où la compilation en O3 fait un programme plus lent que O2 d'un facteur 3, ce qui est nul. Je vous rappelle que cette valeur veut dire qu'une opération est faite en un peut plus de 18 cycles. Ce qui est une catastrophe.

Tout ça pour dire que l'on va revenir en O2.