Compartilhar via


4. Variáveis de ambiente

Este capítulo descreve as variáveis de ambiente API C e C++ do OpenMP (ou mecanismos semelhantes específicos da plataforma) que controlam a execução de código paralelo. Os nomes das variáveis de ambiente devem estar em letras maiúsculas. Os valores atribuídos a eles não são sensíveis a maiúsculas e minúsculas e podem ter espaços em branco no início e no fim. As modificações nos valores após o início do programa são ignoradas.

As variáveis de ambiente são as seguintes:

  • OMP_SCHEDULE define o tipo de agenda em tempo de execução e o tamanho da parte.
  • OMP_NUM_THREADS define o número de threads a serem usados durante a execução.
  • OMP_DYNAMIC habilita ou desabilita o ajuste dinâmico do número de threads.
  • OMP_NESTED habilita ou desabilita o paralelismo aninhado.

Os exemplos neste capítulo demonstram apenas como essas variáveis podem ser definidas em ambientes de shell do Unix C (csh). Nos ambientes Korn shell e DOS, as ações são semelhantes:

csh:
setenv OMP_SCHEDULE "dynamic"

Ksh:
export OMP_SCHEDULE="dynamic"

DOS:
set OMP_SCHEDULE="dynamic"

4.1 OMP_SCHEDULE

OMP_SCHEDULE aplica-se somente a diretivas for e parallel for que têm o tipo runtime de agenda. O tipo de agenda e o tamanho da parte para todos esses loops podem ser definidos em tempo de execução. Defina essa variável de ambiente para qualquer tipo de agenda reconhecida e para um chunk_size opcional.

Para as diretivas for e parallel for que têm um tipo de agenda diferente de runtime, OMP_SCHEDULE é ignorado. O valor padrão para essa variável de ambiente é definido pela implementação. Se o chunk_size opcional for definido, o valor deverá ser positivo. Se chunk_size não for definido, um valor de 1 é assumido, exceto quando o cronograma for static. Para um cronograma static, o tamanho do bloco padrão é definido pelo espaço de iteração do loop dividido pelo número de threads atribuídos ao loop.

Exemplo:

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

Referências cruzadas

4.2 OMP_NUM_THREADS

A variável de ambiente OMP_NUM_THREADS define o número padrão de threads a serem usados durante a execução. OMP_NUM_THREADS será ignorado se esse número for explicitamente alterado chamando a rotina da biblioteca omp_set_num_threads. Também será ignorado se houver uma cláusula explícita num_threads em uma diretiva parallel.

O valor da variável de ambiente OMP_NUM_THREADS deve ser um número inteiro positivo. Seu efeito depende se o ajuste dinâmico do número de threads está habilitado. Para um conjunto abrangente de regras sobre a interação entre a variável de ambiente OMP_NUM_THREADS e o ajuste dinâmico de threads, consulte a seção 2.3.

O número de threads a serem usados será definido pela implementação se:

  • a variável de ambiente OMP_NUM_THREADS não é especificada.
  • o valor especificado não for um número inteiro positivo, ou
  • o valor é maior que o número máximo de threads que o sistema pode suportar.

Exemplo:

setenv OMP_NUM_THREADS 16

Referências cruzadas

4.3 OMP_DYNAMIC

A variável de ambienteOMP_DYNAMIC habilita ou desabilita o ajuste dinâmico do número de threads disponíveis para a execução de regiões paralelas. OMP_DYNAMIC é ignorado quando o ajuste dinâmico é explicitamente habilitado ou desabilitado chamando a rotina da bibliotecaomp_set_dynamic. Seu valor deve ser TRUE ou FALSE.

Se OMP_DYNAMIC estiver definido como TRUE, o número de threads usados para executar regiões paralelas poderá ser ajustado pelo ambiente de runtime para melhor usar os recursos do sistema. Se OMP_DYNAMIC estiver definido como FALSE, o ajuste dinâmico será desabilitado. A condição padrão é definida pela implementação.

Exemplo:

setenv OMP_DYNAMIC TRUE

Referências cruzadas

4.4 OMP_NESTED

A variável de ambiente OMP_NESTED habilita ou desabilita o paralelismo aninhado, exceto quando este paralelismo é habilitado ou desabilitado por meio de chamada à função de biblioteca omp_set_nested. Se OMP_NESTED estiver definido como TRUE, o paralelismo aninhado está habilitado. Se OMP_NESTED estiver definido como FALSE, o paralelismo aninhado está desabilitado. O valor padrão é FALSE.

Exemplo:

setenv OMP_NESTED TRUE

Referência cruzada