OpenMP dasturi
OpenMP dasturi Reja 1. KIRISH 2. ASOSIY QISM 2.1. Umumiy xotira dasturlash modeli 2.2. OpenMP dasturini kompilyatsiya qilish va ishga tushiris 2.3. OpenMP dasturini monitoring qilish 2.4. Parallel takrorlash natijalarini birlashtirish 3. XULOSA 4. FOYDALANILGAN ADABIYOTLAR
KIRISH Zamonaviy texnologiyalar parallel texnologiyalar bir-biridan dasturlash tillarida emas, balki parallel tizimlarni qurishning arxitekturaviy yondashuvlarida ham farqlanadi. Masalan, ba'zi texnologiyalar bir nechta kompyuterlar asosida parallel dasturlarni qurishni taklif qilsa, boshqalari bir nechta protsessorli bitta mashinada ishlashga imkon beradi. Uzoq vaqt davomida bir nechta kompyuterlarga asoslangan tizimlar ishlatilgan, ular taqsimlangan hisoblash tizimlariga tegishli. Tarqalgan hisoblashning eng yorqin misoli MPI (Message Passing Interface (xabarni uzatish interfeysi)) parallel dasturlashda ma'lumotlar almashish interfeysi uchun eng keng tarqalgan standart bo'lib, ko'plab kompyuter platformalari uchun ilovalar mavjud. MPI dasturchiga mashina arxitekturasidan (birgalikda/alohida xotiraga ega bir protsessorli/ko‘p protsessorli), filiallarning nisbiy joylashuvidan (bir xil protsessorda yoki boshqa protsessorda) qat’iy nazar, parallel dastur doirasida filiallarning o‘zaro ta’sirining yagona mexanizmini taqdim etadi. birlar).[8] Bitta kompyuterda ishlash uchun parallel dasturlash tizimlari o'z rivojlanishini nisbatan yaqinda boshladi. Darhaqiqat, ilovalarni ishlab chiqishda ishlab chiquvchi qo'l ostidagi resurslar, ya'ni bir nechta kompyuter yadrolaridan foydalanish bilan ishlashni qanday oshirish kerakligi haqidagi savolga duch keladi va Open MP API dasturchiga yordam beradi. 1997 yilda ishlab chiqilgan OpenMP texnologiyasi umumiy xotiraga ega bo'lgan ko'p protsessorli hisoblash tizimlarining imkoniyatlaridan maksimal darajada samarali foydalanish imkonini beradi, bu esa protsessorlararo xabarlarni ko'p vaqt talab qilmasdan parallel oqimlar uchun umumiy ma'lumotlardan foydalanishni ta'minlaydi.
2.1. Umumiy xotira dasturlash modeli Dasturchi nuqtai nazaridan, umumiy xotira multiprotsessorlari modeli 1- rasmda ko'rsatilganidek, bitta asosiy xotiraga ega bo'lgan bir qancha mustaqil protsessorlarni o'z ichiga oladi. Har bir protsessor to'g'ridan-to'g'ri asosiy xotiradagi ma'lumotlarning istalgan joyiga kirishi mumkin va istalgan vaqtda turli protsessorlar turli ma'lumotlar bo'yicha turli ko'rsatmalarni bajarishi mumkin, chunki har bir protsessor o'zining boshqaruv bloki tomonidan boshqariladi. Flinning parallel tizimlar taksonomiyasidan foydalangan holda, bu model MIMD, ya'ni bir nechta ko'rsatmalar bir nechta ma'lumotlar deb ataladi. 1-rasm: Umumiy xotirali multiprotsessor modeli. Mumkin bo'lgan maksimal tezlikka erishish uchun parallel tizimdan to'liq foydalanish muhim ahamiyatga ega bo'ladi. OpenMP yordamida ko'p yadroli va umumiy xotira multiprotsessorlarini dasturlash. Oddiy va umumiy bo'lishi uchun asosiy xotiraning ichki tuzilishi ushbu modeldan tashqarida qoldirilgan. Oddiy va umumiy modeldan foydalanish, shuningdek, parallel tizim spetsifikatsiyalari ma'lum bo'lganidan keyin ma'lum bir tizim uchun optimallashtirilishi mumkin bo'lgan portativ dasturlarni loyihalash va amalga oshirishni soddalashtiradi. Ko'pgina zamonaviy protsessorlar ko'p yadroli protsessorlardir va shuning uchun ular yadro deb ataladigan bir nechta mustaqil hisoblash bloklaridan iborat. Bundan tashqari, ushbu protsessorlar (bir vaqtning o'zida) multithreading (SMT) ni qo'llab-quvvatlaydi, shuning uchun har bir yadro (deyarli) bir vaqtning o'zida iplar deb ataladigan bir nechta mustaqil ko'rsatmalar oqimini bajarishi mumkin. Dasturchi uchun har bir protsessor ichidagi har bir yadro bir nechta mantiqiy yadro vazifasini bajaradi, ularning har biri o'z dasturini yoki dastur ichidagi ipni mustaqil ravishda ishga tushirishga qodir.
Bugungi kunda mobil, ish stoli va server protsessorlari odatda 2 dan 24 gacha yadrolarni o'z ichiga oladi va ko'p ish zarralarini qo'llab-quvvatlash bilan ular bir vaqtning o'zida 4 dan 48 tagacha oqimlarni ishga tushirishlari mumkin. Misol uchun, ikki yadroli mobil Intel i7 protsessori giper-threading (Intel's SMT) 2 (jismoniy) yadrodan iborat bo'lib, 4 ta mantiqiy yadroni ta'minlaydi. Xuddi shunday, 3.2-rasmda ko'rsatilganidek, to'rt yadroli Intel Xeon protsessori giper- threading bilan 8 ta mantiqiy yadroni va ikkita shunday protsessorli tizim 16 ta mantiqiy yadroni ta'minlaydi. Agar avtobus yoki kesh kabi ma'lum resurslardan umumiy foydalanish bir chetga surilsa, har bir mantiqiy yadro o'z ish zarrachasini mustaqil ravishda bajarishi mumkin. Jismoniy amalga oshirishdan qatiy nazar, dasturchi bunday tizimda 3.1-rasmda ko'rsatilganidek, har biri individual protsessor sifatida ishlaydigan 16 ta mantiqiy yadroni o'z ichiga oladi, bu erda n = 16. 3.2- rasm : Bir vaqtning o ' zida ko ' p trithreadingni qo ' llab - quvvatlaydigan ikkita to ' rt yadroli protsessorli parallel tizim bir xil xotiraga ulangan 16 ta mantiqiy yadroni o ' z ichiga oladi . Ko ' p yadroli protsessorlardan tashqari , o ' nlab yoki yuzlab jismoniy yadrolarni o ' z ichiga olgan ko ' p yadroli protsessorlar ham mavjud . Masalan , Intel Xeon Phi bir vaqtning o ' zida 240 dan 288 tagacha ipni ishga tushirishga qodir 60 dan 72 gacha jismoniy yadrolarni ta ' minlaydi . Zamonaviy tizimlarning turli protsessorlar yoki ( mantiqiy ) yadrolar yordamida bir vaqtning o ' zida bir nechta ish zarralarini bajarish qobiliyati qimmatga tushadi . Alohida iplar asosiy xotiradagi istalgan xotira joyiga kirishi va ko ' rsatmalar oqimlarini mustaqil ravishda bajarishi uchun poyga holatiga olib kelishi mumkin , ya ' ni natija asosiy xotiraning bir xil joyiga o ' qish va yozishning aniq vaqtiga bog ' liq bo ' lgan vaziyatga olib kelishi mumkin . Masalan , ikkita ip bir xil xotira joyida saqlangan qiymatni biri 1 ga , ikkinchisi esa oshirishi kerak deb faraz qilaylik . Har bir ip qiymatni o ' qiydi , uni oshiradi va uni qayta yozadi . Agar ushbu uchta ko ' rsatma birinchi navbatda bitta ip tomonidan , keyin esa ikkinchisi
tomonidan bajarilsa , to ' g ' ri natija chiqariladi . Ammo iplar ko ' rsatmalarni mustaqil ravishda bajaradiganligi sababli , har bir ip tomonidan bajariladigan ushbu uchta ko ' rsatmalarning ketma - ketligi 3.3- rasmda ko ' rsatilganidek , vaqt o ' tishi bilan bir - biriga mos kelishi mumkin . Bunday vaziyatlarda natija ham noto ' g ' ri , ham aniqlanmagan : har ikkala holatda ham xotiradagi qiymat 1 yoki 2 ga oshiriladi , lekin 1 va 2 ga emas . 3.3- rasm : Ikki ip asosiy xotirada bir xil joyda qiymatni oshirishga harakat qilganda poyga holatining ikkita misoli . Poyga holatini oldini olish uchun asosiy xotiradagi umumiy manzilga eksklyuziv kirish yordamida qulflash yoki o ' qish - o ' zgartirish - yozish ko ' rsatmalari yordamida atomik kirish kabi mexanizmlar yordamida ta ' minlanishi kerak . Agar qulflash ishlatilsa , har bir ip o ' zgartirishdan oldin umumiy xotira joyiga kirishni bloklashi va 3.4- rasmda ko ' rsatilganidek , keyin uni qulfdan chiqarishi kerak . Agar ip boshqa ip allaqachon qulflangan narsani bloklashga urinsa , u boshqa ip uni qulfdan chiqarguncha kutishi kerak . Ushbu yondashuv bitta ipni kutishga majbur qiladi , lekin to ' g ' ri natijani kafolatlaydi . 3.4-rasm: Qulflash yordamida 3.3-rasmda ko'rsatilganidek, poyga sharoitlarini oldini olish. OpenMP yordamida ko'p yadroli va umumiy xotira multiprotsessorlarini dasturlash mantiqiy yadrolarga qaraganda, ba'zi mantiqiy yadrolar ishlamay qoladi va tizim to'liq foydalanilmaydi. Agar mantiqiy yadrolardan ko'proq iplar mavjud bo'lsa, operatsion tizim bir xil mantiqiy yadrolarda ishlaydigan iplar orasida ko'p vazifalarni qo'llaydi. Dasturni bajarish jarayonida operatsion tizim yuk balansini amalga oshirishi mumkin, ya'ni barcha mantiqiy yadrolardan bir xilda foydalanishga harakat qilib, iplarni bir mantiqiy yadrodan boshqasiga o'tkazishi mumkin.