Pergunta

Existe uma maneira de mudar o schedule digite um pragma omp for loop, usando uma função em C?eu estava tentando fazer setenv("OMP_SCHEDULE", "guided", 1); antes da instrução paralela, mas não tenho certeza se funciona, pois os tempos que obtenho do meu código são muito semelhantes.O que eu queria fazer é usar um for loop alterando o tipo de agendamento para comparar os horários, dando dynamic, auto , etc.como uma string no setenv função.

Foi útil?

Solução

Você pode usar agendamento (tempo de execução) e definir OMP_SCHEDULE.

De https://computing.llnl.gov/tutorials/openMP/

Tempo de execução A decisão de agendamento é adiada até o tempo de execução pela variável de ambiente omp_schedule.É ilegal especificar um tamanho de bloco para esta cláusula.

Deixe-me citar Hristo Iliev, já que ele já disse isso melhor aquiOpenMP:para agendamento

Como o código pré-compilado pode ser executado em várias plataformas, seria bom se o usuário final pudesse controlar o agendamento.É por isso que o OpenMP fornece a cláusula especial de agendamento (tempo de execução).Com o agendamento de tempo de execução, o tipo é obtido do conteúdo da variável de ambiente OMP_SCHEDULE.Isso permite testar diferentes tipos de agendamento sem recompilar o aplicativo e também permite que o usuário final ajuste sua plataforma.

Outras dicas

Não existe uma maneira padrão de fazer isso, mas se você estiver usando a biblioteca da Intel, poderá usar o kmp_set_defaults() extensão.Isso leva uma série de opções separadas por | caracteres e substitui o comportamento padrão do OpenMP.No seu exemplo, kmp_set_defaults("OMP_SCHEDULE=guided") deveria realizar o que deseja.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top