Megosztás a következőn keresztül:


C. OpenMP C és C++ szintaxis

Ismerje meg az OpenMP-hez készült C és C++ nyelvhelyességi szabályokat és szintaxiskiterjesztéseket, egy párhuzamos programozási keretrendszert.

C.1 jelölés

A nyelvhelyességi szabályok a nem terminálok nevét, majd kettőspontot, majd helyettesítő alternatívákat tartalmaznak külön sorokban.

A szintaktikai kifejezésopt azt jelzi, hogy a kifejezés nem kötelező a helyettesítés során.

Az optseq szintaktikai kifejezés egyenértékű a term-seqopt kifejezéssel a következő további szabályokkal:

term-seq:
kifejezés
term-seqkifejezés
term-seq,kifejezés

C.2 szabályok

A jelölést a C szabvány 6.1. szakasza ismerteti. Ez a nyelvhelyességi függelék az OpenMP C és C++ direktívák alapnyelvi nyelvhelyességi bővítményeit mutatja be.

/* C++ nyelven (ISO/IEC 14882:1998) */

statement-seq:
állítás
openmp-direktíva
statement-seq utasítássorozat
kifejezés-sorozat openmp-utasítás

/* C90-ben (ISO/IEC 9899:1990) */

utasításlista:
állítás
openmp-direktíva
kifejezés-lista kifejezés
utasításlista openmp-direktívája

/* a C99 szabványban (ISO/IEC 9899:1999) */

blokkelem:
nyilatkozat
állítás
openmp-direktíva

/* standard kijelentések */

utasítás:
openmp-construct

openmp-construct:
párhuzamos szerkezet
for-construct
szakaszok felépítése
egyetlen szerkezet
párhuzamos for ciklus
párhuzamos szakaszok-szerkezet
master-construct
kritikus szerkezet
atomszerkezet
rendezett szerkezet

openmp-direktíva:
akadály-irányelv
öblítési direktíva

strukturált blokk:
állítás

párhuzamos szerkezet:
párhuzamos direktíva strukturált blokk

párhuzamos irányelv:
# pragma omp parallel parallel-clauseoptseqnew-line

párhuzamos záradék:
egyedi-párhuzamos-záradék
data-clause

egyedi-párhuzamos-záradék:
if ( kifejezés)
num_threads ( kifejezés)

for-construct:
for-irányelv iterációs utasítás

irányelv esetében:
# pragma omp for for-clauseoptseqnew-line

for-clause:
unique-for-clause
data-clause
nowait

unique-for-clause:
ordered
schedule ( ütemezési típus)
schedule ( ütemezési típus,kifejezés)

ütemezési típus:
static
dynamic
guided
runtime

szakasz-szerkezet:
szakaszokra vonatkozó irányelv szakasz hatóköre

szakaszokra vonatkozó irányelv:
# pragma omp sections sections-clauseoptseqnew-line

szakaszok záradéka:
data-clause
nowait

szakasz hatóköre:
{ szakaszütemezés }

szakasz-sorozat:
section-directiveoptstructured-block
szakaszsorozat szakaszirányelv strukturált blokk

szakasz-irányelv:
# pragma omp section új sor

egyszerkezetes:
egyirányelmű strukturált blokk

egyetlen irányelv:
# pragma omp single egymondatosoptseqnew-line

egy záradék:
data-clause
nowait

parallel-for-konstrukció:
párhuzamos irányelv szerinti iteráció-utasítás

párhuzamos irányelv:
# pragma omp parallel for parallel-for-clauseoptseqnew-line

parallel-for-clause:
egyedi-párhuzamos-záradék
unique-for-clause
data-clause

párhuzamos szakaszok felépítése:
párhuzamos szakaszokra vonatkozó irányelv szakasz hatóköre

párhuzamos szakaszokra vonatkozó irányelv:
# pragma omp parallel sections parallel-sections-clauseoptseqnew-line

párhuzamos szakaszok záradéka:
egyedi-párhuzamos-záradék
data-clause

master-construct:
mester-irányelv strukturált blokk

fő irányelv:
# pragma omp master új sor

kritikus szerkezet:
kritikus irányelv strukturált blokkja

kritikus irányelv:
# pragma omp critical region-phraseoptnew-line

regionális kifejezés:
(azonosító)

akadály-irányelv:
# pragma omp barrier új sor

atomszerkezet:
atomi direktíva kifejezés-utasítás

atomi direktíva:
# pragma omp atomic új sor

öblítési irányelv:
# pragma omp flush flush-varsoptnew-line

flush-vars:
(változólista)

ordered-construct:
rendezett utasítás strukturált blokk

előírt irányelv:
# pragma omp ordered új sor

/* standard deklarációk */

deklaráció:
threadprivate-direktíva

szálprivát direktíva
# pragma omp threadprivate ( változólista)új sor

data-clause:
private ( változólista)
copyprivate ( változólista)
firstprivate ( változólista)
lastprivate ( változólista)
shared ( változólista)
default ( shared )
default ( none )
reduction ( csökkentési operátor:változólista)
copyin ( változólista)

csökkentési operátor:
 Az alábbiak egyike: + \* - & ^ | && ||

/* C-ben */

változólista:
azonosító
változólista,azonosító

/* C++ */

változólista:
id-expression
változólista,id-expression