Partager via


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 runtimede 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

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

  • clause num_threads
  • fonction omp_set_num_threads
  • fonction omp_set_dynamic

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 TRUEsur , 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

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 TRUEsur , le parallélisme imbriqué est activé. Si OMP_NESTED elle est définie FALSEsur , le parallélisme imbriqué est désactivé. La valeur par défaut est FALSE.

Exemple :

setenv OMP_NESTED TRUE

Renvoi