Bonjour,
Je test ma machine (processeur 6 coeurs+ hyperthreading: donc 12 threads possibles) en programmation openMP et j'ai des speedup plutôt décevant que je ne comprend pas trés bien. Avec l'example ci-dessous mon speedup plafonne entre 3 et 4. J'ai beau augmenter la taille de la boucle,N ,je n'obtient pas mieux. Quelqu'un connaitrait-il des raisons expliquant ces médiocres résultats.
Est-ce du à l'architecture du microprocesseir intel? Ou mes directives openMP ne sont pas obtinmisées.
Pour info: ne cherchez pas de sens à ce calcul, c'est just un test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 double e,*c,*d; int k,N=1e8; c= new double[N]; d= new double[N]; omp_set_num_threads(12); #pragma omp parallel for private(k) reduction(+:e) for (int i=0;i<N;i++) { k=i; d[k]=10.225*(double)i; c[k]=d[k]/1251.5; c[k]+=11.9+d[k]+d[k]/2568+d[k]*0.025; c[k]-=10.36-2.4*d[k]; e=e+cos(c[k]); } delete[] c; delete[] d;
Je travaille en win64 ou Linux64 ubuntu avec gcc4.5
Partager