Partilhar via


F. Novos recursos e esclarecimentos na versão 2.0

Este apêndice resume as principais alterações feitas a especificação do OpenMP C/C++ na movimentação da versão 1.0 para a versão 2.0. Os itens a seguir são os novos recursos adicionados a especificação:

  • Vírgulas são permitidas as diretivas do OpenMP (seção 2.1 na página 7).

  • Adição da num_threads cláusula. Essa cláusula permite que um usuário solicitar um número específico de segmentos de uma construção paralela (seção 2.3 na página 8).

  • O threadprivate diretiva foi estendida para aceitar variáveis estáticas de escopo de bloco (seção 2.7.1 na página 23).

  • Matrizes de comprimento variável de C99 são tipos completos e, portanto, podem ser especificados em qualquer lugar completos tipos são permitidos, por exemplo nas listas de private, firstprivate, e lastprivate cláusulas (seção 2.7.2 na página 25).

  • Uma variável private em uma região paralela pode ser marcado como particular novamente em uma diretiva de aninhados (seção 2.7.2.1 na página 25).

  • O copyprivate cláusula foi adicionada. Ele fornece um mecanismo para usar uma variável particular para difundir um valor de um membro de uma equipe para os outros membros. É uma alternativa ao uso de uma variável compartilhada para o valor ao fornecer uma variável compartilhada seria difícil (por exemplo, em uma recursão exigindo uma variável diferente em cada nível). O copyprivate cláusula só pode aparecer à único diretiva (seção 2.7.2.8 na página 32).

  • Adição de rotinas de cronometragem omp_get_wtick e omp_get_wtime semelhante para as rotinas MPI. Essas funções são necessárias para executar os intervalos de relógio de parede (seção 3.3.1 na página 44 e seção 3.3.2 na página 45).

  • Foi adicionado um apêndice com uma lista de comportamentos definidos na implementação OpenMP C/C++. Uma implementação é necessária para definir e documentar o seu comportamento nesses casos (Apêndice E na página 97).

  • As alterações a seguir servem para esclarecer ou corrigir a recursos na especificação da API OpenMP anterior para C/C++:

    • Esclarecido que o comportamento de omp_set_nested e omp_set_dynamic quando omp_in_parallel retorna diferente de zero é indefinida (seção 3.1.7 na página 39, e seção 3.1.9 na página 40).

    • Esclarecida a diretriz aninhamento quando paralelo aninhado é usado (seção 2,9 na página 33).

    • As funções de destruição de inicialização e o bloqueio do bloqueio podem ser chamadas em uma região paralela (seção 3.2.1 na página 42 e seção 3.2.2 na página 42).

    • Foram adicionados novos exemplos (Apêndice A na página 51).