Boucle Do parallele OpenMP
Bonjour,
J'ai un programme qui fonctionne bien avec un seul processeur.
Cependant, son temps d'execution est asse long alors j'aimerais utiliser les 2 processeurs de mon IBM. J'ai mis des instructions !$OMP DO / !$OMP END DO, cela fonctionne, les 2 cores tournent a 100% mais j'ai un probleme.
Voici un code pour illustrer mes propos :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Program test
integer i, compte
real f,a(1024)
compte=0
!$OMP PARALLELE
!$OMP DO
do i=1, 1024
a(compte+1)=f(i)
compte=compte+1
enddo
!$OMP END DO
!$OMP END PARALLELE
end program
Function f(nb)
integer nb
real f
f=(nb)**(1/2)
return
end function |
Mon probleme est que pour certaines valeurs, dans le tableau a() ne sont pas remplis (a la limite entre les taches gerées par chacun des procs?) et pourtant la valeur final de compt est bien 1024.
Pouriez vous m'aider a resoudre ce probleme, avez vous des idées?
Merci