44
bilan aloqa o`rnatgan holda bajarilishi mumkin. Bir-biri bilan aloqa o`rnatgan
holda bajarilishi dasturning ishlab chiqarilishini murakkablashtirishi mumkin [49].
Bunday hollarda dasturchi parallel oqimlar o`rtasida ma`lumotlar uzatilishini
rejalashtirishi, tashkil etishi va sinxronizatsiyalashi kerak bo`ladi.
Parallel
dasturlarni ishlab chiqishda parallellashtirish qismlaridagi parallel oqimlarni
mustaqil ravishda ishlashini ta`minlash maqsadga muvofiq bo`ladi [50]. Parallel
oqimlar o`rtasida ma`lumotlar almashishi
uchun OpenMP da umumiy
o`zgaruvchilar ishlatiladi. Umumiy o`zgaruvchilarga turli parallel oqimlardan
murojaat qilinganda ma`lumotlarga ega bo`lishda konflikt
holati yuzaga kelishi
mumkin.Ushbu konfliktni oldini olish uchun sinxronizatsiya (synchronization)
protsedurasidan foydalanish mumkin. Sinxronizatsiya protsedurasini bajarishga
juda ko`p vaqt ketishini hisobga olish kerak va iloji bo`lsa ushbu protsedurani kam
hollarda ishlatish maqsadga muvofiq bo`lar edi. Buning
uchun dastur tuzishda
ma`lumotlar strukturasini juda puxta o`ylashga to`gri keladi.
OpenMP da ma`lumotlar modeli.
OpenMP da ma`lumotlar modeli hamma
oqimlar xotira muhiti uchun umumiy va har bir oqim
uchun lokal xotira qismi
mavjud deb taxmin qilinadi [8,11,12,15]. OpenMP da parallel muhitdagi
o`zgaruvchilar 2 turga bo`linadi:
-
shared (umumiy, hamma oqimlar ushbu turdagi o`zgaruvchilarni ko`radi);
-
private (lokal, har bir oqim o`zgaruvchining nusxasini o`zida ko`radi).
Umumiy o`zgaruvchi hamma qismlar uchun har
doim faqat bitta nusxada
bo`ladi va barcha oqimlarga bitta nomda bo`ladi.Lokal o`zgaruvchilar e`lon
qilinganda, har bir oqim uchun bir xil tipdagi va o`lchamdagi nusxalari yaratiladi.
Bitta oqimdagi lokal o`zgaruvchining qiymati o`zgarsa ham qolgan oqimlardagi
nusxalariniki o`zgarmaydi.
Bundan tashqari dasturning kod qismida har
bir kvadrat matritsa ustida
parallelashtirish amallari qo`llanilgan. For tsiklida oqimlarga ajratish #pragma omp
parallel for diriktivasi bilan amalga oshiriladi. Qo`yidagi dasturiy kodda uning
qo`llanilishi keltirilgan:
#pragma
omp parallel for
45
for (j = 0; j < n; j++)
{
xWavelet[j] = ImgArray[Component][dwPos][j];
}
Parallel direktivasi yordamida parallel muhit hosil qilinadi. C/C++
dasturlash tilida [22,25] quyidagicha ko`rinishda bo`ladi:
#pragma omp parallel [shart [[,] shart ]…]
Yuqorida keltirilganlarga asosan quyidagicha xulosa qilish mumkin: dasturni
parallel qismlarga ajratilishi va parallel protsesslarni ishlab chiqish muhimdir.
Do'stlaringiz bilan baham: