OpenMP : conflit calcul max
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:
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.