5.1.4 : CMakeLists.txt

Écrivons le fichier CMakeLists.txt :



On commence par définir le projet :
1
2
project(PERFORMANCE_WITH_NAN)
cmake_minimum_required(VERSION 3.0)
Ensuite, on inclue les macros que l'on vient d'écrire :
1
include(multiplePerfTestFunction.cmake)
On définie les différentes tailles de vecteurs qui seront les différents points de nos graphes :
1
set(CONFIG_FUNCTION "512, 1024, 2048, 2664, 4096, 5008, 10000")
Définissions ce qu'est un NaN (qui se signal) :
1
set(NAN_DEF "std::numeric_limits<float>::signaling_NaN()")
Définissions ce qu'est un infini :
1
set(INF_DEF "std::numeric_limits<float>::infinity()")
Définissons un nombre dénormalisé :
1
set(DENORM_DEF "std::numeric_limits<float>::denorm_min()")
Testons avec le plus petit nombre possible (si on le multiplie par lui même il sera dénormalisé) :
1
set(MIN_TO_DENORM_DEF "std::numeric_limits<float>::min()")
Appelons tous les tests pour le sinus (sin) :
1
2
allTestFunction("sin" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")
Appelons tous les tests pour le cosinus (cos) :
1
2
allTestFunction("cos" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")
Appelons tous les tests pour la tangente (tan) :
1
2
allTestFunction("tan" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")
Vous pouvez ajouter toutes les fonctions que vous voulez mais nous nous arrêterons ici pour ce cours

Le fichier CMakeLists.txt complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
project(PERFORMANCE_WITH_NAN)
cmake_minimum_required(VERSION 3.0)

include(multiplePerfTestFunction.cmake)

set(CONFIG_FUNCTION "512, 1024, 2048, 2664, 4096, 5008, 10000")

set(NAN_DEF "std::numeric_limits<float>::signaling_NaN()")

set(INF_DEF "std::numeric_limits<float>::infinity()")

set(DENORM_DEF "std::numeric_limits<float>::denorm_min()")

set(MIN_TO_DENORM_DEF "std::numeric_limits<float>::min()")

allTestFunction("sin" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")

allTestFunction("cos" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")

allTestFunction("tan" "${CONFIG_FUNCTION}" "${VECTORIZED_OPTION}"
		"${NAN_DEF}" "${INF_DEF}" "${DENORM_DEF}" "${MIN_TO_DENORM_DEF}")


Vous pouvez le télécharger ici.

Il n'a fallu que quelques lignes pour créer tous les tests dont nous avons besoin.