G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon
Download 1.46 Mb.
|
ParVychGafGal (1)
- Bu sahifa navigatsiya:
- Bu erda qaramlik mavjud. for(i=1; i Bayonot 1
- Bayonot 2 Faqat umumiy ozgaruvchilar malumotlarga bogliqlikni yaratishi mumkin. Natija.
omp_set_num_threads() muhit o'zgaruvchisining qiymatini qayta yozadi Ishga tushirishdan oldin sozlanishi mumkin bo'lgan OMP_NUM_THREADS dasturlari.
8.6. OpenMP-da ma'lumotlarga bog'liqlik Loop parallel bo'lishi uchun, bu ish tsiklning bir iteratsiyasida bajarilgan ish boshqasiga bog'liq bo'lmasligi kerak iteratsiyalar. Boshqacha qilib aytganda, tsiklning takrorlanishi mustaqil bo'lishi kerak. Ba'zan kodni biroz qayta yozish orqali ma'lumotlarga bog'liqlikdan xalos bo'lishingiz mumkin: for(i=1; i<8; i++) a[i] = c*a[i-1]; Bu erda qaramlik mavjud. for(i=1; i<9; i+=2) a[i] = c*a[i-1]; Hech qanday qaramlik yo'q. Bayonot 1 Faqat bitta iteratsiyada yozilgan o'zgaruvchilar va ularning qiymatini boshqasiga o'qish ma'lumotlarga bog'liqlikni yaratadi. 133 Machine Translated by Google Bayonot 2 Faqat umumiy o'zgaruvchilar ma'lumotlarga bog'liqlikni yaratishi mumkin. Natija. Agar o'zgaruvchi xususiy deb e'lon qilinmasa, u shunday bo'lishi mumkin birgalikda va ma'lumotlarga qaramlikka olib keladi. for(i=0; i<1000; i++){ x = cos(a[i]); b[i] = sqrt(x*c); } Looplar ichidagi funksiya chaqiruvlari keng tarqalgan. Biroq, bunday tsikllar parallel qilish mumkin. Buning uchun dasturchi funksiya yasashi kerak parametrlarning qiymatidan tashqari tashqi ma'lumotlardan mustaqil. Funktsiyada shuningdek, statik o'zgaruvchilar bo'lmasligi kerak (statik). double foo(double *a, double *b, int i){ // Bog'liqlik mavjud ...
} ikki baravar (ikkita a, ikki b){ // Bog'liqlik yo'q qaytish 0,345*(a + b*C); } Ba'zida bitta massivning indekslari bo'lishi kerak bo'lgan vaziyatlar yuzaga keladi boshqa massivda saqlang. for(i=0; i } for(i=0; i } 134 Machine Translated by Google Yuqoridagi misolda, agar indx1[i] har birida i ga teng bo'lmasa iteratsiyalar, ya'ni ma'lumotlarga bog'liqlik. Indx2 massivida mavjud bo'lsa takrorlashlar, keyin tsiklda takrorlashlarning ma'lumotlarga bog'liqligi mavjud. Shartli chiqishga ega bo'lgan pastadirlarga ta'sir qilmaslik kerak parallellashtirish, chunki bu tsikllar tartibni talab qiladi ijro. for(i=0; i<1000; i++){ b[i] = sqrt(cos(a[i])*c); if(b[i]>epsilon) sindirish; } Keling, yana bir misolni ko'rib chiqaylik: uchun(k=0; k Agar tashqi pastadir parallellashtirilgan bo'lsa, unda bog'liqlik ma'lumotlar - a[i][j]. Ushbu holatni to'g'irlash uchun k ga o'tish mumkin uni ichki holga keltiring. for(i=0; i Ba'zan koddagi ma'lumotlarga bog'liqlik mavjudligini aniqlash qiyin va keyin kompilyator dasturchiga yordamga kelishi mumkin. 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