Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Saiba mais sobre as regras gramaticais e extensões de sintaxe em C e C++ para OpenMP, uma estrutura de programação paralela.
Notação C.1
As regras gramaticais consistem no nome de um não-terminal, seguido por dois pontos, seguido por alternativas de substituição em linhas separadas.
O termo de expressão sintáticaopt indica que o termo é opcional dentro da substituição.
A expressão sintática termooptseq é equivalente a term-seqopt com as seguintes regras adicionais:
termo-seq:
termo
termo-seqtermo
termo-seq,termo
C.2 Regras
A notação é descrita na secção 6.1 da norma C. Este apêndice gramatical mostra as extensões para a gramática da linguagem base para as diretivas OpenMP C e C++.
/* em C++ (ISO/IEC 14882:1998) */
enunciado-seq:
Declaração
diretiva OpenMP
declaração-seq declaração
statement-seq openmp-directive
/* em C90 (ISO/IEC 9899:1990) */
lista de declarações:
Declaração
diretiva OpenMP
declaração de lista de declarações
statement-list openmp-directive
/* em C99 (ISO/IEC 9899:1999) */
bloco de itens:
Declaração
Declaração
diretiva OpenMP
/* Declarações normalizadas */
Declaração:
openmp construct
openmp-construir:
construção paralela
for-construct
seções-estrutura
construção única
paralelo para construção
Construção de seções paralelas
mestre-construtor
conceito crítico
construção atómica
construção ordenada
OpenMP Directive:
directiva-barreira
diretiva de limpeza
bloco-estruturado:
Declaração
construção paralela:
bloco estruturado com diretiva paralela
Diretiva paralela:
# pragma omp parallel
cláusula paralelaoptseqnew-line
cláusula paralela:
Cláusula Única-Paralela
Cláusula de dados
Cláusula Única-Paralela:
if (
expressão)
num_threads (
expressão)
para-construir:
declaração de iteração do tipo 'for'
para a diretiva:
# pragma omp for
cláusula-foroptseqnova-linha
cláusula for:
Cláusula única
Cláusula de dados
nowait
Cláusula exclusiva:
ordered
schedule (
tipo de agendamento)
schedule (
,
expressão)
tipo de horário:
static
dynamic
guided
runtime
construção de seções:
secções-directiva secção-âmbito de aplicação
Seções-Diretiva:
# pragma omp sections
secções-cláusulasoptseqnew-line
secções-cláusulas:
Cláusula de dados
nowait
Âmbito da secção:
{ sequência de secção }
seqüência de seção:
secção-diretivaopçãobloco-estruturado
seção-seqüência-seção-diretiva estruturada-bloco
secção-directiva:
# pragma omp section
nova linha
construção única:
bloco estruturado de diretiva única
Diretiva única:
# pragma omp single
cláusula únicaoptseqnova linha
cláusula única:
Cláusula de dados
nowait
paralelo para construção:
declaração de iteração paralela para diretiva
Paralelamente à diretiva:
# pragma omp parallel for
cláusula para paralelizaçãooptseqnova-linha
cláusula de parallel-for:
Cláusula Única-Paralela
Cláusula única
Cláusula de dados
Construção de secções paralelas:
Secções paralelas-Directiva Âmbito de aplicação
Secção paralela-directiva:
# pragma omp parallel sections
cláusula de seções paralelasoptseqnew-line
Cláusula de secções paralelas:
Cláusula Única-Paralela
Cláusula de dados
mestre de construção:
bloco estruturado da diretiva-mestra
directiva-mestre:
# pragma omp master
nova linha
construção crítica:
Bloco estruturado de diretiva crítica
Directiva-crítica:
# pragma omp critical
região-fraseopçãonova-linha
região-frase:
(identificador)
diretiva-barreira:
# pragma omp barrier
nova linha
construção atómica:
declaração de expressão com diretiva atômica
diretiva atómica:
# pragma omp atomic
nova linha
diretiva de esvaziamento:
# pragma omp flush
flush-varsopçãonova-linha
limpar-variáveis:
(lista variável)
ordered-construct:
Bloco estruturado de diretiva ordenada
diretiva ordenada:
# pragma omp ordered
nova linha
/* Declarações normalizadas */
Declaração:
ThreadPrivate-diretiva
ThreadPrivate-Diretiva:
# pragma omp threadprivate (
lista) de variáveisnova linha
Cláusula de dados:
private (
lista de variáveis)
copyprivate (
lista de variáveis)
firstprivate (
lista de variáveis)
lastprivate (
lista de variáveis)
shared (
lista de variáveis)
default ( shared )
default ( none )
reduction (
operador: de reduçãolista de variáveis)
copyin (
lista de variáveis)
operador de redução:
Um dos seguintes: + \* - & ^ | && ||
/* em C */
lista de variáveis:
identificador
lista, de variáveisidentificador
/* em C++ */
lista de variáveis:
id-expressão
lista de variáveis,id-expressão