F. Novos recursos e esclarecimentos na versão 2.0
Esse apêndice resume as principais alterações feitas à especificação do OpenMP C/C++ ao migrar da versão 1.0 para a versão 2.0. Os seguintes itens são recursos novos adicionados à especificação:
Vírgulas são permitidas em diretivas OpenMP.
Adição da cláusula
num_threads
. Essa cláusula permite que um usuário solicite um número específico de threads para um constructo paralelo.A diretiva threadprivate foi estendida para aceitar variáveis estáticas de escopo de bloco.
As Matrizes de Comprimento de Variável C99 são tipos completos e podem ser especificadas em qualquer lugar em que tipos completos são permitidos, como nas listas de cláusulas
private
,firstprivate
elastprivate
(confira a seção 2.7.2).Uma variável privada em uma região paralela pode ser marcada como privada novamente em uma diretiva aninhada.
A cláusula
copyprivate
que foi adicionada. Fornece um mecanismo para usar uma variável privada para difundir um valor de um membro de uma equipe para os outros membros. É uma alternativa usar uma variável compartilhada para o valor quando fornecer essa variável compartilhada seria difícil (por exemplo, em uma recursão que exige uma variável diferente em cada nível). A cláusula copyprivate só pode aparecer na diretivasingle
.Adição de rotinas de tempo omp_get_wtick e omp_get_wtime semelhantes às rotinas de MPI. Essas funções são necessárias para horários de relógio de parede.
Um apêndice com uma lista de comportamentos definidos pela implementação no OpenMP C/C++ foi adicionado. Uma implementação é necessária para definir e documentar seu comportamento nesses casos.
As seguintes alterações servem para esclarecer ou corrigir recursos na especificação anterior da API OpenMP para C/C++:
Esclarecido que o comportamento de omp_set_nested e omp_set_dynamic quando
omp_in_parallel
retorna não zero é indefinido.Esclarecido o aninhamento de diretiva quando um paralelo aninhado é usado.
As funções lock initialization e lock destruction podem ser chamadas em uma região paralela.
Novos exemplos foram adicionados ao apêndice A.