Parallel hisoblashning afzallik tomonlari
![Mavzu: Parallel hisoblashning afzallik tomonlari
Reja:
1. Nima uchun Parallel Hisoblash kerak ?
2. Nima uchun biz ortib boradigan ishlashga muhtojmiz?
3. Nima uchun parallel tizimlarni ko’ramiz.
4.Nega parallel dasturlarni yozish kerak.
5. Parallel dasturlarni yozish.](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_1.png)
![Nima uchun Parallel Hisoblash kerak ?
1986 yildan 2002 yilgacha mikroprotsessorlarning ishlashi yiliga o'rtacha
50% ga oshdi. Bu misli ko'rilmagan o'sish foydalanuvchilar va dasturiy ta'minot
ishlab chiquvchilari degani edi. ko'pincha mikroprotsessorlarning keyingi
avlodini kutish mumkin edi. 2002 yildan beri bitta protsessorli ish faoliyatini
yaxshilash yiliga taxminan 20% gacha sekinlashdi. Bu farq juda katta: yiliga 50%,
unumdorlik deyarli bir omilga oshadi ichida 60 ga, 20% bo'lsa, u atigi 6 baravarga
oshadi.
2005 yilga kelib, yirik ishlab chiqaruvchilarning ko'pchiligi parallellik
yo'nalishida mikroprotsessorlar tez sur'atlar bilan o'sib borishi uchun yo'l deb qaror
qildi.
Har doim tezroq rivojlanishni davom ettirishga harakat qilish o'rniga monolit
protsessorlar, ishlab chiqaruvchilar bir nechta to'liq protsessorlarni qo'yishni
boshladilar.
Ushbu o'zgarish dasturiy ta'minot ishlab chiquvchilari uchun juda muhim
oqibatlarga olib keladi: oddiygina qo'shish ketma-ket dasturlarning aksariyati ,
ya'ni bitta dasturda ishlash uchun yozilgan dasturlar protsessor katta hajmdagi ish
faoliyatini sehrli ravishda yaxshilamaydi. Bunday dasturlar bir nechta protsessorlar
mavjudligidan bexabar va bir nechta protsessorli tizimda bunday dasturning
ishlashi bo'ladi.
Bularning barchasi bir qator savollarni tug'diradi:
1. Nima uchun biz qayg'uramiz? Yagona protsessorli tizimlar yetarlicha tez
emasmi? Axir, har biriga 20%
yil hali ham ancha sezilarli yaxshilanishdir.
2. Nima uchun protsessor tizimlari mikroprotsessor ishlab chiqaruvchilari
yanada tezroq singl ishlab chiqishda davom eta olmaydilar? Nega parallel
tizimlar qurish kerak?
3. Nima uchun biz ketma-ket dasturlarni ichiga parallel dasturlar , ya'ni
mavjudligidan foydalanadigan dasturlar
bir nechta protsessorlar avtomatik ravishda o'zgartiradigan dasturlarni yoza
olmaymiz?
Keling, ushbu savollarning har birini qisqacha ko'rib chiqaylik.
2.Nima uchun biz ortib boradigan ishlashga muhtojmiz?
O'nlab yillar davomida fan, Internet va o'yin-kulgi kabi turli xil biz
zavqlanayotgan hisoblash quvvatining ulkan o'sishi kabi sohalardagi eng dramatik
yutuqlarning markazida bo'ldi. Internet Qidiruvlar o'sishlarsiz va yanada real
kompyuter o'yinlarining barchasi imkonsiz bo'lar edi. Haqiqatan ham, hisoblash
quvvatining yaqinda o'sishi
oldingi o'sishlarsiz, agar imkonsiz bo'lmasa, qiyin bo'lar edi. Lekin biz qila olamiz
hech qachon to'xtamang. Bizning hisoblash quvvatimiz oshgani sayin, muammolar
soni hal qilishni jiddiy o'ylab ko'rishimiz mumkin bo'lgan narsalar ham ortadi .
Quyida bir nechtasi keltirilgan misollar :.](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_2.png)
![Iqlimni modellashtirish . Iqlim o'zgarishini yaxshiroq tushunish uchun bizga
ko'proq narsa kerak
aniq kompyuter modellari, atmosfera o'rtasidagi o'zaro ta'sirlarni o'z ichiga olgan
modellar, qattiq quruqlik va qutblardagi muzliklar turli aralashuvlar global
miqyosga qanday ta'sir qilishi haqida batafsil tadqiqotlar o'tkazishga qodir iqlim .
Protein qatlamlari . Noto'g'ri qatlamli oqsillar kasalliklarda ishtirok etishi
mumkin, deb ishoniladi, ammo bizning o'qish qobiliyatimiz
oqsillar kabi murakkab molekulalarning konfiguratsiyasi joriy hisoblash quvvati
tomonidan jiddiy cheklangan
Dori kashfiyoti . Hisoblash quvvatini oshirishning ko'plab usullari mavjud,
yangi tibbiy muolajalar bo'yicha tadqiqotlarda foydalanish mumkin . Misol uchun,
juda ko'p azob chekayotganlarning nisbatan kichik qismini ba'zi kasalliklardan
davolashda samarali bo'lgan dorilar
. Ehtiyotkorlik bilan muqobil davolash usullarini ishlab chiqishimiz mumkin
davolash ma'lum bo'lgan shaxslarning genomlarini tahlil qilish
samarasizdir . Biroq, genomlar bu keng qamrovli hisoblash tahlilini o'z ichiga
oladi.
Energiya tadqiqotlari . Hisoblashbatareyalar quvvatining oshishi ancha
batafsil modellari dasturlash imkonini beradi.
ushbu dasturlar uzoqni qurish uchun zarur bo'lgan yanada samarali toza energiya
manbalari ma'lumotlarni taqdim etishi mumkin .
Ma'lumotlarni tahlil qilish . Biz katta hajmdagi ma'lumotlarni yaratamiz.
Ba'zi hisob-kitoblarga ko'ra, ular miqdori har ikki yilda ikki baravar ko'payadi ,
lekin juda katta va ularning aksariyati umuman foydasizdir. Misol tariqasida, bilish
Inson DNKsidagi nukleotidlar ketma- ketligi o'z-o'zidan kam qo'llaniladi.
Tushunish uchun u qanday ta'sir qiladi va qanday qilib kasallikka olib kelishi
mumkin keng tahlil qilinishi kerak. Genomikaga qo'shimcha ravishda katta
hajmdagi ma'lumotlar ham ishlab chiqariladi
CERNdagi Katta adron kollayderi kabi zarrachalar kollayderlari, tibbiy tasvirlar ,
astronomik tadqiqotlar va veb-qidiruv tizimlari - bir nechtasini nomlash mumkin.
3. N EGA BIZ PA RA LLEL TIZIMLA RN I KURA Y A BIZ
Yagona protsessor unumdorligidagi integratsiyalashgan
tranzistorlar - elektron kalitlarning doimiy ortib borayotgan zichligi
bilan sxemalar ulkan o'sishning aksariyati sabab bo'ldi. Tranzistorlar
hajmi kamayishi bilan ularning tezligini oshirish mumkin va integral
mikrosxemaning umumiy tezligini oshirish mumkin. Biroq, tezligi
sifatida tranzistorlar ortadi, ularning quvvat sarfi ham ortadi. Bu
kuchning katta qismi tarqaladi va integral sxema juda qizib ketganda,
u ishonchsiz bo'ladi.](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_3.png)
![Yigirma birinchi asrning birinchi o'n yilligida havo bilan sovutilgan
integral mikrosxemalar issiqlikni tarqatish qobiliyatining chegarasiga
yetdi.
Shu sababli, integratsiya tezligini oshirishni davom ettirish imkonsiz
bo'lib bormoqda. Biroq, tranzistor zichligi o'sishi - hech bo'lmaganda
bir muddat davom etishi mumkin . Bundan tashqari, bizning
mavjudligimizni yaxshilash uchun hisoblash imkoniyatlarini hisobga
olgan holda, hisoblash quvvatini oshirishni davom ettirish uchun
deyarli axloqiy shart mavjud.
Nihoyat, agarintegral mikrosxemalar sanoati yangi va yaxshiroq
mahsulotlarni ishlab chiqarishni davom ettirmaydi, amalda mavjud
bo'lishni to'xtatadi.
Qanday qilib biz tranzistor zichligining doimiy o'sishidan
foydalanishimiz mumkin?
javob parallelizm . Tezroq, murakkabroq, monolit qurishdan ko'ra
protsessorlar , sanoat bir nechta, nisbatan oddiy, to'liq protsessorlar
bitta chipda qo'yishga qaror qildi. Bunday integral mikrosxemalar k o'p
y adroli deb at aladi protsessorlar,va y adro markaziy protsessor yoki
protsessor bilan sinonimga aylandi. Ushbu tizim sozlama bitta
protsessorli an'anaviy protsessor ko'pincha bit t a y adroli deb at aladi .
4. N EGA PA RA LLEL DA STURLA RN I Y OZISH KERA K
An'anaviy, bir yadroli tizimlar uchun yozilgan dasturlarning
aksariyati buni qila olmaydi. bir nechta yadrolarning mavjudligidan
foydalanamiz. Biz ko'p yadroli tizimda dasturning bir nechta
nusxalarini ishga tushirishimiz mumkin, lekin bu ko'pincha ozgina
yordam beradi.
Yoki ketma-ket dasturlarimizni ular foydalanishi uchun bir nechta
yadrolar yoki tarjima dasturlarini yozing, ya'ni avtomatik ravishda
ishlaydigan dasturlar
parallel bo'lishi uchun ketma-ket dasturlarni parallel dasturlarga
aylantirish qayta yozing . Yomon xabar shundaki, tadqiqotchilar bor
tillardagi ketma-ket dasturlarni o'zgartiruvchi juda cheklangan
muvaffaqiyatga erishish dasturlariga C va C ++ kabi parallel
dasturlarga ega edi.
Bu juda ajablanarli emas. Biz umumiy taniydigan dasturlarni
yozishimiz mumkin,konstruksiyalarni amalga oshiradi va bu
konstruksiyalarni avtomatik ravishda tarjima qiladi, samarali parallel](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_4.png)
![konstruktsiyalar, parallel konstruktsiyalar ketma-ketligi juda samarasiz
bo'lishi mumkin.
Masalan, ikkita n _ n matritsalar nuqta hosilalari ketma- ketligi sifatida
ko'paytirishni ko'rishimiz mumkin , lekin matritsani ko'paytirishni nuqta
hosilalari ketma-ketligi sifatida parallellashtirish, parallel nuqta
mahsulotlari ko'p tizimlarda juda sekin bo'lishi mumkin.
Ketma-ket dasturni samarali parallel amalga oshirish uning har bir
bosqichining samarali parallellashuvlarini topish tomonidan
olinmasligi mumkin. Aksincha, eng yaxshi parallelizatsiya orqaga
chekinish va butunlay yangi algoritmni ishlab chiqish orqali olinishi
mumkin.
Misol tariqasida, biz n ta qiymatni hisoblashimiz va ularni
birlashtirishimiz kerak, deylik.
Buni quyidagi ketma-ket kod yordamida amalga oshirish
mumkinligini bilamiz:
sum = 0;
for (i = 0; i < n; i++) {
x = Compute next value(. . .);
sum += x;
}
Aytaylik, bizda ham p yadro bor va p n dan ancha kichik . Keyin har bir
yadro mumkin n = p qiymatlarning qisman yig'indisini hosil qiling:
my sum = 0;
my first i = . . . ;
my last i = . . . ;
for (my i = my first i; my i < my last i; my i++) {
my x = Compute next value(. . .);
my sum += my x;
}
my prefiksi har bir yadro o'ziga xos, shaxsiy o'zgaruvchilardan
foydalanishini bildiradi. har bir yadro ushbu kod blokini boshqa
yadrolardan mustaqil ravishda bajarishi mumkin.
Har bir yadro ushbu kodning bajarilishini tugatgandan so'ng,
uning o'zgaruvchisi mening summamda saqlanadi.
Keyingi qiymatni hisoblash uchun qo'ng'iroqlari bilan hisoblangan
qiymatlar yig'indisi . Masalan, agar sakkiz yadro bo'lsa, n D 24 va
keyingi qiymatni hisoblash uchun 24 ta qo'ng'iroqlar
qiymatlar](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_5.png)
![1, 4, 3, 9, 2, 8, 5, 1, 1, 6, 2, 7, 2, 5, 0, 4, 1, 8, 6, 5, 1, 2, 3, 9,
keyin mening summamda saqlangan qiymatlar bo'lishi mumkin
Y adro(core) 0 1 2 3 4 5 6 7
mening summam 8 19 7 15 7 13 12 14
Bu erda biz yadrolar diapazondagi manfiy bo'lmagan butun sonlar
bilan aniqlangan deb faraz qilamiz
0, 1 , : : : , p 1, bu erda p - yadrolar soni.
mening summamning qiymatlarini hisoblab bo'lgach , ular o'z
natijalarini qo'shishi mumkin bo'lgan belgilangan "master" yadroga
yuborish orqali global summa hosil qilishi mumkin
ularning natijalari:
if (I’m the master core) {
sum = my x;
for each core other than myself {
receive value from core;
sum += value;
}} else {
send my x to the master;
}
Bizning misolimizda, agar asosiy yadro (CORE)yadro 0 bo'lsa, u 8 + 19 +
7 +.
15 + 7 + 13 + 12 + 14 + 95 qiymatlarini qo'shadi .
Lekin, ehtimol, buni amalga oshirishning yaxshiroq yo'lini
ko'rishingiz mumkin, ayniqsa, agar soni
yadrolari katta bo’lsa. Asosiy yadro qilish o'rniga, barcha hisoblash
ishlarini bajaring.
Yakuniy yig'indi, biz yadrolarni juftlashimiz mumkin, shunda
yadro 0 yadro 1 natijasiga qo'shsa, yadro
2 yadro 3 natijasiga qo'shishi mumkin, yadro 4 yadro 5 natijasiga
qo'shishi mumkin va hokazo. Keyin
jarayonni faqat teng darajali yadrolar bilan takrorlashimiz mumkin: 2
natijaga 0 qo'shiladi ,](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_6.png)
![6 ning natijasiga 4 qo'shiladi va hokazo. Endi 4 ga bo'linadigan yadrolar
jarayonni takrorlaydi va hokazo .
1.1-rasmga qarang.
Doiralarda har bir yadro yig'indisining joriy qiymati vabir yadro o'z
summasini boshqa yadroga yuborayotganligini ko'rsatadi. The
plyus belgilari yadro boshqa yadrodan yig'indini olayotganini va uni
qo'shayotganini ko'rsatadi so'mni o'z summasiga oldi .
Ikkala "global" summa uchun asosiy yadro (yadro 0) boshqalarga
qaraganda ko'proq ishlaydi. Biroq, sakkiz yadro bilan,birinchi usuldan
foydalangan holda ettita qabul qilish va qo'shishni amalga oshiradi
ikkinchi usul faqat uchtasini amalga oshiradi. Shunday qilib, ikkinchi
usul natijasida ikki baravardan ortiq yaxshilanadi . ko'p sonli yadrolar
bilan dramatik Farqi ancha katta bo'ladi. 1000 yadro bilan birinchi usul
talab qilinadi
999 qabul qiladi va qo'shadi, ikkinchisi esa faqat 10 tani talab qiladi, uni
yaxshilash deyarli 100 faktor!
Birinchi global yig'indi - bu ketma-ket global summaning aniq
umumlashtirilishi: taqsimlang va har bir yadro o'z qismini hisoblab
chiqqandan keyin yig'indidan , asosiy yadro oddiygina asosiy ketma-
ket qo'shishni takrorlaydi - agar p mavjud bo'lsa yadrolari , keyin u p
qiymatlarini qo'shishi kerak . Ikkinchi global summa esa o'z o'rniga ega
asl seriya qo'shilishi bilan ozgina aloqasi bor.
Gap shundaki, tarjima dasturi “kashf etishi” dargumon.
ikkinchi global summa. Aksincha, oldindan belgilangan samarali
bo'lishi mumkin tarjima dasturi kirish huquqiga ega bo'lgan global](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_7.png)
![summa. U ketma -ket halqa va uni oldindan kodlangan bilan
almashtiring , samarali, parallel global summa "tanishi" mumkin.
Dasturiy ta'minot juda ko'p umumiy bo'lishi uchun yozilishini
kutishimiz mumkin, etma-ket konstruktsiyalarni tanib olish va samarali
parallellasht irish , ya'ni o'zgartirish mumkin edi shuning uchun ular
bir nechta yadrolardan foydalanishlari mumkin. Biroq, biz bu tamoyilni
doimo qo'llaganimizdek
murakkabroq seriyali dasturlarni tanib olish tobora qiyinlashib
bormoqda
construct , va bizda oldindan kodlangan parallellashtirish , samarali
bo'lish ehtimoli kamroq bo'ladi.
Shunday qilib, biz ketma-ket dasturlarni yozishni davom ettira
olmaymiz, biz dasturlar , bir nechta protsessorlarning kuchidan
foydalanadigan parallel dasturlar yozishimiz kerak.
5. PA RA LLEL DA STURLA RN I QA N DA Y Y OZA MIZ?
Bu savolga bir nechta mumkin bo'lgan javoblar mavjud, ammo
ularning aksariyati amalga oshiriladigan ishni yadrolar orasida
taqsimlashning asosiy g'oyasi haqida. Ikkita keng qo'llaniladigan
yondashuvlar bor: t ask -parallelizm va dat a-parallelizm .
Task -parallelizmda , hal qilishda amalga oshirilgan turli
vazifalarni yadrolar o'rtasida taqsimlaymiz.
Dat a-parallelizm , biz muammoni hal qilishda foydalanilgan
ma'lumotlarni yadrolar o'rtasida taqsimlaymiz, va har bir yadro
ma'lumotlarning o'z qismida ko'proq yoki kamroq shunga o'xshash
operatsiyalarni bajaradi.
Misol tariqasida, prof essor P “Ingliz tilini o'rganish Adabiyot”. Aytaylik,
professor P ning o'z bo'limida yuzta talaba bor
unga to'rtta o'qituvchi yordamchisi (TA) tayinlangan: janob A, B xonim,
janob C va D xonim.
Nihoyat semestr tugadi va professor P beshdan iborat yakuniy
imtihon topshiradi
savollar . Imtihonga baho qo'yish uchun u va uning TA xodimlari
quyidagilarni hisobga olishlari mumkin
ikkita variant: ularning har biri savollardan biriga yuzta javobni
baholashi mumkin;
P sinflar uchun 1-savol, A sinflar uchun 2-savol va hokazolarni ayting .
Shu bilan bir qatorda, ular bo'linishi mumkin](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_8.png)
![yuzta imtihon yigirmata imtihondan iborat beshta to'plamga bo'linadi
va ularning har biri mumkin
qoziqlardan birida baholang; P birinchi qoziqdagi qog'ozlarni
baholaydi, A bahosi
ikkinchi qoziqdagi qog'ozlar va boshqalar.
Ikkala yondashuvda ham “yadro” professor va uning TA lari
hisoblanadi. Birinchi yondashuv
vazifa-parallelizmga misol bo'lishi mumkin. Beshta vazifani bajarish
kerak
out : birinchi savolni baholash, ikkinchi savolni baholash va hokazo.
Taxminan ,
- savolda turli xil ma'lumotlarni qidiradilar
Shekspir, 2-savoldagi ma'lumotlardan, Milton haqida va hokazo.
Shunday qilib, professor va uning mutaxassislari "turli ko'rsatmalarni
bajaradilar".
Boshqa tomondan, ikkinchi yondashuv ma'lumotlarparallelizmiga
misol bo'lishi mumkin .
"Ma'lumotlar" - bu asosiy qismlarga bo'lingan talabalar qog'ozi,
va har bir yadro har bir qog'ozga ko'proq yoki kamroq bir xil baholash
ko'rsatmalarini qo'llaydi.
1.3-bo'limdagi global yig'indi misolining birinchi qismi bo'lishi mumkin
ma'lumotlar-parallellik misoli ko'rib chiqildi . Ma'lumotlar tomonidan
hisoblangan qiymatlar Keyingi qiymatni hisoblang va har bir yadro
taxminan bir xil operatsiyalarni bajaradi tayinlangan elementlar: u
keyingi qiymatni hisoblashni chaqirish orqali kerakli qiymatlarni
hisoblab chiqadi
va ularni birga qo'shadi. Birinchi global sum misolining ikkinchi qismi
bo'lishi mumkin vazifa-parallellik misoli ko'rib chiqildi . Ikkita vazifa
mavjud: qabul qilish va qo'shish asosiy yadro tomonidan amalga
oshiriladigan va qisman beradigan yadrolarning qisman summalari
boshqa yadrolar tomonidan amalga oshiriladigan asosiy yadroga
yig'indi .
mustaqil ishlay oladigan bo'lsa, parallel dastur yozish juda ko'p
ketma-ket dastur yozish bilan bir xil . Qachonki ishlar yanada
murakkablashadi](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_9.png)
![yadrolar o'z ishlarini muvofiqlashtirishi kerak. Ikkinchi global summa
misolida, garchi diagrammadagi daraxt tuzilishini tushunish juda oson,
haqiqiy kodni yozish
nisbatan murakkab. 1.3 va 1.4-mashqlarga qarang. Afsuski, bu ko'proq
koordinatsiyaga muhtoj bo'lgan yadrolar uchun umumiydir .
Ikkala global yig'indi misolida ham muvofiqlashtirish aloqani o'z
ichiga oladi : bitta yoki ko'proq yadrolar joriy qisman summalarini
boshqa yadroga yuboradi. Global yig'indiga misollar y uk larni
muv ozanat lash orqali muvofiqlashtirishni ham o'z ichiga olishi kerak :
biz buni qilmagan bo'lsak ham
bering , biz barcha yadrolarning taxminan tayinlanishini
xohlayotganimiz aniq
bir xil miqdordagi qiymatlar. Agar, masalan, bitta yadro ko'p qismini
hisoblashi kerak bo'lsa qiymatlari bo'lsa, boshqa yadrolar og'ir
yuklangan yadrodan ancha tezroq tugaydi, va ularning hisoblash
quvvati behuda ketadi.
Muvofiqlashtirishning uchinchi turi - sinxronizat siy a . Misol
tariqasida shunday deylik
qo'shiladigan qiymatlarni hisoblash o'rniga , qiymatlar stdin dan
o'qiladi . X deb ayting
asosiy yadro tomonidan o'qiladigan massivdir:
if ( Men asosiy yadroman)
for (mening i = 0; mening i < n; mening men ++)
scanf ( "%lf", &x[mening i ]);
Aksariyat tizimlarda yadrolar avtomatik ravishda
sinxronlashtirilmaydi. Aksincha, har bir yadro
o'z tezligida ishlaydi . Bunday holda, muammo shundaki, biz boshqa
yadrolarni xohlamaymiz
oldinga yugurish va master ishga tushirishdan oldin ularning qisman
summalarini hisoblashni boshlash
x va uni boshqa yadrolar uchun mavjud qilish. Ya'ni, yadrolarni kutish
kerak
kodni bajarishni boshlashdan oldin :
for ( mening i = mening birinchi i ; mening i < mening oxirgi i ; mening
men ++)
mening summam += x [ mening i ];
x va ni ishga tushirish o'rtasida sinxronizatsiya nuqtasini qo'shishimiz
kerak](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_10.png)
![qisman summalarni hisoblash bo'lgunga qadar Yadrolarni sinxronlash
funktsiyasida kutadi
yadrolar funktsiyaga kirdi - xususan, asosiy yadro kirgunga qadar
bu funksiya.
aniq parallel yordamida yoziladi
++ kabi tillarga kengaytmalar yordamida yoziladi .
Ushbu dasturlar parallelizm uchun aniq ko'rsatmalarni o'z ichiga oladi:
yadro 0 0 vazifani bajaradi,
yadro 1 1-topshiriqni bajaradi , barcha yadrolar sinxronlashtiriladi, va
hokazo, shuning uchun bunday dasturlar
ko'pincha juda murakkab. Bundan tashqari, zamonaviy yadrolarning
murakkabligi ko'pincha qiladi
a tomonidan bajariladigan kodni yozishda juda ehtiyotkorlik bilan
foydalanish kerak bitta yadro.
Parallel dasturlarni yozishning boshqa variantlari mavjud - masalan,
yuqoriroq
darajadagi tillar - lekin ular dastur yaratish uchun ishlashni qurbon
qilishga moyildirlar rivojlanish biroz osonroq .](/data/documents/9045b40c-0208-4b26-b886-4fd38cf1a1ff/page_11.png)
Mavzu: Parallel hisoblashning afzallik tomonlari Reja: 1. Nima uchun Parallel Hisoblash kerak ? 2. Nima uchun biz ortib boradigan ishlashga muhtojmiz? 3. Nima uchun parallel tizimlarni ko’ramiz. 4.Nega parallel dasturlarni yozish kerak. 5. Parallel dasturlarni yozish.
Nima uchun Parallel Hisoblash kerak ? 1986 yildan 2002 yilgacha mikroprotsessorlarning ishlashi yiliga o'rtacha 50% ga oshdi. Bu misli ko'rilmagan o'sish foydalanuvchilar va dasturiy ta'minot ishlab chiquvchilari degani edi. ko'pincha mikroprotsessorlarning keyingi avlodini kutish mumkin edi. 2002 yildan beri bitta protsessorli ish faoliyatini yaxshilash yiliga taxminan 20% gacha sekinlashdi. Bu farq juda katta: yiliga 50%, unumdorlik deyarli bir omilga oshadi ichida 60 ga, 20% bo'lsa, u atigi 6 baravarga oshadi. 2005 yilga kelib, yirik ishlab chiqaruvchilarning ko'pchiligi parallellik yo'nalishida mikroprotsessorlar tez sur'atlar bilan o'sib borishi uchun yo'l deb qaror qildi. Har doim tezroq rivojlanishni davom ettirishga harakat qilish o'rniga monolit protsessorlar, ishlab chiqaruvchilar bir nechta to'liq protsessorlarni qo'yishni boshladilar. Ushbu o'zgarish dasturiy ta'minot ishlab chiquvchilari uchun juda muhim oqibatlarga olib keladi: oddiygina qo'shish ketma-ket dasturlarning aksariyati , ya'ni bitta dasturda ishlash uchun yozilgan dasturlar protsessor katta hajmdagi ish faoliyatini sehrli ravishda yaxshilamaydi. Bunday dasturlar bir nechta protsessorlar mavjudligidan bexabar va bir nechta protsessorli tizimda bunday dasturning ishlashi bo'ladi. Bularning barchasi bir qator savollarni tug'diradi: 1. Nima uchun biz qayg'uramiz? Yagona protsessorli tizimlar yetarlicha tez emasmi? Axir, har biriga 20% yil hali ham ancha sezilarli yaxshilanishdir. 2. Nima uchun protsessor tizimlari mikroprotsessor ishlab chiqaruvchilari yanada tezroq singl ishlab chiqishda davom eta olmaydilar? Nega parallel tizimlar qurish kerak? 3. Nima uchun biz ketma-ket dasturlarni ichiga parallel dasturlar , ya'ni mavjudligidan foydalanadigan dasturlar bir nechta protsessorlar avtomatik ravishda o'zgartiradigan dasturlarni yoza olmaymiz? Keling, ushbu savollarning har birini qisqacha ko'rib chiqaylik. 2.Nima uchun biz ortib boradigan ishlashga muhtojmiz? O'nlab yillar davomida fan, Internet va o'yin-kulgi kabi turli xil biz zavqlanayotgan hisoblash quvvatining ulkan o'sishi kabi sohalardagi eng dramatik yutuqlarning markazida bo'ldi. Internet Qidiruvlar o'sishlarsiz va yanada real kompyuter o'yinlarining barchasi imkonsiz bo'lar edi. Haqiqatan ham, hisoblash quvvatining yaqinda o'sishi oldingi o'sishlarsiz, agar imkonsiz bo'lmasa, qiyin bo'lar edi. Lekin biz qila olamiz hech qachon to'xtamang. Bizning hisoblash quvvatimiz oshgani sayin, muammolar soni hal qilishni jiddiy o'ylab ko'rishimiz mumkin bo'lgan narsalar ham ortadi . Quyida bir nechtasi keltirilgan misollar :.
Iqlimni modellashtirish . Iqlim o'zgarishini yaxshiroq tushunish uchun bizga ko'proq narsa kerak aniq kompyuter modellari, atmosfera o'rtasidagi o'zaro ta'sirlarni o'z ichiga olgan modellar, qattiq quruqlik va qutblardagi muzliklar turli aralashuvlar global miqyosga qanday ta'sir qilishi haqida batafsil tadqiqotlar o'tkazishga qodir iqlim . Protein qatlamlari . Noto'g'ri qatlamli oqsillar kasalliklarda ishtirok etishi mumkin, deb ishoniladi, ammo bizning o'qish qobiliyatimiz oqsillar kabi murakkab molekulalarning konfiguratsiyasi joriy hisoblash quvvati tomonidan jiddiy cheklangan Dori kashfiyoti . Hisoblash quvvatini oshirishning ko'plab usullari mavjud, yangi tibbiy muolajalar bo'yicha tadqiqotlarda foydalanish mumkin . Misol uchun, juda ko'p azob chekayotganlarning nisbatan kichik qismini ba'zi kasalliklardan davolashda samarali bo'lgan dorilar . Ehtiyotkorlik bilan muqobil davolash usullarini ishlab chiqishimiz mumkin davolash ma'lum bo'lgan shaxslarning genomlarini tahlil qilish samarasizdir . Biroq, genomlar bu keng qamrovli hisoblash tahlilini o'z ichiga oladi. Energiya tadqiqotlari . Hisoblashbatareyalar quvvatining oshishi ancha batafsil modellari dasturlash imkonini beradi. ushbu dasturlar uzoqni qurish uchun zarur bo'lgan yanada samarali toza energiya manbalari ma'lumotlarni taqdim etishi mumkin . Ma'lumotlarni tahlil qilish . Biz katta hajmdagi ma'lumotlarni yaratamiz. Ba'zi hisob-kitoblarga ko'ra, ular miqdori har ikki yilda ikki baravar ko'payadi , lekin juda katta va ularning aksariyati umuman foydasizdir. Misol tariqasida, bilish Inson DNKsidagi nukleotidlar ketma- ketligi o'z-o'zidan kam qo'llaniladi. Tushunish uchun u qanday ta'sir qiladi va qanday qilib kasallikka olib kelishi mumkin keng tahlil qilinishi kerak. Genomikaga qo'shimcha ravishda katta hajmdagi ma'lumotlar ham ishlab chiqariladi CERNdagi Katta adron kollayderi kabi zarrachalar kollayderlari, tibbiy tasvirlar , astronomik tadqiqotlar va veb-qidiruv tizimlari - bir nechtasini nomlash mumkin. 3. N EGA BIZ PA RA LLEL TIZIMLA RN I KURA Y A BIZ Yagona protsessor unumdorligidagi integratsiyalashgan tranzistorlar - elektron kalitlarning doimiy ortib borayotgan zichligi bilan sxemalar ulkan o'sishning aksariyati sabab bo'ldi. Tranzistorlar hajmi kamayishi bilan ularning tezligini oshirish mumkin va integral mikrosxemaning umumiy tezligini oshirish mumkin. Biroq, tezligi sifatida tranzistorlar ortadi, ularning quvvat sarfi ham ortadi. Bu kuchning katta qismi tarqaladi va integral sxema juda qizib ketganda, u ishonchsiz bo'ladi.
Yigirma birinchi asrning birinchi o'n yilligida havo bilan sovutilgan integral mikrosxemalar issiqlikni tarqatish qobiliyatining chegarasiga yetdi. Shu sababli, integratsiya tezligini oshirishni davom ettirish imkonsiz bo'lib bormoqda. Biroq, tranzistor zichligi o'sishi - hech bo'lmaganda bir muddat davom etishi mumkin . Bundan tashqari, bizning mavjudligimizni yaxshilash uchun hisoblash imkoniyatlarini hisobga olgan holda, hisoblash quvvatini oshirishni davom ettirish uchun deyarli axloqiy shart mavjud. Nihoyat, agarintegral mikrosxemalar sanoati yangi va yaxshiroq mahsulotlarni ishlab chiqarishni davom ettirmaydi, amalda mavjud bo'lishni to'xtatadi. Qanday qilib biz tranzistor zichligining doimiy o'sishidan foydalanishimiz mumkin? javob parallelizm . Tezroq, murakkabroq, monolit qurishdan ko'ra protsessorlar , sanoat bir nechta, nisbatan oddiy, to'liq protsessorlar bitta chipda qo'yishga qaror qildi. Bunday integral mikrosxemalar k o'p y adroli deb at aladi protsessorlar,va y adro markaziy protsessor yoki protsessor bilan sinonimga aylandi. Ushbu tizim sozlama bitta protsessorli an'anaviy protsessor ko'pincha bit t a y adroli deb at aladi . 4. N EGA PA RA LLEL DA STURLA RN I Y OZISH KERA K An'anaviy, bir yadroli tizimlar uchun yozilgan dasturlarning aksariyati buni qila olmaydi. bir nechta yadrolarning mavjudligidan foydalanamiz. Biz ko'p yadroli tizimda dasturning bir nechta nusxalarini ishga tushirishimiz mumkin, lekin bu ko'pincha ozgina yordam beradi. Yoki ketma-ket dasturlarimizni ular foydalanishi uchun bir nechta yadrolar yoki tarjima dasturlarini yozing, ya'ni avtomatik ravishda ishlaydigan dasturlar parallel bo'lishi uchun ketma-ket dasturlarni parallel dasturlarga aylantirish qayta yozing . Yomon xabar shundaki, tadqiqotchilar bor tillardagi ketma-ket dasturlarni o'zgartiruvchi juda cheklangan muvaffaqiyatga erishish dasturlariga C va C ++ kabi parallel dasturlarga ega edi. Bu juda ajablanarli emas. Biz umumiy taniydigan dasturlarni yozishimiz mumkin,konstruksiyalarni amalga oshiradi va bu konstruksiyalarni avtomatik ravishda tarjima qiladi, samarali parallel
konstruktsiyalar, parallel konstruktsiyalar ketma-ketligi juda samarasiz bo'lishi mumkin. Masalan, ikkita n _ n matritsalar nuqta hosilalari ketma- ketligi sifatida ko'paytirishni ko'rishimiz mumkin , lekin matritsani ko'paytirishni nuqta hosilalari ketma-ketligi sifatida parallellashtirish, parallel nuqta mahsulotlari ko'p tizimlarda juda sekin bo'lishi mumkin. Ketma-ket dasturni samarali parallel amalga oshirish uning har bir bosqichining samarali parallellashuvlarini topish tomonidan olinmasligi mumkin. Aksincha, eng yaxshi parallelizatsiya orqaga chekinish va butunlay yangi algoritmni ishlab chiqish orqali olinishi mumkin. Misol tariqasida, biz n ta qiymatni hisoblashimiz va ularni birlashtirishimiz kerak, deylik. Buni quyidagi ketma-ket kod yordamida amalga oshirish mumkinligini bilamiz: sum = 0; for (i = 0; i < n; i++) { x = Compute next value(. . .); sum += x; } Aytaylik, bizda ham p yadro bor va p n dan ancha kichik . Keyin har bir yadro mumkin n = p qiymatlarning qisman yig'indisini hosil qiling: my sum = 0; my first i = . . . ; my last i = . . . ; for (my i = my first i; my i < my last i; my i++) { my x = Compute next value(. . .); my sum += my x; } my prefiksi har bir yadro o'ziga xos, shaxsiy o'zgaruvchilardan foydalanishini bildiradi. har bir yadro ushbu kod blokini boshqa yadrolardan mustaqil ravishda bajarishi mumkin. Har bir yadro ushbu kodning bajarilishini tugatgandan so'ng, uning o'zgaruvchisi mening summamda saqlanadi. Keyingi qiymatni hisoblash uchun qo'ng'iroqlari bilan hisoblangan qiymatlar yig'indisi . Masalan, agar sakkiz yadro bo'lsa, n D 24 va keyingi qiymatni hisoblash uchun 24 ta qo'ng'iroqlar qiymatlar