Muhammad al-xorazmiy nomidagi toshkent


Download 61.5 Kb.
Sana30.09.2023
Hajmi61.5 Kb.
#1690202
Bog'liq
Parallel dastur


O'ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT
AXBOROT TEXNOLOGIYALARI UNIVERSITETI
FARG‘ONA FILIALI


Kompyuter injinering fakulteti
716-20-guruh talabasi
Jabborov Ulugbekning
IT/Mutaxassislik tanlov fani (Parallel kompyuterlarning arxitekturasi va dasturlash) ” fanidan

MUSTAQIL ISHI
Mavzu: Parallel dasturlash asoslari

Farg‘ona 2023 yil
Parallel dasturlash asoslari

Parallel dastur - bu xabarlarni uzatish orqali o'zaro ta'sir qiluvchi (ularning ishini sinxronlashtiradigan va ma'lumotlar almashadigan) parallel jarayonlar to'plami. MpC dasturchisi dasturda qancha jarayonlarni tashkil etishini yoki bu jarayonlar qaysi kompyuterlarda ishlashini nazorat qila olmaydi. Bu tilga tashqi vositalar yordamida amalga oshiriladi. mpC manba kodi faqat dasturni tashkil etuvchi jarayonlarning har biri tomonidan qanday hisob-kitoblar bajarilishini nazorat qiladi.


Birinchidan, foydalanuvchi terminaliga “Salom, dunyo!” matnini chop etadigan, ehtimol, eng mashhur C dasturi bilan bir xil ishni bajaradigan eng oddiy p1.mpc dasturini ko'rib chiqaylik.


Ushbu dasturning kodi C dasturining kodidan juda kam farq qiladi. Birinchi farq asosiy funksiya taʼrifida main nomidan oldin [*] koʻrsatkichidir. Bu funksiyaning kodi parallel dasturning barcha jarayonlari tomonidan bajarilishini aytib, funksiya turini belgilaydi. Asosiy funksiya kabi funksiyalar mpC da asosiy funksiyalar deb ataladi. Bunday funktsiyalarning to'g'ri ishlashi faqat parallel dasturning barcha jarayonlari tomonidan chaqirilgan taqdirdagina mumkin. Asosiy funktsiyalarga qo'ng'iroqlarning to'g'riligini nazorat qilish kompilyator tomonidan amalga oshiriladi.


Ikkinchi farq bu standart C kutubxonasi funksiyasi chaqirilgan ifodadagi printf funksiyasi nomi oldidagi [host] konstruktsiyasidir. Printf funksiyasi to‘g‘ri ishlashi uchun asosiy funksiyadan farqli o‘laroq, uni parallel dasturning barcha jarayonlari bilan parallel chaqirish shart emas. Bundan tashqari, bu funktsiyani parallel dasturning har qanday individual jarayoni tomonidan chaqirish juda mazmunli va to'g'ri. Bunday funksiyalar mpC da tugun funksiyalari deb ataladi. Til tugun funksiyasini parallel dasturning alohida jarayoni sifatida yoki jarayonlar guruhi tomonidan parallel chaqiruv sifatida chaqirish imkoniyatini beradi. Bizning holatda printf funksiyasi parallel dasturning faqat bitta jarayoni, ya'ni foydalanuvchining ushbu parallel dasturni ishga tushirgan terminali bilan bog'liq jarayon tomonidan bajariladi. Kalit nomi xost bu jarayon bilan mpC tilida qat'iy bog'langan.


Shunday qilib, dasturning bajarilishi shundan iboratki, printf funksiyasiga qo'ng'iroqni amalga oshiradigan xost jarayoni bundan mustasno, dasturdagi boshqa barcha jarayonlar shunchaki hech narsa qilmaydi.


Keyingi dastur p2.mpc “Salom, dunyo!” dasturidan kamroq farq qiladi. C tilida. Biroq, mazmun jihatidan u p1.mpc dasturidan ko'ra ko'proq parallel hisoblashlarni tavsiflaydi. Ya'ni, p2.mpc dasturining bajarilishi printf funksiyasiga chaqiruvni bajaruvchi parallel dasturning barcha jarayonlaridan iborat. Ushbu dasturning chiqishi dastur bajariladigan operatsion muhitga bog'liq. Ba'zi muhitlarda barcha parallel jarayonlarning standart chiqishi foydalanuvchining dasturni boshlagan terminaliga yo'naltiriladi. Bunday holda, foydalanuvchi shuncha ko'p "Salom, dunyo!" tabriklarini ko'radi. terminalingizda qancha parallel jarayon dasturni tashkil qiladi - har bir jarayondan bittadan. Boshqa muhitlarda siz faqat xost jarayoni bilan bir xil mashinada ishlaydigan jarayonlardan yoki hatto faqat xost jarayonidan salomlarni ko'rasiz.


p2.mpc dasturining ko'chirilmasligi (turli muhitda turli natijalar) jiddiy kamchilikdir. Parallel dasturning barcha jarayonlaridan foydalanuvchi terminaliga salomlarni ko'rsatadigan p3.mpc dasturida bu kamchilik yo'q. MpC tilining MPC_Printf kutubxona tugun funksiyasi uni bajaruvchi har bir parallel dastur jarayonidan foydalanuvchi terminaliga salom chiqishini ta'minlaydi.


Keyingi dastur p4.mpc bizning birinchi dasturimiz p1.mpc dan faqatgina xost jarayoni foydalanuvchi terminaliga mazmunliroq xabarni chop etishi bilan farq qiladi, parallel dasturdagi boshqa jarayonlar esa hali hech narsa qilmaydi. Ya'ni, salomlashishdan tashqari "Salom, dunyo!" Xost jarayoni o'zi ishlayotgan kompyuter nomi haqida xabar beradi. Shu maqsadda dastur xost jarayoni xotirasida joylashgan un o'zgaruvchisini belgilaydi (bu fakt uning ta'rifida o'zgaruvchi nomidan oldin [host] konstruktsiyasi yordamida ko'rsatilgan). Xost jarayoni tugun (kutubxona) funksiyasini uname chaqirgandan so'ng, un strukturasining tugun nomi maydonida jarayon ishlayotgan kompyuter nomiga havola bo'ladi.


Keyingi dastur, p5.mpc, foydalanuvchi terminaliga parallel dasturning barcha jarayonlaridan yanada mazmunli xabarlarni ko'rsatadi. Salomdan tashqari "Salom, dunyo!" Har bir jarayon o'zi ishlayotgan kompyuter nomini bildiradi. Buning uchun dasturda taqsimlangan un o'zgaruvchisi aniqlanadi.


Biz hozirgacha ko'rib chiqqan dasturlar parallel dasturning barcha jarayonlarini yoki faqat xost jarayonini o'z ichiga olgan hisoblashlarni tasvirlab berdi. Biroq, ko'pincha, masalani parallel hal qilishda ishtirok etadigan jarayonlar soni muammoning o'ziga va/yoki uni hal qilishning parallel algoritmiga bog'liq va kirish ma'lumotlari bilan belgilanadi. Misol uchun, agar o'zaro tortishish ta'sirida jismlarning N guruhini parallel simulyatsiya qilish uchun jismlarning har bir guruhi uchun alohida jarayon qo'llanilsa, u holda jarayonlarning umumiy sonidan qat'i nazar, mos keladigan parallel hisob-kitoblarda aynan N ta jarayon ishtirok etishi kerak. parallel dasturni tuzing (esda tutingki, parallel dasturni ishga tushirish mpC tilidan tashqari vositalar yordamida amalga oshiriladi va shuning uchun uni tashkil etuvchi jarayonlarning umumiy soni mpC dasturini ishlab chiquvchi tomonidan aniqlanmaydi - u faqat til vositalariga ega. bu raqamni aniqlash uchun).


p9.mpc dasturi dasturchiga kerakli miqdordagi jarayonlar bo'yicha parallel hisoblashlarni tavsiflash imkonini beruvchi til vositalari bilan birinchi tanishuvni beradi. Hisob-kitoblarning o'zi hamon juda oddiy - ishtirok etayotgan jarayonlarning har biri oddiygina foydalanuvchi terminalida "Salom, dunyo!" Salomini ko'rsatadi. Ishtirok etuvchi jarayonlar soni (N=3) dasturchi tomonidan belgilanadi va parallel dasturni tashkil etuvchi jarayonlarning umumiy soniga bog'liq emas.


MPC tilida ba'zi parallel hisoblarni birgalikda bajaradigan jarayonlar guruhi tarmoq tushunchasiga mos keladi. MPC tarmog'i dasturchiga parallel dasturning haqiqiy jismoniy jarayonlari bilan ishlashni osonlashtiradigan mavhum mexanizmdir (dasturlash tillarida ma'lumotlar ob'ekti va o'zgaruvchi tushunchalari xotira bilan ishlashni qanday osonlashtirganiga o'xshash) .


Eng oddiy holatda, tarmoq shunchaki virtual protsessorlar to'plamidir. Parallel jarayonlarning kerakli soni bo'yicha hisob-kitoblarni dasturlash uchun, birinchi navbatda, virtual protsessorlarning tegishli sonidan iborat tarmoqni aniqlash kerak. Va faqat tarmoq aniqlangandan so'ng, siz ushbu tarmoqdagi parallel hisoblashni tasvirlashni boshlashingiz mumkin.


Tarmoqni belgilash ushbu tarmoqni ifodalovchi jarayonlar guruhini yaratishga olib keladi, shuning uchun har bir virtual protsessor parallel dasturning alohida jarayoni bilan ifodalanadi. Tarmoqdagi hisob-kitoblarning tavsifi tarmoqning virtual protsessorlarini ifodalovchi parallel dastur jarayonlari tomonidan tegishli hisob-kitoblarni amalga oshirishga olib keladi. Haqiqiy jarayonlar va virtual protsessorlar o'rtasidagi muhim farq shundaki, parallel dasturni bajarishning turli nuqtalarida bir xil jarayon turli tarmoqlardagi turli virtual protsessorlarni ifodalashi mumkin. Boshqacha qilib aytganda, tarmoqni aniqlash uning virtual protsessorlarini parallel dasturning real jarayonlariga solishtirishga olib keladi va bu xaritalash tarmoqning butun umri davomida saqlanib qoladi.


Shunday qilib, p9.mpc dasturida dastlab N virtual protsessordan iborat mynet tarmog'i aniqlanadi, so'ngra bu tarmoqda tugunlar kutubxonasi MPC_Printf funksiyasi chaqiriladi. Ushbu dasturning bajarilishi mynet tarmog'ining virtual protsessorlari ko'rsatilgan N dastur jarayonlari tomonidan MPC_Printf funksiyasiga parallel chaqiruvdan iborat. Ushbu xaritalash dasturni bajarish jarayonida mpC tili dasturlash tizimi tomonidan amalga oshiriladi. Agar dasturlash tizimi xaritalashni amalga oshira olmasa (masalan, N qiymati dasturning umumiy jarayonlar sonidan oshsa), u holda dastur tegishli diagnostika bilan ishlamay qoladi.


[mynet] va [host] konstruktsiyalarining o'xshashligiga e'tibor bering. Haqiqatan ham, xost kalit so'zini har doim foydalanuvchi terminali bilan bog'langan xost jarayoniga moslashtirilgan bitta virtual protsessorning oldindan belgilangan tarmog'ining nomi sifatida ko'rish mumkin.


p10.mpc dasturi mynet tarmog'ining virtual protsessorlari ko'rsatilgan parallel dasturning jarayonlaridan foydalanuvchi terminaliga yanada mazmunli xabarlarni ko'rsatadi. "Salom, dunyo!" Salomiga qo'shimcha ravishda, bunday jarayon o'zi ishlayotgan kompyuter nomini bildiradi. Buning uchun dastur mynet tarmog'i orqali taqsimlangan un o'zgaruvchisini belgilaydi. Faqat mynet virtual protsessorlarini amalga oshiradigan jarayonlar xotirasida ushbu o'zgaruvchining nusxasini o'z ichiga oladi. Faqatgina ushbu jarayonlar uname funktsiyasiga qo'ng'iroq qiladi (bu funktsiya nomidan oldin [mynet] konstruktsiyasi tomonidan belgilanadi), shundan so'ng taqsimlanmagan strukturaning har bir proyeksiyasining tugun nomi maydonida kompyuter nomiga havola bo'ladi. tegishli jarayon ishlayotgan.


p11.mpc dasturi semantik jihatdan p10.mpc dasturiga to'liq mos keladi, lekin maxsus, taqsimlangan, [mynet] yorlig'idan foydalanish tufayli: u oddiyroq sintaksisga ega. Bunday yorliq bilan belgilangan operator (bizning holatda, bu murakkab operator) tegishli tarmoqning virtual protsessorlari tomonidan to'liq bajariladi.


Hozirgacha tahlil qilingan dasturlarda barcha virtual tarmoq protsessorlari parallel ravishda aynan bir xil hisob-kitoblarni amalga oshirdi. Shuning uchun biz ularni tarmoq ichida farqlashimiz shart emas edi. Agar dasturlashtirilishi kerak bo'lgan parallel algoritm turli xil hisob-kitoblarni bajarish uchun turli xil parallel jarayonlarni talab qilsa, u holda tarmoq ichida alohida virtual protsessorlarni ajratish uchun vosita kerak bo'ladi. Bunday imkoniyatlar mpC tilida taqdim etiladi. Ular har qanday tarmoqning virtual protsessorlarini ma'lum bir koordinatalar tizimiga bog'lash va uning koordinatalarini ko'rsatgan holda alohida virtual protsessorni tanlash imkonini beradi.


Umuman olganda, mpC dasturida siz faqat tarmoqni aniqlay olmaysiz, faqat u yoki bu turdagi tarmoqni belgilashingiz mumkin. Tur tarmoqning eng muhim atributidir, xususan, uning virtual protsessorlariga kirish operatsiyalarini belgilaydi. Turni ko'rsatish har qanday tarmoq ta'rifining zarur qismidir. Shuning uchun tarmoqning har qanday ta'rifidan oldin tegishli tarmoq turining ta'rifi bo'lishi kerak. Biz koʻrib chiqqan misollarda SimpleNet tarmogʻi turining taʼrifi mpc.h sarlavhasidagi boshqa standart mpC tili taʼriflari orasida topilgan va #include preprocessor direktivasi yordamida dasturga kiritilgan. Ushbu ta'rif quyidagicha ko'rinadi:


nettype SimpleNet(int n) {


koordinat I=n;


};


U butun son parametri n bilan parametrlangan tarmoq tipidagi SimpleNet nomini taqdim etadi. Ta'rifning tanasi 0 dan n-1 gacha bo'lgan I koordinatali o'zgaruvchini e'lon qiladi. SimpleNet turi eng oddiy parametrlangan tarmoq turi bo'lib, koordinata chizig'idagi joylashuvi bo'yicha chiziqli tartiblangan n ta virtual protsessordan iborat tarmoqlarga mos keladi.

p9.mpc dasturini biroz o'zgartirish orqali olingan p15.mpc dasturi virtual protsessorlarni turli koordinatalar bilan turli xil hisob-kitoblarni amalga oshirish uchun qanday dasturlashingiz mumkinligini ko'rsatadi. Bu dastur ikkilik operatsiya koordofidan foydalanadi, uning chap operandi bizning holatlarimizda I koordinata o'zgaruvchisi, o'ng operand esa tarmoq mynetidir. Amaliyot natijasi mynet tarmog'i bo'ylab taqsimlangan butun son qiymati bo'ladi, uning har qanday virtual protsessorga proyeksiyasi tarmoqdagi ushbu protsessorning I koordinatasi qiymatiga teng bo'ladi. my_coordinate = I coordof mynet ni tayinlagandan so'ng, my_coordinate o'zgaruvchisining proyeksiya qiymatlari mynet tarmog'idagi mos keladigan virtual protsessorlarning koordinatalariga teng bo'ladi. Natijada, juft koordinatali virtual protsessorlar foydalanuvchi terminalida “Salom, hatto dunyo!” salomini, toq koordinatali virtual protsessorlar esa “Salom, g‘alati dunyo!” salomini ko‘rsatadi.


p16.mpc dasturi virtual protsessorlari ikki o'lchovli koordinatalar tizimiga bog'langan tarmoqni namoyish etadi. Tarmoqning virtual protsessorlarining har biri tarmoqdagi o'z koordinatalarini va dasturlash tizimi uni foydalanuvchi terminaliga joylashtirgan kompyuter nomini ko'rsatadi. E'tibor bering, ushbu dasturdagi koordof operatsiyasining ikkinchi operandi tarmoq emas, balki un o'zgaruvchisidir. Umuman olganda, agar koordof operatsiyasining ikkinchi operandi tarmoq emas, balki ifoda bo'lsa, u holda bu ifoda baholanmaydi, faqat uning qiymati taqsimlangan tarmoqni aniqlash uchun ishlatiladi va operatsiya xuddi shunday bajariladi. tarmoq ikkinchi operand sifatida ishlatilgan.


Biz allaqachon aytgan edik, avtomatik tarmoqning ishlash muddati u belgilangan blok bilan cheklangan. Ushbu blokni tark etganda, tarmoq mavjud bo'lishni to'xtatadi va tarmoqning virtual protsessorlari ostida olingan dastur jarayonlari bo'shatiladi va boshqa tarmoqlarni yaratish uchun ishlatilishi mumkin.


Bunday avtomatik tarmoqda bajarilgan hisob-kitoblarning natijalari qanday saqlanadi va keyingi hisob-kitoblarda foydalanish mumkinligi haqida savol tug'iladi. Tahlil qilingan dasturlarda bunday muammo yuzaga kelmadi, chunki har qanday tarmoqdagi hisob-kitoblarning yagona natijasi foydalanuvchi terminaliga u yoki bu xabarning chiqishi edi.


Aslida, mpC tilidagi tarmoqlar bir-biridan butunlay mustaqil emas. Har bir yangi yaratilgan tarmoq yaratilish vaqtida allaqachon mavjud bo'lgan tarmoqlar bilan umumiy bo'lgan bitta virtual protsessorga ega. Ushbu virtual protsessor yaratilgan tarmoqning ota-onasi deb ataladi va u to'xtatilgan taqdirda hisob-kitoblar natijalari tarmoqqa uzatiladigan havola hisoblanadi. Tarmoqning ota-onasi uning ta'rifi bilan aniq yoki bilvosita ko'rsatilgan.


Hozircha hech qanday tarmoq aniq ota-ona bilan belgilanmagan. Barcha holatlarda, ota-ona bilvosita ko'rsatilgan va bu ota-ona virtual xost protsessoridan boshqa narsa emas edi. Bu yechim ravshan, chunki har qanday vaqtda har qanday dasturni bajarishda faqat bitta tarmoq mavjudligi kafolatlanadi - har doim foydalanuvchi terminali bilan bog'langan xost jarayoniga ko'rsatilgan yagona virtual protsessordan iborat oldindan belgilangan xost tarmog'i. .


p17.mpc dasturi p16.mpc dasturiga to'liq ekvivalentdir, farqi shundaki, tarmoq ta'rifida tarmoq ota-onasining yashirin spetsifikatsiyasi aniq bilan almashtiriladi.


Yana bir farqni tarmoq turini aniqlashda topish mumkin. U erda ushbu turdagi tarmoqlarda ota-onaning koordinatalarini aniq ko'rsatadigan chiziq qo'shilgan (sukut bo'yicha, yaratilgan tarmoqda ota-ona nol koordinatalariga ega). Agar biron sababga ko'ra mynet tarmog'ining ota-onasi eng kichik emas, balki eng katta koordinataga ega bo'lishi kerak bo'lsa, u holda Mesh tarmoq turini aniqlashda ota [0,0] spetsifikatsiyasi o'rniga ota-ona [ dan foydalanishimiz kerak. m-1,n-1] spetsifikatsiyasi.


Tahlil qilingan har qanday dasturda, uni amalga oshirishning istalgan vaqtida bir vaqtning o'zida bir nechta tarmoq mavjud emas. Bu til cheklovi emas. mpC tili ixtiyoriy miqdordagi parallel mavjud tarmoqlar bilan dasturlar yozish imkonini beradi. Yagona cheklov - tarmoqning virtual protsessorlari xaritada joylashgan parallel dasturni tashkil etuvchi jarayonlarning umumiy soni.




p18.mpc dasturida parallel ravishda uchta tarmoq mavjud - net1, net2 va net3. Net1 ning ota-onasi virtual xost protsessoridir. Net2 tarmog'ining ota-onasi koordinatasi 1 bo'lgan net1 tarmog'ining virtual protsessoridir. Net3 tarmog'ining ota-onasi koordinatasi 2 bo'lgan net1 tarmog'ining virtual protsessoridir.
Download 61.5 Kb.

Do'stlaringiz bilan baham:




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