4.3.3.2 : Le fichier CMakeLists.txt



Écrivons le fichier CMakeLists.txt :



On définit les sources de nos tests (les sources de la bibliothèque en fonctions intrinsèques INTRINSICS_PROPAGATION_SRC et le main) :
1
set(progIntrinsicsSrc ${INTRINSICS_PROPAGATION_SRC} main_intrinsics.cpp)


Nous allons faire des tests en (-O1, -O2, -O3, -Ofast). Nous n'avons pas besoin de -ftree-vectorize car nous forçons explicitement la vectorisation. Néanmoins, l'option -mavx2 (ou -mavx512f ou encore -msse4 suivant votre architecture) est obligatoire pour autoriser l'utilisation du bon jeu de données sinon le compilateur nous donnera une erreur :
1
2
3
4
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O1 "-O1 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O2 "-O2 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O3 "-O3 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_Ofast "-Ofast -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})


Enfin, nous allons comparer les différentes performances entre elles :
1
2
3
phoenix_plotPerf("grayscott_seqIntrinsics" perf_grayscott_seq_vectorize_O1 perf_grayscott_seq_vectorize_Ofast
					perf_grayscott_seq_intrinsics_O1 perf_grayscott_seq_intrinsics_O2
					perf_grayscott_seq_intrinsics_O3 perf_grayscott_seq_intrinsics_Ofast)


Le fichier CMakeLists.txt complet :

1
2
3
4
5
6
7
8
set(progIntrinsicsSrc ${INTRINSICS_PROPAGATION_SRC} main_intrinsics.cpp)
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O1 "-O1 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O2 "-O2 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_O3 "-O3 -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_compileAndRunExample(perf_grayscott_seq_intrinsics_Ofast "-Ofast -march=native -mtune=native -mavx2" "${CONFIG_GRAYSCOTT}" ${progIntrinsicsSrc})
phoenix_plotPerf("grayscott_seqIntrinsics" perf_grayscott_seq_vectorize_O1 perf_grayscott_seq_vectorize_Ofast
					perf_grayscott_seq_intrinsics_O1 perf_grayscott_seq_intrinsics_O2
					perf_grayscott_seq_intrinsics_O3 perf_grayscott_seq_intrinsics_Ofast)


Vous pouvez le télécharger ici.