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é.