Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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
Abschnitts-Klauseloptseqneue-Zeile
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-for-construct:
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