Selon la spécification OpenMP, OMP_CANCELLATION
doit être défini sur true pour que les instructions telles que #pragma omp cancel
puissent avoir un effet. J'ai besoin que la fonctionnalité d'annulation soit activée pour que mon programme fonctionne correctement (un bouton d'abandon de GUI qui déclenche l'annulation, si c'est important).Activer l'annulation depuis le programme interne
J'ai essayé de mettre OMP_CANCELLATION
à partir du programme avec
setenv("OMP_CANCELLATION", "true", 1);
la première ligne du programme, mais cette déclaration n'a aucun effet. Si je manuellement export OMP_CANCELLATION=true
d'un shell à l'extérieur avant d'exécuter le programme, l'annulation fonctionne correctement.
Est-il possible d'activer l'annulation depuis le programme sans que cette variable d'environnement ne soit définie de manière externe?
Peut-être que la valeur est interrogée avant même que 'main()' s'exécute? Il y a un fil [ici] (https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/700267) qui suggère au moins que ce n'est pas possible (mais il s'agit de FORTRAN). –
Il peut être utile de poser votre question sur le forum OpenMP ARB http://forum.openmp.org/forum/viewforum.php?f=3 de cette façon, il y a une chance que les personnes impliquées dans le standard remarquent cette omission ... –