Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 diferenciam maiúsculas de minúsculas e podem ter espaço em branco à esquerda e à direita. 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 são ignorados. 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 será assumido, exceto quando a agenda for static. Para uma agenda static, o tamanho da parte padrão é definido pelo espaço de iteração do loop dividido pelo número de threads aplicados ao loop.
Exemplo:
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Referências-cruzadas
- para diretiva
- Diretiva parallel for
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_THREADSnão for especificada, - o valor especificado não for um número inteiro positivo, ou
- o valor for maior que o número máximo de threads que o sistema pode dar suporte.
Exemplo:
setenv OMP_NUM_THREADS 16
Referências-cruzadas
- cláusula num_threads
- função omp_set_num_threads
- funçãoomp_set_dynamic
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, a menos que esse paralelismo esteja habilitado ou desabilitado chamando a rotina da bibliotecaomp_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
- funçãoomp_set_nested