8. openmp asosida parallel dasturlash


Ishni taqsimlash uchun OpenMP konstruksiyalari


Download 48.95 Kb.
bet5/14
Sana19.04.2023
Hajmi48.95 Kb.
#1365571
1   2   3   4   5   6   7   8   9   ...   14
Bog'liq
openmself

8.5. Ishni taqsimlash uchun OpenMP konstruksiyalari

Boshqa shartlardan foydalanish ish bo'linmalari tuzilmalari misolida aniqroq ko'rsatiladi. Faqat uchta bunday tuzilma mavjud:


o parallel for/DO sikli
o parallel qismlar
o Qurilish yagona
Parallel for/DO sikli. Yaratishning maqsadi - iplar o'rtasida pastadir iteratsiyasini taqsimlash.
#pragma omp parallel
{

#pragma omp for private(i) shared(a,b)


for(i=0; i<10000; i++) a[i] = a[i] + b[i]
}
Iplar uchun standart to'siq - pastadirning oxiri. Tsiklning oxiriga yetgan barcha iplar hali tugatmaganlarni kutadi, shundan so'ng asosiy ip davom etadi. Siklda nowait shartidan foydalanib, siz asosiy ipning asosiy iplar tugashini kutmasligiga ruxsat berishingiz mumkin.
For/DO parallel sikl direktivasi quyidagi sintaksisga ega: C/C++ uchun:

#pragma omp for [shart [,shart] ...]


цикл for
bu erda shartlardan biri:
private(var1, var2, ...)
shared(var1, var2, ...) firstprivate(var1, var2, ...) lastprivate(var1, var2, ...) reduction(оператор: var1, var2, )
ordered
schedule(тип, [blok hajmi]) nowait
if(ifoda)
Parallel bo'limlar. Ba'zan tsiklning takrorlanishi bo'lmagan harakatlarni parallel ravishda bajarish kerak bo'ladi. Albatta, bu maqsadlar uchun oddiy parallel direktivadan foydalanishingiz mumkin, lekin keyin turli ishlarni iplar o'rtasida taqsimlash uchun qo'shimcha kod yozishingiz kerak bo'ladi. Oddiyroq qilib aytganda, bu muammoni parallel bo'limlar yordamida hal qilish mumkin.
#pragma omp parallel sections
{
#pragma omp section
{
printf("T%d: foo\n", omp_get_thread_num());
}
#pragma omp section
{
printf("T%d: bar\n", omp_get_thread_num());
}
}// omp sections
Har bir bo'lim alohida ish zarrachasida bajariladi, bu kodni parchalash imkonini beradi. Sinxronizatsiya nuqtasi sections blokining oxiri hisoblanadi. Agar asosiy ip boshqa iplarning tugashini kutmasligi kerak bo'lsa, siz nowait shartidan foydalanishingiz kerak.

Download 48.95 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   14




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