L'horaire de la clause en OpenMP
J'ai un morceau de code (qui est une partie d'une application) que je suis en train de l'optimiser en utilisant OpenMP, essaie différentes politiques d'ordonnancement. Dans mon cas, j'ai remarqué que le schedule(RUNTIME)
clause a un avantage sur les autres (je ne précise pas la chunk_size). J'ai deux questions:
-
Quand je ne spécifiez pas chunk_size, est-il une différence entre
schedule(DYNAMIC)
etschedule(GUIDED)
? -
Comment OpenMP déterminer la valeur par défaut spécifique à l'implémentation de la planification qui est stocké dans le
OMP_SCHEDULE
variable?
J'ai appris que si aucun schéma de planification est spécifié, par défaut schedule(STATIC)
est utilisé. Donc si je ne modifie pas le OMP_SCHEDULE
variable, et l'utilisation schedule(RUNTIME)
dans mon programme, le schéma de planification être schedule(STATIC)
tout le temps ou OpenMP ont de façon intelligente, dynamique d'élaborer la planification de la stratégie et de la changer de temps en temps?
OriginalL'auteur Sayan | 2010-06-16
Vous devez vous connecter pour publier un commentaire.
Oui, si vous ne spécifiez pas un morceau de la taille puis DYNAMIQUE qui va faire la taille de tous les morceaux 1. Mais GUIDÉE permettra de faire le minimum de taille de bloc de 1, mais d'autres tailles de segment sera dépendant de l'implémentation. Vous pourriez peut-être comprendre votre situation par l'exécution de certaines expériences ou de la lecture de la documentation.
Que je comprends de la situation: si la variable d'environnement OMP_SCHEDULE n'est pas définie, alors le moteur d'exécution calendrier est dépendant de l'implémentation. Je pense qu'il serait très étrange que le même calendrier n'a pas été choisi pour chaque exécution du programme. Je ne crois pas que OpenMP, qui est un ensemble de directives de compilation, a de toute façon de comprendre les performances d'exécution de votre programme et de choisir un planning basé sur de telles informations.
J'ai obtenu cette réponse d'un utilisateur à l'OpenMP forum - openmp.org/forum/viewtopic.php?f=3&t=880
OpenMP, qui est un ensemble de directives de compilation, pourrait générer du code qui surveille le rendement et ajuste le calendrier, basé sur cette information. Je ne dis pas qu'il ne le fait actuellement, mais il ne peut pas être exclu parce que c'est simplement un ensemble de directives de compilation.
OriginalL'auteur High Performance Mark