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


Kengaytirilgan OpenMP xususiyatlari


Download 1.46 Mb.
bet80/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   77   78   79   80   81   82   83   84   85
Bog'liq
ParVychGafGal (1)

8.8. Kengaytirilgan OpenMP xususiyatlari

Sizni yanada samaraliroq qilishga imkon beruvchi OpenMP vositalarini ko'rib chiqing parallel dasturlarni yozish. Ushbu vositalar direktivani o'z ichiga oladi


threadprivate, bu sizga shaxsiy o'zgaruvchini bir marta e'lon qilish imkonini beradi
bitta fayl ichidagi barcha parallel bo'limlar uchun. Mumkin qilish uchun
138
Machine Translated by Google
foydalanish, o'zgaruvchini statik, direktiv deb e'lon qilish kerak threadprivate birinchi parallel deklaratsiyadan oldin mavjud bo'lishi kerak bo'limlar va dasturdagi iplar soni doimiy bo'lishi kerak.
Sintaksis:


#pragma omp threadprivate(var1[, var2 ...])
Yana bir OpenMP kengaytmasi foydalanish qobiliyatidir qulflar orqali iplarni sinxronlashtirish. OpenMP da qulflanadi
POSIX iplaridagi mutekslarga o'xshaydi. Hatto ular bilan ishlash uchun funktsiyalar to'plami

o'xshash.




bekor omp_init_lock (omp_lock_t *lock)
qulfni ishga tushiradi va uni qulflash parametri bilan bog'laydi.
bekor omp_destroy_lock (omp_lock_t *lock)
lock parametri bilan bog'langan o'zgaruvchini boshlang'ichdan chiqaradi.
bekor omp_set_lock(omp_lock_t *lock)
Bloklash tugaguniga qadar ipning bajarilishini bloklaydi qulf o'zgaruvchisi mavjud bo'lmaydi.
bekor omp_unset_lock (omp_lock_t *lock) Qulf o'zgaruvchisidagi qulfni bo'shatadi. bekor omp_test_lock (omp_lock_t *lock)
Qulfni olishga urinishlar va agar muvaffaqiyatli bo'lsa, null bo'lmagan qiymatni qaytaradi. Aks holda, nol qaytariladi. Funktsiya bloklanmaydi.
Funktsiya prototiplari omp.h da tasvirlangan
...


#o'z ichiga void main(){ omp_lock_t qulfi;
int i, p_sum = 0, res = 0; omp_init_lock(&lock);

139
Machine Translated by Google


#pragma omp parallel firstprivate(p_sum)
{
Shaxsiy(i) uchun #pragma parallel
for(i=0; i<100000; i++)
p_sum += i; omp_set_lock(&lock); ob'ekt += p_sum; omp_unset_lock(&lock);
}
omp_destroy_lock(&lock); printf("%d\n", res);
}

Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   77   78   79   80   81   82   83   84   85




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