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 :
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.
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
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
Pouriez vous m'aider a resoudre ce probleme, avez vous des idées?
Merci
Partager