G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon


Download 1.46 Mb.
bet73/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   69   70   71   72   73   74   75   76   ...   85
Bog'liq
ParVychGafGal (1)

Shartlar shaxsiy, umumiy, standart. Quyidagi misollarni ko'rib chiqing:
#pragma omp parallel umumiy(a) xususiy(myid, x)
{
myid = omp_get_thread_num(); x = ish (myid);
agar(x <1,0)


a[myid] = x;
}
#pragma omp parallel standart(xususiy) umumiy(a)
{
myid = omp_get_thread_num(); x = ish (myid);
agar(x <1,0)


a[myid] = x;
123
Machine Translated by Google
}
Ikkala misolda ham har bir ip o'zgaruvchining x nusxasiga ega bo'ladi va myid. Agar bu o'zgaruvchilar xususiy deb e'lon qilinmasa, ular
qiymat ish vaqtida aniqlanmagan bo'ladi. x va o'zgaruvchilarning qiymati
myid kodning parallel qismini kiritishda aniqlanmagan va talab qilinadi

bu o'zgaruvchilarni ishga tushirish.


Ikkinchi misolda standart shart avtomatik ravishda belgilanadi kompilyatorda har biri uchun o'z x va myid o'zgaruvchilari bo'lishi kerak



oqim.

Misollardagi umumiy shart a massiv ekanligini aytadi



iplar o'rtasida taqsimlanadi va chiqish paytida uning qiymati saqlanib qoladi


kodning parallel qismi.




birinchi shaxsiy holat. Ushbu shartga to'g'ri keladigan o'zgaruvchilar

har bir ish zarrachasi uchun shaxsiy, lekin ip bajarilishidan oldin


ular qabul qilingan qiymat bilan ishga tushiriladi


oldingi ketma-ket kod. Shunday qilib, kirishdan oldin quyidagi misolda kodning parallel bo'limi, a o'zgaruvchining qiymati 10 edi. Bu xuddi shunday bu o'zgaruvchi kodning parallel qismini kiritishda ham qiymatga ega.
int myid, a; a = 10;
#pragma omp parallel standart (xususiy) \
birinchi xususiy
{
myid = omp_get_thread_num(); printf("Mavzu%d: a = %d\n", myid, a); a = myid;
printf("Mavzu%d: a = %d\n", myid, a);
}
Chiqish
124

Machine Translated by Google
Mavzu 1: a = 10
Mavzu 1: a = 1
Mavzu 2: a = 10
Mavzu 0: a = 10 3-mavzu: a = 10 3-mavzu: a = 3 Mavzu 2: a = 2
Mavzu 0: a = 0
8.5. Ishni taqsimlash uchun OpenMP konstruktsiyalari



Foydalanish
boshqalar
sharoitlar
Ko'proq
ingl
bo'ladi

ish bo'linmalari tuzilmalari misolida ko'rsatildi. Bunday


Faqat uchta tuzilma mavjud:
o parallel for/DO tsikli
o parallel qismlar
o Yagona qurilish
Parallel for/DO tsikli. Dizaynning maqsadi - tarqatish iplar ustidagi tsikl takrorlash.
#pragma omp parallel
{
Shaxsiy(i) ulashilgan(a,b) uchun #pragma omp
for(i=0; i<10000; i++) a[i] = a[i] + b[i]
}
Iplar uchun standart to'siq - bu pastadirning oxiri. Barcha mavzular

tsiklning oxiriga etib, ular hali tugatmaganlarni kutishadi, shundan keyin


asosiy ip bajarilishda davom etadi. uchun nowait shartidan foydalanish


loop, siz asosiy ipni bolaning tugashini kutmaslikka ruxsat berishingiz mumkin
iplar.
125

Machine Translated by Google
For/DO parallel sikl direktivasi quyidagi sintaksisga ega: For C/C++:

Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   69   70   71   72   73   74   75   76   ...   85




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling