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 :
Je cherche à paralléliser cette boucle.
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
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.
Partager