Salutation,
encore une question en relation avec ce problème de parallélisation.
J'ai deux questions, qui en fait font partie du même problème, mais je vais décomposer ici pour simplifier.
J'ai une boucle séquentielle qui calcule un minimum
Ici, admettons que je veuille paralléliser cette boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(int i=0;i<N;i++){ if(min<val){ val= min } }
Je vais faire un pragma omp for private (min)
De cette façon chacun des threads va calculer un minimum local.
Par exemple T0 aura le min de i=0 à 5 / T1 de i=6 à N
En sortie de boucle il reste donc à récupérer le min entre T0 et T1.
Comment effectuer cette opération là ?
======================================
Seconde question, toujours lié
Ici si je parallélise ma boucle, en admettant que la réponse à la q1 soit ok et que mes T0 et T1 se synchronise bien sur leur propre min. Ici, j'ai en plus à me synchro sur la val2 qui correspond à celle affecte en même temps que le min.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for(int i=0;i<N;i++){ if(min<val){ val= min val2=i } }
De façon globale, la question est donc, comment synchroniser toutes mes variables en sorties.
Partager