7.4.1 : Le calcul 1000x34

Testons nos différentes implémentations pour 1000 images avec 34 étapes intermédiaires.

Commençons par l'implémentation générique naïve (compilée en -O3) :
time ./Program/GrayScottReaction/Naive/naive_gray_scott  -r 1080 -c 1920 -n 1000 -e 34
simulateImage : nbRow = 1080, nbCol = 1920
[========================================================================================================================================================|100%] 0ss
Done

real 16m44,777s user 16m35,955s sys 0m5,012s


Testons l'implémentation générique en fonctions intrinsèques :
time ./Program/GrayScottReaction/Intrinsics/intrinsics_gray_scott  -r 1080 -c 1920 -n 1000 -e 34
simulateImage : nbImage = 1000, nbRow = 1080, nbCol = 1920
[========================================================================================================================================================|100%] 0ss
Done

real 8m40,833s user 8m32,248s sys 0m5,356s


Testons l'implémentation générique en fonctions intrinsèques par blocs :
time ./Program/GrayScottReaction/IntrinsicsLinkBlock/intrinsics_link_block_gray_scott  -r 1080 -c 1920 -n 1000 -e 34simulateImage : nbImage = 1000, nbRow = 1080, nbCol = 1920
[========================================================================================================================================================|100%] 0ss
Done

real 8m53,755s user 8m45,497s sys 0m5,408s
Ce coup-ci, les performances sont moins bonnes alors que sur la machine précédente elles étaient bien meilleures. Cela est du au fait que le préchargement des données est bien plus efficace sur les architectures récentes

Maintenant testons l'implémentation spécialisée pour des kernels 3x3 et vectorisée :
time ./Program/GrayScottReaction/Vectorized/vectorized_gray_scott_3x3  -r 1080 -c 1920 -n 1000 -e 34
simulateImage : nbImage = 1000, nbRow = 1080, nbCol = 1920
[========================================================================================================================================================|100%] 0s
Done

real 0m54,412s user 0m45,882s sys 0m4,997s
Clairement la spécialisation du kernel 3x3 aide beaucoup le compilateur. Donc, on perd en généricité mais on gagne en efficacité.