|
Guruh: 211-20 F. I. O: Navruzbek Abduganiyev
|
bet | 1/2 | Sana | 18.11.2023 | Hajmi | 192,23 Kb. | | #100805 |
Yo’nalishi:KIF
Guruh:211-20
F.I.O: Navruzbek Abduganiyev
KOMPYUTER ARXITEKTURASI FANIDAN 6-TOPSHIRIQ
MAVZU: MPI PAKETINI ISHLASHINI O‘RGANISH
Parallell ishlov berish nima?
Parallel hisoblash deganda bir xil dasturning parallel bajarilishi tushuniladi. Parallel hisoblash bitta dasturni bajarish vaqtini qisqartirishi mumkin.E'tibor bering, kompyuterda bir nechta protsessorlarning mavjudligi ko'p dasturlash uchun zaruriy shartdir. Ko'p dasturlashni amalga oshirish uchun protsessorlarning o'zaro ishini tashkil qiluvchi operatsion tizimning mavjudligi etarli. Parallel hisoblashlar uchun qo'shimcha talab qo'yiladi - bu dasturning o'zi uchun talab - dastur hisoblashlarni parallellashtirish imkoniyatini berishi kerak.Operatsion tizimning paydo bo'lishi kompyuterni faqat "apparat" (xotira, protsessorlar, boshqa qurilmalar) sifatida ko'rish mumkin emasligini anglatadi. Endi u ikkita komponentga ega - qattiq va yumshoq - bir-birini to'ldiradigan apparat va dasturiy ta'minot komponentlari. Kompyuterlar mavjud bo'lgan yarim asr davomida ikkala komponent ham tez rivojlandi.
Parallell hisoblashlar deganda nimani tushunasiz?
Grafik protsessorlar. Uskuna darajasida parallel bajarilishi sodir bo'ladigan yana bir muhim dastur turi - bu grafik talab qilinadigan ilovalardir. Ushbu qayta ishlash amalga oshiriladi GPUlar. Grafik tasvir nuqtalar yig'indisi sifatida qarash mumkin. Rasmni qayta ishlash ko'pincha barcha nuqtalarda bir xil operatsiyani bajarishga to'g'ri keladi. Bunday vaziyatda ma'lumotlarga parallellashtirishni amalga oshirish oson. Shu sababli, GPU uzoq vaqtdan beri ko'p yadroli bo'lib, bu parallel ishlov berish va tasvirni samarali qayta ishlash imkonini beradi. Vektor va matritsali protsessorlar. Bunday protsessorlar uchun ko'rsatmalar to'plami vektorlar va matritsalar bo'yicha asosiy operatsiyalarni o'z ichiga oladi. Bitta buyruq, masalan, ikkita matritsa qo'shishi mumkin. Bunday buyruq aslida parallel hisoblashni amalga oshiradi. Ushbu operatsiyalar ma'lumotlarni qayta ishlashning asosini tashkil etadigan ilovalar keng tarqalgan. Uskunada amalga oshirilgan parallel ma'lumotlarni qayta ishlash ushbu sinfning ilovalari samaradorligini sezilarli darajada oshirishi mumkin.
Geterogin hisoblash tizimlari?
Geterogen tizimlar deganda bir nechta turli protsessor yoki yadrolardan foydalaniladigan tizimlar tushuniladi. Ushbu tizimlar ishlashni yoki energiya samaradorligini nafaqat bir xil turdagi protsessorlarni qo‘shish orqali, balki bir-biriga o‘xshamaydigan koprotsessorlarni qo‘shish orqali amalga oshiradi, odatda ma’lum vazifalarni bajarish uchun ixtisoslashtirilgan ishlov berish imkoniyatlarini o‘z ichiga oladi.
OpenMP texnologiyasi?
OpenMP API (Application Program Interface) bu o’zida umumiy xotirali parallelashgan C, C++ va Fortran dasturlari uchun komplyator diektivalarini, kutubxonalarni va o’zgaruvchilar tavsifini jamlangan paket hisoblanadi. C, C++ va Fortran tillarida direktivalar bitta dasturda bir nechta ma’lumotlar (SPMD-single program multiple data) tuzilmasi, vazifalar tuzilmasi, qurilma tuzilmasi, ish almashish tuzilmasi va moslashtirish tuzilmasini umumiy xotiraga o’zlashtirib beradi. Vazifasi ishlash vaqtini nazorat qilish, kutubxona va o’zgaruvchilar bilan ta’minlab berishdir. OpenMP ning asosiy komponentalari API OpenMP paketining kamchiliklari. OpenMP API yagona foydalanuvchi uchun mo’ljallangan. OpenMP dasturga bog’liq bo’lgan ma’lumotlar bog’liqligini, ma’lumotlar qarama-qarshiligini, muammoli holatlarni tekshirishni talab qilmaydi. Shu bilan birgalikda dasturdagi kodlar ketma-ketligini xam tekshirishni talab qilmaydi. Dasturchilar OpenMP API to’g’ri foydalanib dastur tuzishlari kerak. OpenMP API faqatgina murojaat qilgandan keyingina ishlaydi. OpenMP (Open MultiProcessing) kompilyator direktivasiga asoslangan parallel dasturlash modeli boʻlib, dastur ishlab chiquvchilarga oʻzlarining dastur kodlariga parallelizmni bosqichma-bosqich qoʻshish imkonini beradi.
OpenMP - bu ko'p ish zarralarini amalga oshirish , parallellashtirish usuli bo'lib, bunda birlamchi ip (ketma-ket bajariladigan ko'rsatmalar qatori) ma'lum miqdordagi pastki iplarni ajratib turadi va tizim ular orasida vazifani taqsimlaydi. Keyin iplar bir vaqtning o'zida ishlaydi , ish vaqti muhiti iplarni turli protsessorlarga ajratadi. OpenMP kompilyator direktivalari toʻplami hamda C, C++ yoki FORTRAN tillarida yozilgan dasturlar uchun API boʻlib, umumiy xotira muhitlarida parallel dasturlashni qoʻllab-quvvatlaydi. OpenMP parallel hududlarni parallel ravishda ishlashi mumkin bo'lgan kod bloklari sifatida belgilaydi. Ilova ishlab chiquvchilari parallel hududlarda o'z kodlariga kompilyator direktivalarini kiritadilar va bu direktivalar OpenMP ish vaqti kutubxonasiga mintaqani parallel ravishda bajarishni buyuradi.
OpenCL texnologiyasi?
Ushbu namuna protsessor va GPU o'rtasida qattiq hamkorlikda ko'p tarmoqli heterojen hisoblash ish yuklarini amalga oshirishni ko'rsatadi. Yangi OpenCL 1.1 foydalanuvchi hodisalari, mavzular uchun xavfsiz API qo'ng'iroqlari va hodisalarni qayta qo'ng'iroq qilish xususiyatlaridan foydalaniladi. PTX-ni OpenCL yadrosiga joylashtirish uchun yangi CUDA 4.0 drayveri qobiliyatini namoyish qiluvchi oddiy sinov ilovasi. Ko'p sonli kichik mustaqil tridiagonal chiziqli tizimlar uchun samarali matritsali echuvchilar. 3 xil hal qiluvchining OpenCL amalga oshirilishi: Parallel Cyclic Reduction, Cyclic Reduction, Sweep (Gaussni yo'q qilish + to'liq birlashtirish uchun qayta tartibni optimallashtirish). Ikkita 1 o'lchovli massivni element qo'shish orqali element. Oddiy C++ xost protsessorini amalga oshirish bilan funktsional taqqoslash bilan CUDA GPU'lar uchun OpenCLda joriy qilingan. Ushbu namuna matritsalarni ko'paytirishni amalga oshiradi va dasturlash qo'llanmasining 6-bobi bilan aynan bir xil. Bu matritsalarni ko'paytirish uchun eng samarali umumiy yadroni ta'minlash maqsadida emas, balki turli xil OpenCL dasturlash tamoyillarini ko'rsatish uchun ekspozitsiyaning ravshanligi uchun yozilgan. CUBLAS yuqori samarali matritsalarni ko'paytirishni ta'minlaydi.
CUDA texnologiyasi?
CUDA (Compute Unified Device Architecture) grafik protsessorlarga ma’lumotlarni parallel ravishda qayta ishlash imkonini beradi. Shuningdek CUDA dan foydalanib, Nvidia GPU quvvatidan shunchaki grafik hisob-kitoblar o‘rniga matritsalarni ko‘paytirish va boshqa chiziqli algebra operatsiyalarini bajarish kabi umumiy hisoblash vazifalarini bajarish uchun foydalanish mumkin. Ya’ni CUDA kompyuterning grafik protsessori GPUni qo‘llab-quvatlaydi. GPU CPU protsessoriga qaraganda yuzlab yadrolarga ega (1-rasm). 1-rasm. CPU va GPU . CUDA dasturida GPU va CPU uchun mo‘ljallangan dasturlash tillari: C/C++ va Python dasturlash tillarida amalga oshirishimiz mumkin. Python mashinali o‘qitish vazifalari uchun juda yaxshi dasturlash tili hisoblanadi. Hisoblash mashinalari ko‘pgina vazifalarni bajarishda natijalarga tezkorlik bilan erishish uchun asosiy apparat ta’minotidan imkon qadar to‘liqroq foydalanishi kerak. Bu esa o‘z navbatida Python dasturlash tilida tegishli kodlarni kiritish orqali parallellashtirishni keltirib chiqaradi. CUDA raqobatchisi OpenCL 2009-yilda NVIDIA GPU-larga ega Intel/AMD protsessorlari bilan cheklanmagan heterojen hisoblashlar uchun standartni taqdim etishga urinishda boshlangan. OpenCL oʻzining umumiyligi tufayli jozibador boʻlsa-da, u NVIDIA GPU’larida CUDA kabi yaxshi ishlamadi va koʻplab chuqur oʻrganish tizimlari OpenCL-ni qoʻllab-quvvatlamaydi yoki faqat CUDA qoʻllab-quvvatlashi chiqarilgandan soʻng uni qoʻllab-quvvatlaydi. CUDA yillar davomida takomillashtirilgan NVIDIA grafik protsessorlari bilan ko'proq yoki kamroq qadamda o'z ko'lamini kengaytirdi va kengaytirdi. Bir nechta P100 server grafik protsessorlaridan foydalanib, siz protsessorlarga nisbatan 50 martagacha ish faoliyatini oshirishingiz mumkin. V100 (bu rasmda ko'rsatilmagan) ba'zi yuklar uchun yana 3 baravar tezroq (shuning uchun 150x protsessorgacha) va A100 (shuningdek ko'rsatilmagan) yana 2 baravar tezroq ( 300x protsessorgacha). Oldingi avlod server grafik protsessorlari K80 protsessorlarga nisbatan 5-12 baravar yaxshilanishni taklif qildi.
MPI texnologiyasining arxetektura va algoritmlarini tushuntirib bering?
Xabarni uzatish modelida eng keng tarqalgan parallel dasturlash interfeysi MPI (Message Passing Interface) hisoblanadi. Message Passing Interface nomi o'zi uchun gapiradi. Bu xabar almashish modelida parallel dasturlarni yaratish uchun yaxshi standartlashtirilgan mexanizmdir. Deyarli barcha superkompyuter platformalari, shuningdek, UNIX va Windows NT ish stantsiyalari tarmoqlari uchun bepul (!) va tijorat ilovalari mavjud. MPI hozirda o'z sinfining eng keng tarqalgan va dinamik rivojlanayotgan interfeysi hisoblanadi. MPI ning tavsiya etilgan bepul amalga oshirilishi Argonne Milliy Laboratoriyasida ishlab chiqilgan MPICH paketidir. MPI MPI Forum tomonidan standartlashtirilgan. Standartning so'nggi versiyasi 2.0. Ushbu versiya MPI ga dinamik jarayonni boshqarish, bir tomonlama aloqa (Put/Get), parallel kiritish/chiqish kabi muhim funksiyalarni qo‘shadi. Yuqori hisoblash quvvatiga doimiy talab ko‘plab ishlab chiqaruvchilar uchun jozibador bozorni yaratdi. Ulardan ba'zilari kompyuterlarni klasterga ulash uchun o'zlarining texnologiyalarini ishlab chiqdilar. Ulardan eng mashhurlari MyriCom tomonidan Myrinet va Giganet tomonidan cLAN. Myrinet ochiq standartdir. Uni amalga oshirish uchun MyriCom nisbatan arzon narxlarda keng turdagi tarmoq uskunalarini taklif etadi. Jismoniy qatlamda SAN (tizim hududi tarmog'i), LAN (CL-2) va optik tolali tarmoq muhitlari qo'llab-quvvatlanadi. Myrinet texnologiyasi tarmoqning yuqori miqyoslanishini ta'minlaydi va hozirda yuqori samarali klasterlarni yaratishda juda keng qo'llaniladi. Giganet operatsion tizim funktsiyalarini chetlab o'tib, klaster serverlarining markaziy protsessor birliklarining gigabit tezligida to'g'ridan-to'g'ri o'zaro ta'siri uchun dasturiy va apparat vositalarini ishlab chiqmoqda.
23232
OpenMP - umumiy xotira qurilmalarida dasturlash usuli. Bu shuni anglatadiki, parallelizm har bir parallel ip sizning barcha ma'lumotlaringizga kirish huquqiga ega bo'lgan joyda sodir bo'ladi.
Siz buni shunday deb o'ylashingiz mumkin: parallelizm ma'lum bir tsiklni bajarish paytida fortsiklni turli iplar orasida bo'lish orqali sodir bo'lishi mumkin.
MPI taqsimlangan xotira qurilmalarida dasturlash usulidir. Bu shuni anglatadiki, parallelizm har bir parallel jarayon o'z xotira maydonida boshqalardan ajratilgan holda ishlayotganida sodir bo'ladi.
Siz buni shunday tasavvur qilishingiz mumkin: siz yozgan har bir kod biti har bir jarayon tomonidan mustaqil ravishda amalga oshiriladi. Parallellik har bir jarayonga global muammoning qaysi qismi ustida ishlash kerakligini toʻliq jarayon identifikatori asosida aytib berganingiz uchun yuzaga keladi.
Albatta, OpenMP va MPI dasturini yozish usuli ham juda farq qiladi.
|
| |