Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Découvrez les règles de grammaire et les extensions de syntaxe en C et C++ pour OpenMP, une infrastructure de programmation parallèle.
Notation C.1
Les règles de grammaire se composent du nom pour un non-terminal, suivi d’un signe deux-points, suivi d’alternatives de remplacement sur des lignes distinctes.
L’expression syntaxique termopt indique que le terme est facultatif pour le remplacement.
L’expression syntaxique termoptseq équivaut à term-seqopt avec les règles supplémentaires suivantes :
term-seq :
terme
term-seqterm
term-seq,terme
Règles C.2
La notation est décrite dans la section 6.1 de la norme C. Cette annexe de la grammaire montre les extensions de la grammaire du langage de base pour les directives OpenMP C et C++.
/* en C++ (ISO/IEC 14882:1998) */
séquence d'instructions :
déclaration
openmp-directive
séquence d'instructions instruction
séquence-instructions directive-openmp
/* en C90 (ISO/IEC 9899:1990) */
statement-list :
déclaration
directive-openmp
declaration de liste d'instructions
liste-instructions directive-openmp
/* en C99 (ISO/IEC 9899:1999) */
élément-bloc :
déclaration
déclaration
directive-openmp
/* déclarations standard */
déclaration :
constructeur OpenMP
openmp-construct:
construction-parallèle
structure for
sections-construction
constructeur unique
constructeur parallel-for
construction-sections-parallèles
master-construct
construction-critique
construction-atomique
structure ordonnée
directive OpenMP :
directive-barrière
directive-de-rinçage
bloc-structuré :
déclaration
construction-parallèle :
parallèle-directive bloc-structuré
directive-parallèle :
# pragma omp parallel
clause-parallèleoptseqnouvelle-ligne
clause-parallèle :
clause-parallèle-unique
clause-données
clause-unique-parallèle :
if (
expression)
num_threads (
expression)
construction-for :
directive for instruction d'itération
for-directive :
# pragma omp for
for-clauseoptseqnouvelle-ligne
for-clause :
clause-unique-pour
clause-données
nowait
unique-pour-clause :
ordered
schedule (
type-planification)
schedule (
type-planification,expression)
type de programme :
static
dynamic
guided
runtime
sections de construction :
directive-sections périmètre-section
sections-directive :
# pragma omp sections
sections-clauseoptseqnouvelle-ligne
sections-clause :
clause-données
nowait
section d'étendue :
{ section-séquence }
section-séquence :
directive-sectionoptbloc-structuré
section-séquence directive-section bloc-structuré
section-directive :
# pragma omp section
nouvelle-ligne
construction-unique :
bloc structuré à directive unique
directive-unique :
# pragma omp single
clause simpleoptseqnouvelle-ligne
clause-unique :
clause-données
nowait
construction-parallèle-for :
directive pour parallèle instruction de boucle
directive-parallèle-for :
# pragma omp parallel for
parallèle-pour-clauseoptseqnouvelle-ligne
clause-for-parallèle :
clause-parallèle-unique
unique-pour-clause
clause-données
construction-sections-parallèles :
directive-sections-parallèles portée de la section
directive-sections-parallèles :
# pragma omp parallel sections
parallel-sections-clauseoptseqnouvelle-ligne
clause-sections-parallèles :
clause-parallèle-unique
clause-données
constructeur principal :
bloc structuré de directives principales
directive principale :
# pragma omp master
nouvelle-ligne
construction-critique :
directive critique bloc structuré
directive critique :
# pragma omp critical
expression-régionoptnouvelle-ligne
expression régionale :
(identificateur)
directive de barrière :
# pragma omp barrier
nouvelle-ligne
construction-atomique :
directive atomique instruction d'expression
directive-atomique :
# pragma omp atomic
nouvelle-ligne
directive de purge :
# pragma omp flush
vider-variablesoptionnouvelle-ligne
variables-vidage :
(liste-variables)
construction-ordonnée :
directive ordonnée de bloc structuré
directive-ordonnée :
# pragma omp ordered
nouvelle-ligne
/* déclarations standard */
declaration :
directive-threadprivate
directive privée au niveau du thread
# pragma omp threadprivate (
liste-variables)nouvelle-ligne
clause-données :
private (
liste-variables)
copyprivate (
liste-variables)
firstprivate (
liste-variables)
lastprivate (
liste-variables)
shared (
liste-variables)
default ( shared )
default ( none )
reduction (
opérateur-réduction:liste-variables)
copyin (
liste-variables)
opérateur de réduction :
Un des éléments suivants : + \* - & ^ | && ||
/* en C */
liste-variables :
identificateur
liste-variables,identificateur
/* en C++ */
liste-variables :
id-expression
liste-variables,expression-id