Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie mehr über die Grammatikregeln und Syntaxerweiterungen in C und C++ für OpenMP, ein paralleles Programmierframework.
C.1-Schreibweise
Die Grammatikregeln bestehen aus dem Namen für ein Nicht-Terminal, gefolgt von einem Doppelpunkt, gefolgt von Ersetzungsalternativen in separaten Zeilen.
Der Syntaktikausdrucksausdruckopt gibt an, dass der Ausdruck innerhalb des Ersetzungstyps optional ist.
Der syntaktische Ausdruck termoptseq entspricht term-seqopt mit den folgenden zusätzlichen Regeln:
term-seq:
Begriff
Begriff-SequenzBegriff
term-seq,
Ausdruck
C.2-Regeln
Die Notation wird in Abschnitt 6.1 des C-Standards beschrieben. In diesem Grammatikanhang sind die Erweiterungen für die Grammatik der Basissprache für die OpenMP C- und C++-Direktiven aufgeführt.
/* in C++ (ISO/IEC 14882:1998) */
statement-seq:
Anweisung
openmp-direktive
Statement-seq-Anweisung
statement-seq openmp-directive
/* in C90 (ISO/IEC 9899:1990) */
Anweisungsliste:
Anweisung
openmp-direktive
statement-list-Anweisung
Anweisungsliste OpenMP-Direktive
/* in C99 (ISO/IEC 9899:1999) */
Blockelement:
Erklärung
Anweisung
openmp-direktive
/* Standardanweisungen */
Aussage:
openmp-construct
openmp-construct:
Parallelkonstruktion
for-construct
Sections-Construct
Einzelkonstrukt
Parallel-für-Konstrukt
Parallelabschnittskonstrukt
Hauptkonstrukt
kritisches Konstrukt
Atomarer Konstrukt
geordnetes Konstrukt
openmp-direktive:
Barrieredirektive
Flush-Direktive
strukturierter Block:
Anweisung
Parallelkonstrukt:
Parallele Direktive-Blockstruktur
Paralleldirektive:
# pragma omp parallel
Parallel-Klauseloptseqneue-Zeile
Parallel-Klausel:
einzigartige-parallele-Klausel
data-clause
unique-parallel-clause:
if (
Ausdruck)
num_threads (
Ausdruck)
for-construct:
Iterationsanweisung für direktive
for-directive:
# pragma omp for
for-clauseoptseqnew-line
for-clause:
unique-for-clause
data-clause
nowait
unique-for-clause:
ordered
schedule (
Zeitplanart)
schedule (
Zeitplanart,
Ausdruck)
Zeitplanart:
static
dynamic
guided
runtime
sections-construct:
"sections-directive" Abschnittsumfang
sections-directive:
# pragma omp sections
sections-clauseoptseqnew-line
sections-clause:
data-clause
nowait
Abschnittsbereich:
{ section-sequence }
Abschnittssequenz:
Abschnitts-Direktiveoptstrukturierter Block
Abschnitte-Sequenz Abschnitt-Direktive Strukturierter-Block
Abschnittsdirektive:
# pragma omp section
Neue Zeile
Einzelkonstrukt:
Eindirektiver strukturierter Block
Einzeldirektive:
# pragma omp single
single-clauseoptseqnew-line
Einzelklausel:
data-clause
nowait
Parallel-für-Konstrukt:
Parallel-für-Direktive-Iterationsanweisung
Parallel-für-Direktive:
# pragma omp parallel for
Parallel-for-Clauseoptseqnew-line
Parallele-für-Klausel:
einzigartige-parallele-Klausel
unique-for-clause
data-clause
Parallelabschnittskonstrukt:
Parallelabschnitts-Direktive Abschnittsbereich
Parallelabschnittsdirektive:
# pragma omp parallel sections
parallel-sections-clauseoptseqnew-line
Parallelabschnittsklausel:
einzigartige-parallele-Klausel
data-clause
Master-Konstrukt:
strukturierter Master-Direktive-Block
Hauptdirektive:
# pragma omp master
Neue Zeile
kritisches Konstrukt:
Strukturierter Block mit kritischer Direktive
kritische Direktive:
# pragma omp critical
region-phraseoptnew-line
Regionsausdruck:
(Bezeichner)
Barrieredirektive:
# pragma omp barrier
Neue Zeile
Atomkonstrukt:
Ausdrucksanweisung für die Atomdirektive
Atomdirektive:
# pragma omp atomic
Neue Zeile
Flush-Direktive:
# pragma omp flush
flush-varsoptnew-line
Flush-Vars:
(Variablenliste)
geordnetes Konstrukt:
geordneter strukturierter Direktivenblock
ordered-directive:
# pragma omp ordered
Neue Zeile
/* Standarddeklarationen */
Deklaration:
threadprivate-direktive
threadprivate-direktive:
# pragma omp threadprivate (
Variable-Liste)
Neue Zeile
data-clause:
private (
Variable-Liste)
copyprivate (
Variable-Liste)
firstprivate (
Variable-Liste)
lastprivate (
Variable-Liste)
shared (
Variable-Liste)
default ( shared )
default ( none )
reduction (
Reduktionsoperator:
Variable-Liste)
copyin (
Variable-Liste)
Reduktionsoperator:
Eines der Folgenden: + \* - & ^ | && ||
/* in C */
Variable-Liste:
Bezeichner
Variable-Liste,
Bezeichner
/* in C++ */
Variable-Liste:
ID-Ausdruck
Variable-Liste,
ID-Ausdruck