Nazorat savollari
1. Vektorni matritsaga ko’paytirishda parallelashtirish usullarini abzalliklari
2. Vektorni matritsaga ko’paytirishni parallel usullari
3. Vektorni matritsaga ko’paytirishni C++ tilida algoritmini yozish
4. OpenMP texnologiyasidan foydalangan holda vektorni matritsaga
ko’paytirishni parallel dasturlarini tuzish
5. Vektorni matritsaga ko’paytirishni ketma-ket va parallel dasturlarini tuzish
va ularni bir-biri bilan solishtirish
15-mavzu: Ko’p yadroli prosessorlar, xotirani va ichki
kommunakatsiyani tashkillashtirish, dasturiy oqimlar, oqimli qayta ishlash
texnologiyasi
REJA:
15.1. Ko’p yadroli protsessorlar
15.2. Xotirani va ichki kommunakatsiyani tashkillashtirish
15.3. Dasturiy oqimlar
15.4. Oqimli qayta ishlash texnologiyasi
Ba'zida parallel dasturlash faqat superkompyuterlar uchun katta qiziqishlarga
ega bo'lganlar uchun edi. Ammo hozirda, odatiy dasturlar ko'p yadroli
protsessorlarda ishlay boshlaganda, parallel dasturlash tezda har qanday professional
dasturiy ta'minotni ishlab chiqaruvchi usta bo'lishi va foydalanishi mumkin bo'lgan
texnologiyaga aylanadi.
Parallel dasturlash qiyin bo'lishi mumkin, ammo uni "qiyin" deb hisoblashni
bilish osonroq, ammo oddiygina "bir oz boshqacha". Bu an'anaviy, ketma-ket
dasturlashning barcha xususiyatlarini o'z ichiga oladi, ammo parallel dasturlashda
uch qo'shimcha, aniq belgilangan qadam mavjud.
Parallelizm ta'rifi: bir vaqtning o'zida bajarilishi mumkin bo'lgan subtaskalarni
aniqlash uchun muammoni tahlil qilish
O'zaro muvozanatni aniqlash: vazifaning strukturasini o'zgarishlarni samarali
bajarish uchun o'zgartirish. Bu ko'pincha subtasklar bilan bog'liqliklarni topish va
manba kodini tashkil qilishni talab qiladi, ular samarali tarzda boshqarilishi mumkin.
Parallelizmning ifodasi: parallel dasturiy belgilar yordamida parallel algoritmni
manba kodini qo'llash
Ushbu bosqichlarning har biri o'z yo'lida muhimdir. Ularning dastlabki ikkitasi
parallel dasturlashdagi tizimli naqshlar haqidagi so'nggi kitobda batafsil tavsiflangan
[mattson05]. Ushbu maqolada biz uchinchi bosqichni ko'rib chiqamiz: parallel
dasturiy belgilar tizimidan foydalanib, manba kodidagi parallel algoritmni amalga
oshirish. Bunday yozuv parallel dasturlash tili, kutubxona interfeysi yordamida
amalga oshiriladigan dasturiy dasturiy interfeysi (API) yoki mavjud ketma-
ketlikdagi dasturlash tiliga qo'shilgan kengaytma bo'lishi mumkin.
Parallel dasturlash uchun ma'lum bir belgi tanlash juda qiyin vazifa bo'lishi
mumkin. Ushbu eslatma tizimlarida vaqtni talab etuvchi keskin o'rganish egri
mavjud. Shu sababli, eng munosibni tanlash uchun bir nechta eslatish tizimlarini
o'rganish mantiqan yaramaydi. Dasturchilarga kerak bo'lgan barcha narsalar - bu
turli eslatmalarni tezda "teginish" va ularning asosiy xususiyatlari bilan batafsilroq
tanishish uchun ma'lum bir tizimni ongli ravishda tanlab olish uchun etarli darajada
tanishish qobiliyati.
Ushbu maqola bir nechta parallel dasturiy belgilar tizimini umumiy tavsifi bilan
ta'minlaydi, ulardan foydalanishning asosiy usullarini, shuningdek, ularning kuchli
va zaif tomonlarini batafsil tavsiflaydi. Xususan, quyidagi markalash tizimlari ko'rib
chiqiladi:
OpenMP: oddiy parallel dasturlash uchun kompilyator direktifi
MPI: kutubxonaning yuqori samarali taşınabilirliğini amalga oshirish uchun
muntazam
Java: etakchi dasturiy tilida bir vaqtda kelishuv
Muhokamani iloji boricha aniqroq qilish uchun har bir tanlov uchun taniqli
dasturning parallel versiyasi taqdim etiladi. Bu to'rtburchak formulasidan foydalanib
odatiy raqamli integratsiya va integral funktsiyasi va integral chegaralari tanlanadi,
shunda 'n' raqami matematik jihatdan to'g'ri natija hisoblanadi. Ushbu vazifa parallel
dasturlashda "salom dunyosi" dasturining analogiyasidir. Maqolaning oxirida ish va
o'qish uchun parallel dasturiy ko'rsatmani tanlash bo'yicha qisqacha tushuntirish
berilgan.
OpenMP [omp] - umumiy xotira kompyuterlari uchun parallel dasturlarni
yaratish uchun sanoat standarti bo'lgan API. OpenMP ning asosiy maqsadi - aylanish
yo'naltirilgan dasturlarni yozishni osonlashtirishdir. Bunday dasturlar tez-tez yuqori
samarali hisoblash uchun yaratiladi. Bundan tashqari, komponentlar OpenMP
tarkibiga SPMD, "master and workflow", quvur liniyasi kabi parallel usullarini
qo'llab-quvvatlash uchun kiritilgan.
OpenMP juda muvaffaqiyatli parallel dasturlash tiliga aylandi. U bozorga
kiradigan har bir xotira almashadigan kompyuterda mavjud. Bundan tashqari, Intel
yaqinda Klasterlarni qo'llab-quvvatlash uchun OpenMP versiyasini yaratdi.
OpenMP parallelizmin mavjud ketma-ketlik dasturi parallel holga kelgunicha asta-
sekin qo'shilgan dasturlash uslubini qo'llab-quvvatlaydi. Biroq, bu afzallik OpenMP
ning eng zaif nuqtasidir. Agar muvozanat asta-sekin qo'shilsa, dasturchi dasturni
keng miqyosda qayta qurish qila olmaydi, bu ko'pincha maksimal ishlash uchun
zarur bo'ladi.
OpenMP doimiy rivojlanayotgan standartdir. OpenMP Architecture Review
Board deb nomlangan sanoat guruhi ushbu tilga yangi kengaytmalar kiritish uchun
muntazam uchrashuvlar o'tkazadi. OpenMP ning keyingi versiyasi (3.0 versiyasi)
vazifa navbatini tashkil etish qobiliyatini o'z ichiga oladi. Bu esa, OpenMP-ga
yanada keng boshqaruv tuzilmalarini boshqarish va umumiy umumiy recursiv
algoritmlardan foydalanish imkonini beradi.
Do'stlaringiz bilan baham: |