OpenMPda parallelizatsiya dasturi.
OpenMP'ni Pthreads (yoki shunga o'xshash yozuvlar kutubxonalari) orqali yuqori darajadagi qo'shimcha sifatida o'ylash mumkin; OpenMP terminologiyani va Pthreads-ga yaqin bo'lgan dasturiy modelini, masalan, dinamik ravishda yaratilgan ish zarrachalarini, birgalikda va birgalikdagi ma'lumotlarni va sinxronlashtirish uchun "qulflarning" mexanizmidan foydalanadi.
OpenMP texnologiyasining muhim ustunligi dasturiy vosita dasturda parallellik manbasini o'z ichiga olgan bo'limlarni asta-sekinlik bilan topib, taqdim etilgan mexanizmlardan foydalangan holda ketma-ket dasturlashni amalga oshirish imkoniyati bo'lib, ularni parallel qiladi va keyinchalik quyidagi bo'limlarni tahlil qilishga o'tadi. Shunday qilib, dasturda parallel bo'lak asta-sekin kamayadi. Ushbu yondashuv ketma-ketlikdagi dasturlarni parallel kompyuterlarga moslashtirish jarayonini, shuningdek disk raskadrovka va optimallashni osonlashtiradi. Ushbu qo'llanmada OpenMP funksiyasining tavsifi ko'plab misollar bilan ta'minlangan. Barcha misollar M.V. Moskva Davlat Universitetining Tadqiqot Kompyuterlari Markazining Parallel Axborot Texnologiyalari Laboratoriyasi xodimlari tomonidan sinovdan o'tgan. Lomonosov "SKIF" SKU MSU "CHEBYSHEV" da Intel Fortran / C ++ 11.0 kompyuteri yordamida ishlaydi. OpenMP mexanizmlarini ishlatish uchun OpenMP derivatori bilan mos kalit bilan kompilyatsiya qilishingiz kerak (masalan, icc / ifort -openmp derleyici kaliti, gcc / gfortran -f openmp, Sun Studio -xopenmp, Visual C ++ - / openmp, PGI - mp). Derleyici OpenMP direktivalarini sharhlaydi va parallel kod yaratadi. OpenMP-ni qo'llamaydigan kompilyatorlardan foydalanilganda OpenMP direktivlari qo'shimcha xabarlarsiz e'tiborsiz qilinadi. 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'llabquvvatlaydigan derleyici 2008/05 da _OPENMP ni belgilaydi. Derivatning OpenMP ning har qanday versiyasini qo'llab-quvvatlashini tekshirish uchun, shartli derleme ko'rsatmalarini #if def yoki #if n def yozib olish kifoya. C va Fortran dasturlarida shartli kompilyatsiya qilishning eng oddiy misollari 1-misolda keltirilgan.
#include int main(){
#if def _OPENMP print f ( " Open MP is supported! \n " ) ;
#endi f }
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. Dastur navbatdagi maydon bilan boshlanadi - birinchi navbatda, bir jarayon (parrak) ishi, parallel maydonga kirgandan keyin yana bir necha protsedura hosil bo'ladi, bu kodning ayrim qismlari o'rtasida taqsimlanadi. Parallel mintaqa tugagandan so'ng, bitta (ustunli master) tashqari barcha iplar tugatiladi va navbatdagi hudud boshlanadi. Dastur parallel va navbatdagi hududlarning har qanday sonini bo'lishi mumkin. Bundan tashqari, parallel joylar ham ichki bo'lishi mumkin. Tugallanmagan jarayonlardan farqli o'laroq, bug'doy hosilasi nisbatan tez operatsiya hisoblanadi, shuning uchun tez-tez o'sib chiqadigan va iplarning bekor qilinishi dasturning ish vaqtiga juda ta'sir qilmaydi. Samarali parallel dasturni yozish uchun, dasturni qayta ishlash bilan shug'ullanadigan barcha mavzular foydali ish bilan bir xil tarzda o'rnatilgan bo'lishi kerak. Bunga turli xil OpenMP mexanizmlari mo'ljallangan yukni diqqat bilan balanslash orqali erishiladi. Muhim nuqta ham birgalikda ma'lumotlarga kirishni sinxronlashtirishning zarurati hisoblanadi. Bir nechta tarmoqlar uchun umumiy bo'lgan ma'lumotlarning mavjudligi bir vaqtning o'zida muvofiqlashtirilmagan kirish bilan nizolar keltirib chiqaradi. Shuning uchun, OpenMP funksionalligining muhim qismi ishchi iplarni sinxronlashtirishning turli turlarini amalga oshirish uchun mo'ljallangan. OpenMP turli xil ish zarralarini bir xil fayllarga sinxronlashtirmaydi. Agar dasturning to'g'riligi uchun zarur bo'lsa, foydalanuvchi sinxronlik ko'rsatmalarini yoki tegishli kutubxona vazifalarini aniq ishlatishi kerak. Har bir ish zarrachasiga faylga kirganda, sinxronizatsiya talab qilinmaydi.
PPO ikki asosiy vazifani bajaradi. Birinchi - resurslarga ilovalarning etishishini engillashtirish. Bu xususiyatlar ayniqsa, Ishlab chiquvchilar uchun muhim ahamiyatga ega, chunki ularga ko’proq vaqtni resurslarga ega bo’lish mehanizmini ishlab chiqarishga emas, balki mantiqga ajratishga imkon beradi. PPO ning ikkinchi vazifasi – o’zaro harakat jarayonlarining jadallashuvi. Albatta, dasturiy ta'minot o’zaro harakatlarni ta’minlash uchun mahsus loyihalashtirilgan bo’lib, odatda, ishlab chiqaruvchilar tomonidan yaratilgan maxsus bo`lmagan echimlarga nisbatan yaxshiroq unumdorlikka ega.
Oraliq dasturiy ta’minotni (PPO) amaliy dasturiy ta’minotning mahsus darajasi deb aniqlaymiz, bunda u ilovaning parallel hisoblash qismi bilan operatsion tizimning kommunikastion darajasi orasida joylashgan va ilovalarni tizimiy bayonotlar va operastion tizimning instrumentlari bilan bog’laydi. Oraliq dasturiy ta’minot apparat-dasturiy platformalarninig farqini tekislaydi.
Parallel dasturlash tillarning kengayishi
Mahsuslashtirilgan parallel tillar va mavjud tillarni kengaytirish.
NORMA - hisoblash vazifalari mahsuslashtirilishining uslubsiz tili.
ABCL (An object-Based Concurrent Language) - ob'ektga yo'naltirilgan dasturlash elementlari va xabarlar yuborish vositalarini birlashtiradigan parallel tili. Adl - parallel dasturlash uchun mo'ljallangan, ma'lumotlarning bir gancha turlari va konstrukstiyalariga ega funktsional tili. Bu tarqalgan xotirali abstract mashinani dasturlashga qaratilgan.
Ada –Parallel dasturlarni yaratishga mo’ljallangan vositalarni o'z ichiga olgan universal dasturlash tili. AQSh Mudofaa vazirligining rasmiy dasturlash tili. Ko’pgina turli platformalar uchun turli xil kompilyatorlar mavjud.
Concurrent Clean – ketma ket va parallel dasturlarni yaratish imkonini beruvchi oliy darajadagi ko'p maqsadi dasturlash tili. Ko'p platformalar uchun tadbiq qilish mumkin.
MC # - klaster va GRID-arxitekturalarga qaratilgan va parallel dasturlashda C # tilining barcha avzalliklarini ishlatishga imkon beradigan MC # dasturlashning asinhron parallel tilini yaratish bo’yicha yangi loyiha. Ushbu til local va tarqoq tartibda bajarilishi mumkin bo’lgan oson o’qiladigan va samarali dasturlash kodini yaratish imkonini beradi.
DVM- turli arxitekturali parallel kompyuterlar uchun C-DVM va FortranDVM tillarda ko'chma va samarali hisoblash ilovalarini yaratish uchun mo'ljallangan tizim.
Qisqartma DVM ikki tushunchalariga mos keladi: Tarqatish Virtual Xotira va tarqatish Virtual Machine. Birinchisi yagona manzil maydon mavjudligini aks ettiradi. Ikkinchisi virtual mashinalarini malumotlarni tasvirlash va real parallel mashinada hisoblashni ikki bosqichli sxemada foydalanishni aks ettiradi
DVM tizimi ham LIB-DVM, DVM otladchik, DVM dasturlarini ishini bashoratlovchi, DVM dasturlarini maxsuldorligini qo`llab quvvatlovchi kutubxonalar qatoriga kiradi.
Erlang – turli xilda taqsimlangan tizimlar uchun dasturlar yozish imkonini beruvchi dasturlash tili. Ushbu til parallel jarayonlarni ko`paytirish va asinxron xabarlar orqali aloqa qiluvchi vositalarni o`z ichiga oladi.
Modula-3 - universal dasturlash tili, Bu til ko'p oqimli dasturlar ishlab chiqish imkoniyatini o'z ichiga oladi.
NESL – parallel dasturlash tili bo`lib, bir xil tipdagi malumotlar ustida istalgan funksiyani parallel bajarish imkoniyatiga ega. Bundan tashqari kompyuter unumdorligini analiz qiluvchi vositasini ham o`z ichiga oladi.
Occam - parallel dasturlash tili, ko`proq transputer tizimlari uchun parallel dasturlar yozishga qaratilgan.
Orca – taqsimlangan xotiraga ega kompyuterlar uchun parallel dasturlash tili. Dinamik jarayonlarni paydo qilish, va ularni protsessorda aks ettirish vositalarini, shuningdek, alohida obektlar o`rtasida aloqani o`rnatishni o`z ichiga oladi.
Parallaxis – Modula-2 tiliga asoslangan strukturali parallel dasturlash tili. Foydalanuvchiga dastur ishlashi lozim bo`lgan virtual mashina konfiguratsiyalarini sozlash imkoniyatini beradi.
Phantom – kata taqsimlangan interaktiv ilovalarni yaratishga mo`ljallangan dasturlash tili.
Sisal - funktsional dasturlash tili. Dasturchi yaratayotgan dasturining parallel xususiyatlari haqida qayg`urmasa ham bo`ladi, chunki kompilyator o`zi barcha bo`g`liq bo`lmagan qismlarni topadi hamda protsessorlarga taqsimlab beradi.
SR(Synchronizing Resources) - parallel dasturlash tili. Tilning asosiy tuzilmalar: resurslar(CPU va ma'lumotlar) va operatsiyalar. Turli ko`rinishdagi sinxronlashtirishni, xabar uzatish, dinamik jarayon yaratish, bo`linuvchi o'zgaruvchilardan foydalanishni qo'llab-quvvatlaydi.
ZPL(Zebra Programming Language)- parallel dasturlash tili. Bu massivlar va massivlar seksiyasi ustida amallar bajarish imkoniyatini o`z ishiga oladi. Dasturchi parallelism haqida buyruq bermaydi, barcha parallel xususiyatlar kompilyator tomonidan aniqlanadi.
Maxsus tillar kutubxonalari va interfeyslarining takomillashuvi
Parallel dasturlashning kommunikatsion kutubxonalar va interfeyslar (API):
ACE - C ++ tilida tarqatilgan tarmoqli ilovalarini taqsimlash uchun ob’ektga yo’naltirilgan muhit. Bepul tarqatiladi. Bunda Win32 platforma, UNIX, MVS, turli realtime-tizimlar qo'llab-quvvatlanadi. Java-versiyasi mavjud.
ARCH – parallel komputerlarni dasturlash uchun ob'ektga yo'naltirilgan kutubxona. C ++ da joylashgan MPI dan foydalanadi. Asinxron jarayonlarni kommunikastiyalash uchun kostrukstiyalar taklif qiladi va umumiy hotiradan foydalanishni yumshatadi.
BIP (Basic Interface for Parallelism) - kichik API, Myrinet tarmog'i uchun mo'ljallangan. Uning maqsadi – taqdim qilingan uskuna bilan dastur foydalanuvchilar samaradorlikni yuqori darajaga chiqarish bilan ta'minlash. Ga Linux / ustida Klaster uchun amalga oshirilayotgan chips LANAI4.1 bilan Myrinet orqali ulangan, x86 asoslangan. Version 0.94, shuningdek, Linux / Alfa ishlaydi. Signal da ham (signal asoslangan MPICH bajarilishini,) MPI-signal va IP-signal (signal yordamida IP protokoli) yetkazib berdi.
XULOSA:
Menga berilgan mavzu hozirgi vaqtda juda kerakli bo’lib, bu har qanday uzoq vaqt talab qiladigan vazifalarni bajarilish vaqtini bir necha barobar qisqartirishga yordam beradi. Ish samaradorligini oshirishga va insoniyat rivojlanishiga yordam beradi. Insoniyatni kelajakka ancha tezroq erishishga yordam beradi. Kompyuterlar rivojini ancha oldinga siljitadi va bu parallel dasturlashni bir nechta sohalarda qo’llab maqsadga tezroq erishish mumkin. Bu mavzu hozirgi kunda asosan dasturchilarga, tibbiyot sohalarida, kimyo sohalarida va yana bir qancha sohalarda ish samaradorliini oshirish va bajarilishi qiyin va uzoq vaqt oladigan vazifalarni tezda bajarishga yordam beryapti. Men bu mavzuni o’rganish jarayonida ko’pgina ma’lumotlarga ega bo’ldim va parallel dasturlarning hayotimizda naqadar zarurligi haqida bilib oldim
Foydalanilgan adabiyotlar va internet saytlari :
http://hozir.org/muhammad-al-xorazmiy-nomidagi-toshkent-axborot-texnologiyalari-v231.html?page=18
https://www.coursehero.com/file/p62j8rb/Massiv-parallel-kompyuterlar-kelishi-bilan-parallel-jarayonlarni-ozaro-qollab/
http://www.hozir.org/kompyuterning-dasturiy-taminoti-reja-sistemaviy-dasturiy-tamin.html
http://hozir.org
|