Bonjour,
J'observe quelquechose de tres etrange avec openMP
- Je calcul de temp necessaire pour une boucle de calcul
- Ensuite je fais exactement la même chose mais avec une directive openMP du style "#pragma omp parallele for" pour 2 processeurs
- j'en déduis que en dessous de 1000 iterations (n), paralléliser cette boucle n'est plus pertinant.
example : (t1:sans threading, t2:avec 2 cores)
n=100000 t1=10s , t2 =5s
n=10000 t1=1s, t2=0.8s
n=1000 t1=0.1s, t2=0.1s
n=100 t1=0.01s t2=0.03s
- J'ajoute une condition "if(n<1000)" dans ma directive et là commence les problemes. Si n est inferieur à 1000, le calcul n'est effectivement plus parallélisé (j'ai verifié) , mais les temps de calcul correspondent aux t2 et non au t1 comme je m'attendais. J'ai l'impression que le temps de gestion de la directive est toujours le même, "if" ou pas "if". Mais alors à quoi bon cette directive "IF". Ou ai-je oublié quelquechose ?
Merci de vos suggestions
Partager