G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon
Download 1.46 Mb.
|
ParVychGafGal (1)
- Bu sahifa navigatsiya:
- 8.5. Ishni taqsimlash uchun OpenMP konstruktsiyalari
- Parallel for/DO tsikli.
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling