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 DoneCe 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
real 8m53,755s user 8m45,497s sys 0m5,408s
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 DoneClairement la spécialisation du kernel 3x3 aide beaucoup le compilateur. Donc, on perd en généricité mais on gagne en efficacité.
real 0m54,412s user 0m45,882s sys 0m4,997s