Compartir a través de


4. Variables de entorno

En este capítulo se describen las variables de entorno de la API de OpenMP C y C++ (o mecanismos similares específicos de plataformas) que controlan la ejecución del código paralelo. Los nombres de las variables de entorno deben estar en mayúsculas. Los valores asignados a ellos no distinguen mayúsculas de minúsculas y pueden tener espacios en blanco iniciales y finales. Se omiten las modificaciones en los valores después de iniciar el programa.

Las variables de entorno son como sigue:

  • OMP_SCHEDULE establece el tipo de programación en runtime y el tamaño del fragmento.
  • OMP_NUM_THREADS establece el número de subprocesos que se usarán durante la ejecución.
  • OMP_DYNAMIC habilita o deshabilita el ajuste dinámico del número de subprocesos.
  • OMP_NESTED habilita o deshabilita el paralelismo anidado.

Los ejemplos de este capítulo solo muestran cómo se pueden establecer estas variables en entornos de shell de Unix C (csh). En los entornos de shell Korn y DOS, las acciones son similares:

csh:
setenv OMP_SCHEDULE "dynamic"

ksh:
export OMP_SCHEDULE="dynamic"

DOS:
set OMP_SCHEDULE="dynamic"

4.1 OMP_SCHEDULE

OMP_SCHEDULE solo se aplica a las directivas for y parallel for que tienen el tipo de programación runtime. El tipo de programación y el tamaño del fragmento de todos estos bucles se pueden establecer en el tiempo de ejecución. Establezca esta variable de entorno en cualquier tipo de programación reconocido y en un chunk_size opcional.

Para las directivas for y parallel for que tienen un tipo de programación distinto de runtime, se omite OMP_SCHEDULE. El valor predeterminado de esta variable de entorno se define en la implementación. Si se establece el chunk_size opcional, el valor debe ser positivo. Si se establece chunk_size, se supone un valor de 1, excepto cuando la programación es static. Para una programación static, el tamaño de fragmento predeterminado se establece en el espacio de iteración del bucle dividido por el número de subprocesos aplicados al bucle.

Ejemplo:

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

Referencias cruzadas

4.2 OMP_NUM_THREADS

La variable de entorno OMP_NUM_THREADS establece el número predeterminado de subprocesos que se usarán durante la ejecución. OMP_NUM_THREADS se omite si ese número se cambia explícitamente al llamar a la rutina de biblioteca omp_set_num_threads. También se omite si hay una cláusula explícita num_threads en una directiva parallel.

El valor de la variable de entorno OMP_NUM_THREADS debe ser un entero positivo. Su efecto depende de si se habilita el ajuste dinámico del número de subprocesos. Para obtener un conjunto completo de reglas sobre la interacción entre la OMP_NUM_THREADSvariable de entorno y el ajuste dinámico de subprocesos, consulte la sección 2.3.

El número de subprocesos que se usarán se define en la implementación si:

  • no se especifica la variable de entorno OMP_NUM_THREADS,
  • el valor especificado no es un entero positivo, o
  • el valor es mayor que el número máximo de subprocesos que el sistema puede admitir.

Ejemplo:

setenv OMP_NUM_THREADS 16

Referencias cruzadas

4.3 OMP_DYNAMIC

La variable de entorno OMP_DYNAMIC habilita o deshabilita el ajuste dinámico del número de subprocesos disponibles para la ejecución de regiones paralelas. OMP_DYNAMIC se omite cuando el ajuste dinámico está habilitado o deshabilitado explícitamente al llamar a la rutina de biblioteca omp_set_dynamic. Su valor debe ser TRUE o FALSE.

Si OMP_DYNAMIC se establece en TRUE, el entorno en runtime puede ajustar el número de subprocesos que se usan para ejecutar regiones paralelas con el fin de usar mejor los recursos del sistema. Si OMP_DYNAMIC se establece en FALSE, el ajuste dinámico está deshabilitado. La condición predeterminada se define en la implementación.

Ejemplo:

setenv OMP_DYNAMIC TRUE

Referencias cruzadas

4.4 OMP_NESTED

La variable de entorno OMP_NESTED habilita o deshabilita el paralelismo anidado a menos que el paralelismo anidado se habilite o deshabilite llamando a la rutina de biblioteca omp_set_nested. Si OMP_NESTED se establece en TRUE, el paralelismo anidado está habilitado. Si OMP_NESTED se establece en FALSE, el paralelismo anidado está deshabilitado. El valor predeterminado es FALSE.

Ejemplo:

setenv OMP_NESTED TRUE

Referencia cruzada