OpenMP bilan ishlashni boshlash - Ko’p yadroli protsessorlarda tbb interfeysi yordamida signallarga parallel ishlov...

|
Ko’p yadroli protsessorlarda tbb interfeysi yordamida signallarga parallel ishlov berish jarayonlarini o’rganish mavzusida bitiruv malakaviy ishi
|
bet | 16/27 | Sana | 18.05.2024 | Hajmi | 1,16 Mb. | | #242810 |
Bog'liq O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiOpenMP bilan ishlashni boshlash
Parallel dasturlash tili- parallel dasturlashning uchta asosiy jihatini qo'llab-quvvatlashi kerak: parallel bajarishni belgilash, bir nechta oqimlar o'rtasida aloqa o'rnatish va bog’lovchi yollar orasidagi sinxronizatsiyani ifodalash. Aksariyat parallel dasturlash tillari ushbu amalni ketma-ket tilga kengaytmalar orqali qo’llab-quvvatlaydi; bu dasturlash muhitida parallel kengaytmalarni ta'minlash afzalligiga imkonini beradi. Turli dasturlash tillari ushbu kengaytmalarni taqdim etishda turlicha yondashuvlarni qo'llagan. Ba'zi tillar parallel bajarilish, aloqa va hokazolarni ifodalash uchun asosiy til ichida qo'shimcha konstruktsiyalarni taqdim etadi. Qo'shimcha til konstruksiyalarini loyihalash o'rniga, boshqa yondashuvlar asosiy tilda mavjud ketma-ket dasturlarga kiritilishi mumkin bo'lgan direktivalarni taqdim etadi. MPI kabi amaliy dasturlash interfeyslari va Pthreads kabi turli xil ish zarralari paketlari yangi til konstruksiyalarini loyihalashtirmaydi: aksincha, ular ish vaqti kutubxona tartiblariga qo'ng'iroqlar orqali parallellikni ifodalashni qo'llab-quvvatlaydi. OpenMP parallelizmni qo'llab-quvvatlash uchun dasturga asoslangan yondashuvni qo'llaydi. U Fortran, C yoki C++ kabi asosiy tilda yozilgan dasturga kiritilishi mumkin bo'lgan ko'rsatmalar to'plamidan iborat. Ushbu tanlovga olib kelgan dastur yondashuvning ikkita muhim afzalliklari mavjud: Birinchisi, bu yondashuv jixatdan bir xil kod bazasini ham bir protsessorli, ham ko'p protsessorli platformalarda ishlab chiqish uchun foydalanish imkonini beradi; birinchisida, direktivalar shunchaki izoh sifatida ko'rib chiqiladi va til tarjimoni tomonidan e'tiborga olinmaydi, bu esa to'g'ri ketma-ket bajarilishiga olib keladi. Ikkinchi afzallik shundaki, u parallelizmga bosqichma-bosqich yondashish imkonini beradi, ketma-ket dasturdan boshlab, dasturchi bir xil mavjud dasturni parallel bajarilishini ifodalovchi yo’riqnomalar bilan bezashi mumkin. U ushbu asosiy konstruksiyalarni murakkablikni oshirishning bir nechta misollari bilan tasvirlaydi.
OpenMP-dagi til kengaytmalari uchta toifadan iborat: parallelizmni ifodalash uchun boshqaruv tuzilmalari, bog’lanishlar o'rtasidagi aloqa uchun ma'lumotlar muhiti konstruksiyalari va bir nechta aloqaning bajarilishini muvofiqlashtirish uchun sinxronizatsiya konstruksiyalari. Biroq, bularning barchasidan oldin, biz OpenMP bayonotlari sintaksisi va OpenMP dasturlari ichida shartli kompilyatsiya haqida ba'zi tafsilotlarni taqdim etishimiz kerak.
Shartli kompilyatsiya
OpenMP konstruksiyalarini tanlab o‘chirib qo‘yish faqat direktivalar uchun amal qiladi, ilovada esa OpenMPga xos bo‘lgan bayonotlar ham bo‘lishi mumkin.Bu ish vaqti kutubxona tartiblariga qo'ng'iroqlarni yoki faqat kodning parallel versiyasida bajarilishi kerak bo'lgan boshqa kodni o'z ichiga olishi mumkin. Bu kodning ketma-ket versiyasini kompilyatsiya qilishda (ya'ni, OpenMP qo'llab-quvvatlashi o'chirilgan holda) muammo tug'diradi, masalan, mavjud bo'lmagan kutubxona tartiblariga talab bo’lishi. OpenMP bu muammoni quyidagi tarzda ishlaydigan shartli kompilyatsiya moslamasi bilan hal qiladi. Fortranda biz faqat parallel kompilyatsiyaga kiritmoqchi bo'lgan har qanday bayonotdan oldin ma'lum bir nazoratchi bo'lishi mumkin.
C va C++ da barcha OpenMP ilovalari _OPENMP makro preprotsessor nomini yyyymm shaklida tasdiqlangan OpenMP spetsifikatsiyasining yil va oy qiymatiga belgilash uchun talab qilinadi. Ushbu makro har qanday OpenMP kodining kompilyatsiyasini tanlab yoqish/o'chirish uchun ishlatilishi mumkin. Shartli kompilyatsiya vositasidan ehtiyotkorlik bilan foydalanish kerak, chunki prefiksli bayonotlar ketma-ket (ya'ni, OpenMP bo'lmagan) kompilyatsiya paytida bajarilmaydi. Bu bizning OpenMP-dagi sintaksisni muhokama qilishni yakunlaydi. Ushbu bo'limning qolgan qismida biz OpenMP ni o'z ichiga olgan til kengaytmalarining uchta toifasining yuqori darajadagi umumiy ko'rinishini taqdim etamiz: parallel boshqaruv tuzilmalari, ma'lumotlar muhiti va sinxronizatsiya.
Sinxronizatsiya
Bir nechta OpenMP bog’lanishlari umumiy o'zgaruvchilarga oddiy o'qish va yozish orqali bir-biri bilan bog'lanadi. Biroq, ko'pincha ushbu umumiy o'zgaruvchilarga kirishni bir nechta oqimlar bo'ylab muvofiqlashtirish kerak bo'ladi. Koordinatalar o'rtasida hech qanday muvofiqlashtirish bo'lmasa, bir vaqtning o'zida bir nechta ish zarrachalari bir xil o'zgaruvchini o'zgartirishga urinishi mumkin yoki bitta bog’lanish o'zgaruvchini o'qishga harakat qilishi mumkin. Bunday qarama-qarshi kirishlar potentsial ravishda noto'g'ri ma'lumotlar qiymatlarni keltirib chiqarishi mumkin va bir nechta oqimlar o'rtasida aniq muvofiqlashtirish orqali oldini olish kerak. Sinxronizatsiya atamasi parallel dastur bo’yicha bog’lanmalarning bajarilishini muvofiqlashtirishi mumkin bo'lgan mexanizmlarni anglatadi. Sinxronizatsiyaning ikkita eng keng tarqalgan shakli - o'zaro istisno va hodisalar sinxronizatsiyasi. O'zaro istisno konstruktsiyasi umumiy o'zgaruvchiga kirishni nazorat qilish uchun konstruktsiya muddati davomida umumiy o'zgaruvchiga eksklyuziv kirishni ta'minlash orqali ishlatiladi. OpenMP tanqidiy ko’rsatmalar orqali o'zaro istisno qilishni ta'minlaydi. Hodisa sinxronizatsiyasi odatda bir nechta oqimlar bo'ylab voqea sodir bo'lishi haqida signal berish uchun ishlatiladi. Hodisalarni sinxronlashtirishning eng oddiy shakli to'siqdir. Parallel dasturdagi to'siq direktivasi har bir yo’l boshqa barcha yo’llar kelishini kutadigan nuqtani belgilaydi. Barcha iplar o'sha nuqtaga kelgandan so'ng, ularning barchasi to'siqdan o'tib ishlashni davom ettirishi mumkin.
Kritik va to'siqlardan tashqari, OpenMP bir nechta boshqa sinxronizatsiya konstruksiyalarini taqdim etadi. Ushbu konstruktsiyalarning ba'zilari umumiy sinxronizatsiya naqshlarini ifodalashni qulay qiladi, boshqalari esa eng yuqori samaradorlikni olishda foydalidir.
2.4-rasm. Korpusni tez parallellashtirish OpenMP da kichik tezlikni beradi
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
Ko’p yadroli protsessorlarda tbb interfeysi yordamida signallarga parallel ishlov berish jarayonlarini o’rganish mavzusida bitiruv malakaviy ishi
|