4. Variables d’environnement
Ce chapitre décrit les variables d’environnement d’API C et C++ OpenMP (ou des mécanismes spécifiques à la plateforme similaires) qui contrôlent l’exécution du code parallèle. Les noms des variables d’environnement doivent être en majuscules. Les valeurs qui leur sont attribuées ne respectent pas la casse et peuvent avoir un espace blanc de début et de fin. Les modifications apportées aux valeurs après le démarrage du programme sont ignorées.
Les variables d’environnement sont les suivantes :
- OMP_SCHEDULE définit le type de planification d’exécution et la taille de bloc.
- OMP_NUM_THREADS définit le nombre de threads à utiliser pendant l’exécution.
- OMP_DYNAMIC active ou désactive l’ajustement dynamique du nombre de threads.
- OMP_NESTED active ou désactive le parallélisme imbriqué.
Les exemples de ce chapitre montrent uniquement comment ces variables peuvent être définies dans des environnements csh (Unix C Shell). Dans les environnements Korn shell et DOS, les actions sont similaires :
csh :
setenv OMP_SCHEDULE "dynamic"
Ksh:
export OMP_SCHEDULE="dynamic"
DOS :
set OMP_SCHEDULE="dynamic"
4.1 OMP_SCHEDULE
OMP_SCHEDULE
s’applique uniquement aux for
parallel for
directives qui ont le type runtime
de planification . Le type de planification et la taille de bloc pour toutes ces boucles peuvent être définis au moment de l’exécution. Définissez cette variable d’environnement sur n’importe quel type de planification reconnu et sur une chunk_size facultative.
Pour for
et parallel for
les directives qui ont un type de planification autre que runtime
, OMP_SCHEDULE
est ignoré. La valeur par défaut de cette variable d’environnement est définie par l’implémentation. Si la chunk_size facultative est définie, la valeur doit être positive. Si chunk_size n’est pas définie, une valeur de 1 est supposée, sauf lorsque la planification est static
. Pour une static
planification, la taille de bloc par défaut est définie sur l’espace d’itération de boucle divisé par le nombre de threads appliqués à la boucle.
Exemple :
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Références croisées
- Directive for
- Directive parallel for
4.2 OMP_NUM_THREADS
La OMP_NUM_THREADS
variable d’environnement définit le nombre par défaut de threads à utiliser pendant l’exécution. OMP_NUM_THREADS
est ignoré si ce numéro est explicitement modifié en appelant la routine de omp_set_num_threads
bibliothèque. Elle est également ignorée s’il existe une clause explicite num_threads
sur une parallel
directive.
La valeur de la variable d’environnement OMP_NUM_THREADS
doit être un entier positif. Son effet dépend du fait que l’ajustement dynamique du nombre de threads est activé. Pour obtenir un ensemble complet de règles sur l’interaction entre la variable d’environnement et l’ajustement OMP_NUM_THREADS
dynamique des threads, consultez la section 2.3.
Le nombre de threads à utiliser est défini par l’implémentation si :
- la
OMP_NUM_THREADS
variable d’environnement n’est pas spécifiée, - la valeur spécifiée n’est pas un entier positif, ou
- la valeur est supérieure au nombre maximal de threads que le système peut prendre en charge.
Exemple :
setenv OMP_NUM_THREADS 16
Références croisées
4.3 OMP_DYNAMIC
La OMP_DYNAMIC
variable d’environnement active ou désactive l’ajustement dynamique du nombre de threads disponibles pour l’exécution de régions parallèles. OMP_DYNAMIC
est ignoré lorsque l’ajustement dynamique est explicitement activé ou désactivé en appelant la routine de omp_set_dynamic
bibliothèque. Sa valeur doit être TRUE
ou FALSE
.
S’il OMP_DYNAMIC
est défini TRUE
sur , le nombre de threads utilisés pour l’exécution de régions parallèles peut être ajusté par l’environnement d’exécution afin de mieux utiliser les ressources système. Si OMP_DYNAMIC
la valeur est définie FALSE
, l’ajustement dynamique est désactivé. La condition par défaut est définie par l’implémentation.
Exemple :
setenv OMP_DYNAMIC TRUE
Références croisées
- Régions parallèles
- fonction omp_set_dynamic
4.4 OMP_NESTED
La OMP_NESTED
variable d’environnement active ou désactive le parallélisme imbriqué, sauf si le parallélisme imbriqué est activé ou désactivé en appelant la routine de omp_set_nested
bibliothèque. Si OMP_NESTED
elle est définie TRUE
sur , le parallélisme imbriqué est activé. Si OMP_NESTED
elle est définie FALSE
sur , le parallélisme imbriqué est désactivé. La valeur par défaut est FALSE
.
Exemple :
setenv OMP_NESTED TRUE
Renvoi
- Fonction omp_set_nested