4. Variabili di ambiente

Questo capitolo descrive le variabili di ambiente openMP C e C++ (o meccanismi simili specifici della piattaforma) che controllano l'esecuzione di codice parallelo. I nomi delle variabili di ambiente devono essere maiuscoli. I valori assegnati non fanno distinzione tra maiuscole e minuscole e possono avere spazi vuoti iniziali e finali. Le modifiche apportate ai valori dopo l'avvio del programma vengono ignorate.

Le variabili di ambiente sono le seguenti:

  • OMP_SCHEDULE imposta il tipo di pianificazione di runtime e le dimensioni del blocco.
  • OMP_NUM_THREADS imposta il numero di thread da usare durante l'esecuzione.
  • OMP_DYNAMIC abilita o disabilita la regolazione dinamica del numero di thread.
  • OMP_NESTED abilita o disabilita il parallelismo annidato.

Gli esempi in questo capitolo illustrano solo il modo in cui queste variabili possono essere impostate negli ambienti della shell C Unix (csh). Nelle shell Korn e negli ambienti DOS le azioni sono simili:

csh:
setenv OMP_SCHEDULE "dynamic"

Ksh:
export OMP_SCHEDULE="dynamic"

DOS:
set OMP_SCHEDULE="dynamic"

4.1 OMP_SCHEDULE

OMP_SCHEDULE si applica solo alle for direttive e parallel for che hanno il tipo di runtimepianificazione . Il tipo di pianificazione e le dimensioni del blocco per tutti questi cicli possono essere impostati in fase di esecuzione. Impostare questa variabile di ambiente su qualsiasi tipo di pianificazione riconosciuto e su un chunk_size facoltativo.

Per for le direttive e parallel for che hanno un tipo di pianificazione diverso da runtime, OMP_SCHEDULE viene ignorato. Il valore predefinito per questa variabile di ambiente è definito dall'implementazione. Se la chunk_size facoltativa è impostata, il valore deve essere positivo. Se chunk_size non è impostato, si presuppone un valore pari a 1, tranne quando la pianificazione è static. Per una static pianificazione, la dimensione predefinita del blocco viene impostata sullo spazio di iterazione del ciclo diviso per il numero di thread applicati al ciclo.

Esempio:

setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"

Riferimenti incrociati

4.2 OMP_NUM_THREADS

La OMP_NUM_THREADS variabile di ambiente imposta il numero predefinito di thread da usare durante l'esecuzione. OMP_NUM_THREADS viene ignorato se tale numero viene modificato in modo esplicito chiamando la routine della omp_set_num_threads libreria. Viene ignorato anche se è presente una clausola esplicita num_threads in una parallel direttiva.

Il valore della OMP_NUM_THREADS variabile di ambiente deve essere un numero intero positivo. L'effetto dipende dal fatto che la regolazione dinamica del numero di thread sia abilitata. Per un set completo di regole sull'interazione tra la variabile di ambiente e la OMP_NUM_THREADS regolazione dinamica dei thread, vedere la sezione 2.3.

Il numero di thread da usare è definito dall'implementazione se:

  • la OMP_NUM_THREADS variabile di ambiente non è specificata,
  • il valore specificato non è un numero intero positivo o
  • il valore è maggiore del numero massimo di thread che il sistema può supportare.

Esempio:

setenv OMP_NUM_THREADS 16

Riferimenti incrociati

  • clausola num_threads
  • funzione omp_set_num_threads
  • funzione omp_set_dynamic

4.3 OMP_DYNAMIC

La OMP_DYNAMIC variabile di ambiente abilita o disabilita la regolazione dinamica del numero di thread disponibili per l'esecuzione di aree parallele. OMP_DYNAMIC viene ignorato quando la regolazione dinamica è abilitata o disabilitata in modo esplicito chiamando la routine della omp_set_dynamic libreria. Il valore deve essere TRUE o FALSE.

Se OMP_DYNAMIC è impostato su TRUE, il numero di thread usati per l'esecuzione di aree parallele può essere regolato dall'ambiente di runtime per usare al meglio le risorse di sistema. Se OMP_DYNAMIC è impostato su FALSE, la regolazione dinamica è disabilitata. La condizione predefinita è definita dall'implementazione.

Esempio:

setenv OMP_DYNAMIC TRUE

Riferimenti incrociati

4.4 OMP_NESTED

La OMP_NESTED variabile di ambiente abilita o disabilita il parallelismo annidato a meno che il parallelismo annidato non sia abilitato o disabilitato chiamando la routine della omp_set_nested libreria. Se OMP_NESTED è impostato su TRUE, il parallelismo annidato è abilitato. Se OMP_NESTED è impostato su FALSE, il parallelismo annidato è disabilitato. Il valore predefinito è FALSE.

Esempio:

setenv OMP_NESTED TRUE

Riferimento incrociato

  • funzione omp_set_nested