Aracılığıyla paylaş


C. OpenMP C ve C++ dil bilgisi

Paralel bir programlama çerçevesi olan OpenMP için C ve C++ dil bilgisi kuralları ve söz dizimi uzantıları hakkında bilgi edinin.

C.1 gösterimi

Dil bilgisi kuralları, terminal olmayan bir adın adını, ardından iki nokta üst üste ve ardından ayrı satırlardaki değiştirme alternatiflerini içerir.

Söz dizimsel ifade terimiopt , terimin değiştirme içinde isteğe bağlı olduğunu gösterir.

söz dizimsel ifade terimioptseq, aşağıdaki ek kurallarla term-seqopt ile eşdeğerdir:

term-seq:
terim
terim-seqterimi
terim-seq,terimi

C.2 kuralları

Gösterimi C standardının 6.1. bölümünde açıklanmıştır. Bu dil bilgisi eki, OpenMP C ve C++ yönergeleri için temel dil dil bilgisi uzantılarını gösterir.

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

statement-seq:
beyanat
openmp-yönergesi
statement-seq deyimi
statement-seq openmp-yönergesi

/* C90'da (ISO/IEC 9899:1990) */

deyim-listesi:
beyanat
openmp-yönergesi
statement-list deyimi
statement-list openmp-yönergesi

/* in C99 (ISO/IEC 9899:1999) */

block-item:
beyanname
beyanat
openmp-yönergesi

/* standart deyimleri */

deyimi:
openmp-construct

openmp-construct:
paralel yapı
for-construct
sections-construct
tek yapılı
yapı için paralel
paralel-bölümler-yapısı
master-construct
kritik yapı
atomik yapı
sıralı yapı

openmp-yönergesi:
barrier-yönergesi
flush-yönergesi

yapılandırılmış blok:
beyanat

parallel-construct:
paralel yönergeli yapılandırılmış blok

parallel-yönergesi:
# pragma omp parallel parallel-yan tümcesioptseqnew-line

parallel-yan tümcesi:
unique-parallel yan tümcesi
data-yan tümcesi

unique-parallel-yan tümcesi:
if ( ifade)
num_threads ( ifade)

for-construct:
for-directive yineleme-deyimi

for-directive:
# pragma omp for for-clauseoptseqnew-line

for-clause:
unique-for-clause
data-yan tümcesi
nowait

unique-for-clause:
ordered
schedule ( zamanlama türü)
schedule ( zamanlama türü,ifade )

program türü:
static
dynamic
guided
runtime

sections-construct:
bölümler-yönergesi bölüm-kapsamı

sections-yönergesi:
# pragma omp sections sections-yan tümcesioptseqnew-line

sections-yan tümcesi:
data-yan tümcesi
nowait

bölüm kapsamı:
{ section-sequence }

bölüm dizisi:
bölüm-yönergeseçenekyapılandırılmış blok
bölüm-dizisi bölüm-yönergesi yapılandırılmış-blok

section-yönergesi:
# pragma omp section yeni satır

tek yapılı:
tek yönergeli yapılandırılmış blok

tek yönergeli:
# pragma omp single tek yan tümcesioptseqnew-line

tek yan tümcesi:
data-yan tümcesi
nowait

yapı için paralel:
parallel-for-directive yineleme-deyimi

parallel-for-yönergesi:
# pragma omp parallel for parallel-for-yan tümcesioptseqnew-line

parallel-for-yan tümcesi:
unique-parallel yan tümcesi
unique-for-clause
data-yan tümcesi

paralel-bölümler-konstrüksiyonu:
paralel-bölümler-yönergesi bölüm-kapsamı

parallel-sections-yönergesi:
# pragma omp parallel sections parallel-sections-yan tümcesioptseqnew-line

parallel-sections-yan tümcesi:
unique-parallel yan tümcesi
data-yan tümcesi

master-construct:
ana-yönerge yapılandırılmış-blok

master-yönergesi:
# pragma omp master yeni satır

critical-construct:
kritik yönergeli yapılandırılmış blok

critical-yönergesi:
# pragma omp critical bölge tümceciğiyeni satırı seç

bölge tümceciği:
(tanımlayıcı)

barrier-directive:
# pragma omp barrier yeni satır

atomic-construct:
atomik-direktif ifade-ifadesi

atomic-yönergesi:
# pragma omp atomic yeni satır

flush-yönergesi:
# pragma omp flush flush-varsyeni satırı seç

flush-vars:
(değişken listesi)

ordered-construct:
siparişli-talimât yapılandırılmış-blok

ordered-yönergesi:
# pragma omp ordered yeni satır

/* standart bildirimler */

bildirim:
threadprivate-yönergesi

threadprivate-yönergesi:
# pragma omp threadprivate ( değişken listesi)yeni satır

data-clause:
private ( değişken listesi)
copyprivate ( değişken listesi)
firstprivate ( değişken listesi)
lastprivate ( değişken listesi)
shared ( değişken listesi)
default ( shared )
default ( none )
reduction ( azaltma işleci:değişken listesi)
copyin ( değişken listesi)

azaltma işleci:
 Bunlardan biri: + \* - & ^ | && ||

C'de /* */

değişken listesi:
tanımlayıcı
değişken listesi,tanımlayıcısı

C++ içinde /* */

değişken listesi:
id-ifadesi
değişken-listesi,id-ifadesi