Question

Existe-t-il un moyen de changer le schedule tapez un pragma omp for boucle, en utilisant une fonction en C?j'essayais de faire setenv("OMP_SCHEDULE", "guided", 1); avant l'instruction parallèle, mais je ne suis pas complètement sûr que cela fonctionne, car les heures que j'obtiens de mon code sont très similaires.Ce que je voulais faire, c'est utiliser un for boucle changeant le type de programme pour comparer les horaires, donnant dynamic, auto , etc.comme une chaîne dans le setenv fonction.

Était-ce utile?

La solution

Vous pouvez utiliser planning (runtime) et définir OMP_SCHEDULE.

Depuis https://computing.llnl.gov/tutorials/openMP/

Exécution La décision de planification est différée jusqu'à l'exécution par la variable d'environnement OMP_Schedule.Il est illégal de spécifier une taille de bloc pour cette clause.

Permettez-moi juste de citer Hristo Iliev puisqu'il l'a déjà dit le mieux iciOpenMP :pour l'horaire

Étant donné que le code précompilé peut être exécuté sur différentes plates-formes, il serait bien que l'utilisateur final puisse contrôler la planification.C'est pourquoi OpenMP fournit la clause spéciale de planification (runtime).Avec la planification d'exécution, le type est extrait du contenu de la variable d'environnement OMP_SCHEDULE.Cela permet de tester différents types de planification sans recompiler l'application et permet également à l'utilisateur final d'affiner sa plateforme.

Autres conseils

Il n'existe pas de méthode standard pour procéder ainsi, mais si vous utilisez la bibliothèque Intel, vous pouvez utiliser le kmp_set_defaults() extension.Cela prend une chaîne d'options séparées par | caractères et remplace le comportement OpenMP par défaut.Dans votre exemple, kmp_set_defaults("OMP_SCHEDULE=guided") devrait accomplir ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top