Lorsque l'exécution du programme atteint une directive omp sections
, les segments de programme définis par la directive omp section
suivante sont distribués pour une exécution parallèle parmi les threads disponibles.Le thread d'origine exécute-t-il un des segments de programme définis par les directives `omp section`?
est le fil d'origine, à savoir le fil qui se déroule avant d'atteindre
omp sections
, l'un des fils qui exécutent l'un des segments de programme définies par les directivesomp section
?Après que tous les threads aient fini d'exécuter leurs segments de programme définis par les directives
omp section
, le thread d'origine sera-t-il le seul à exister et à continuer l'exécution?
Dans l'exemple suivant, quel thread est le thread d'origine, 1 ou 2 ou autre chose?
#pragma omp sections
{
# pragma omp section
{ printf("thread 1 here\n"); }
# pragma omp section
{ printf("thread 2 here\n"); }
}
Merci.
Merci. Comment obtenez-vous le numéro d'identification de thread du thread actuel? – Ben
'omp_get_thread_num()' – Zulan
Y at-il une sorte de bouton OpenMP à tourner pour "encourager" le maître à exécuter l'une des sections? Il est moins qu'optimal que le thread maître soit suspendu (et abandonne volontairement sa tranche CPU) pour laisser les threads de travail exécuter chaque section, puisque le maître fait une jointure à la fin du bloc parallèle. – igaz