3- Amaliy mashg’ulot.
Mavzu: Open MP paket imkoniyatlari, MPI paketidan foydalanish yo‘llari.
Ishdan maqsad: OpenMP paketi uning afzalliklari imkoniyatlari haqida maʼlumot
olish. OpenMP paketi yordamida algoritmlarni bajarish yoʻllarini oʻrganish.
Kerakli jihozlar : Noutbook, shaxsiy kompyuter, internet tarmog’i, kompyuter
qo’shimcha qurilmalari hamda texnik jihozlari.
An'anaviy dasturlash tillari va maxsus izohlardan
foydalanish asosida umumiy
xotira kompyuterlari uchun eng mashhur dasturiy vositalaridan biri hozirda
OpenMP texnologiyasidir. Vaqtinchalik dastur asos sifatida olinadi va parallel
versiyasini yaratadi, foydalanuvchi bir qator dir direktivalari, funktsiyalari va
atrof-
muhit o'zgaruvchilari bilan ta'minlanadi. Yaratilgan parallel dastur OpenMP API-ni
qo'llab-quvvatlaydigan turli xil umumiy xotira kompyuterlari o'rtasida ko'chma
bo'ladi deb taxminqilinadi.
OpenMP [omp] - umumiy xotira kompyuterlari uchun parallel dasturlarni yaratish
uchun sanoat standarti bo'lgan API. OpenMPning asosiy maqsadi-aylanish
yo'naltirilgan dasturlarni yozishni osonlashtirishdir.Bunday dasturlar tez-tez yuqori
samarali hisoblash uchun yaratiladi. Bundan tashqari,
komponentlar OpenMP
tarkibiga SPMD, "master and workflow",quvur liniyasi kabi parallel usullarini
qo'llab-quvvatlash uchun kiritilgan.
OpenMP juda muvaffaqiyatli parallel dasturlash tiliga aylandi. U bozorga kiradigan
har bir xotira almashadigan kompyuterda mavjud. Bundan tashqari, Intel yaqinda
Klasterlarni qo'llab-quvvatlash uchun OpenMP versiyasini yaratdi. OpenMP
parallelizmin mavjud ketma-ketlik dasturi parallel holga kelgunicha asta-sekin
qo'shilgan dasturlash uslubini qo'llab-quvvatlaydi.Biroq,bu afzallik OpenMP ning
eng zaif nuqtasidir. Agar muvozanat asta-sekin qo'shilsa, dasturchi dasturni keng
miqyosda
qayta qurish qila olmaydi, bu ko'pincha maksimal ishlash uchun zarur
bo'ladi.
OpenMP doimiy rivojlanayotgan standartdir. OpenMP Architecture Review Board
deb nomlangan sanoat guruhi ushbu tilga yangi kengaytmalar kiritish uchun
muntazam uchrashuvlar o'tkazadi. OpenMP ning keyingi versiyasi (3.0 versiyasi)
vazifa navbatini tashkil etish qobiliyatini o'z ichiga oladi. Bu esa, OpenMP-ga
yanada keng boshqaruv tuzilmalarini boshqarish
va umumiy umumiy recursiv
algoritmlardan foydalanish imkonini beradi.
OpenMP texnologiyasi foydalanuvchi dasturning parallel va ketma-ket ijro etilishi
uchun dasturning bitta versiyasiga ega bo'lishini ta'minlashni maqsad qiladi. Biroq,
faqat parallel rejimda to'g'ri ishlashi yoki ketma-ket rejimda boshqa natija beradigan
dasturlarni yaratish mumkin. Bundan tashqari, yaxlitlash xatolarining to'planishi
tufayli turli xil ish zarrachalaridan foydalangan holda hisoblash natijalari ayrim
hollarda farq qilishimumkin.
Ushbu standart OpenMP ARB notijorat tashkiloti tomonidan ishlab chiqilgan
(Arxitektura tadqiqoti kengashi) [1], bu SMP-arxitektura va dasturiy ta'minotni
ishlab chiqaruvchi yirik kompaniyalarning vakillari hisoblanadi. OpenMP
FORTRAN va C / C ++ tillari bilan ishlashni qo'llab-quvvatlaydi. Fortran tilining
birinchi spetsifikatsiyasi oktyabr 1997-yilda va C/C++ tilining 1998 yil oktyabrida
paydo bo'lishi. Hozirgi vaqtda eng so'nggi rasmiy standart spetsifikatsiya OpenMP[3]
(2008 yil may oyida qabul qilingan).
OpenMP mexanizmlarini ishlatish uchun OpenMP derivatori bilan mos kalit bilan
kompilyatsiya qilishingiz kerak (masalan, icc /
ifort -openmp derleyici kaliti,
gcc/gfortran-fopenmp,SunStudio-xopenmp,VisualC++-/openmp,PGI-mp).
Derleyici OpenMP direktivalarini sharhlaydi va parallel kod yaratadi. OpenMP-ni
qo'llamaydigan
kompilyatorlardan
foydalanilganda
OpenMP
direktivlari
qo'shimcha xabarlarsiz e'tiborsizqilinadi.
OpenMP yordamiga ega bo'lgan kompilyator, dasturning parallel versiyasi uchun
odatiy bo'lgan alohida bloklarni shartli ravishda kompilyatsiya qilish uchun
ishlatilishi mumkin bo'lgan _OPENMP so'lini belgilaydi. Bu so'l yyyym formatida
aniqlanadi, bu erda yyyy va mm - qo'llab-quvvatlanadigan OpenMP
standarti qabul
qilingan yil va oy uchun raqamlar. Masalan, OpenMP 3.0 standartini qo'llab-
quvvatlaydigan derleyici 2008/05 da _OPENMP ni belgilaydi.
Derivatning OpenMP ning har qanday versiyasini qo'llab-quvvatlashini tekshirish
uchun, shartli derleme ko'rsatmalarini #i fdef yoki #i f ndef yozib olish kifoya. C va
Fortran dasturlarida shartli kompilyatsiya qilishning eng oddiy koʻrinishi quyidagi
misolda keltirilgan:
#include
int main(){
#if def _OPENMP
printf("OpenlVPis supported!\n");
#end if
}
OpenMP da parallelizatsiya dasturiy matnga maxsus ko'rsatmalar kiritilishi va
yordamchi funktsiyalarni chaqirish orqali aniq amalga oshiriladi. OpenMP dan
foydalanilganda, parallel dasturlashtirilgan SPMD (Single Program Multiple Data)
parallel dasturiy modeli qabul qilinadi, uning ichida bir xil kod barcha parallel iplar
uchun ishlatiladi.