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
- Directiva for
- Directiva parallel for
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_THREADS
variable 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
- num_threads (cláusula)
- función omp_set_num_threads
- función omp_set_dynamic
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
- Regiones paralelas
- función omp_set_dynamic
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
- función omp_set_nested