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 : 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
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