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.

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;
Pour info: ne cherchez pas de sens à ce calcul, c'est just un test.
Je travaille en win64 ou Linux64 ubuntu avec gcc4.5