8. openmp asosida parallel dasturlash
Bu shart sukut bo'yicha kodning parallel qismidagi o'zgaruvchilar doirasini aniqlaydi
Download 48.95 Kb.
|
openmself
Bu shart sukut bo'yicha kodning parallel qismidagi o'zgaruvchilar doirasini aniqlaydi.schedule(type[,chank])Bu holat halqaning takrorlanishi iplar orasida qanday taqsimlanishini nazorat qiladi.private, shared, default shartlar. Quyidagi misollarni ko'rib chiqamiz:#pragma omp parallel shared(a) private(myid, x) { myid = omp_get_thread_num(); x = work(myid); if(x < 1.0) a[myid] = x; } #pragma omp parallel default(private) shared(a) { myid = omp_get_thread_num(); x = work(myid); if(x < 1.0) a[myid] = x; } Ikkala misolda ham har bir ip o'z x va myid nusxasiga ega bo'ladi. Agar bu o'zgaruvchilar shaxsiy deb e'lon qilinmasa, ularning qiymati ish vaqtida aniqlanmagan bo'ladi. Kodning parallel bo'limiga kirishda x va myid o'zgaruvchilarning qiymati aniqlanmagan va bu o'zgaruvchilarni ishga tushirish talab qilinadi. Ikkinchi misolda, default shart avtomatik ravishda kompilyatorga har bir ip uchun o'zining x va myid o'zgaruvchilarini yaratishni aytadi. Misollardagi shared shart a massivi iplar o'rtasida taqsimlanganligini va uning qiymati parallel kod bo'limidan chiqishda saqlanadi. firstprivate holat. Ushbu shartga to'g'ri keladigan o'zgaruvchilar har bir ip uchun shaxsiydir, lekin ip bajarilishidan oldin ular oldingi ketma-ket kodda olingan qiymat bilan ishga tushiriladi. Shunday qilib, quyidagi misolda, kodning parallel bo'limiga kirishdan oldin, a o'zgaruvchining qiymati 10 edi. Bu o'zgaruvchi kodning parallel qismini kiritishda bir xil qiymatga ega. int myid, a; a = 10; #pragma omp parallel default(private) firstprivate(a) { myid = omp_get_thread_num(); printf("Thread%d: a = %d\n", myid, a); a = myid; printf("Thread%d: a = %d\n", myid, a); } Xulosa Thread1: a = 10 Thread1: a = 1 Thread2: a = 10 Thread0: a = 10 Thread3: a = 10 Thread3: a = 3 Thread2: a = 2 Thread0: a = 0 Download 48.95 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling