Bonjour,
j'ai une structure data :
data%val (real)
data%i (integer)

J'ai une boucle et à chaque itération, je met à jour le maximum de data%val et je stocke l'objet.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
do i = 1..10
calcul de data%val
if (Max%val < data%val) then
   Max = data
endif
Je cherche à paralléliser cette boucle.
Ma variable Max est partagée entre les threads.
J'obtiens des conflits notamment pour Max%i : je n'obtiens pas toujours la valeur attendu.
J'ai également essayé la clause !$OMP CRITICAL if ... endif !$OMP end critical
afin que cette portion de code ne soit exécutée que par un seul thread mais ca ne change rien.
Quelqu'un pourrait il m'éclairer quant à ce problème.
En espérant avoir été assez clair dans mes explications.
Merci d'avance.