12.1.4.8 : Le CMakeLists.txt
Définissons l'alignement et les paramètres de nos événements à calibrer :
1 2 |
add_definitions(-DVECTOR_ALIGNEMENT=32 -DNB_EVENT=2 -DNB_SLICE=2) set(CONFIG_NB_PIXEL "64, 128, 256, 512, 1024, 2048") #, 3072, 4992, 10048 |
On ajoute TBB comme dépendance des programmes à tester
1 |
set(EXTRA_DEPENDENCIES TBB::tbb) |
Testons le programme de base :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
set(progSrc main.cpp) phoenix_compileAndRunExample(calibration_base_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationBaseseq" calibration_base_seq_O1 calibration_base_seq_O2 calibration_base_seq_O3 calibration_base_seq_Ofast ) phoenix_compileAndRunExample(calibration_base_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationBaseunseq" calibration_base_unseq_O1 calibration_base_unseq_O2 calibration_base_unseq_O3 calibration_base_unseq_Ofast ) phoenix_compileAndRunExample(calibration_base_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) |
Testons la vectorisation classique :
1 2 3 4 5 6 7 8 9 10 11 |
phoenix_compileAndRunExample(calibration_classic_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" main_classic.cpp) phoenix_plotPerf("calibrationBaseunseqVectorize" calibration_base_unseq_O2 calibration_base_unseq_O3 calibration_base_unseq_Ofast calibration_base_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationBaseSummary" calibration_base_seq_O1 calibration_base_seq_O3 calibration_base_unseq_O3 calibration_base_unseq_vectorize) |
Testons le calcul avec un masque :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
set(progSrc main_mask.cpp) phoenix_compileAndRunExample(calibration_mask_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskSeq" calibration_mask_seq_O1 calibration_mask_seq_O2 calibration_mask_seq_O3 calibration_mask_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskUnseq" calibration_mask_unseq_O1 calibration_mask_unseq_O2 calibration_mask_unseq_O3 calibration_mask_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskUnseqVectorize" calibration_mask_unseq_O2 calibration_mask_unseq_O3 calibration_mask_unseq_Ofast calibration_mask_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMaskSummary" calibration_mask_seq_O1 calibration_mask_seq_O3 calibration_mask_unseq_O3 calibration_mask_unseq_vectorize) |
Testons le calcul avec un autre masque :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
set(progSrc main_mask2.cpp) phoenix_compileAndRunExample(calibration_mask2_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2Seq" calibration_mask2_seq_O1 calibration_mask2_seq_O2 calibration_mask2_seq_O3 calibration_mask2_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask2_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2Unseq" calibration_mask2_unseq_O1 calibration_mask2_unseq_O2 calibration_mask2_unseq_O3 calibration_mask2_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask2_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2UnseqVectorize" calibration_mask2_unseq_O2 calibration_mask2_unseq_O3 calibration_mask2_unseq_Ofast calibration_mask2_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMask2Summary" calibration_mask2_seq_O1 calibration_mask2_seq_O3 calibration_mask2_unseq_O3 calibration_mask2_unseq_vectorize) |
Testons le calcul avec un masque et deux std::transform :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
set(progSrc main_mask2_transform.cpp) phoenix_compileAndRunExample(calibration_mask2t_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TSeq" calibration_mask2t_seq_O1 calibration_mask2t_seq_O2 calibration_mask2t_seq_O3 calibration_mask2t_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask2t_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TUnseq" calibration_mask2t_unseq_O1 calibration_mask2t_unseq_O2 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask2t_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TUnseqVectorize" calibration_mask2t_unseq_O2 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_Ofast calibration_mask2t_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMask2TSummary" calibration_mask2t_seq_O1 calibration_mask2t_seq_O3 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_vectorize) |
Testons le calcul en précalculant notre modulo :
1 2 |
set(progSrc main_precompute_modulo.cpp) phoenix_compileAndRunExample(calibration_precomputed_modulo_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) |
On planque des trucs sous la tapis, mais on en reparlera après :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# std::views::zip not available in G++ 11 and G++12 #set(progSrc main_mask2z_transform.cpp) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O1 "-O1 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O2 "-O2 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O3 "-O3 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_Ofast "-Ofast -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_plotPerf("calibrationMask2TzUnseq" #calibration_mask2tz_unseq_O1 #calibration_mask2tz_unseq_O2 #calibration_mask2tz_unseq_O3 #calibration_mask2tz_unseq_Ofast #calibration_mask2tz_unseq_vectorize #) |
Faisons un résumé des performances obtenues :
1 2 3 4 5 6 7 8 9 |
phoenix_plotPerf("calibrationVectorizeSummary" calibration_mask2_seq_O1 calibration_mask2_seq_O3 calibration_base_unseq_vectorize calibration_mask_unseq_vectorize calibration_mask2_unseq_vectorize calibration_mask2t_unseq_vectorize calibration_precomputed_modulo_unseq_vectorize calibration_classic_vectorize ) |
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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
add_definitions(-DVECTOR_ALIGNEMENT=32 -DNB_EVENT=2 -DNB_SLICE=2) set(CONFIG_NB_PIXEL "64, 128, 256, 512, 1024, 2048") #, 3072, 4992, 10048 set(EXTRA_DEPENDENCIES TBB::tbb) set(progSrc main.cpp) phoenix_compileAndRunExample(calibration_base_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationBaseseq" calibration_base_seq_O1 calibration_base_seq_O2 calibration_base_seq_O3 calibration_base_seq_Ofast ) phoenix_compileAndRunExample(calibration_base_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_base_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationBaseunseq" calibration_base_unseq_O1 calibration_base_unseq_O2 calibration_base_unseq_O3 calibration_base_unseq_Ofast ) phoenix_compileAndRunExample(calibration_base_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_classic_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" main_classic.cpp) phoenix_plotPerf("calibrationBaseunseqVectorize" calibration_base_unseq_O2 calibration_base_unseq_O3 calibration_base_unseq_Ofast calibration_base_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationBaseSummary" calibration_base_seq_O1 calibration_base_seq_O3 calibration_base_unseq_O3 calibration_base_unseq_vectorize) set(progSrc main_mask.cpp) phoenix_compileAndRunExample(calibration_mask_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskSeq" calibration_mask_seq_O1 calibration_mask_seq_O2 calibration_mask_seq_O3 calibration_mask_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskUnseq" calibration_mask_unseq_O1 calibration_mask_unseq_O2 calibration_mask_unseq_O3 calibration_mask_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMaskUnseqVectorize" calibration_mask_unseq_O2 calibration_mask_unseq_O3 calibration_mask_unseq_Ofast calibration_mask_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMaskSummary" calibration_mask_seq_O1 calibration_mask_seq_O3 calibration_mask_unseq_O3 calibration_mask_unseq_vectorize) set(progSrc main_mask2.cpp) phoenix_compileAndRunExample(calibration_mask2_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2Seq" calibration_mask2_seq_O1 calibration_mask2_seq_O2 calibration_mask2_seq_O3 calibration_mask2_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask2_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2Unseq" calibration_mask2_unseq_O1 calibration_mask2_unseq_O2 calibration_mask2_unseq_O3 calibration_mask2_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask2_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2UnseqVectorize" calibration_mask2_unseq_O2 calibration_mask2_unseq_O3 calibration_mask2_unseq_Ofast calibration_mask2_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMask2Summary" calibration_mask2_seq_O1 calibration_mask2_seq_O3 calibration_mask2_unseq_O3 calibration_mask2_unseq_vectorize) set(progSrc main_mask2_transform.cpp) phoenix_compileAndRunExample(calibration_mask2t_seq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_seq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::seq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TSeq" calibration_mask2t_seq_O1 calibration_mask2t_seq_O2 calibration_mask2t_seq_O3 calibration_mask2t_seq_Ofast ) phoenix_compileAndRunExample(calibration_mask2t_unseq_O1 "-O1 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_O2 "-O2 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_O3 "-O3 -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_compileAndRunExample(calibration_mask2t_unseq_Ofast "-Ofast -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TUnseq" calibration_mask2t_unseq_O1 calibration_mask2t_unseq_O2 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_Ofast ) phoenix_compileAndRunExample(calibration_mask2t_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) phoenix_plotPerf("calibrationMask2TUnseqVectorize" calibration_mask2t_unseq_O2 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_Ofast calibration_mask2t_unseq_vectorize calibration_classic_vectorize ) phoenix_plotPerf("calibrationMask2TSummary" calibration_mask2t_seq_O1 calibration_mask2t_seq_O3 calibration_mask2t_unseq_O3 calibration_mask2t_unseq_vectorize) set(progSrc main_precompute_modulo.cpp) phoenix_compileAndRunExample(calibration_precomputed_modulo_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++20 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) # std::views::zip not available in G++ 11 and G++12 #set(progSrc main_mask2z_transform.cpp) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O1 "-O1 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O2 "-O2 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_O3 "-O3 -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_Ofast "-Ofast -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_compileAndRunExample(calibration_mask2tz_unseq_vectorize "-O3 -ftree-vectorize -march=native -mtune=native -Wall -std=c++23 -DEXECUTION_POLICY=\"std::execution::unseq\"" "${CONFIG_NB_PIXEL}" ${progSrc}) #phoenix_plotPerf("calibrationMask2TzUnseq" #calibration_mask2tz_unseq_O1 #calibration_mask2tz_unseq_O2 #calibration_mask2tz_unseq_O3 #calibration_mask2tz_unseq_Ofast #calibration_mask2tz_unseq_vectorize #) phoenix_plotPerf("calibrationVectorizeSummary" calibration_mask2_seq_O1 calibration_mask2_seq_O3 calibration_base_unseq_vectorize calibration_mask_unseq_vectorize calibration_mask2_unseq_vectorize calibration_mask2t_unseq_vectorize calibration_precomputed_modulo_unseq_vectorize calibration_classic_vectorize ) |