O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALARI VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALRI UNIVERSITETI FARG’ONA FILIALI Kompyuter injinering fakulteti 710-21 guruh talabasi Zakirov Biloljonning “Kompyuter arxitekturasi” fanidan bajargan MUSTAQIL ISHI Topshirdi: Zakirov B. Qabul qildi: Sobirov M. Mavzu: "Parallel hisoblash uchun moʻljalangan masalalar" Reja: I. II. 1. 2. 3. III. Kirish.Algoritmlar Asosiy qism Parallel algoritmlar va dasturlar Parallel algortimlarni shakllantirish bosqichlari Ko’p oqimli dasturlar Yakuniy qism. 1. Xulosa. 2. Foydalanilgan adabiyotlar Kirish.Algoritmlar Qo‘yilgan biror masalani EHMda yechish uchun, avval uning matematik modelini, keyin algoritmini va programmasini tuzish kerak bo‘ladi. Bu uchlikda algoritm bloki muhim ahamiyatga ega. Endi algoritm tushunchasining ta’rifi va xossalarini bayon qilamiz. Algoritm bu oldimizga qo‘yilgan masalani yechish zarur bo‘lgan amallar ketma-ketligidir. Algoritm so‘zi va tushunchasi IX asrda yashab ijod etgan buyuk alloma Muhammad al-Xorazmiy nomi bilan uzviy bog‘liq. Algoritm so‘zi AlXorazmiy nomini Yevropa olimlari tomonidan buzib talaffuz qilinishidan yuzaga kelgan. Al-Xorazmiy birinchi bo‘lib o‘nlik sanoq sistemasining tamoyillarini va undagi to‘rtta amallarni bajarish qoidalarini asoslab bergan. Algoritmning asosiy xossalari 5 ta: Diskretlilik (Cheklilik) Tushunarlilik Aniqlik Ommaviylik Natijaviylik Algoritmning tasvirlash usullari 4 ta: IV. Algoritmning so‘zlar orqali ifodalanishi V. Algoritmning formulalar bilan berilish VI. Algoritmlarning grafik shaklida tasvirlanishi VII. Algoritmning jadval ko‘rinishda berilishi Algoritmlarni shartli ravishda quyidagi turlarga ajratish mumkin: 4. Chiziqli algoritmlar blok sxema ko’rinishida quyidagicha tasvirlanadi: 5. Tarmoqlanuvchi algoritmlar blok sxema ko’rinishida quyidagicha tasvirlanadi: 6. Takrorlanuvchi yoki quyidagicha tasvirlanadi: siklik algoritmlar blok sxema ko’rinishida 7. Ichma-ich joylashgan siklik algoritmlar blok sxema ko’rinishida quyidagicha tasvirlanadi: Parallel algoritmlar va dasturlar Ba’zi bir zamonaviy dasturiy ta’minotlarga e’tibor qilsak, ularning ayrim tuzuvchilari dasturning ishlash effektivligiga va na xotiraning aql bilan ishlatilishiga e’tibor qilishadi. Ularning fikricha, dastur ko’p joy olsa, foydalanuvchi qo’shimcha xotira sotib olishga majbur bo’ladi yoki yangi tezroq ishlaydigan komyuter sotib oladi. Lekin kompyuterlarning tezligi cheksiz kattalashmaydi. U simli kabelda elektronlarning harakat tezligi bilan, optik kabellarda yorug’likning tarqalish tezligi bilan va hisoblashda qatnashadigan kompyuterlar orasidagi aloqa kanallarining komutativlik tezligi bilan chegaralanadi. Boshqa cheklovlar kompyuter imkoniyatlari bilan bog’liq emas, balki qo’yilgan masalaning murakkablik darajasiga bog’liq. Shunday masalalar mavjudki, ularni yechish uchun eng tez ishlaydigan algoritmlar qo’llanilganda ham odam umri yetmaydi. Bu masalalar orasida yaqinroq javob olish uchun algoritmlar kerak bo’ladigan, juda zarurlari ham mavjud. Komyuter sistemalarini to’rtta asosiy kategoriyaga ajratish mumkin. Bu uchun qanday ishlashi haqidagi ko’rsatmani birmuncha almashtiramiz. Markaziy protssessor nuqtai nazaridan dastur rasshifrovka qilish va bajarish kerak bo’lgan qoidalar oqimidir. Ma’lumotlarni ham oqim ko’rinishida kiruvchi deb hisoblash mumkin. Biz tahlil qiladigan to’rtta kategoriya ma’lumot va qoidalarning bitta oqimga kirish-kirmasligi bilan aniqlanadi. Bitta qoida / bitta ma’lumotlar oqimi (SISD). Bitta qoida / bitta ma’lumotlar oqimi (SISD) modeli o’zida bitta protssesorli klassik modelni ko’rsatadi. Unga eski avlod kompyuterlari bilan bir qatorda ko’pgina zamonaviy kompyuterlar ham misol bo’ladi. Bunday kompyuter protsessori har qanday vaqt momentida faqatgina bitta qoidani bajarishga qodir va faqat bitta ma’lumotlar to’plami bilan ishlay oladi. Bu kabi ketma-ket sistemalarda boshqa kategoriyalardan farqli ravishda hech qanday parallellik yo’q. Bitta qoida / bir nechta ma’lumotlar oqimi (SIMD). Bitta qoida / bir nechta ma’lumotlar oqimibo’lgan komyuterlarda (SIMD) bir xil operatsiyani turli xil ma’lumotlar bilan ishlovchi bir nechta protssessorlar mavjud. SIMD - mashinalar ba’zan vektorli protsessorlar deb ham ataladi, chunki ular vektorlar ustida amal bajarish uchun juda qulay. Bunda har qaysi protssesorga bitta vector koordinasi beriladi va amal bajarilgandan so’ng natija vektor kelib chiqadi. Masalan, vektorlarni qo’shish – koordinatalar orqali bajariladigan amal. Vektorlar yig’indisining birinchi koordinatasi – qoshiluvchi vektorlar birinchi koordinatalarining yig’indisi, ikkinchi koordinata – ikkinchi koordinalar yig’indisi va hokazo. Bizning SIMD mashinada har qaysi protssesor kiritiluvchi vektorlarning ikkita koordinatasini haqida qoidasi oladi. Bu yagona qoidani bajargandan so’ng natija to’liq hisoblanadi. E’tibor bersak, N ta elementdan iborat vektorni yechishga SISD mashinaga N ta iteratsion siklni bajarish kerak bo’lsa, protsessorlar soni N tadan kam bo’lmagan SIMD – mashinaga bitta amalning o’zi yetarli. Bir nechta qoida / bitta ma’lumotlar oqimi MISD Bir vaqtda faqat bir xil ma’lumotlar ustida amal bajarish avval g’alati tuyulishi mumkin, chunki qandaydir bir sonni kvadratga ko’tarish, ikkiga ko’paytirish, o’nga bo’lish kabi dasturlar kamdan-kam uchraydi. Lekin bu holatga boshqa nuqtai-nazardan qarasak, bunday tipdagi mashinalarda sonning tub yoki murakkabligini tekshirishni takomillashtish mumkinligini ko’ramiz. Agar protsessorlar soni N ta bo’lsa, unda biz ixtiyoriy 1 va N2 orasidagi sonlarning tub yoki murakkabligini MISD – mashina orqali bitta operatsiyada tekshirishimiz mumkin. Agar X son murakkab bo’lsa, unga to’g’ri kelmaydigan bo’luvchisi bo’lishi kerak. Sonning tubligini tekshirish uchun X<N2 sonni birinchi protsessorga ikkiga bo’lishga, ikkinchisini uchga bo’lishga, uchinchisini to’rtga va hokazo (K-1) protsessorni K ga bo’lishga buyruq beramiz. Demak bunda N tub sonmi yo’qmi degan savolga javob berish uchun N ta protsessorga har biriga 2 ga, 3 ga … N ga bo’l deb buyruq berish kerak bo’ladi. Bu masalani yechishda bizning yo’limiz qo’l kelishi mumkin. Bir nechta qoida / bir nechta ma’lumotlar oqimi MIMD Bu kategoriya kategoriyalar orasida ancha murakkabidir. MIMD – sistemalar holatida biz o’z qoidasini amalga oshira oladigan bir nechta protsessor bilan ish ko’ramiz. Bundan tashqari, bir nechta ma’lumotlar oqimi ham mavjud va har qaysi protsessor o’z ma’lumotlar to’plami bilan ishlay oladi. Bu amaliyotda MIMD – sistema har qaysi protsessorda o’z dasturini yoki o’sha dasturning alohida qismlarini yoki SIMD – konfiguratsiyaday vektorli amallarni bajara olishini anglatadi. Ko’pchilik parallelizmning yangicha yondashuvlarida, masalan komyuter klasterlari yoki multiprotsessorli sistemalarning asosida MIMD – kategoriya yotadi. Parallel kompyuterlar tizimlari arxitekturasida ikkita jihat asosiy rol o’ynaydi: 1. Protesssorlar va ularning xotiralari o’zaro qanday bog’langanligi; 2. Protsessorlarning qanday o’zaro ta’sir qilishi. Parallel algoritmlarni muhokama qilganda biz ana shu jihatlar haqida gapiramiz. Negaki u yoki bu yechimlar turli masalalar uchun turli samaradorlikka ega bo’lishi mumkin. Kuchsiz bog’langan mashinalarda ham protsessor o’z xususiy xotirasiga ega. Lekin protsessorlar o’rtasidagi aloqa tarmoq kabellari orqali amalga oshiriladi. Kompyuterlar klasterlarining arxitekturasi quyidagicha: 1. Klasterning har bir kompyuteri alohida kompyuter tizimi va mustaqil ishlay oladi. 2. Parallellik bosh boshqaruvchi kompyuter orqali masalani kompyuterlarga taqsimlash hisobiga amalga oshiriladi. Shina aloqali mashinalarda barcha protsessorlar umumiy markaziy xotiradan foydalanadi. Protsessorlar o’rtasida o’zaro ta’sir shunday amalga oshiriladiki, bunda ulardan biri axborotni umumiy xotiraga yozadi, boshqalari esa shu yerdan o’qib oladi. Parallel algoritmlarni va dasturlarni shakllantirish bir qancha mustaqil bosqichlardan iborat. Bularni 4 ta asosiy bosqichlarga bo’lishimiz mumkin: 1-bosqich. Dekompozitsiya; 2-bosqich. Kommunikatsiyani loyihalash; 3-bosqich. Mustahkamlash; 4-bosqich. Hisoblashni rejalashtirish; 1-bosqich. Dekompozitsiya (segmentlash, bo’laklash). Ma’lumotlarni dekompozitsiyalash, bu- ma’lumotlarni va algoritmlarni qayta ishlov berish uchun segmentlarga bo’lishdir. Ma’lumotlar taxminan bir xil hajmdagi qismlarga (fragmentlarga) bo’linadi, qismlar ularni qayta ishlash operatorlari bilan bog’lanadi, undan so’ng keying vazifalar hosil qilinadi. So’ngra uzatish zarur bo’lgan ma’lumotlar belgilanadi, zarur bo’lmaganlari olib tashlanadi. Boshlanishida eng ko’p murojaat qilinayotgan kichik hajmdagi axborotlar tahlil qilib chiqiladi. Ma’lumotlar strukturasini dekompozitsiya qilishda statik yoki dinamik dekompozitsiya qilish sxemalaridan foydalanish mumkin. Jarayonning boshida, funksional dekompozitsiya amalga oshiriladi. Hisoblash algoritmlari segmentlanadi, so’ng shu sxema asosida dekompozitsiyalangan ma’lumotlar jo’natiladi. Bu uslub parallellashtiriladigan ma’lumotlar strukturasi uchun to’g’ri keladi. Quyidagi tafsiyalar bajarilsa dekompozitsiyaning samaradorligiga erishiladi: Dekompozitsiyalangandan so’ng buyruqlar soni protsessorlar soniga mos kelishi kerak. Buyruqlar deyarli bir xil hajmda bo’lishi kerak. Topshiriqning hajmi oshishi bilan buyruqlar soni ham bir topshiriqdagi buyruqlar soniga proporsional ravishda oshishi kerak. Buyruqlar hajmi algoritm asosida aniqlanadi. Bu asos bir blokdagi operatsiyalar soniga mos ravishda olinadi: Kichik asosli parallellashtirish – buyruq darajasida: 20 dan 1000 tagacha buyruqlar parallel bajariladi, bir blokdagi o’rtacha buyruqlar soni 5 tani tashkil qiladi. O’rta blokli parallellashtirish – protsedura darajasida: blokdagi buyruqlar 2000 tagacha bo’ladi. Protseduralar orasidagi bog’liqlikni amalga oshirirsh murakkab. Kommunikatsiyadagi talablar keyingilarda ko’ra pastroq. Yirik blokli parallellashtirish – topshiriq darajasida: Mos ravishda, mustaqil dasturlarni parallel kompyuterlarda bajarishdir. Yirikblokli parallellashtirshni OT qo’llab quvvatlashi talab etiladi. Dekompozitsiyaning asosiy sharti – buyruqlarning mustaqilligidir: -ma’lumot bo’yicha mustaqil, qachonki ma’lumotlar dasturning biror qismida foydalanilayotganda boshqa qism orqali o’zgartirilishi kerak emas; -boshqaruv bo’yicha mustaqillik, dasturning bajarilish ketma-ketligi dastur bajarilish jarayonida aniqlanishi kerak; -resurslar bo’yicha mustaqillik, hisoblash jarayonida kompyuter resurslari yetarli bo’lishi kerak; -kiritish\chiqarish bo’yicha mustaqillik, buyruqlar uchun biror faylga o’qish/yozish, o’zgartirish uchun ruxsat berilishi kerak; 2-bosqich.Kommunikatsiyani loyihalash Kommunikatsiyaning asosiy turlari: - Ichki Kommunikatsiya ,har bir buyruq boshqa buyruqlar majmui bilan bog'liq bo'ladi; -Umumiy Kommunikatsiya, har bir buyruq boshqa bir qator bilan bog'liq bo'ladi; - Strukturali Kommunikatsiya, buyruqlar va kommunikatsiyaning doimiy tuzilishini, topologiyasini tashkil etadi; - Statik Kommunikatsiya, sxema kommunikatsiyasida vaqt bilan bog’liq o'zgarish kutilmaydi; - Dinamik kommunikatsiya, dastur ishlashi paytida sxema kommunikatsiyasida o’zgarishlar yuzaga keladi; - Sinxron kommunikatsiya , jo'natuvchi va qabul qiluvchi ma'lumotlar almashishda muvofiqlashtiriniladi. - Asinxron Kommunikatsiya, ma'lumotlar almashishda muvofiqlashtirish bajarilmaydi. 3-bosqich. Mustahkamlash. Ushbu bosqichda, bir hisoblash tizimi arxitekturasi ko'rib chiqiladi. Dastlabki ikki bosqichda olingan vazifalar protsessorlar soniga mos birlashtiriladi. Buning uchun quyidagi shartlar keyingi bosqichga o’tkazadi: - Kommunikatsiya uchun tizim xarajatlari kamaytiriladi; - Hisoblashlardan nusxa olinayotganda yoki mustahkamkash amalga oshirilayotganda dastur faoliyatida yo’qotilish kuzatilinmasligi kerak; - Topshiriq natija qaytarganda taxminan bir xil tipdagi ma’lumot bo’lishi kerak; -Dasturning parallel holatda ishlash imkoniyati saqlab qolinishi shart, - Rivojlanish murakkabligi kamaytirish lozim. 4-bosqich. Hisoblashni rejalashtirish; Parallel dasturlashning asosiy o’lchovi – samaradorligi dastur bajarilishiga ketgan eng qisqa vaqtdir. Protsessorlarga buyruq oqimlarini bo’linayotganda maksimal darajada bir-biriga nisbatan bog’lanmagan bo’lishi kerak. Buning uchun quyidagi strategik sxemalar bajariladi: - "Boshliq/ishchi “ sxemasi - “Boshliq/ishchi” ieararxik sxemasi - Markazlashmagan strategiyasi. "Boshliq/ishchi “ sxemasida vazifalar asosiy vazifa(Boshliq) o’ziga biriktirilgan “ishchi” vazifalarga yuklanadi. Ishchi dasturlar asosiy dasturdan ma’lumotlarni qabul qiladi va qayta ishlab asosiy dasturga yuboradi. 1-rasm. “Boshliq/ishchi” o’rtasidagi topshiriqlarni joylashish sxemasi. “Boshliq/ishchi” ieararxik sxemasida topshiriq buyruqlarga bo’linadi (2-rasm), har bir buyruqlarning yuqorisida bosh buyruq bo’ladi, barcha bosh buyruqlar esa asosiy topshiriqga birlashadi 2-rasm. “Boshliq/ishchi” ieararxik sxemasi Markazlashmagan sxema (3-rasm). Bunday holatda bosh buyruq bo’lmaydi, ma’lumotlar belgilangan bir qancha strategiyalar asosida amalga oshiriladi. 3-rasm. Buyruqlarni taqsimlanishining markazlashmagan sxemasi Xulosa. Men, KIF-710-21 guruh talabasi Zakirov Biloljon, Kompyuter arxitekturasi fanidan "Parallel hisoblash uchun moʻljalangan masalalar" mavzusida bajargan mustaqil ish jarayonida ushbu mavzuga aloqador koʻplab maʼlumotlarga ega boʻldim. Egallagan bilimlarimni amaliyotda tadbiq etaman. Foydalanilgan adabiyotlar ro’yxati https://tami.uz/matnga_qarang.php?id=371 http://refleader.ru/jgeqasmerpolaty.html https://intuit.ru/studies/courses/1146/238/lecture/6153 Мусаев М.М. “Компьютер тизимлари ва тармоқлари”. Тошкент.: “Aloqachi” нашриёти, 2013 йил. 8 боб. 394 бет. – Олий ўқув юртлари учун қўлланма.