Mavzu: Intel Openmp kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzish Ishning maqsadi



Download 310,43 Kb.
Sana22.04.2022
Hajmi310,43 Kb.
#573932
Bog'liq
Laboratoriya OpenMP


Mavzu: Intel OpenMP kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzish
Ishning maqsadi: Intel OpenMP kutubxonasidan foydalanib C++ tilida parallel dasturlar tuzish ko‘nikmasini egallash.
USLUBIY KO‘RSATMALAR
Turli xil ko’rinishdagi parallel hisoblash tizimlari mavjud-ko’p yadroli/protsessorli kompyuterlar, klasterlar, videokartali tizimlar, dasturlanadigan integral sxemalar va b.
OpenMP-C,C++,Fortran tillari uchun parallel dastur yaratishga mo’ljallangan standart kutubxona hisoblanadi. OpenMP faqat umumiy xotirali arxitekturada ishlaydi.
OpenMP kutubxonasi faqatgina umumiy xotirali tizimlar uchun dasturlashga mo’ljallangan. Shuning uchun oqimlar parallelizmidan foydalaniladi. Oqimlar yagona jarayon ichida yaratiladi va o’zining xususiy xotirasiga ega bo’ladi. Bundan tashqari barcha oqimlar protsessor xotirasiga murojaat qilish imkoniga ega.

OpenMP da xotira modeli
OpenMP kutubxonasidan foydalanish uchun “omp.h” sarlavhasini dastur kodiga qo’shish zarur. Dastur ishga tushirilgandan so’ng ketma-ket bajariluvchi yagona jarayon yaratiladi va #pragma omp parallel direktivali soha uchrashi bilan jarayon bir nechta parallel oqimlarni hosil qiladi. Bunda oqimlarning sonini ko’rsatish mumkin. Jimlik holati bo’yicha oqimlar soni hisoblash tizmi yadrolari soniga teng bo’ladi. Dastur kodida parallel soha figurali qavslar bilan chegaralanadi. Soha tugashi bilan oqimlar o’chirib yuboriladi.

Qora chiziqlar bilan oqimlarning yashash davri ko’rsatilgan, qizil chiziqlar bilan ularning yaratilish davri tasvirlangan. Ko’rinib turibdiki, barcha oqimlar jarayon ishining barcha davrida mavjud bitta (asosiy) oqimdan yaratiladi. Bunday oqim OpenMP da master deb ataladi, qolgan barcha oqimlar ko’p marta yaratiladi va o’chiriladi. Shuni qayd etish joizki, parallel direktivasi ichki joylashtirilgan bo’lishi mumkin, buning uchun sozlashlarga bog’liq ravishda ichki oqim yaratish mumkin.
Sinxronizatsiya-kretik seksiyalar,atomic,barrier
Parallel direktivasigacha bo’lgan barcha o’zgaruvchilar barcha oqimlar uchun umumiy hisoblanadi. Oqim ichida yaratilgan o’zgaruvchilar lokal(private) bo’ladi va faqat shu qoimga tegishli bo’ladi. Bir vaqtda bir necha oqimlar yordamida umumiy o’zgaruvchini qiymatini o’zgartirish uchun oqimlar o’rtasida musobaqa yuzaga keladi-bu muammo va uni batafsil qaramasdan o’tkazib yuborib bo’lmaydi. Bunday muammo bitta oqim umumiy o’zgaruvchining qiymatini o’qiyotgan vaqtda ikkinchi oqim uni qiyamtini o’zgartirayotgan bo’ladi.
Vaziyatni quyidagi misol orqali tushuntiramiz:

  1. #include "omp.h"

  2. #include


  3. int main() {

  4. int value = 123;

  5. #pragma omp parallel

  6. {

  7. value++;

  8. #pragma omp critical

  9. {

  10. std::cout << value++ << std::endl;

  11. }

  12. }

  13. }

Dasturda barcha oqimlar uchun umumiy bo’lgan value o’zgaruvchisi tavsiflangan. Har bir oqim o’zgaruvchining qiymatini oshiradi va hosil bo’lgan natijani ekranga chiqaradi. Mazkur dasturni ikki yadroli kompyuterda ishga tushirsak natija quyidagicha bo’ladi:

Dastur natijasidan ko’rinib turibdiki, dastlab har bir oqim o’zgaruvchining qiymatini oshiradi, so’ngra navbatma-navbat natijani ekranga chiqaradi (buning uchun ularning har biri qiymatni yana bir marta oshiradi), llekin ba’zi hollarda bajarilish tartibi boshqacha bo’ladi. Mazku misolda bizni qiziqtirgan narsa shuki, value o’zgaruvchisining qiymatini bir vaqtda oshirish-dasturning xulq-atvori yaxshi va faqat bir marta oshiriladi yoki umuman dastur ishi salbiy natija bilan tugaydi.
Mazkur muammoni yechish uchun critical direktivasidan foydalaniladi. Uning foydalanilishiga misol yuqorida keltirilgan. Bu yerda taqsimlangan resurs faqatgina xotira emas balki, konsol hamdir.
Kritik seksiyada bir vaqt momentida faqat bitta oqim joylashadi qolganlari uni bo’shashini kutadi.
OpenMP kutubxonasi yordamida parallel dastur tuzish uchun, dasturni dastlab ketma-ket ko’rinishda tuzib chiqish kerak, so’ngra uni OpenMP direktivalari yordamida parallellashtirish kerak.
Ma’lumki, dasturning bajarilish vaqtining katta qismi sikl operatorida kechadi. Shuning uchun OpenMPda maxsus parallel sikl direktivasi mavjud. Quyida ikkita misol yordamida mazkur siklni parallellashtirishni ko’rib chiqamiz:
1-misol. Massiv elementlari yig’indisini hisoblash.
2-misol. To’rtburchaklar metodi yordmida integralni hisoblash.
1.Massiv elementlari yig’indisini hisoblash
Dastlab ketma-ket bajariluvchi sum_arr funksiyasini tuzib olamiz:

Funksiyadagi iteratsiyani oqimlarga taqsimlash mumkin. Har bir oqim yig’indining bir qismini hisoblaydi va oxirida sinxroniztasiyalanadi va natijalar birlashtiriladi.

3-qatorda parallel direktivasi figurali qavslar ichiga olingan parallel hisoblash sohasini beradi.
num_threads xususiyati orqali yaratiladigan oqimlar soni belgilanadi. Bizning misolda oqimlar soni 2 ga teng. Oqimlardan lokal o’zgaruvchilar yoki bo’lingan o’zgaruvchilar tarzida foydalanish mumkin. Bo’linadigan o’zgaruvchilar barcha oqimlar uchun umumiy hisoblanadi. Ular bilan ehtiyot bo’lib ishlash lozim. Barcha konstantalar bo’linadigan hisoblandi. Bizning misolimizda bu a va n o’zgaruvchilaridir.
2-misol. To’rtburchaklar metodi yordmaida aniq integralni hisoblash.

Download 310,43 Kb.

Do'stlaringiz bilan baham:




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish